diff --git a/CHANGELOG.md b/CHANGELOG.md index 32f4913b7..c00591748 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ All notable changes to this project will be documented in this file. - Generic tag editor - MORPHLINESTYLE2 has enum selection for cap and join style - Generic tag editor - Default values for filters - AS1/2 P-code actions inline documentation -- AS1/2 P-code hilight currently selected action argument in action documentation +- P-code hilight currently selected instruction argument in the documentation (both AS1/2 and AS3) - [#2098] Shape points editation, transform - Protection against saving too large edges/rects ### Fixed diff --git a/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex b/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex index 62d10fc9b..dda05756c 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex @@ -39,6 +39,7 @@ import java.util.Stack; long multinameId = 0; private int repeatNum = 1; + private int stringPos = 0; /** * Create an empty lexer, yyrset will be called later to reset and assign @@ -131,169 +132,171 @@ ExceptionTarget = "exceptiontarget "{PositiveNumberLiteral}":" {ExceptionStart} { String s=yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_START, Integer.parseInt(s.substring(15, s.length() - 1))); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_EXCEPTION_START, Integer.parseInt(s.substring(15, s.length() - 1))); } {ExceptionEnd} { String s=yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_END, Integer.parseInt(s.substring(13, s.length() - 1))); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_EXCEPTION_END, Integer.parseInt(s.substring(13, s.length() - 1))); } {ExceptionTarget} { String s=yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_TARGET,Integer.parseInt(s.substring(16, s.length() - 1))); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_EXCEPTION_TARGET,Integer.parseInt(s.substring(16, s.length() - 1))); } {Label} { String s = yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); } - "name" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NAME, yytext());} - "try" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TRY, yytext());} - "flag" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FLAG, yytext());} - "param" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PARAM, yytext());} - "paramname" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PARAMNAME, yytext());} - "optional" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_OPTIONAL, yytext());} - "returns" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RETURNS, yytext());} - "body" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_BODY, yytext());} - "maxstack" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MAXSTACK, yytext());} - "localcount" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_LOCALCOUNT, yytext());} - "initscopedepth" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INITSCOPEDEPTH, yytext());} - "maxscopedepth" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MAXSCOPEDEPTH, yytext());} - "code" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CODE, yytext());} - "trait" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TRAIT, yytext());} - "method" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METHOD, yytext());} - "metadata" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METADATA_BLOCK, yytext());} - "item" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_ITEM, yytext());} - "instance" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INSTANCE, yytext());} - "extends" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_EXTENDS, yytext());} - "implements" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_IMPLEMENTS, yytext());} - "protectedns" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PROTECTEDNS_BLOCK, yytext());} - "end" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_END, yytext());} + "name" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NAME, yytext());} + "try" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TRY, yytext());} + "flag" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_FLAG, yytext());} + "param" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PARAM, yytext());} + "paramname" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PARAMNAME, yytext());} + "optional" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_OPTIONAL, yytext());} + "returns" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_RETURNS, yytext());} + "body" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_BODY, yytext());} + "maxstack" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_MAXSTACK, yytext());} + "localcount" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_LOCALCOUNT, yytext());} + "initscopedepth" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_INITSCOPEDEPTH, yytext());} + "maxscopedepth" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_MAXSCOPEDEPTH, yytext());} + "code" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_CODE, yytext());} + "trait" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TRAIT, yytext());} + "method" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_METHOD, yytext());} + "metadata" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_METADATA_BLOCK, yytext());} + "item" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_ITEM, yytext());} + "instance" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_INSTANCE, yytext());} + "extends" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_EXTENDS, yytext());} + "implements" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_IMPLEMENTS, yytext());} + "protectedns" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PROTECTEDNS_BLOCK, yytext());} + "end" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_END, yytext());} /*in params too:*/ - "class" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CLASS, yytext());} - "dispid" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DISPID, yytext());} - "slotid" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SLOTID, yytext());} - "value" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_VALUE, yytext());} - "type" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TYPE, yytext());} + "class" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_CLASS, yytext());} + "dispid" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_DISPID, yytext());} + "slotid" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_SLOTID, yytext());} + "value" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_VALUE, yytext());} + "type" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TYPE, yytext());} /* identifiers */ {InstructionName} { yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); } - {Comment} {return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT, yytext().substring(1));} + {Comment} {return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_COMMENT, yytext().substring(1));} } { /* string literal */ \" { isMultiname = false; + stringPos = yychar(); yybegin(STRING); string.setLength(0); } {Multiname}\" { isMultiname = true; String s = yytext(); + stringPos = yychar(); multinameId = Long.parseLong(s.substring(2, s.length() - 2)); yybegin(STRING); string.setLength(0); } /* multinames */ - "QName" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_QNAME, yytext());} - "QNameA" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_QNAMEA, yytext());} - "RTQName" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAME, yytext());} - "RTQNameA" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAMEA, yytext());} - "RTQNameL" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAMEL, yytext());} - "RTQNameLA" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAMELA, yytext());} - "Multiname" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAME, yytext());} - "MultinameA" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAMEA, yytext());} - "MultinameL" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAMEL, yytext());} - "MultinameLA" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAMELA, yytext());} - "TypeName" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TYPENAME, yytext());} - "Unknown" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_UNKNOWN, yytext()); } - "null" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NULL, yytext());} - "(" { return new ParsedSymbol(ParsedSymbol.TYPE_PARENT_OPEN, yytext());} - ")" { return new ParsedSymbol(ParsedSymbol.TYPE_PARENT_CLOSE, yytext());} - "[" { return new ParsedSymbol(ParsedSymbol.TYPE_BRACKET_OPEN, yytext());} - "]" { return new ParsedSymbol(ParsedSymbol.TYPE_BRACKET_CLOSE, yytext());} - "<" { return new ParsedSymbol(ParsedSymbol.TYPE_LOWERTHAN, yytext());} - ">" { return new ParsedSymbol(ParsedSymbol.TYPE_GREATERTHAN, yytext());} - "Namespace" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NAMESPACE, yytext());} - "PrivateNamespace" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PRIVATENAMESPACE, yytext());} - "PackageNamespace" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PACKAGENAMESPACE, yytext());} - "PackageInternalNs" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PACKAGEINTERNALNS, yytext());} - "ProtectedNamespace" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PROTECTEDNAMESPACE, yytext());} - "ExplicitNamespace" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_EXPLICITNAMESPACE, yytext());} - "StaticProtectedNs" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_STATICPROTECTEDNS, yytext());} - "," { return new ParsedSymbol(ParsedSymbol.TYPE_COMMA, yytext());} + "QName" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_QNAME, yytext());} + "QNameA" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_QNAMEA, yytext());} + "RTQName" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_RTQNAME, yytext());} + "RTQNameA" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_RTQNAMEA, yytext());} + "RTQNameL" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_RTQNAMEL, yytext());} + "RTQNameLA" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_RTQNAMELA, yytext());} + "Multiname" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_MULTINAME, yytext());} + "MultinameA" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_MULTINAMEA, yytext());} + "MultinameL" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_MULTINAMEL, yytext());} + "MultinameLA" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_MULTINAMELA, yytext());} + "TypeName" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TYPENAME, yytext());} + "Unknown" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_UNKNOWN, yytext()); } + "null" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NULL, yytext());} + "(" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_PARENT_OPEN, yytext());} + ")" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_PARENT_CLOSE, yytext());} + "[" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_BRACKET_OPEN, yytext());} + "]" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_BRACKET_CLOSE, yytext());} + "<" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_LOWERTHAN, yytext());} + ">" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_GREATERTHAN, yytext());} + "Namespace" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NAMESPACE, yytext());} + "PrivateNamespace" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PRIVATENAMESPACE, yytext());} + "PackageNamespace" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PACKAGENAMESPACE, yytext());} + "PackageInternalNs" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PACKAGEINTERNALNS, yytext());} + "ProtectedNamespace" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PROTECTEDNAMESPACE, yytext());} + "ExplicitNamespace" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_EXPLICITNAMESPACE, yytext());} + "StaticProtectedNs" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_STATICPROTECTEDNS, yytext());} + "," { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_COMMA, yytext());} /*Try*/ - "from" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FROM, yytext());} - "to" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TO, yytext());} - "target" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TARGET, yytext());} - "name" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NAME, yytext());} - "type" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TYPE, yytext());} - "end" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_END, yytext());} + "from" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_FROM, yytext());} + "to" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TO, yytext());} + "target" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TARGET, yytext());} + "name" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NAME, yytext());} + "type" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TYPE, yytext());} + "end" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_END, yytext());} - "slot" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SLOT, yytext());} - "const" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CONST, yytext());} - "method" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METHOD, yytext());} - "getter" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_GETTER, yytext());} - "setter" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SETTER, yytext());} - "class" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CLASS, yytext());} - "function" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FUNCTION, yytext());} - "dispid" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DISPID, yytext());} - "slotid" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SLOTID, yytext());} - "value" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_VALUE, yytext());} - "flag" { yybegin(PARAMETERS); return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FLAG, yytext());} + "slot" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_SLOT, yytext());} + "const" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_CONST, yytext());} + "method" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_METHOD, yytext());} + "getter" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_GETTER, yytext());} + "setter" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_SETTER, yytext());} + "class" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_CLASS, yytext());} + "function" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_FUNCTION, yytext());} + "dispid" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_DISPID, yytext());} + "slotid" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_SLOTID, yytext());} + "value" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_VALUE, yytext());} + "flag" { yybegin(PARAMETERS); return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_FLAG, yytext());} /* Flag - old alias for "NATIVE" */ - "EXPLICIT" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NATIVE, yytext());} + "EXPLICIT" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NATIVE, yytext());} /*Flags*/ - "NATIVE" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NATIVE, yytext());} - "HAS_OPTIONAL" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_HAS_OPTIONAL, yytext());} - "HAS_PARAM_NAMES" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_HAS_PARAM_NAMES, yytext());} - "IGNORE_REST" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_IGNORE_REST, yytext());} - "NEED_ACTIVATION" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NEED_ACTIVATION, yytext());} - "NEED_ARGUMENTS" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NEED_ARGUMENTS, yytext());} - "NEED_REST" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NEED_REST, yytext());} - "SET_DXNS" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SET_DXNS, yytext());} + "NATIVE" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NATIVE, yytext());} + "HAS_OPTIONAL" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_HAS_OPTIONAL, yytext());} + "HAS_PARAM_NAMES" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_HAS_PARAM_NAMES, yytext());} + "IGNORE_REST" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_IGNORE_REST, yytext());} + "NEED_ACTIVATION" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NEED_ACTIVATION, yytext());} + "NEED_ARGUMENTS" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NEED_ARGUMENTS, yytext());} + "NEED_REST" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NEED_REST, yytext());} + "SET_DXNS" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_SET_DXNS, yytext());} /* Value types*/ - "Integer" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INTEGER, yytext());} - "UInteger" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_UINTEGER, yytext());} - "Double" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DOUBLE, yytext());} - "Decimal" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DECIMAL, yytext());} - "Utf8" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_UTF8, yytext());} - "True" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TRUE, yytext());} - "False" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FALSE, yytext());} - "Void" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_VOID, yytext());} - "Undefined" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_VOID, yytext());} + "Integer" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_INTEGER, yytext());} + "UInteger" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_UINTEGER, yytext());} + "Double" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_DOUBLE, yytext());} + "Decimal" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_DECIMAL, yytext());} + "Utf8" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_UTF8, yytext());} + "True" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_TRUE, yytext());} + "False" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_FALSE, yytext());} + "Void" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_VOID, yytext());} + "Undefined" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_VOID, yytext());} - "FINAL" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FINAL, yytext());} - "OVERRIDE" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_OVERRIDE, yytext());} - "METADATA" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METADATA, yytext());} - "SEALED" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SEALED, yytext());} - "INTERFACE" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INTERFACE, yytext());} - "PROTECTEDNS" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PROTECTEDNS, yytext());} - "NON_NULLABLE" { return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NON_NULLABLE, yytext());} + "FINAL" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_FINAL, yytext());} + "OVERRIDE" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_OVERRIDE, yytext());} + "METADATA" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_METADATA, yytext());} + "SEALED" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_SEALED, yytext());} + "INTERFACE" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_INTERFACE, yytext());} + "PROTECTEDNS" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_PROTECTEDNS, yytext());} + "NON_NULLABLE" { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_KEYWORD_NON_NULLABLE, yytext());} /* numeric literals */ {NumberLiteral} { try { - return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER, Integer.parseInt((yytext()))); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_INTEGER, Integer.parseInt((yytext()))); } catch(NumberFormatException nfe) { - return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); } } - {FloatLiteral} { return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); } - {Identifier} { return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER, yytext()); } + {FloatLiteral} { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); } + {Identifier} { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_IDENTIFIER, yytext()); } {LineTerminator} {yybegin(YYINITIAL);} - {Comment} {return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT, yytext().substring(1));} + {Comment} {return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_COMMENT, yytext().substring(1));} } { @@ -302,9 +305,9 @@ ExceptionTarget = "exceptiontarget "{PositiveNumberLiteral}":" repeatNum = 1; // length also includes the trailing quote if (isMultiname){ - return new ParsedSymbol(ParsedSymbol.TYPE_MULTINAME, multinameId); + return new ParsedSymbol(stringPos, ParsedSymbol.TYPE_MULTINAME, multinameId); } else { - return new ParsedSymbol(ParsedSymbol.TYPE_STRING, string.toString()); + return new ParsedSymbol(stringPos, ParsedSymbol.TYPE_STRING, string.toString()); } } @@ -335,4 +338,4 @@ ExceptionTarget = "exceptiontarget "{PositiveNumberLiteral}":" /* error fallback */ [^] { } -<> { return new ParsedSymbol(ParsedSymbol.TYPE_EOF); } +<> { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_EOF); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java index bb7dc46df..e2da95cf8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java @@ -1,5 +1,7 @@ +/* The following code was generated by JFlex 1.6.0 */ + /* - * Copyright (C) 2010-2023 JPEXS, All rights reserved. + * Copyright (C) 2010-2021 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 @@ -14,1982 +16,1943 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library. */ +/* Flash assembler language lexer specification */ package com.jpexs.decompiler.flash.abc.avm2.parser.pcode; import com.jpexs.decompiler.flash.abc.avm2.parser.AVM2ParseException; import java.util.Stack; /** - * This class is a scanner generated by - * JFlex 1.6.0 from the specification file - * C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex + * This class is a scanner generated by + * JFlex 1.6.0 + * from the specification file C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex */ public final class Flasm3Lexer { - /** - * This character denotes the end of file - */ - public static final int YYEOF = -1; + /** This character denotes the end of file */ + public static final int YYEOF = -1; - /** - * initial size of the lookahead buffer - */ - private static final int ZZ_BUFFERSIZE = 16384; + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; - /** - * lexical states - */ - public static final int YYINITIAL = 0; - public static final int STRING = 2; - public static final int PARAMETERS = 4; + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int STRING = 2; + public static final int PARAMETERS = 4; - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 0, 1, 1, 2, 2 - }; + /** + * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer + */ + private static final int ZZ_LEXSTATE[] = { + 0, 0, 1, 1, 2, 2 + }; - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED - = "\11\12\1\4\1\2\1\65\1\66\1\1\16\12\4\0\1\35\1\0" - + "\1\47\1\0\1\11\2\0\1\62\1\52\1\53\1\0\1\20\1\56" - + "\1\15\1\16\1\0\1\14\7\7\1\60\1\7\1\13\1\3\1\54" - + "\1\0\1\55\2\0\1\33\1\21\1\24\1\36\1\17\1\41\1\37" - + "\1\45\1\27\1\11\1\44\1\42\1\5\1\31\1\30\1\25\1\50" - + "\1\34\1\32\1\26\1\43\1\46\1\51\1\23\1\40\1\11\1\6" - + "\1\22\1\10\1\0\1\57\1\0\1\33\1\21\1\24\1\36\1\17" - + "\1\41\1\37\1\45\1\27\1\11\1\44\1\42\1\5\1\31\1\30" - + "\1\25\1\50\1\34\1\32\1\26\1\43\1\46\1\51\1\23\1\40" - + "\1\11\1\63\1\0\1\64\1\0\6\12\1\67\32\12\2\0\4\11" - + "\1\0\1\61\2\0\1\11\2\0\1\12\7\0\1\11\4\0\1\11" - + "\5\0\27\11\1\0\37\11\1\0\70\11\2\27\115\11\1\32\u0142\11" - + "\4\0\14\11\16\0\5\11\7\0\1\11\1\0\1\11\21\0\160\12" - + "\5\11\1\0\2\11\2\0\4\11\1\0\1\11\6\0\1\11\1\0" - + "\3\11\1\0\1\11\1\0\24\11\1\0\123\11\1\0\213\11\1\0" - + "\5\12\2\0\246\11\1\0\46\11\2\0\1\11\6\0\51\11\6\0" - + "\1\11\1\0\55\12\1\0\1\12\1\0\2\12\1\0\2\12\1\0" - + "\1\12\10\0\33\11\4\0\4\11\15\0\6\12\5\0\1\11\4\0" - + "\13\12\1\0\1\12\3\0\53\11\37\12\4\0\2\11\1\12\143\11" - + "\1\0\1\11\10\12\1\0\6\12\2\11\2\12\1\0\4\12\2\11" - + "\12\12\3\11\2\0\1\11\17\0\1\12\1\11\1\12\36\11\33\12" - + "\2\0\131\11\13\12\1\11\16\0\12\12\41\11\11\12\2\11\4\0" - + "\1\11\2\0\1\12\30\11\4\12\1\11\11\12\1\11\3\12\1\11" - + "\5\12\22\0\31\11\3\12\4\0\13\11\5\0\30\11\1\0\6\11" - + "\1\0\2\12\6\0\10\12\52\11\72\12\66\11\3\12\1\11\22\12" - + "\1\11\7\12\12\11\2\12\2\0\12\12\1\0\20\11\3\12\1\0" - + "\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0\1\11\3\0" - + "\4\11\2\0\1\12\1\11\7\12\2\0\2\12\2\0\3\12\1\11" - + "\10\0\1\12\4\0\2\11\1\0\3\11\2\12\2\0\12\12\4\11" - + "\7\0\2\11\1\0\1\12\2\0\3\12\1\0\6\11\4\0\2\11" - + "\2\0\26\11\1\0\7\11\1\0\2\11\1\0\2\11\1\0\2\11" - + "\2\0\1\12\1\0\5\12\4\0\2\12\2\0\3\12\3\0\1\12" - + "\7\0\4\11\1\0\1\11\7\0\14\12\3\11\1\12\13\0\3\12" - + "\1\0\11\11\1\0\3\11\1\0\26\11\1\0\7\11\1\0\2\11" - + "\1\0\5\11\2\0\1\12\1\11\10\12\1\0\3\12\1\0\3\12" - + "\2\0\1\11\17\0\2\11\2\12\2\0\12\12\1\0\1\11\7\0" - + "\1\11\6\12\1\0\3\12\1\0\10\11\2\0\2\11\2\0\26\11" - + "\1\0\7\11\1\0\2\11\1\0\5\11\2\0\1\12\1\11\7\12" - + "\2\0\2\12\2\0\3\12\7\0\3\12\4\0\2\11\1\0\3\11" - + "\2\12\2\0\12\12\1\0\1\11\20\0\1\12\1\11\1\0\6\11" - + "\3\0\3\11\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11" - + "\3\0\2\11\3\0\3\11\3\0\14\11\4\0\5\12\3\0\3\12" - + "\1\0\4\12\2\0\1\11\6\0\1\12\16\0\12\12\11\0\1\11" - + "\6\0\5\12\10\11\1\0\3\11\1\0\27\11\1\0\20\11\2\0" - + "\1\12\1\11\7\12\1\0\3\12\1\0\4\12\7\0\2\12\1\0" - + "\3\11\2\0\1\11\2\0\2\11\2\12\2\0\12\12\20\0\1\11" - + "\3\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0\12\11\1\0" - + "\5\11\2\0\1\12\1\11\7\12\1\0\3\12\1\0\4\12\7\0" - + "\2\12\6\0\2\11\1\0\2\11\2\12\2\0\12\12\1\0\2\11" - + "\15\0\4\12\11\11\1\0\3\11\1\0\51\11\2\12\1\11\7\12" - + "\1\0\3\12\1\0\4\12\1\11\5\0\3\11\1\12\7\0\3\11" - + "\2\12\2\0\12\12\12\0\6\11\1\0\3\12\1\0\22\11\3\0" - + "\30\11\1\0\11\11\1\0\1\11\2\0\7\11\3\0\1\12\4\0" - + "\6\12\1\0\1\12\1\0\10\12\6\0\12\12\2\0\2\12\15\0" - + "\60\11\1\12\2\11\7\12\4\0\10\11\10\12\1\0\12\12\47\0" - + "\2\11\1\0\1\11\1\0\5\11\1\0\30\11\1\0\1\11\1\0" - + "\12\11\1\12\2\11\11\12\1\11\2\0\5\11\1\0\1\11\1\0" - + "\6\12\2\0\12\12\2\0\4\11\40\0\1\11\27\0\2\12\6\0" - + "\12\12\13\0\1\12\1\0\1\12\1\0\1\12\4\0\2\12\10\11" - + "\1\0\44\11\4\0\24\12\1\0\2\12\5\11\13\12\1\0\44\12" - + "\11\0\1\12\71\0\53\11\24\12\1\11\12\12\6\0\6\11\4\12" - + "\4\11\3\12\1\11\3\12\2\11\7\12\3\11\4\12\15\11\14\12" - + "\1\11\17\12\2\0\46\11\1\0\1\11\5\0\1\11\2\0\53\11" - + "\1\0\u014d\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11" - + "\2\0\51\11\1\0\4\11\2\0\41\11\1\0\4\11\2\0\7\11" - + "\1\0\1\11\1\0\4\11\2\0\17\11\1\0\71\11\1\0\4\11" - + "\2\0\103\11\2\0\3\12\40\0\20\11\20\0\126\11\2\0\6\11" - + "\3\0\u026c\11\2\0\21\11\1\0\32\11\5\0\113\11\3\0\13\11" - + "\7\0\22\11\4\12\11\0\23\11\3\12\13\0\22\11\2\12\14\0" - + "\15\11\1\0\3\11\1\0\2\12\14\0\64\11\40\12\3\0\1\11" - + "\3\0\2\11\1\12\2\0\12\12\41\0\17\12\6\0\131\11\7\0" - + "\5\11\2\12\42\11\1\12\1\11\5\0\106\11\12\0\37\11\1\0" - + "\14\12\4\0\14\12\12\0\12\12\36\11\2\0\5\11\13\0\54\11" - + "\4\0\32\11\6\0\12\12\46\0\27\11\5\12\4\0\65\11\12\12" - + "\1\0\35\12\2\0\13\12\6\0\12\12\15\0\1\11\10\0\16\12" - + "\1\0\20\12\61\0\5\12\57\11\21\12\10\11\3\0\12\12\21\0" - + "\11\12\14\0\3\12\36\11\15\12\2\11\12\12\54\11\16\12\14\0" - + "\44\11\24\12\10\0\12\12\3\0\3\11\12\12\44\11\2\0\11\11" - + "\7\0\53\11\2\0\3\11\20\0\3\12\1\0\25\12\4\11\1\12" - + "\6\11\1\12\2\11\3\12\1\11\5\0\300\11\100\12\u0116\11\2\0" - + "\6\11\2\0\46\11\2\0\6\11\2\0\10\11\1\0\1\11\1\0" - + "\1\11\1\0\1\11\1\0\37\11\2\0\65\11\1\0\7\11\1\0" - + "\1\11\3\0\3\11\1\0\7\11\3\0\4\11\2\0\6\11\4\0" - + "\15\11\5\0\3\11\1\0\7\11\16\0\5\12\30\0\1\65\1\65" - + "\5\12\20\0\2\11\23\0\1\11\13\0\5\12\1\0\12\12\1\0" - + "\1\11\15\0\1\11\20\0\15\11\3\0\41\11\17\0\15\12\4\0" - + "\1\12\3\0\14\12\21\0\1\11\4\0\1\11\2\0\12\11\1\0" - + "\1\11\3\0\5\11\6\0\1\11\1\0\1\11\1\0\1\11\1\0" - + "\1\44\3\11\1\0\13\11\2\0\4\11\5\0\5\11\4\0\1\11" - + "\21\0\51\11\u0a77\0\345\11\6\0\4\11\3\12\2\11\14\0\46\11" - + "\1\0\1\11\5\0\1\11\2\0\70\11\7\0\1\11\17\0\1\12" - + "\27\11\11\0\7\11\1\0\7\11\1\0\7\11\1\0\7\11\1\0" - + "\7\11\1\0\7\11\1\0\7\11\1\0\7\11\1\0\40\12\57\0" - + "\1\11\u01d5\0\3\11\31\0\11\11\6\12\1\0\5\11\2\0\5\11" - + "\4\0\126\11\2\0\2\12\2\0\3\11\1\0\132\11\1\0\4\11" - + "\5\0\53\11\1\0\136\11\21\0\40\11\60\0\20\11\u0200\0\u19c0\11" - + "\100\0\u568d\11\103\0\56\11\2\0\u010d\11\3\0\20\11\12\12\2\11" - + "\24\0\57\11\1\12\4\0\12\12\1\0\37\11\2\12\120\11\2\12" - + "\45\0\11\11\2\0\147\11\2\0\100\11\5\0\2\11\1\0\1\11" - + "\1\0\5\11\30\0\20\11\1\12\3\11\1\12\4\11\1\12\27\11" - + "\5\12\4\0\1\12\13\0\1\11\7\0\64\11\14\0\2\12\62\11" - + "\22\12\12\0\12\12\6\0\22\12\6\11\3\0\1\11\1\0\2\11" - + "\13\12\34\11\10\12\2\0\27\11\15\12\14\0\35\11\3\0\4\12" - + "\57\11\16\12\16\0\1\11\12\12\6\0\5\11\1\12\12\11\12\12" - + "\5\11\1\0\51\11\16\12\11\0\3\11\1\12\10\11\2\12\2\0" - + "\12\12\6\0\27\11\3\0\1\11\3\12\62\11\1\12\1\11\3\12" - + "\2\11\2\12\5\11\2\12\1\11\1\12\1\11\30\0\3\11\2\0" - + "\13\11\5\12\2\0\3\11\2\12\12\0\6\11\2\0\6\11\2\0" - + "\6\11\11\0\7\11\1\0\7\11\1\0\53\11\1\0\16\11\6\0" - + "\163\11\10\12\1\0\2\12\2\0\12\12\6\0\u2ba4\11\14\0\27\11" - + "\4\0\61\11\u2104\0\u016e\11\2\0\152\11\46\0\7\11\14\0\5\11" - + "\5\0\1\11\1\12\12\11\1\0\15\11\1\0\5\11\1\0\1\11" - + "\1\0\2\11\1\0\2\11\1\0\154\11\41\0\u016b\11\22\0\100\11" - + "\2\0\66\11\50\0\15\11\3\0\20\12\20\0\20\12\3\0\2\11" - + "\30\0\3\11\31\0\1\11\6\0\5\11\1\0\207\11\2\0\1\12" - + "\4\0\1\11\13\0\12\12\7\0\32\11\4\0\1\11\1\0\32\11" - + "\13\0\131\11\3\0\6\11\2\0\6\11\2\0\6\11\2\0\3\11" - + "\3\0\2\11\3\0\2\11\22\0\3\12\4\0\14\11\1\0\32\11" - + "\1\0\23\11\1\0\2\11\1\0\17\11\2\0\16\11\42\0\173\11" - + "\105\0\65\11\210\0\1\12\202\0\35\11\3\0\61\11\17\0\1\12" - + "\37\0\40\11\15\0\36\11\5\0\46\11\5\12\5\0\36\11\2\0" - + "\44\11\4\0\10\11\1\0\5\11\52\0\236\11\2\0\12\12\6\0" - + "\44\11\4\0\44\11\4\0\50\11\10\0\64\11\14\0\13\11\1\0" - + "\17\11\1\0\7\11\1\0\2\11\1\0\13\11\1\0\17\11\1\0" - + "\7\11\1\0\2\11\103\0\u0137\11\11\0\26\11\12\0\10\11\30\0" - + "\6\11\1\0\52\11\1\0\11\11\105\0\6\11\2\0\1\11\1\0" - + "\54\11\1\0\2\11\3\0\1\11\2\0\27\11\12\0\27\11\11\0" - + "\37\11\101\0\23\11\1\0\2\11\12\0\26\11\12\0\32\11\106\0" - + "\70\11\6\0\2\11\100\0\1\11\3\12\1\0\2\12\5\0\4\12" - + "\4\11\1\0\3\11\1\0\35\11\2\0\3\12\4\0\1\12\40\0" - + "\35\11\3\0\35\11\43\0\10\11\1\0\34\11\2\12\31\0\66\11" - + "\12\0\26\11\12\0\23\11\15\0\22\11\156\0\111\11\67\0\63\11" - + "\15\0\63\11\15\0\44\11\4\12\10\0\12\12\u0146\0\52\11\1\0" - + "\2\12\3\0\2\11\116\0\35\11\12\0\1\11\10\0\26\11\13\12" - + "\37\0\22\11\4\12\52\0\25\11\33\0\27\11\11\0\3\12\65\11" - + "\17\12\37\0\13\12\2\11\2\12\1\11\11\0\4\12\55\11\13\12" - + "\2\0\1\12\4\0\1\12\12\0\1\12\2\0\31\11\7\0\12\12" - + "\6\0\3\12\44\11\16\12\1\0\12\12\4\0\1\11\2\12\1\11" - + "\10\0\43\11\1\12\2\0\1\11\11\0\3\12\60\11\16\12\4\11" - + "\4\0\4\12\1\0\14\12\1\11\1\0\1\11\43\0\22\11\1\0" - + "\31\11\14\12\6\0\1\12\101\0\7\11\1\0\1\11\1\0\4\11" - + "\1\0\17\11\1\0\12\11\7\0\57\11\14\12\5\0\12\12\6\0" - + "\4\12\1\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0" - + "\2\11\1\0\5\11\1\0\2\12\1\11\7\12\2\0\2\12\2\0" - + "\3\12\2\0\1\11\6\0\1\12\5\0\5\11\2\12\2\0\7\12" - + "\3\0\5\12\213\0\65\11\22\12\4\11\5\0\12\12\4\0\1\12" - + "\3\11\36\0\60\11\24\12\2\11\1\0\1\11\10\0\12\12\246\0" - + "\57\11\7\12\2\0\11\12\27\0\4\11\2\12\42\0\60\11\21\12" - + "\3\0\1\11\13\0\12\12\46\0\53\11\15\12\1\11\7\0\12\12" - + "\66\0\33\11\2\0\17\12\4\0\12\12\6\0\7\11\271\0\54\11" - + "\17\12\145\0\100\11\12\12\25\0\10\11\2\0\1\11\2\0\10\11" - + "\1\0\2\11\1\0\30\11\6\12\1\0\2\12\2\0\4\12\1\11" - + "\1\12\1\11\2\12\14\0\12\12\106\0\10\11\2\0\47\11\7\12" - + "\2\0\7\12\1\11\1\0\1\11\1\12\33\0\1\11\12\12\50\11" - + "\7\12\1\11\4\12\10\0\1\12\10\0\1\11\13\12\56\11\20\12" - + "\3\0\1\11\22\0\111\11\u0107\0\11\11\1\0\45\11\10\12\1\0" - + "\10\12\1\11\17\0\12\12\30\0\36\11\2\0\26\12\1\0\16\12" - + "\111\0\7\11\1\0\2\11\1\0\46\11\6\12\3\0\1\12\1\0" - + "\2\12\1\0\7\12\1\11\1\12\10\0\12\12\6\0\6\11\1\0" - + "\2\11\1\0\40\11\5\12\1\0\2\12\1\0\5\12\1\11\7\0" - + "\12\12\u0136\0\23\11\4\12\271\0\1\11\54\0\4\11\37\0\u039a\11" - + "\146\0\157\11\21\0\304\11\u0a4c\0\141\11\17\0\u042f\11\1\0\11\12" - + "\u0fc7\0\u0247\11\u21b9\0\u0239\11\7\0\37\11\1\0\12\12\6\0\117\11" - + "\1\0\12\12\6\0\36\11\2\0\5\12\13\0\60\11\7\12\11\0" - + "\4\11\14\0\12\12\11\0\25\11\5\0\23\11\u02b0\0\100\11\200\0" - + "\113\11\4\0\1\12\1\11\67\12\7\0\4\12\15\11\100\0\2\11" - + "\1\0\1\11\1\12\13\0\2\12\16\0\u17f8\11\10\0\u04d6\11\52\0" - + "\11\11\u22e7\0\4\11\1\0\7\11\1\0\2\11\1\0\u0123\11\55\0" - + "\3\11\21\0\4\11\10\0\u018c\11\u0904\0\153\11\5\0\15\11\3\0" - + "\11\11\7\0\12\11\3\0\2\12\1\0\4\12\u125c\0\56\12\2\0" - + "\27\12\u021e\0\5\12\3\0\26\12\2\0\7\12\36\0\4\12\224\0" - + "\3\12\u01bb\0\125\11\1\0\107\11\1\0\2\11\2\0\1\11\2\0" - + "\2\11\2\0\4\11\1\0\14\11\1\0\1\11\1\0\7\11\1\0" - + "\101\11\1\0\4\11\2\0\10\11\1\0\7\11\1\0\34\11\1\0" - + "\4\11\1\0\5\11\1\0\1\11\3\0\7\11\1\0\u0154\11\2\0" - + "\31\11\1\0\31\11\1\0\37\11\1\0\31\11\1\0\37\11\1\0" - + "\31\11\1\0\37\11\1\0\31\11\1\0\37\11\1\0\31\11\1\0" - + "\10\11\2\0\62\12\u0200\0\67\12\4\0\62\12\10\0\1\12\16\0" - + "\1\12\26\0\5\12\1\0\17\12\u0450\0\37\11\341\0\7\12\1\0" - + "\21\12\2\0\7\12\1\0\2\12\1\0\5\12\325\0\55\11\3\0" - + "\7\12\7\11\2\0\12\12\4\0\1\11\u0141\0\36\11\1\12\21\0" - + "\54\11\16\12\5\0\1\11\u04e0\0\7\11\1\0\4\11\1\0\2\11" - + "\1\0\17\11\1\0\305\11\13\0\7\12\51\0\104\11\7\12\1\11" - + "\4\0\12\12\u0356\0\1\11\u014f\0\4\11\1\0\33\11\1\0\2\11" - + "\1\0\1\11\2\0\1\11\1\0\12\11\1\0\4\11\1\0\1\11" - + "\1\0\1\11\6\0\1\11\4\0\1\11\1\0\1\11\1\0\1\11" - + "\1\0\3\11\1\0\2\11\1\0\1\11\2\0\1\11\1\0\1\11" - + "\1\0\1\11\1\0\1\11\1\0\1\11\1\0\2\11\1\0\1\11" - + "\2\0\4\11\1\0\7\11\1\0\4\11\1\0\4\11\1\0\1\11" - + "\1\0\12\11\1\0\21\11\5\0\3\11\1\0\5\11\1\0\21\11" - + "\u0d34\0\12\12\u0406\0\ua6e0\11\40\0\u1039\11\7\0\336\11\2\0\u1682\11" - + "\16\0\u1d31\11\u0c1f\0\u021e\11\u05e2\0\u134b\11\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uecc0\0" - + "\1\12\36\0\140\12\200\0\360\12\uffff\0\uffff\0\ufe12\0"; + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\12\1\4\1\2\1\65\1\66\1\1\16\12\4\0\1\35\1\0"+ + "\1\47\1\0\1\11\2\0\1\62\1\52\1\53\1\0\1\20\1\56"+ + "\1\15\1\16\1\0\1\14\7\7\1\60\1\7\1\13\1\3\1\54"+ + "\1\0\1\55\2\0\1\33\1\21\1\24\1\36\1\17\1\41\1\37"+ + "\1\45\1\27\1\11\1\44\1\42\1\5\1\31\1\30\1\25\1\50"+ + "\1\34\1\32\1\26\1\43\1\46\1\51\1\23\1\40\1\11\1\6"+ + "\1\22\1\10\1\0\1\57\1\0\1\33\1\21\1\24\1\36\1\17"+ + "\1\41\1\37\1\45\1\27\1\11\1\44\1\42\1\5\1\31\1\30"+ + "\1\25\1\50\1\34\1\32\1\26\1\43\1\46\1\51\1\23\1\40"+ + "\1\11\1\63\1\0\1\64\1\0\6\12\1\67\32\12\2\0\4\11"+ + "\1\0\1\61\2\0\1\11\2\0\1\12\7\0\1\11\4\0\1\11"+ + "\5\0\27\11\1\0\37\11\1\0\70\11\2\27\115\11\1\32\u0142\11"+ + "\4\0\14\11\16\0\5\11\7\0\1\11\1\0\1\11\21\0\160\12"+ + "\5\11\1\0\2\11\2\0\4\11\1\0\1\11\6\0\1\11\1\0"+ + "\3\11\1\0\1\11\1\0\24\11\1\0\123\11\1\0\213\11\1\0"+ + "\5\12\2\0\246\11\1\0\46\11\2\0\1\11\6\0\51\11\6\0"+ + "\1\11\1\0\55\12\1\0\1\12\1\0\2\12\1\0\2\12\1\0"+ + "\1\12\10\0\33\11\4\0\4\11\15\0\6\12\5\0\1\11\4\0"+ + "\13\12\1\0\1\12\3\0\53\11\37\12\4\0\2\11\1\12\143\11"+ + "\1\0\1\11\10\12\1\0\6\12\2\11\2\12\1\0\4\12\2\11"+ + "\12\12\3\11\2\0\1\11\17\0\1\12\1\11\1\12\36\11\33\12"+ + "\2\0\131\11\13\12\1\11\16\0\12\12\41\11\11\12\2\11\4\0"+ + "\1\11\2\0\1\12\30\11\4\12\1\11\11\12\1\11\3\12\1\11"+ + "\5\12\22\0\31\11\3\12\4\0\13\11\5\0\30\11\1\0\6\11"+ + "\1\0\2\12\6\0\10\12\52\11\72\12\66\11\3\12\1\11\22\12"+ + "\1\11\7\12\12\11\2\12\2\0\12\12\1\0\20\11\3\12\1\0"+ + "\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0\1\11\3\0"+ + "\4\11\2\0\1\12\1\11\7\12\2\0\2\12\2\0\3\12\1\11"+ + "\10\0\1\12\4\0\2\11\1\0\3\11\2\12\2\0\12\12\4\11"+ + "\7\0\2\11\1\0\1\12\2\0\3\12\1\0\6\11\4\0\2\11"+ + "\2\0\26\11\1\0\7\11\1\0\2\11\1\0\2\11\1\0\2\11"+ + "\2\0\1\12\1\0\5\12\4\0\2\12\2\0\3\12\3\0\1\12"+ + "\7\0\4\11\1\0\1\11\7\0\14\12\3\11\1\12\13\0\3\12"+ + "\1\0\11\11\1\0\3\11\1\0\26\11\1\0\7\11\1\0\2\11"+ + "\1\0\5\11\2\0\1\12\1\11\10\12\1\0\3\12\1\0\3\12"+ + "\2\0\1\11\17\0\2\11\2\12\2\0\12\12\1\0\1\11\7\0"+ + "\1\11\6\12\1\0\3\12\1\0\10\11\2\0\2\11\2\0\26\11"+ + "\1\0\7\11\1\0\2\11\1\0\5\11\2\0\1\12\1\11\7\12"+ + "\2\0\2\12\2\0\3\12\7\0\3\12\4\0\2\11\1\0\3\11"+ + "\2\12\2\0\12\12\1\0\1\11\20\0\1\12\1\11\1\0\6\11"+ + "\3\0\3\11\1\0\4\11\3\0\2\11\1\0\1\11\1\0\2\11"+ + "\3\0\2\11\3\0\3\11\3\0\14\11\4\0\5\12\3\0\3\12"+ + "\1\0\4\12\2\0\1\11\6\0\1\12\16\0\12\12\11\0\1\11"+ + "\6\0\5\12\10\11\1\0\3\11\1\0\27\11\1\0\20\11\2\0"+ + "\1\12\1\11\7\12\1\0\3\12\1\0\4\12\7\0\2\12\1\0"+ + "\3\11\2\0\1\11\2\0\2\11\2\12\2\0\12\12\20\0\1\11"+ + "\3\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0\12\11\1\0"+ + "\5\11\2\0\1\12\1\11\7\12\1\0\3\12\1\0\4\12\7\0"+ + "\2\12\6\0\2\11\1\0\2\11\2\12\2\0\12\12\1\0\2\11"+ + "\15\0\4\12\11\11\1\0\3\11\1\0\51\11\2\12\1\11\7\12"+ + "\1\0\3\12\1\0\4\12\1\11\5\0\3\11\1\12\7\0\3\11"+ + "\2\12\2\0\12\12\12\0\6\11\1\0\3\12\1\0\22\11\3\0"+ + "\30\11\1\0\11\11\1\0\1\11\2\0\7\11\3\0\1\12\4\0"+ + "\6\12\1\0\1\12\1\0\10\12\6\0\12\12\2\0\2\12\15\0"+ + "\60\11\1\12\2\11\7\12\4\0\10\11\10\12\1\0\12\12\47\0"+ + "\2\11\1\0\1\11\1\0\5\11\1\0\30\11\1\0\1\11\1\0"+ + "\12\11\1\12\2\11\11\12\1\11\2\0\5\11\1\0\1\11\1\0"+ + "\6\12\2\0\12\12\2\0\4\11\40\0\1\11\27\0\2\12\6\0"+ + "\12\12\13\0\1\12\1\0\1\12\1\0\1\12\4\0\2\12\10\11"+ + "\1\0\44\11\4\0\24\12\1\0\2\12\5\11\13\12\1\0\44\12"+ + "\11\0\1\12\71\0\53\11\24\12\1\11\12\12\6\0\6\11\4\12"+ + "\4\11\3\12\1\11\3\12\2\11\7\12\3\11\4\12\15\11\14\12"+ + "\1\11\17\12\2\0\46\11\1\0\1\11\5\0\1\11\2\0\53\11"+ + "\1\0\u014d\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11"+ + "\2\0\51\11\1\0\4\11\2\0\41\11\1\0\4\11\2\0\7\11"+ + "\1\0\1\11\1\0\4\11\2\0\17\11\1\0\71\11\1\0\4\11"+ + "\2\0\103\11\2\0\3\12\40\0\20\11\20\0\126\11\2\0\6\11"+ + "\3\0\u026c\11\2\0\21\11\1\0\32\11\5\0\113\11\3\0\13\11"+ + "\7\0\22\11\4\12\11\0\23\11\3\12\13\0\22\11\2\12\14\0"+ + "\15\11\1\0\3\11\1\0\2\12\14\0\64\11\40\12\3\0\1\11"+ + "\3\0\2\11\1\12\2\0\12\12\41\0\17\12\6\0\131\11\7\0"+ + "\5\11\2\12\42\11\1\12\1\11\5\0\106\11\12\0\37\11\1\0"+ + "\14\12\4\0\14\12\12\0\12\12\36\11\2\0\5\11\13\0\54\11"+ + "\4\0\32\11\6\0\12\12\46\0\27\11\5\12\4\0\65\11\12\12"+ + "\1\0\35\12\2\0\13\12\6\0\12\12\15\0\1\11\10\0\16\12"+ + "\1\0\20\12\61\0\5\12\57\11\21\12\10\11\3\0\12\12\21\0"+ + "\11\12\14\0\3\12\36\11\15\12\2\11\12\12\54\11\16\12\14\0"+ + "\44\11\24\12\10\0\12\12\3\0\3\11\12\12\44\11\2\0\11\11"+ + "\7\0\53\11\2\0\3\11\20\0\3\12\1\0\25\12\4\11\1\12"+ + "\6\11\1\12\2\11\3\12\1\11\5\0\300\11\100\12\u0116\11\2\0"+ + "\6\11\2\0\46\11\2\0\6\11\2\0\10\11\1\0\1\11\1\0"+ + "\1\11\1\0\1\11\1\0\37\11\2\0\65\11\1\0\7\11\1\0"+ + "\1\11\3\0\3\11\1\0\7\11\3\0\4\11\2\0\6\11\4\0"+ + "\15\11\5\0\3\11\1\0\7\11\16\0\5\12\30\0\1\65\1\65"+ + "\5\12\20\0\2\11\23\0\1\11\13\0\5\12\1\0\12\12\1\0"+ + "\1\11\15\0\1\11\20\0\15\11\3\0\41\11\17\0\15\12\4\0"+ + "\1\12\3\0\14\12\21\0\1\11\4\0\1\11\2\0\12\11\1\0"+ + "\1\11\3\0\5\11\6\0\1\11\1\0\1\11\1\0\1\11\1\0"+ + "\1\44\3\11\1\0\13\11\2\0\4\11\5\0\5\11\4\0\1\11"+ + "\21\0\51\11\u0a77\0\345\11\6\0\4\11\3\12\2\11\14\0\46\11"+ + "\1\0\1\11\5\0\1\11\2\0\70\11\7\0\1\11\17\0\1\12"+ + "\27\11\11\0\7\11\1\0\7\11\1\0\7\11\1\0\7\11\1\0"+ + "\7\11\1\0\7\11\1\0\7\11\1\0\7\11\1\0\40\12\57\0"+ + "\1\11\u01d5\0\3\11\31\0\11\11\6\12\1\0\5\11\2\0\5\11"+ + "\4\0\126\11\2\0\2\12\2\0\3\11\1\0\132\11\1\0\4\11"+ + "\5\0\53\11\1\0\136\11\21\0\40\11\60\0\20\11\u0200\0\u19c0\11"+ + "\100\0\u568d\11\103\0\56\11\2\0\u010d\11\3\0\20\11\12\12\2\11"+ + "\24\0\57\11\1\12\4\0\12\12\1\0\37\11\2\12\120\11\2\12"+ + "\45\0\11\11\2\0\147\11\2\0\100\11\5\0\2\11\1\0\1\11"+ + "\1\0\5\11\30\0\20\11\1\12\3\11\1\12\4\11\1\12\27\11"+ + "\5\12\4\0\1\12\13\0\1\11\7\0\64\11\14\0\2\12\62\11"+ + "\22\12\12\0\12\12\6\0\22\12\6\11\3\0\1\11\1\0\2\11"+ + "\13\12\34\11\10\12\2\0\27\11\15\12\14\0\35\11\3\0\4\12"+ + "\57\11\16\12\16\0\1\11\12\12\6\0\5\11\1\12\12\11\12\12"+ + "\5\11\1\0\51\11\16\12\11\0\3\11\1\12\10\11\2\12\2\0"+ + "\12\12\6\0\27\11\3\0\1\11\3\12\62\11\1\12\1\11\3\12"+ + "\2\11\2\12\5\11\2\12\1\11\1\12\1\11\30\0\3\11\2\0"+ + "\13\11\5\12\2\0\3\11\2\12\12\0\6\11\2\0\6\11\2\0"+ + "\6\11\11\0\7\11\1\0\7\11\1\0\53\11\1\0\16\11\6\0"+ + "\163\11\10\12\1\0\2\12\2\0\12\12\6\0\u2ba4\11\14\0\27\11"+ + "\4\0\61\11\u2104\0\u016e\11\2\0\152\11\46\0\7\11\14\0\5\11"+ + "\5\0\1\11\1\12\12\11\1\0\15\11\1\0\5\11\1\0\1\11"+ + "\1\0\2\11\1\0\2\11\1\0\154\11\41\0\u016b\11\22\0\100\11"+ + "\2\0\66\11\50\0\15\11\3\0\20\12\20\0\20\12\3\0\2\11"+ + "\30\0\3\11\31\0\1\11\6\0\5\11\1\0\207\11\2\0\1\12"+ + "\4\0\1\11\13\0\12\12\7\0\32\11\4\0\1\11\1\0\32\11"+ + "\13\0\131\11\3\0\6\11\2\0\6\11\2\0\6\11\2\0\3\11"+ + "\3\0\2\11\3\0\2\11\22\0\3\12\4\0\14\11\1\0\32\11"+ + "\1\0\23\11\1\0\2\11\1\0\17\11\2\0\16\11\42\0\173\11"+ + "\105\0\65\11\210\0\1\12\202\0\35\11\3\0\61\11\17\0\1\12"+ + "\37\0\40\11\15\0\36\11\5\0\46\11\5\12\5\0\36\11\2\0"+ + "\44\11\4\0\10\11\1\0\5\11\52\0\236\11\2\0\12\12\6\0"+ + "\44\11\4\0\44\11\4\0\50\11\10\0\64\11\14\0\13\11\1\0"+ + "\17\11\1\0\7\11\1\0\2\11\1\0\13\11\1\0\17\11\1\0"+ + "\7\11\1\0\2\11\103\0\u0137\11\11\0\26\11\12\0\10\11\30\0"+ + "\6\11\1\0\52\11\1\0\11\11\105\0\6\11\2\0\1\11\1\0"+ + "\54\11\1\0\2\11\3\0\1\11\2\0\27\11\12\0\27\11\11\0"+ + "\37\11\101\0\23\11\1\0\2\11\12\0\26\11\12\0\32\11\106\0"+ + "\70\11\6\0\2\11\100\0\1\11\3\12\1\0\2\12\5\0\4\12"+ + "\4\11\1\0\3\11\1\0\35\11\2\0\3\12\4\0\1\12\40\0"+ + "\35\11\3\0\35\11\43\0\10\11\1\0\34\11\2\12\31\0\66\11"+ + "\12\0\26\11\12\0\23\11\15\0\22\11\156\0\111\11\67\0\63\11"+ + "\15\0\63\11\15\0\44\11\4\12\10\0\12\12\u0146\0\52\11\1\0"+ + "\2\12\3\0\2\11\116\0\35\11\12\0\1\11\10\0\26\11\13\12"+ + "\37\0\22\11\4\12\52\0\25\11\33\0\27\11\11\0\3\12\65\11"+ + "\17\12\37\0\13\12\2\11\2\12\1\11\11\0\4\12\55\11\13\12"+ + "\2\0\1\12\4\0\1\12\12\0\1\12\2\0\31\11\7\0\12\12"+ + "\6\0\3\12\44\11\16\12\1\0\12\12\4\0\1\11\2\12\1\11"+ + "\10\0\43\11\1\12\2\0\1\11\11\0\3\12\60\11\16\12\4\11"+ + "\4\0\4\12\1\0\14\12\1\11\1\0\1\11\43\0\22\11\1\0"+ + "\31\11\14\12\6\0\1\12\101\0\7\11\1\0\1\11\1\0\4\11"+ + "\1\0\17\11\1\0\12\11\7\0\57\11\14\12\5\0\12\12\6\0"+ + "\4\12\1\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11\1\0"+ + "\2\11\1\0\5\11\1\0\2\12\1\11\7\12\2\0\2\12\2\0"+ + "\3\12\2\0\1\11\6\0\1\12\5\0\5\11\2\12\2\0\7\12"+ + "\3\0\5\12\213\0\65\11\22\12\4\11\5\0\12\12\4\0\1\12"+ + "\3\11\36\0\60\11\24\12\2\11\1\0\1\11\10\0\12\12\246\0"+ + "\57\11\7\12\2\0\11\12\27\0\4\11\2\12\42\0\60\11\21\12"+ + "\3\0\1\11\13\0\12\12\46\0\53\11\15\12\1\11\7\0\12\12"+ + "\66\0\33\11\2\0\17\12\4\0\12\12\6\0\7\11\271\0\54\11"+ + "\17\12\145\0\100\11\12\12\25\0\10\11\2\0\1\11\2\0\10\11"+ + "\1\0\2\11\1\0\30\11\6\12\1\0\2\12\2\0\4\12\1\11"+ + "\1\12\1\11\2\12\14\0\12\12\106\0\10\11\2\0\47\11\7\12"+ + "\2\0\7\12\1\11\1\0\1\11\1\12\33\0\1\11\12\12\50\11"+ + "\7\12\1\11\4\12\10\0\1\12\10\0\1\11\13\12\56\11\20\12"+ + "\3\0\1\11\22\0\111\11\u0107\0\11\11\1\0\45\11\10\12\1\0"+ + "\10\12\1\11\17\0\12\12\30\0\36\11\2\0\26\12\1\0\16\12"+ + "\111\0\7\11\1\0\2\11\1\0\46\11\6\12\3\0\1\12\1\0"+ + "\2\12\1\0\7\12\1\11\1\12\10\0\12\12\6\0\6\11\1\0"+ + "\2\11\1\0\40\11\5\12\1\0\2\12\1\0\5\12\1\11\7\0"+ + "\12\12\u0136\0\23\11\4\12\271\0\1\11\54\0\4\11\37\0\u039a\11"+ + "\146\0\157\11\21\0\304\11\u0a4c\0\141\11\17\0\u042f\11\1\0\11\12"+ + "\u0fc7\0\u0247\11\u21b9\0\u0239\11\7\0\37\11\1\0\12\12\6\0\117\11"+ + "\1\0\12\12\6\0\36\11\2\0\5\12\13\0\60\11\7\12\11\0"+ + "\4\11\14\0\12\12\11\0\25\11\5\0\23\11\u02b0\0\100\11\200\0"+ + "\113\11\4\0\1\12\1\11\67\12\7\0\4\12\15\11\100\0\2\11"+ + "\1\0\1\11\1\12\13\0\2\12\16\0\u17f8\11\10\0\u04d6\11\52\0"+ + "\11\11\u22e7\0\4\11\1\0\7\11\1\0\2\11\1\0\u0123\11\55\0"+ + "\3\11\21\0\4\11\10\0\u018c\11\u0904\0\153\11\5\0\15\11\3\0"+ + "\11\11\7\0\12\11\3\0\2\12\1\0\4\12\u125c\0\56\12\2\0"+ + "\27\12\u021e\0\5\12\3\0\26\12\2\0\7\12\36\0\4\12\224\0"+ + "\3\12\u01bb\0\125\11\1\0\107\11\1\0\2\11\2\0\1\11\2\0"+ + "\2\11\2\0\4\11\1\0\14\11\1\0\1\11\1\0\7\11\1\0"+ + "\101\11\1\0\4\11\2\0\10\11\1\0\7\11\1\0\34\11\1\0"+ + "\4\11\1\0\5\11\1\0\1\11\3\0\7\11\1\0\u0154\11\2\0"+ + "\31\11\1\0\31\11\1\0\37\11\1\0\31\11\1\0\37\11\1\0"+ + "\31\11\1\0\37\11\1\0\31\11\1\0\37\11\1\0\31\11\1\0"+ + "\10\11\2\0\62\12\u0200\0\67\12\4\0\62\12\10\0\1\12\16\0"+ + "\1\12\26\0\5\12\1\0\17\12\u0450\0\37\11\341\0\7\12\1\0"+ + "\21\12\2\0\7\12\1\0\2\12\1\0\5\12\325\0\55\11\3\0"+ + "\7\12\7\11\2\0\12\12\4\0\1\11\u0141\0\36\11\1\12\21\0"+ + "\54\11\16\12\5\0\1\11\u04e0\0\7\11\1\0\4\11\1\0\2\11"+ + "\1\0\17\11\1\0\305\11\13\0\7\12\51\0\104\11\7\12\1\11"+ + "\4\0\12\12\u0356\0\1\11\u014f\0\4\11\1\0\33\11\1\0\2\11"+ + "\1\0\1\11\2\0\1\11\1\0\12\11\1\0\4\11\1\0\1\11"+ + "\1\0\1\11\6\0\1\11\4\0\1\11\1\0\1\11\1\0\1\11"+ + "\1\0\3\11\1\0\2\11\1\0\1\11\2\0\1\11\1\0\1\11"+ + "\1\0\1\11\1\0\1\11\1\0\1\11\1\0\2\11\1\0\1\11"+ + "\2\0\4\11\1\0\7\11\1\0\4\11\1\0\4\11\1\0\1\11"+ + "\1\0\12\11\1\0\21\11\5\0\3\11\1\0\5\11\1\0\21\11"+ + "\u0d34\0\12\12\u0406\0\ua6e0\11\40\0\u1039\11\7\0\336\11\2\0\u1682\11"+ + "\16\0\u1d31\11\u0c1f\0\u021e\11\u05e2\0\u134b\11\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uecc0\0"+ + "\1\12\36\0\140\12\200\0\360\12\uffff\0\uffff\0\ufe12\0"; - /** - * Translates characters to character classes - */ - private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + /** + * Translates characters to character classes + */ + private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - /** - * Translates DFA states to action switch labels. - */ - private static final int[] ZZ_ACTION = zzUnpackAction(); + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); - private static final String ZZ_ACTION_PACKED_0 - = "\3\0\1\1\1\2\1\1\20\3\1\4\2\5\1\1" - + "\1\6\2\7\1\10\1\11\1\12\1\13\1\10\1\12" - + "\2\1\17\10\1\14\1\10\1\15\1\16\1\17\1\20" - + "\1\21\1\22\26\3\1\23\1\24\1\25\1\23\1\26" - + "\1\27\1\30\1\31\1\23\1\32\1\33\1\34\1\23" - + "\1\0\2\10\1\35\1\0\1\35\1\0\6\10\1\36" - + "\36\10\4\3\1\37\6\3\1\40\15\3\5\0\2\10" - + "\1\35\1\0\1\10\1\37\46\10\5\3\1\41\1\42" - + "\4\3\1\43\1\3\1\44\3\3\1\45\3\3\1\46" - + "\2\3\1\47\1\0\1\50\1\0\12\10\1\51\1\52" - + "\5\10\1\53\1\10\1\54\4\10\1\55\7\10\1\56" - + "\1\46\1\10\1\57\4\10\1\60\2\10\6\3\1\61" - + "\1\62\1\3\1\63\10\3\1\64\1\65\4\10\1\66" - + "\1\61\27\10\1\67\1\70\6\10\1\64\1\71\1\3" - + "\1\72\12\3\1\73\1\3\1\74\1\3\1\10\1\72" - + "\5\10\1\75\11\10\1\76\1\77\1\10\1\100\1\10" - + "\1\73\2\10\1\74\1\101\1\102\6\10\1\103\4\3" - + "\1\104\6\3\1\105\1\3\10\10\1\106\11\10\1\107" - + "\1\110\3\10\1\111\2\10\1\112\1\3\1\113\5\3" - + "\1\114\1\115\1\3\1\116\1\10\1\76\4\10\1\117" - + "\2\10\1\120\5\10\1\121\1\10\1\122\1\123\1\124" - + "\1\125\2\10\2\3\1\126\4\3\1\127\5\10\1\130" - + "\3\10\1\131\1\10\1\132\1\10\1\133\2\10\5\3" - + "\1\134\1\3\1\135\1\136\1\137\14\10\4\3\1\140" - + "\1\3\1\141\4\10\1\142\1\10\1\143\6\10\5\3" - + "\7\10\1\144\2\10\1\145\1\146\1\0\3\3\11\10" - + "\2\0\2\3\1\147\6\10\1\150\2\10\1\151\1\3" - + "\1\0\5\10\1\152\1\10\1\153\3\0\2\10\1\154" - + "\1\155\2\10\2\0\1\156\1\157\1\160\1\10\1\161" - + "\1\162\1\163"; + private static final String ZZ_ACTION_PACKED_0 = + "\3\0\1\1\1\2\1\1\20\3\1\4\2\5\1\1"+ + "\1\6\2\7\1\10\1\11\1\12\1\13\1\10\1\12"+ + "\2\1\17\10\1\14\1\10\1\15\1\16\1\17\1\20"+ + "\1\21\1\22\26\3\1\23\1\24\1\25\1\23\1\26"+ + "\1\27\1\30\1\31\1\23\1\32\1\33\1\34\1\23"+ + "\1\0\2\10\1\35\1\0\1\35\1\0\6\10\1\36"+ + "\36\10\4\3\1\37\6\3\1\40\15\3\5\0\2\10"+ + "\1\35\1\0\1\10\1\37\46\10\5\3\1\41\1\42"+ + "\4\3\1\43\1\3\1\44\3\3\1\45\3\3\1\46"+ + "\2\3\1\47\1\0\1\50\1\0\12\10\1\51\1\52"+ + "\5\10\1\53\1\10\1\54\4\10\1\55\7\10\1\56"+ + "\1\46\1\10\1\57\4\10\1\60\2\10\6\3\1\61"+ + "\1\62\1\3\1\63\10\3\1\64\1\65\4\10\1\66"+ + "\1\61\27\10\1\67\1\70\6\10\1\64\1\71\1\3"+ + "\1\72\12\3\1\73\1\3\1\74\1\3\1\10\1\72"+ + "\5\10\1\75\11\10\1\76\1\77\1\10\1\100\1\10"+ + "\1\73\2\10\1\74\1\101\1\102\6\10\1\103\4\3"+ + "\1\104\6\3\1\105\1\3\10\10\1\106\11\10\1\107"+ + "\1\110\3\10\1\111\2\10\1\112\1\3\1\113\5\3"+ + "\1\114\1\115\1\3\1\116\1\10\1\76\4\10\1\117"+ + "\2\10\1\120\5\10\1\121\1\10\1\122\1\123\1\124"+ + "\1\125\2\10\2\3\1\126\4\3\1\127\5\10\1\130"+ + "\3\10\1\131\1\10\1\132\1\10\1\133\2\10\5\3"+ + "\1\134\1\3\1\135\1\136\1\137\14\10\4\3\1\140"+ + "\1\3\1\141\4\10\1\142\1\10\1\143\6\10\5\3"+ + "\7\10\1\144\2\10\1\145\1\146\1\0\3\3\11\10"+ + "\2\0\2\3\1\147\6\10\1\150\2\10\1\151\1\3"+ + "\1\0\5\10\1\152\1\10\1\153\3\0\2\10\1\154"+ + "\1\155\2\10\2\0\1\156\1\157\1\160\1\10\1\161"+ + "\1\162\1\163"; - private static int[] zzUnpackAction() { - int[] result = new int[607]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; + private static int [] zzUnpackAction() { + int [] result = new int[607]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAction(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackAction(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; + + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); + + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\70\0\160\0\250\0\340\0\u0118\0\u0150\0\u0188"+ + "\0\u01c0\0\u01f8\0\u0230\0\u0268\0\u02a0\0\u02d8\0\u0310\0\u0348"+ + "\0\u0380\0\u03b8\0\u03f0\0\u0428\0\u0460\0\u0498\0\250\0\u04d0"+ + "\0\250\0\u0508\0\250\0\u0540\0\250\0\u0578\0\250\0\u05b0"+ + "\0\250\0\u05e8\0\u0620\0\u0658\0\u0690\0\u06c8\0\u0700\0\u0738"+ + "\0\u0770\0\u07a8\0\u07e0\0\u0818\0\u0850\0\u0888\0\u08c0\0\u08f8"+ + "\0\u0930\0\u0968\0\u09a0\0\u09d8\0\250\0\u0a10\0\250\0\250"+ + "\0\250\0\250\0\250\0\250\0\u0a48\0\u0a80\0\u0ab8\0\u0af0"+ + "\0\u0b28\0\u0b60\0\u0b98\0\u0bd0\0\u0c08\0\u0c40\0\u0c78\0\u0cb0"+ + "\0\u0ce8\0\u0d20\0\u0d58\0\u0d90\0\u0dc8\0\u0e00\0\u0e38\0\u0e70"+ + "\0\u0ea8\0\u0ee0\0\250\0\250\0\250\0\u0f18\0\250\0\250"+ + "\0\250\0\250\0\u0f50\0\250\0\250\0\250\0\u0f88\0\u0fc0"+ + "\0\u0ff8\0\u1030\0\u1068\0\u10a0\0\u0620\0\u0690\0\u10d8\0\u1110"+ + "\0\u1148\0\u1180\0\u11b8\0\u11f0\0\u05e8\0\u1228\0\u1260\0\u1298"+ + "\0\u12d0\0\u1308\0\u1340\0\u1378\0\u13b0\0\u13e8\0\u1420\0\u1458"+ + "\0\u1490\0\u14c8\0\u1500\0\u1538\0\u1570\0\u15a8\0\u15e0\0\u1618"+ + "\0\u1650\0\u1688\0\u16c0\0\u16f8\0\u1730\0\u1768\0\u17a0\0\u17d8"+ + "\0\u1810\0\u1848\0\u1880\0\u18b8\0\u18f0\0\u1928\0\u1960\0\u0188"+ + "\0\u1998\0\u19d0\0\u1a08\0\u1a40\0\u1a78\0\u1ab0\0\u0188\0\u1ae8"+ + "\0\u1b20\0\u1b58\0\u1b90\0\u1bc8\0\u1c00\0\u1c38\0\u1c70\0\u1ca8"+ + "\0\u1ce0\0\u1d18\0\u1d50\0\u1d88\0\u1dc0\0\u1df8\0\u1e30\0\u1e68"+ + "\0\u1ea0\0\u1ed8\0\u1f10\0\u1f48\0\u1f48\0\u1f80\0\u05e8\0\u1fb8"+ + "\0\u1ff0\0\u2028\0\u2060\0\u2098\0\u20d0\0\u2108\0\u2140\0\u2178"+ + "\0\u21b0\0\u21e8\0\u2220\0\u2258\0\u2290\0\u22c8\0\u2300\0\u2338"+ + "\0\u2370\0\u23a8\0\u23e0\0\u2418\0\u2450\0\u2488\0\u24c0\0\u24f8"+ + "\0\u2530\0\u2568\0\u25a0\0\u25d8\0\u2610\0\u2648\0\u2680\0\u26b8"+ + "\0\u26f0\0\u2728\0\u2760\0\u2798\0\u27d0\0\u2808\0\u2840\0\u2878"+ + "\0\u28b0\0\u28e8\0\u0188\0\u0188\0\u2920\0\u2958\0\u2990\0\u29c8"+ + "\0\u0188\0\u2a00\0\u0188\0\u2a38\0\u2a70\0\u2aa8\0\u0188\0\u2ae0"+ + "\0\u2b18\0\u2b50\0\u0188\0\u2b88\0\u2bc0\0\250\0\u0f18\0\250"+ + "\0\u2bf8\0\u2c30\0\u2c68\0\u2ca0\0\u2cd8\0\u2d10\0\u2d48\0\u2d80"+ + "\0\u2db8\0\u2df0\0\u2e28\0\u05e8\0\u2e60\0\u2e98\0\u2ed0\0\u2f08"+ + "\0\u2f40\0\u2f78\0\u2fb0\0\u2fe8\0\u05e8\0\u3020\0\u3058\0\u3090"+ + "\0\u30c8\0\u3100\0\u3138\0\u3170\0\u31a8\0\u31e0\0\u3218\0\u3250"+ + "\0\u3288\0\u05e8\0\u05e8\0\u32c0\0\u05e8\0\u32f8\0\u3330\0\u3368"+ + "\0\u33a0\0\u05e8\0\u33d8\0\u3410\0\u3448\0\u3480\0\u34b8\0\u34f0"+ + "\0\u3528\0\u3560\0\u0188\0\u3598\0\u35d0\0\u0188\0\u3608\0\u3640"+ + "\0\u3678\0\u36b0\0\u36e8\0\u3720\0\u3758\0\u3790\0\u0188\0\250"+ + "\0\u37c8\0\u3800\0\u3838\0\u3870\0\u05e8\0\u05e8\0\u38a8\0\u38e0"+ + "\0\u3918\0\u3950\0\u3988\0\u39c0\0\u39f8\0\u3a30\0\u3a68\0\u3aa0"+ + "\0\u3ad8\0\u3b10\0\u3b48\0\u3b80\0\u3bb8\0\u3bf0\0\u3c28\0\u3c60"+ + "\0\u3c98\0\u3cd0\0\u3d08\0\u3d40\0\u3d78\0\u05e8\0\u05e8\0\u3db0"+ + "\0\u3de8\0\u3e20\0\u3e58\0\u3e90\0\u3ec8\0\u05e8\0\u3f00\0\u3f38"+ + "\0\u0188\0\u3f70\0\u3fa8\0\u3fe0\0\u4018\0\u4050\0\u4088\0\u40c0"+ + "\0\u40f8\0\u4130\0\u4168\0\u0188\0\u41a0\0\u0188\0\u41d8\0\u4210"+ + "\0\u05e8\0\u4248\0\u4280\0\u42b8\0\u42f0\0\u4328\0\u05e8\0\u4360"+ + "\0\u4398\0\u43d0\0\u4408\0\u4440\0\u4478\0\u44b0\0\u44e8\0\u4520"+ + "\0\u05e8\0\u05e8\0\u4558\0\u05e8\0\u4590\0\u05e8\0\u45c8\0\u4600"+ + "\0\u05e8\0\u05e8\0\u05e8\0\u4638\0\u4670\0\u46a8\0\u46e0\0\u4718"+ + "\0\u4750\0\u05e8\0\u4788\0\u47c0\0\u47f8\0\u4830\0\u0188\0\u4868"+ + "\0\u48a0\0\u48d8\0\u4910\0\u4948\0\u4980\0\u0188\0\u49b8\0\u49f0"+ + "\0\u4a28\0\u4a60\0\u4a98\0\u4ad0\0\u4b08\0\u4b40\0\u4b78\0\u05e8"+ + "\0\u4bb0\0\u4be8\0\u4c20\0\u4c58\0\u4c90\0\u4cc8\0\u4d00\0\u4d38"+ + "\0\u4d70\0\u4da8\0\u05e8\0\u4de0\0\u4e18\0\u4e50\0\u05e8\0\u4e88"+ + "\0\u4ec0\0\u0188\0\u4ef8\0\u0188\0\u4f30\0\u4f68\0\u4fa0\0\u4fd8"+ + "\0\u5010\0\u0188\0\u0188\0\u5048\0\u05e8\0\u5080\0\u50b8\0\u50f0"+ + "\0\u5128\0\u5160\0\u5198\0\u05e8\0\u51d0\0\u5208\0\u05e8\0\u5240"+ + "\0\u5278\0\u52b0\0\u52e8\0\u5320\0\u05e8\0\u5358\0\u05e8\0\u5390"+ + "\0\u05e8\0\u05e8\0\u53c8\0\u5400\0\u5438\0\u5470\0\u0188\0\u54a8"+ + "\0\u54e0\0\u5518\0\u5550\0\u5588\0\u55c0\0\u55f8\0\u5630\0\u5668"+ + "\0\u56a0\0\u05e8\0\u56d8\0\u5710\0\u5748\0\u05e8\0\u5780\0\u05e8"+ + "\0\u57b8\0\u05e8\0\u57f0\0\u5828\0\u5860\0\u5898\0\u58d0\0\u5908"+ + "\0\u5940\0\u0188\0\u5978\0\u0188\0\u05e8\0\u59b0\0\u59e8\0\u5a20"+ + "\0\u5a58\0\u5a90\0\u5ac8\0\u5b00\0\u5b38\0\u5b70\0\u5ba8\0\u5be0"+ + "\0\u5c18\0\u5c50\0\u5c88\0\u5cc0\0\u5cf8\0\u5d30\0\u0188\0\u5d68"+ + "\0\u05e8\0\u5da0\0\u5dd8\0\u5e10\0\u5e48\0\u05e8\0\u5e80\0\u05e8"+ + "\0\u5eb8\0\u5ef0\0\u5f28\0\u5f60\0\u5f98\0\u5fd0\0\u6008\0\u6040"+ + "\0\u6078\0\u60b0\0\u60e8\0\u6120\0\u6158\0\u6190\0\u61c8\0\u6200"+ + "\0\u6238\0\u6270\0\u05e8\0\u62a8\0\u62e0\0\u05e8\0\u0188\0\u6318"+ + "\0\u6350\0\u6388\0\u63c0\0\u63f8\0\u6430\0\u6468\0\u64a0\0\u64d8"+ + "\0\u6510\0\u6548\0\u6580\0\u65b8\0\u65f0\0\u6628\0\u6660\0\u6698"+ + "\0\u0188\0\u66d0\0\u6708\0\u6740\0\u6778\0\u67b0\0\u67e8\0\u05e8"+ + "\0\u6820\0\u6858\0\250\0\u6890\0\u68c8\0\u6900\0\u6938\0\u6970"+ + "\0\u69a8\0\u69e0\0\u05e8\0\u6a18\0\u05e8\0\u6a50\0\u6a88\0\u6ac0"+ + "\0\u6af8\0\u6b30\0\u05e8\0\u05e8\0\u6b68\0\u6ba0\0\u6bd8\0\u6c10"+ + "\0\250\0\u05e8\0\u05e8\0\u6c48\0\u05e8\0\250\0\u05e8"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[607]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackRowMap(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); } + return j; + } - /** - * Translates a state to a row index in the transition table - */ - private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); - private static final String ZZ_ROWMAP_PACKED_0 - = "\0\0\0\70\0\160\0\250\0\340\0\u0118\0\u0150\0\u0188" - + "\0\u01c0\0\u01f8\0\u0230\0\u0268\0\u02a0\0\u02d8\0\u0310\0\u0348" - + "\0\u0380\0\u03b8\0\u03f0\0\u0428\0\u0460\0\u0498\0\250\0\u04d0" - + "\0\250\0\u0508\0\250\0\u0540\0\250\0\u0578\0\250\0\u05b0" - + "\0\250\0\u05e8\0\u0620\0\u0658\0\u0690\0\u06c8\0\u0700\0\u0738" - + "\0\u0770\0\u07a8\0\u07e0\0\u0818\0\u0850\0\u0888\0\u08c0\0\u08f8" - + "\0\u0930\0\u0968\0\u09a0\0\u09d8\0\250\0\u0a10\0\250\0\250" - + "\0\250\0\250\0\250\0\250\0\u0a48\0\u0a80\0\u0ab8\0\u0af0" - + "\0\u0b28\0\u0b60\0\u0b98\0\u0bd0\0\u0c08\0\u0c40\0\u0c78\0\u0cb0" - + "\0\u0ce8\0\u0d20\0\u0d58\0\u0d90\0\u0dc8\0\u0e00\0\u0e38\0\u0e70" - + "\0\u0ea8\0\u0ee0\0\250\0\250\0\250\0\u0f18\0\250\0\250" - + "\0\250\0\250\0\u0f50\0\250\0\250\0\250\0\u0f88\0\u0fc0" - + "\0\u0ff8\0\u1030\0\u1068\0\u10a0\0\u0620\0\u0690\0\u10d8\0\u1110" - + "\0\u1148\0\u1180\0\u11b8\0\u11f0\0\u05e8\0\u1228\0\u1260\0\u1298" - + "\0\u12d0\0\u1308\0\u1340\0\u1378\0\u13b0\0\u13e8\0\u1420\0\u1458" - + "\0\u1490\0\u14c8\0\u1500\0\u1538\0\u1570\0\u15a8\0\u15e0\0\u1618" - + "\0\u1650\0\u1688\0\u16c0\0\u16f8\0\u1730\0\u1768\0\u17a0\0\u17d8" - + "\0\u1810\0\u1848\0\u1880\0\u18b8\0\u18f0\0\u1928\0\u1960\0\u0188" - + "\0\u1998\0\u19d0\0\u1a08\0\u1a40\0\u1a78\0\u1ab0\0\u0188\0\u1ae8" - + "\0\u1b20\0\u1b58\0\u1b90\0\u1bc8\0\u1c00\0\u1c38\0\u1c70\0\u1ca8" - + "\0\u1ce0\0\u1d18\0\u1d50\0\u1d88\0\u1dc0\0\u1df8\0\u1e30\0\u1e68" - + "\0\u1ea0\0\u1ed8\0\u1f10\0\u1f48\0\u1f48\0\u1f80\0\u05e8\0\u1fb8" - + "\0\u1ff0\0\u2028\0\u2060\0\u2098\0\u20d0\0\u2108\0\u2140\0\u2178" - + "\0\u21b0\0\u21e8\0\u2220\0\u2258\0\u2290\0\u22c8\0\u2300\0\u2338" - + "\0\u2370\0\u23a8\0\u23e0\0\u2418\0\u2450\0\u2488\0\u24c0\0\u24f8" - + "\0\u2530\0\u2568\0\u25a0\0\u25d8\0\u2610\0\u2648\0\u2680\0\u26b8" - + "\0\u26f0\0\u2728\0\u2760\0\u2798\0\u27d0\0\u2808\0\u2840\0\u2878" - + "\0\u28b0\0\u28e8\0\u0188\0\u0188\0\u2920\0\u2958\0\u2990\0\u29c8" - + "\0\u0188\0\u2a00\0\u0188\0\u2a38\0\u2a70\0\u2aa8\0\u0188\0\u2ae0" - + "\0\u2b18\0\u2b50\0\u0188\0\u2b88\0\u2bc0\0\250\0\u0f18\0\250" - + "\0\u2bf8\0\u2c30\0\u2c68\0\u2ca0\0\u2cd8\0\u2d10\0\u2d48\0\u2d80" - + "\0\u2db8\0\u2df0\0\u2e28\0\u05e8\0\u2e60\0\u2e98\0\u2ed0\0\u2f08" - + "\0\u2f40\0\u2f78\0\u2fb0\0\u2fe8\0\u05e8\0\u3020\0\u3058\0\u3090" - + "\0\u30c8\0\u3100\0\u3138\0\u3170\0\u31a8\0\u31e0\0\u3218\0\u3250" - + "\0\u3288\0\u05e8\0\u05e8\0\u32c0\0\u05e8\0\u32f8\0\u3330\0\u3368" - + "\0\u33a0\0\u05e8\0\u33d8\0\u3410\0\u3448\0\u3480\0\u34b8\0\u34f0" - + "\0\u3528\0\u3560\0\u0188\0\u3598\0\u35d0\0\u0188\0\u3608\0\u3640" - + "\0\u3678\0\u36b0\0\u36e8\0\u3720\0\u3758\0\u3790\0\u0188\0\250" - + "\0\u37c8\0\u3800\0\u3838\0\u3870\0\u05e8\0\u05e8\0\u38a8\0\u38e0" - + "\0\u3918\0\u3950\0\u3988\0\u39c0\0\u39f8\0\u3a30\0\u3a68\0\u3aa0" - + "\0\u3ad8\0\u3b10\0\u3b48\0\u3b80\0\u3bb8\0\u3bf0\0\u3c28\0\u3c60" - + "\0\u3c98\0\u3cd0\0\u3d08\0\u3d40\0\u3d78\0\u05e8\0\u05e8\0\u3db0" - + "\0\u3de8\0\u3e20\0\u3e58\0\u3e90\0\u3ec8\0\u05e8\0\u3f00\0\u3f38" - + "\0\u0188\0\u3f70\0\u3fa8\0\u3fe0\0\u4018\0\u4050\0\u4088\0\u40c0" - + "\0\u40f8\0\u4130\0\u4168\0\u0188\0\u41a0\0\u0188\0\u41d8\0\u4210" - + "\0\u05e8\0\u4248\0\u4280\0\u42b8\0\u42f0\0\u4328\0\u05e8\0\u4360" - + "\0\u4398\0\u43d0\0\u4408\0\u4440\0\u4478\0\u44b0\0\u44e8\0\u4520" - + "\0\u05e8\0\u05e8\0\u4558\0\u05e8\0\u4590\0\u05e8\0\u45c8\0\u4600" - + "\0\u05e8\0\u05e8\0\u05e8\0\u4638\0\u4670\0\u46a8\0\u46e0\0\u4718" - + "\0\u4750\0\u05e8\0\u4788\0\u47c0\0\u47f8\0\u4830\0\u0188\0\u4868" - + "\0\u48a0\0\u48d8\0\u4910\0\u4948\0\u4980\0\u0188\0\u49b8\0\u49f0" - + "\0\u4a28\0\u4a60\0\u4a98\0\u4ad0\0\u4b08\0\u4b40\0\u4b78\0\u05e8" - + "\0\u4bb0\0\u4be8\0\u4c20\0\u4c58\0\u4c90\0\u4cc8\0\u4d00\0\u4d38" - + "\0\u4d70\0\u4da8\0\u05e8\0\u4de0\0\u4e18\0\u4e50\0\u05e8\0\u4e88" - + "\0\u4ec0\0\u0188\0\u4ef8\0\u0188\0\u4f30\0\u4f68\0\u4fa0\0\u4fd8" - + "\0\u5010\0\u0188\0\u0188\0\u5048\0\u05e8\0\u5080\0\u50b8\0\u50f0" - + "\0\u5128\0\u5160\0\u5198\0\u05e8\0\u51d0\0\u5208\0\u05e8\0\u5240" - + "\0\u5278\0\u52b0\0\u52e8\0\u5320\0\u05e8\0\u5358\0\u05e8\0\u5390" - + "\0\u05e8\0\u05e8\0\u53c8\0\u5400\0\u5438\0\u5470\0\u0188\0\u54a8" - + "\0\u54e0\0\u5518\0\u5550\0\u5588\0\u55c0\0\u55f8\0\u5630\0\u5668" - + "\0\u56a0\0\u05e8\0\u56d8\0\u5710\0\u5748\0\u05e8\0\u5780\0\u05e8" - + "\0\u57b8\0\u05e8\0\u57f0\0\u5828\0\u5860\0\u5898\0\u58d0\0\u5908" - + "\0\u5940\0\u0188\0\u5978\0\u0188\0\u05e8\0\u59b0\0\u59e8\0\u5a20" - + "\0\u5a58\0\u5a90\0\u5ac8\0\u5b00\0\u5b38\0\u5b70\0\u5ba8\0\u5be0" - + "\0\u5c18\0\u5c50\0\u5c88\0\u5cc0\0\u5cf8\0\u5d30\0\u0188\0\u5d68" - + "\0\u05e8\0\u5da0\0\u5dd8\0\u5e10\0\u5e48\0\u05e8\0\u5e80\0\u05e8" - + "\0\u5eb8\0\u5ef0\0\u5f28\0\u5f60\0\u5f98\0\u5fd0\0\u6008\0\u6040" - + "\0\u6078\0\u60b0\0\u60e8\0\u6120\0\u6158\0\u6190\0\u61c8\0\u6200" - + "\0\u6238\0\u6270\0\u05e8\0\u62a8\0\u62e0\0\u05e8\0\u0188\0\u6318" - + "\0\u6350\0\u6388\0\u63c0\0\u63f8\0\u6430\0\u6468\0\u64a0\0\u64d8" - + "\0\u6510\0\u6548\0\u6580\0\u65b8\0\u65f0\0\u6628\0\u6660\0\u6698" - + "\0\u0188\0\u66d0\0\u6708\0\u6740\0\u6778\0\u67b0\0\u67e8\0\u05e8" - + "\0\u6820\0\u6858\0\250\0\u6890\0\u68c8\0\u6900\0\u6938\0\u6970" - + "\0\u69a8\0\u69e0\0\u05e8\0\u6a18\0\u05e8\0\u6a50\0\u6a88\0\u6ac0" - + "\0\u6af8\0\u6b30\0\u05e8\0\u05e8\0\u6b68\0\u6ba0\0\u6bd8\0\u6c10" - + "\0\250\0\u05e8\0\u05e8\0\u6c48\0\u05e8\0\250\0\u05e8"; + private static final String ZZ_TRANS_PACKED_0 = + "\3\4\1\5\1\6\1\7\3\4\1\10\5\4\1\11"+ + "\1\4\1\12\1\4\1\10\1\13\1\14\1\15\1\16"+ + "\1\17\1\20\1\21\1\10\1\22\1\6\1\23\2\10"+ + "\1\24\1\25\3\10\1\26\1\4\2\10\5\4\1\10"+ + "\6\4\1\6\1\4\1\27\1\30\1\31\17\27\1\32"+ + "\24\27\1\33\20\27\1\4\1\34\1\35\1\5\1\4"+ + "\1\36\1\37\1\40\1\41\1\42\2\4\1\43\1\44"+ + "\1\45\1\46\1\4\1\42\1\4\1\42\1\47\1\50"+ + "\1\51\1\52\1\53\1\54\1\55\1\42\1\56\1\4"+ + "\1\57\1\60\1\42\1\61\1\42\1\62\1\42\1\63"+ + "\1\64\1\65\1\66\1\42\1\67\1\70\1\71\1\72"+ + "\1\73\1\42\1\40\7\4\70\0\1\5\2\0\65\5"+ + "\4\0\1\6\30\0\1\6\30\0\1\6\6\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\75"+ + "\1\0\1\10\1\0\10\10\1\76\1\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\1\77\5\10\1\100\3\10\1\0\11\10\1\0"+ + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0"+ + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0"+ + "\1\10\1\0\5\10\1\101\4\10\1\0\11\10\1\0"+ + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0"+ + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0"+ + "\1\10\1\0\5\10\1\102\4\10\1\0\4\10\1\103"+ + "\4\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\10\10\1\104\1\105\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\11\10\1\106\1\0\2\10"+ + "\1\107\6\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\110\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\3\10\1\111\2\10"+ + "\1\112\3\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\113\7\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\10\10"+ + "\1\114\1\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\4\10\1\115\4\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\116\1\0\1\10\1\0\12\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\4\10\1\117\5\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\4\10"+ + "\1\120\4\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\5\10\1\121\4\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\10\10\1\122\1\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\2\0\1\31\65\0\1\123\2\0\16\123\1\124\1\125"+ + "\1\126\2\123\1\127\2\123\1\130\2\123\1\131\4\123"+ + "\1\132\1\123\1\133\3\123\1\134\11\123\1\135\1\136"+ + "\1\137\1\123\5\0\1\35\72\0\1\42\1\140\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\141\1\0\1\42"+ + "\1\0\12\42\1\0\5\42\1\142\3\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\7\0\1\40\4\0\1\40"+ + "\1\0\1\143\1\144\40\0\1\40\14\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\7\0\1\145\4\0\1\145\1\0"+ + "\1\143\1\144\40\0\1\145\16\0\1\40\4\0\1\145"+ + "\1\0\1\146\41\0\1\40\16\0\1\143\4\0\1\143"+ + "\43\0\1\143\14\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\147"+ + "\5\42\1\150\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\5\42\1\151\4\42\1\0\4\42\1\152\4\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\10\42\1\153\1\154\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\5\42\1\155\2\42\1\156\1\157\1\0"+ + "\2\42\1\160\6\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\6\42\1\161"+ + "\3\42\1\0\1\42\1\162\7\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\10\42\1\163\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\164\1\0\1\42\1\0\5\42"+ + "\1\165\2\42\1\166\1\42\1\0\5\42\1\167\3\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\170"+ + "\1\0\1\42\1\0\3\42\1\171\6\42\1\0\4\42"+ + "\1\172\4\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\3\42\1\173\6\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\174\1\0\1\42\1\0\4\42\1\175\1\176"+ + "\4\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\177\1\0\1\42\1\0\12\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\4\42\1\200\3\42\1\201"+ + "\1\202\1\0\4\42\1\203\1\204\3\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\3\42\1\205\1\206\1\42\1\207\3\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\10\42\1\210\1\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\5\42\1\211\2\42\1\212"+ + "\1\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\6\42\1\213"+ + "\3\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\3\10\1\214"+ + "\6\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\1\215\11\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\1\10\1\216\1\10"+ + "\1\217\6\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\1\220\10\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0"+ + "\1\221\10\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\1\222"+ + "\10\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\10\10\1\223\1\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\11\10\1\224\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\5\10\1\225\4\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\10\10\1\226\1\10\1\0\2\10"+ + "\1\227\6\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\2\10\1\230\7\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\2\10\1\231\7\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\232\1\0\1\10\1\0\12\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\4\10\1\233\2\10\1\234\2\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\3\10\1\235\6\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\236\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\5\10\1\237\4\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\3\10\1\240\6\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\7\10\1\241\2\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\10\10\1\242\1\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\1\10\1\243\10\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\12\10\1\0\4\10\1\244\4\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\7\0\1\245"+ + "\4\0\1\245\2\0\1\245\1\0\1\245\2\0\1\245"+ + "\6\0\1\245\2\0\1\245\2\0\1\245\16\0\1\245"+ + "\16\0\1\246\4\0\1\246\2\0\1\246\1\0\1\246"+ + "\2\0\1\246\6\0\1\246\2\0\1\246\2\0\1\246"+ + "\16\0\1\246\16\0\1\247\4\0\1\250\43\0\1\247"+ + "\16\0\1\251\4\0\1\251\43\0\1\251\14\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\3\42\1\252\6\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\4\42\1\253\4\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\7\0\1\143"+ + "\4\0\1\143\2\0\1\144\40\0\1\143\16\0\1\254"+ + "\4\0\1\254\1\255\2\0\1\255\37\0\1\254\14\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\256\7\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\12\42\1\0\1\257\10\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\6\42\1\260\3\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\10\42\1\261\1\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\1\42\1\262\10\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\4\42\1\263\1\264\4\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\11\42\1\265\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\5\42\1\266\3\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\267\7\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\3\42\1\270\6\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\6\42\1\271\3\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\272"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\273\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42"+ + "\1\274\3\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\275\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42"+ + "\1\276\6\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\4\42\1\277\4\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42"+ + "\1\300\4\42\1\301\1\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\10\42\1\302\1\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\5\42\1\303\4\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\1\304\1\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\1\42\1\305\10\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\7\42\1\306\2\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\5\42\1\307\3\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\3\42\1\310\6\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\6\42\1\311\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\4\42\1\312\4\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\5\42\1\313\4\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\10\42\1\314\1\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\6\42\1\315\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\3\42\1\316\5\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\6\42\1\317\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\1\320\5\42\1\321\2\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\7\42\1\322\2\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\4\42\1\323\5\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\4\42\1\324\4\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\10\42\1\325\1\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\10\10\1\326\1\10\1\0\7\10\1\327\1\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\7\10\1\330\2\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\331"+ + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\332\1\0\1\10"+ + "\1\0\12\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\2\10\1\333\6\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\334\1\0\1\10\1\0\12\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\7\10\1\335\2\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\10\10\1\336\1\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\3\10\1\337\6\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\4\10\1\340\5\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\341\1\0\1\10\1\0\12\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\12\10\1\0\4\10\1\342\4\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\343"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\3\10\1\344\6\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\3\10\1\345\6\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\4\10\1\346\5\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\347\1\0\1\10"+ + "\1\0\12\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\3\10"+ + "\1\350\6\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\5\10\1\351\3\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\352\7\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\1\10\1\353\7\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\10\10"+ + "\1\354\1\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\5\10\1\355\3\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\7\0\1\356\4\0\1\356\2\0\1\356"+ + "\1\0\1\356\2\0\1\356\6\0\1\356\2\0\1\356"+ + "\2\0\1\356\16\0\1\356\16\0\1\357\4\0\1\357"+ + "\2\0\1\357\1\0\1\357\2\0\1\357\6\0\1\357"+ + "\2\0\1\357\2\0\1\357\16\0\1\357\16\0\1\247"+ + "\4\0\1\247\43\0\1\247\3\0\1\360\67\0\1\360"+ + "\12\0\1\251\1\361\3\0\1\251\43\0\1\251\14\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\10\42\1\362\1\42\1\0"+ + "\7\42\1\363\1\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\3\42\1\364"+ + "\6\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\7\0\1\254\4\0\1\254\43\0\1\254\14\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\12\42\1\0\4\42\1\365"+ + "\4\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\7\42\1\366\2\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\7\42\1\367\2\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\12\42\1\0\6\42\1\370"+ + "\2\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\12\42\1\0\10\42\1\371"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\3\42\1\372\6\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\1\42\1\373\7\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\374"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\375\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\376\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\5\42\1\377\4\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\11\42\1\u0100\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\12\42\1\0\1\u0101\10\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\1\u0102\1\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0103\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\4\42\1\u0104\5\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\4\42\1\u0105\4\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\3\42\1\u0106\6\42\1\0\11\42\1\0\2\42\5\0"+ + "\1\u0107\1\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\4\42\1\u0108\4\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\3\42\1\u0109\6\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\3\42\1\u010a\6\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\6\42\1\u010b\3\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\4\42\1\u010c\5\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\u010d\7\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\u010e"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42"+ + "\1\u010f\6\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u0110\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\7\42"+ + "\1\u0111\2\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\u0112\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\1\42"+ + "\1\u0113\7\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\1\42\1\u0114\10\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\1\42\1\u0115\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\3\42\1\u0116\6\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\u0117\1\0\1\42\1\0\12\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\6\42\1\u0118\3\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\1\u0119\1\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\1\u011a\10\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\5\42\1\u011b\3\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\u011c\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0"+ + "\1\u011d\10\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\5\10\1\u011e\4\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\1\10\1\u011f\1\10"+ + "\1\u0120\6\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\u0121\7\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\6\10"+ + "\1\u0122\3\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\7\10"+ + "\1\u0123\2\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\u0124\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\u0125\1\0\1\10\1\0\12\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\3\10\1\u0126\6\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\u0127"+ + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\7\10\1\u0128\2\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\10\10\1\u0129\1\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\5\10\1\u012a\4\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\4\10\1\u012b\5\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\11\10\1\u012c\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\4\10\1\u012d\5\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\12\10\1\0\4\10\1\u012e\4\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\u012f\1\0\1\10\1\0"+ + "\12\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\47\0\1\u0130\25\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\1\u0131\10\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\5\42"+ + "\1\u0132\4\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42"+ + "\1\u0133\5\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42"+ + "\1\u0134\5\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42"+ + "\1\u0135\6\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\7\42"+ + "\1\u0136\2\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u0137\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u0138\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\u0139\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u013a\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\6\42\1\u013b\3\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\11\42\1\u013c\1\0\1\42\1\u013d"+ + "\7\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\11\42\1\u013e\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\11\42\1\u013f\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\1\u0140\1\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\6\42\1\u0141\3\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\7\42\1\u0142\2\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\10\42\1\u0143\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\u0144\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0"+ + "\1\u0145\10\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u0146\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\4\42\1\u0147\5\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\4\42\1\u0148\5\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\10\42\1\u0149\1\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u014a"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\4\42\1\u014b\5\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\4\42\1\u014c\4\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\u014d\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\4\42\1\u014e\4\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\u014f\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\3\42\1\u0150\6\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u0151\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\3\42\1\u0152\5\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\5\42\1\u0153\4\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\u0154\2\42\1\u0155\4\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u0156\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\u0157"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\10\10\1\u0158\1\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\12\10\1\0\1\u0159\10\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\5\10\1\u015a\4\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\10\10\1\u015b\1\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\3\10\1\u015c\6\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\12\10\1\0\1\u015d\10\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\6\10"+ + "\1\u015e\3\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\1\10"+ + "\1\u015f\10\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\u0160\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\1\10\1\u0161\10\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\6\10\1\u0162\3\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\6\10\1\u0163\3\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\1\u0164"+ + "\10\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\6\10\1\u0165\3\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\12\10\1\0\1\u0166\10\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\1\10\1\u0167\10\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\10\42\1\u0168\1\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\1\u0169\10\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\6\42\1\u016a\3\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\1\42\1\u016b\10\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\1\42\1\u016c\7\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\3\42\1\u016d\6\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\1\42\1\u016e\10\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\3\42\1\u016f\6\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\10\42\1\u0170\1\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\3\42\1\u0171\5\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0172\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\u0173\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\4\42\1\u0174"+ + "\5\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\10\42\1\u0175"+ + "\1\u0176\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0"+ + "\5\42\1\u0177\3\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\2\42\1\u0178"+ + "\7\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\u0179\1\0\1\42\1\0\12\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\11\42\1\u017a\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\1\u017b\11\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\1\u017c\10\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\1\42\1\u017d\10\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\1\u017e\10\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\u017f\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\10\42\1\u0180"+ + "\1\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0"+ + "\1\u0181\10\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u0182\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\11\42\1\u0183\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\4\42\1\u0184\5\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\1\42\1\u0185\7\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\4\42\1\u0186\5\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\1\42\1\u0187"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\10\42\1\u0188\1\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\u0189\7\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\10\42\1\u018a\1\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\3\10\1\u018b\6\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\u018c\7\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\1\10\1\u018d\10\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\4\10\1\u018e\5\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\7\10\1\u018f\2\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\10\10\1\u0190\1\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\3\10\1\u0191\6\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\u0192\1\0\1\10"+ + "\1\0\12\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\5\10"+ + "\1\u0193\4\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\1\10"+ + "\1\u0194\10\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\10\10"+ + "\1\u0195\1\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\7\10"+ + "\1\u0196\2\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\5\10"+ + "\1\u0197\4\10\1\0\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42"+ + "\1\u0198\6\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u0199\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42"+ + "\1\u019a\5\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\u019b\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u019c\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\3\42\1\u019d\6\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u019e"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\10\42\1\u019f\1\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\11\42\1\u01a0\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\1\u01a1\1\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\1\u01a2\10\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\1\42\1\u01a3"+ + "\7\42\1\u01a4\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\u01a5\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\4\42"+ + "\1\u01a6\4\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\10\42\1\u01a7\1\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\6\42\1\u01a8\3\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\2\42\1\u01a9\7\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u01aa\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\4\42\1\u01ab\4\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\5\42\1\u01ac\4\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\u01ad"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\6\42\1\u01ae\3\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\6\42\1\u01af\3\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\11\42\1\u01b0\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\3\42\1\u01b1\6\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\10\10\1\u01b2\1\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\u01b3\1\0\1\10\1\0"+ + "\12\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0"+ + "\6\10\1\u01b4\2\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\5\10\1\u01b5"+ + "\4\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\u01b6\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\u01b7\1\0\1\10\1\0\12\10\1\0\11\10\1\0"+ + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0"+ + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0"+ + "\1\10\1\0\6\10\1\u01b8\3\10\1\0\11\10\1\0"+ + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0"+ + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0"+ + "\1\10\1\0\2\10\1\u01b9\7\10\1\0\11\10\1\0"+ + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0"+ + "\1\10\1\0\2\10\1\74\1\10\2\0\1\u01ba\1\0"+ + "\1\10\1\0\12\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\12\10\1\0\4\10\1\u01bb\4\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\12\10\1\0\5\10\1\u01bc\3\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\10\42\1\u01bd\1\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\u01be\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\3\42\1\u01bf"+ + "\6\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\4\42\1\u01c0"+ + "\1\42\1\u01c1\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\6\42\1\u01c2\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\u01c3\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\u01c4\1\0\1\42\1\0\12\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\1\42\1\u01c5\10\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\11\42\1\u01c6\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\u01c7"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\3\42\1\u01c8\6\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\1\42\1\u01c9\7\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\7\42\1\u01ca\2\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\12\42\1\0\4\42\1\u01cb\4\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\1\42\1\u01cc\10\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\7\42\1\u01cd\2\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\11\42\1\u01ce\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\10\42\1\u01cf\1\42\1\0\4\42\1\u01d0\4\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\6\42\1\u01d1\3\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\11\42\1\u01d2\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\323\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u01d3\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42"+ + "\1\u01d4\5\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\1\u01d5\10\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\6\10\1\u01d6"+ + "\3\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\u01d7\1\0\1\10\1\0\12\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\12\10\1\0\1\u01d8\10\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10"+ + "\1\0\1\10\1\0\3\10\1\u01d9\6\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10"+ + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\u01da"+ + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\6\10\1\u01db\3\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\u01dc\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42"+ + "\1\u01dd\3\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42"+ + "\1\u01de\3\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u01df\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u01e0\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\1\u01e1\10\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\u01e2\1\0\1\42\1\0\12\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\u01e3\1\0\1\42\1\0\12\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\4\42\1\u01e4\5\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\5\42\1\u01e5\3\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\3\42\1\u01e6\6\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\10\42\1\u01e7\1\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u01e8\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\5\42\1\u01e9\4\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\10\42\1\u01ea\1\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\u01eb\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\5\42\1\u01ec"+ + "\4\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\u01ed\1\0\1\10\1\0\12\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\u01ee\1\0\1\10\1\0\3\10\1\u01ef\3\10\1\u01f0"+ + "\2\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\6\10\1\u01f1"+ + "\3\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\7\10\1\u01f2"+ + "\2\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0"+ + "\1\u01f3\10\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\3\10\1\u01f4\6\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\10\42\1\u01f5\1\42"+ + "\1\0\4\42\1\u01f6\4\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u01f7\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42"+ + "\1\u01f8\6\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\u01f9\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\u01fa\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\6\42\1\u01fb\3\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\7\42\1\u01fc\2\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\10\42\1\u01fd\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\u01fe\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\u01ff\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\3\42\1\u0200"+ + "\6\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0"+ + "\11\42\1\0\2\42\5\0\1\u0201\1\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\42\1\0\1\42\1\0\6\42\1\u0202\3\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\2\10\1\u0203\7\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\6\10\1\u0204\3\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\10\10\1\u0205\1\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\3\10\1\u0206\6\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\7\10\1\u0207\2\10"+ + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\u0208\1\0\1\10\1\0\12\10\1\0\11\10"+ + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\10\42\1\u0209\1\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u020a"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\u020b\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\u020c\1\0\1\42\1\0\12\42"+ + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42"+ + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u020d\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\7\42\1\u020e\1\u020f\1\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\3\42\1\u0210\6\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\10\42\1\u0211\1\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\u0212\1\0\1\42\1\0\12\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\4\42\1\u0213\4\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0214\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\6\42\1\u0215\3\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0"+ + "\10\42\1\u0216\1\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\3\10\1\u0217\6\10\1\0\11\10\1\0\2\10\5\0"+ + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0"+ + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0"+ + "\12\10\1\0\1\u0218\10\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\11\10"+ + "\1\u0219\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\10\10\1\u021a"+ + "\1\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\2\10\1\u021b"+ + "\7\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0"+ + "\1\10\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\u021c\1\0\1\42\1\0\12\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\11\42\1\u021d\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\7\42\1\u021e\2\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\7\42\1\u021f\2\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u0220"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\3\42\1\u0221\6\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42"+ + "\1\0\6\42\1\u0222\3\42\1\0\11\42\1\0\2\42"+ + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42"+ + "\1\0\2\42\1\0\1\42\2\0\1\u0223\1\0\1\42"+ + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\42"+ + "\1\u0224\10\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u0225\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\4\42\1\u0226\4\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\0\7\10\1\u0227\1\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10"+ + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10"+ + "\1\u0228\11\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\1\10"+ + "\1\u0229\7\10\1\0\2\10\5\0\2\10\6\0\1\10"+ + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10"+ + "\2\0\1\10\1\0\1\10\1\0\11\10\1\u022a\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\3\10\1\u022b\6\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\7\42\1\u022c\2\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\6\42\1\u022d\3\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\u022e\7\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\u022f\7\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\u0230\1\0\1\42\1\0\12\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\4\42\1\u0231\5\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\3\42\1\u0232\6\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\3\42\1\u0233\6\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\u0234\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\7\0\1\u0235\4\0\1\u0236\43\0"+ + "\1\u0235\14\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\u0237\1\0\1\10\1\0\12\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\3\10\1\u0238\6\10\1\0"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0"+ + "\1\10\1\0\1\10\1\0\12\10\1\0\7\10\1\u0239"+ + "\1\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\u023a\7\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\10\42\1\u023b\1\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\10\42\1\u023c\1\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\10\42\1\u023d\1\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\7\42\1\u023e\2\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\5\42\1\u023f\4\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\42\1\0\1\42\1\0\7\42\1\u0240\2\42\1\0"+ + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\u0241\1\0\1\42\1\0\12\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0242\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\7\0\1\u0235\3\0\1\u0243\1\u0235"+ + "\43\0\1\u0235\22\0\1\u0243\61\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\3\10\1\u0244\6\10\1\0\11\10\1\0\2\10"+ + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10"+ + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10"+ + "\1\0\12\10\1\u0245\11\10\1\0\2\10\5\0\2\10"+ + "\6\0\1\10\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42"+ + "\1\u0246\1\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\4\42\1\u0247\4\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\42"+ + "\1\u0248\10\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\42"+ + "\1\u0249\10\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\u024a\7\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42"+ + "\1\u024b\3\42\1\0\11\42\1\0\2\42\5\0\2\42"+ + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42"+ + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42"+ + "\1\0\1\u024c\10\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\7\42\1\u024d"+ + "\2\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74"+ + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\u024e"+ + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\7\0"+ + "\1\u024f\4\0\1\u0250\43\0\1\u024f\14\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\1\42\1\u0251\10\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0"+ + "\1\42\1\0\6\42\1\u0252\3\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0"+ + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0253\1\0"+ + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0"+ + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0"+ + "\2\42\1\0\1\42\2\0\1\u0254\1\0\1\42\1\0"+ + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\10\42\1\u0255"+ + "\1\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0"+ + "\1\42\2\0\1\42\1\0\1\42\1\0\6\42\1\u0256"+ + "\3\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0"+ + "\1\42\7\0\1\u0257\4\0\1\u0258\43\0\1\u0257\16\0"+ + "\1\u024f\3\0\1\u0259\1\u024f\43\0\1\u024f\22\0\1\u0259"+ + "\61\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42"+ + "\2\0\1\u025a\1\0\1\42\1\0\12\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\7\42\1\u025b\2\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\1\42\1\u025c\10\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42"+ + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42"+ + "\1\0\1\42\1\0\7\42\1\u025d\2\42\1\0\11\42"+ + "\1\0\2\42\5\0\2\42\6\0\1\42\7\0\1\u0257"+ + "\3\0\1\u025e\1\u0257\43\0\1\u0257\22\0\1\u025e\61\0"+ + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0"+ + "\1\u025f\1\0\1\42\1\0\12\42\1\0\11\42\1\0"+ + "\2\42\5\0\2\42\6\0\1\42"; - private static int[] zzUnpackRowMap() { - int[] result = new int[607]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; + private static int [] zzUnpackTrans() { + int [] result = new int[27776]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackTrans(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + value--; + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackRowMap(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; + + /* error codes */ + private static final int ZZ_UNKNOWN_ERROR = 0; + private static final int ZZ_NO_MATCH = 1; + private static final int ZZ_PUSHBACK_2BIG = 2; + + /* error messages for the codes above */ + private static final String ZZ_ERROR_MSG[] = { + "Unkown internal scanner error", + "Error: could not match input", + "Error: pushback value was too large" + }; + + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\3\0\1\11\22\1\1\11\1\1\1\11\1\1\1\11"+ + "\1\1\1\11\1\1\1\11\1\1\1\11\23\1\1\11"+ + "\1\1\6\11\26\1\3\11\1\1\4\11\1\1\3\11"+ + "\1\1\1\0\3\1\1\0\1\1\1\0\76\1\5\0"+ + "\3\1\1\0\100\1\1\11\1\0\1\11\1\0\76\1"+ + "\1\11\367\1\1\0\14\1\2\0\14\1\1\11\1\1"+ + "\1\0\10\1\3\0\6\1\2\0\1\11\4\1\1\11"+ + "\1\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[607]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAttribute(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - /** - * The transition table of the DFA - */ - private static final int[] ZZ_TRANS = zzUnpackTrans(); + /** the input device */ + private java.io.Reader zzReader; - private static final String ZZ_TRANS_PACKED_0 - = "\3\4\1\5\1\6\1\7\3\4\1\10\5\4\1\11" - + "\1\4\1\12\1\4\1\10\1\13\1\14\1\15\1\16" - + "\1\17\1\20\1\21\1\10\1\22\1\6\1\23\2\10" - + "\1\24\1\25\3\10\1\26\1\4\2\10\5\4\1\10" - + "\6\4\1\6\1\4\1\27\1\30\1\31\17\27\1\32" - + "\24\27\1\33\20\27\1\4\1\34\1\35\1\5\1\4" - + "\1\36\1\37\1\40\1\41\1\42\2\4\1\43\1\44" - + "\1\45\1\46\1\4\1\42\1\4\1\42\1\47\1\50" - + "\1\51\1\52\1\53\1\54\1\55\1\42\1\56\1\4" - + "\1\57\1\60\1\42\1\61\1\42\1\62\1\42\1\63" - + "\1\64\1\65\1\66\1\42\1\67\1\70\1\71\1\72" - + "\1\73\1\42\1\40\7\4\70\0\1\5\2\0\65\5" - + "\4\0\1\6\30\0\1\6\30\0\1\6\6\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\75" - + "\1\0\1\10\1\0\10\10\1\76\1\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\1\77\5\10\1\100\3\10\1\0\11\10\1\0" - + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0" - + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0" - + "\1\10\1\0\5\10\1\101\4\10\1\0\11\10\1\0" - + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0" - + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0" - + "\1\10\1\0\5\10\1\102\4\10\1\0\4\10\1\103" - + "\4\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\10\10\1\104\1\105\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\11\10\1\106\1\0\2\10" - + "\1\107\6\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\110\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\3\10\1\111\2\10" - + "\1\112\3\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\2\10" - + "\1\113\7\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\10\10" - + "\1\114\1\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\4\10\1\115\4\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\116\1\0\1\10\1\0\12\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\4\10\1\117\5\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\4\10" - + "\1\120\4\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\5\10\1\121\4\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\10\10\1\122\1\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\2\0\1\31\65\0\1\123\2\0\16\123\1\124\1\125" - + "\1\126\2\123\1\127\2\123\1\130\2\123\1\131\4\123" - + "\1\132\1\123\1\133\3\123\1\134\11\123\1\135\1\136" - + "\1\137\1\123\5\0\1\35\72\0\1\42\1\140\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\141\1\0\1\42" - + "\1\0\12\42\1\0\5\42\1\142\3\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\7\0\1\40\4\0\1\40" - + "\1\0\1\143\1\144\40\0\1\40\14\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\7\0\1\145\4\0\1\145\1\0" - + "\1\143\1\144\40\0\1\145\16\0\1\40\4\0\1\145" - + "\1\0\1\146\41\0\1\40\16\0\1\143\4\0\1\143" - + "\43\0\1\143\14\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\147" - + "\5\42\1\150\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\5\42\1\151\4\42\1\0\4\42\1\152\4\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\10\42\1\153\1\154\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\5\42\1\155\2\42\1\156\1\157\1\0" - + "\2\42\1\160\6\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\6\42\1\161" - + "\3\42\1\0\1\42\1\162\7\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\10\42\1\163\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\164\1\0\1\42\1\0\5\42" - + "\1\165\2\42\1\166\1\42\1\0\5\42\1\167\3\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\170" - + "\1\0\1\42\1\0\3\42\1\171\6\42\1\0\4\42" - + "\1\172\4\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\3\42\1\173\6\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\174\1\0\1\42\1\0\4\42\1\175\1\176" - + "\4\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\177\1\0\1\42\1\0\12\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\4\42\1\200\3\42\1\201" - + "\1\202\1\0\4\42\1\203\1\204\3\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\3\42\1\205\1\206\1\42\1\207\3\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\10\42\1\210\1\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\5\42\1\211\2\42\1\212" - + "\1\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\6\42\1\213" - + "\3\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\3\10\1\214" - + "\6\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\1\215\11\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\1\10\1\216\1\10" - + "\1\217\6\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\1\220\10\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0" - + "\1\221\10\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\1\222" - + "\10\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\10\10\1\223\1\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\11\10\1\224\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\5\10\1\225\4\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\10\10\1\226\1\10\1\0\2\10" - + "\1\227\6\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\2\10\1\230\7\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\2\10\1\231\7\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\232\1\0\1\10\1\0\12\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\4\10\1\233\2\10\1\234\2\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\3\10\1\235\6\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\236\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\5\10\1\237\4\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\3\10\1\240\6\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\7\10\1\241\2\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\10\10\1\242\1\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\1\10\1\243\10\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\12\10\1\0\4\10\1\244\4\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\7\0\1\245" - + "\4\0\1\245\2\0\1\245\1\0\1\245\2\0\1\245" - + "\6\0\1\245\2\0\1\245\2\0\1\245\16\0\1\245" - + "\16\0\1\246\4\0\1\246\2\0\1\246\1\0\1\246" - + "\2\0\1\246\6\0\1\246\2\0\1\246\2\0\1\246" - + "\16\0\1\246\16\0\1\247\4\0\1\250\43\0\1\247" - + "\16\0\1\251\4\0\1\251\43\0\1\251\14\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\3\42\1\252\6\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\4\42\1\253\4\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\7\0\1\143" - + "\4\0\1\143\2\0\1\144\40\0\1\143\16\0\1\254" - + "\4\0\1\254\1\255\2\0\1\255\37\0\1\254\14\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\2\42\1\256\7\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\12\42\1\0\1\257\10\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\6\42\1\260\3\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\10\42\1\261\1\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\1\42\1\262\10\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\4\42\1\263\1\264\4\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\11\42\1\265\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\5\42\1\266\3\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\2\42\1\267\7\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\3\42\1\270\6\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\6\42\1\271\3\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\272" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\273\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42" - + "\1\274\3\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\275\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42" - + "\1\276\6\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\4\42\1\277\4\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42" - + "\1\300\4\42\1\301\1\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\10\42\1\302\1\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\5\42\1\303\4\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\1\304\1\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\1\42\1\305\10\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\7\42\1\306\2\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\5\42\1\307\3\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\3\42\1\310\6\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\6\42\1\311\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\4\42\1\312\4\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\5\42\1\313\4\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\10\42\1\314\1\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\6\42\1\315\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\3\42\1\316\5\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\6\42\1\317\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\1\320\5\42\1\321\2\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\7\42\1\322\2\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\4\42\1\323\5\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\4\42\1\324\4\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\10\42\1\325\1\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\10\10\1\326\1\10\1\0\7\10\1\327\1\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\7\10\1\330\2\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\331" - + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\332\1\0\1\10" - + "\1\0\12\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\2\10\1\333\6\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\334\1\0\1\10\1\0\12\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\7\10\1\335\2\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\10\10\1\336\1\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\3\10\1\337\6\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\4\10\1\340\5\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\341\1\0\1\10\1\0\12\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\12\10\1\0\4\10\1\342\4\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\343" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\3\10\1\344\6\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\3\10\1\345\6\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\4\10\1\346\5\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\347\1\0\1\10" - + "\1\0\12\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\3\10" - + "\1\350\6\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\5\10\1\351\3\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\2\10" - + "\1\352\7\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\1\10\1\353\7\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\10\10" - + "\1\354\1\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\5\10\1\355\3\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\7\0\1\356\4\0\1\356\2\0\1\356" - + "\1\0\1\356\2\0\1\356\6\0\1\356\2\0\1\356" - + "\2\0\1\356\16\0\1\356\16\0\1\357\4\0\1\357" - + "\2\0\1\357\1\0\1\357\2\0\1\357\6\0\1\357" - + "\2\0\1\357\2\0\1\357\16\0\1\357\16\0\1\247" - + "\4\0\1\247\43\0\1\247\3\0\1\360\67\0\1\360" - + "\12\0\1\251\1\361\3\0\1\251\43\0\1\251\14\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\10\42\1\362\1\42\1\0" - + "\7\42\1\363\1\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\3\42\1\364" - + "\6\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\7\0\1\254\4\0\1\254\43\0\1\254\14\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\12\42\1\0\4\42\1\365" - + "\4\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\7\42\1\366\2\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\7\42\1\367\2\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\12\42\1\0\6\42\1\370" - + "\2\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\12\42\1\0\10\42\1\371" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\3\42\1\372\6\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\1\42\1\373\7\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\374" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\375\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\376\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\5\42\1\377\4\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\11\42\1\u0100\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\12\42\1\0\1\u0101\10\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\1\u0102\1\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0103\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\4\42\1\u0104\5\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\4\42\1\u0105\4\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\3\42\1\u0106\6\42\1\0\11\42\1\0\2\42\5\0" - + "\1\u0107\1\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\4\42\1\u0108\4\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\3\42\1\u0109\6\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\3\42\1\u010a\6\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\6\42\1\u010b\3\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\4\42\1\u010c\5\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\2\42\1\u010d\7\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\u010e" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42" - + "\1\u010f\6\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u0110\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\7\42" - + "\1\u0111\2\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\u0112\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\1\42" - + "\1\u0113\7\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\1\42\1\u0114\10\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\1\42\1\u0115\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\3\42\1\u0116\6\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\u0117\1\0\1\42\1\0\12\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\6\42\1\u0118\3\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\1\u0119\1\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\1\u011a\10\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\5\42\1\u011b\3\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\u011c\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0" - + "\1\u011d\10\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\5\10\1\u011e\4\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\1\10\1\u011f\1\10" - + "\1\u0120\6\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\2\10" - + "\1\u0121\7\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\6\10" - + "\1\u0122\3\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\7\10" - + "\1\u0123\2\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\u0124\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\u0125\1\0\1\10\1\0\12\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\3\10\1\u0126\6\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\u0127" - + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\7\10\1\u0128\2\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\10\10\1\u0129\1\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\5\10\1\u012a\4\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\4\10\1\u012b\5\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\11\10\1\u012c\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\4\10\1\u012d\5\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\12\10\1\0\4\10\1\u012e\4\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\u012f\1\0\1\10\1\0" - + "\12\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\47\0\1\u0130\25\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\1\u0131\10\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\5\42" - + "\1\u0132\4\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42" - + "\1\u0133\5\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42" - + "\1\u0134\5\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42" - + "\1\u0135\6\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\7\42" - + "\1\u0136\2\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u0137\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u0138\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\u0139\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u013a\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\6\42\1\u013b\3\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\11\42\1\u013c\1\0\1\42\1\u013d" - + "\7\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\11\42\1\u013e\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\11\42\1\u013f\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\1\u0140\1\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\6\42\1\u0141\3\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\7\42\1\u0142\2\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\10\42\1\u0143\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\u0144\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0" - + "\1\u0145\10\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u0146\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\4\42\1\u0147\5\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\4\42\1\u0148\5\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\10\42\1\u0149\1\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u014a" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\4\42\1\u014b\5\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\4\42\1\u014c\4\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\u014d\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\4\42\1\u014e\4\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\u014f\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\3\42\1\u0150\6\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u0151\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\3\42\1\u0152\5\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\5\42\1\u0153\4\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\2\42\1\u0154\2\42\1\u0155\4\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u0156\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\u0157" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\10\10\1\u0158\1\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\12\10\1\0\1\u0159\10\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\5\10\1\u015a\4\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\10\10\1\u015b\1\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\3\10\1\u015c\6\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\12\10\1\0\1\u015d\10\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\6\10" - + "\1\u015e\3\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\1\10" - + "\1\u015f\10\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\u0160\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\1\10\1\u0161\10\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\6\10\1\u0162\3\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\6\10\1\u0163\3\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\1\u0164" - + "\10\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\6\10\1\u0165\3\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\12\10\1\0\1\u0166\10\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\1\10\1\u0167\10\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\10\42\1\u0168\1\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\1\u0169\10\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\6\42\1\u016a\3\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\1\42\1\u016b\10\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\1\42\1\u016c\7\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\3\42\1\u016d\6\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\1\42\1\u016e\10\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\3\42\1\u016f\6\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\10\42\1\u0170\1\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\3\42\1\u0171\5\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0172\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\u0173\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\4\42\1\u0174" - + "\5\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\10\42\1\u0175" - + "\1\u0176\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0" - + "\5\42\1\u0177\3\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\2\42\1\u0178" - + "\7\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\u0179\1\0\1\42\1\0\12\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\11\42\1\u017a\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\1\u017b\11\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\1\u017c\10\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\1\42\1\u017d\10\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\1\u017e\10\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\u017f\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\10\42\1\u0180" - + "\1\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0" - + "\1\u0181\10\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u0182\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\11\42\1\u0183\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\4\42\1\u0184\5\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\1\42\1\u0185\7\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\4\42\1\u0186\5\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\1\42\1\u0187" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\10\42\1\u0188\1\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\2\42\1\u0189\7\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\10\42\1\u018a\1\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\3\10\1\u018b\6\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\2\10\1\u018c\7\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\1\10\1\u018d\10\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\4\10\1\u018e\5\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\7\10\1\u018f\2\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\10\10\1\u0190\1\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\3\10\1\u0191\6\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\u0192\1\0\1\10" - + "\1\0\12\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\5\10" - + "\1\u0193\4\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\1\10" - + "\1\u0194\10\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\10\10" - + "\1\u0195\1\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\7\10" - + "\1\u0196\2\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\5\10" - + "\1\u0197\4\10\1\0\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42" - + "\1\u0198\6\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u0199\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42" - + "\1\u019a\5\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\u019b\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u019c\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\3\42\1\u019d\6\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u019e" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\10\42\1\u019f\1\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\11\42\1\u01a0\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\1\u01a1\1\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\1\u01a2\10\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\1\42\1\u01a3" - + "\7\42\1\u01a4\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\u01a5\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\4\42" - + "\1\u01a6\4\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\10\42\1\u01a7\1\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\6\42\1\u01a8\3\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\2\42\1\u01a9\7\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u01aa\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\4\42\1\u01ab\4\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\5\42\1\u01ac\4\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\u01ad" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\6\42\1\u01ae\3\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\6\42\1\u01af\3\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\11\42\1\u01b0\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\3\42\1\u01b1\6\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\10\10\1\u01b2\1\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\u01b3\1\0\1\10\1\0" - + "\12\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0" - + "\6\10\1\u01b4\2\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\5\10\1\u01b5" - + "\4\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\u01b6\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\u01b7\1\0\1\10\1\0\12\10\1\0\11\10\1\0" - + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0" - + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0" - + "\1\10\1\0\6\10\1\u01b8\3\10\1\0\11\10\1\0" - + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0" - + "\1\10\1\0\2\10\1\74\1\10\2\0\1\10\1\0" - + "\1\10\1\0\2\10\1\u01b9\7\10\1\0\11\10\1\0" - + "\2\10\5\0\2\10\6\0\1\10\5\0\1\10\1\0" - + "\1\10\1\0\2\10\1\74\1\10\2\0\1\u01ba\1\0" - + "\1\10\1\0\12\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\12\10\1\0\4\10\1\u01bb\4\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\12\10\1\0\5\10\1\u01bc\3\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\10\42\1\u01bd\1\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\u01be\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\3\42\1\u01bf" - + "\6\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\4\42\1\u01c0" - + "\1\42\1\u01c1\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\6\42\1\u01c2\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\u01c3\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\u01c4\1\0\1\42\1\0\12\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\1\42\1\u01c5\10\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\11\42\1\u01c6\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\u01c7" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\3\42\1\u01c8\6\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\1\42\1\u01c9\7\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\7\42\1\u01ca\2\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\12\42\1\0\4\42\1\u01cb\4\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\1\42\1\u01cc\10\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\7\42\1\u01cd\2\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\11\42\1\u01ce\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\10\42\1\u01cf\1\42\1\0\4\42\1\u01d0\4\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\6\42\1\u01d1\3\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\11\42\1\u01d2\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\323\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u01d3\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\4\42" - + "\1\u01d4\5\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\1\u01d5\10\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\6\10\1\u01d6" - + "\3\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\u01d7\1\0\1\10\1\0\12\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\12\10\1\0\1\u01d8\10\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\10" - + "\1\0\1\10\1\0\3\10\1\u01d9\6\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\10" - + "\1\0\1\10\1\0\2\10\1\74\1\10\2\0\1\u01da" - + "\1\0\1\10\1\0\12\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\6\10\1\u01db\3\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\u01dc\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42" - + "\1\u01dd\3\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42" - + "\1\u01de\3\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u01df\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u01e0\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\1\u01e1\10\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\u01e2\1\0\1\42\1\0\12\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\u01e3\1\0\1\42\1\0\12\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\4\42\1\u01e4\5\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\5\42\1\u01e5\3\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\3\42\1\u01e6\6\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\10\42\1\u01e7\1\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u01e8\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\5\42\1\u01e9\4\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\10\42\1\u01ea\1\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\u01eb\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\5\42\1\u01ec" - + "\4\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\u01ed\1\0\1\10\1\0\12\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\u01ee\1\0\1\10\1\0\3\10\1\u01ef\3\10\1\u01f0" - + "\2\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\6\10\1\u01f1" - + "\3\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\7\10\1\u01f2" - + "\2\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\0" - + "\1\u01f3\10\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\3\10\1\u01f4\6\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\10\42\1\u01f5\1\42" - + "\1\0\4\42\1\u01f6\4\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u01f7\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\3\42" - + "\1\u01f8\6\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\u01f9\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\u01fa\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\6\42\1\u01fb\3\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\7\42\1\u01fc\2\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\10\42\1\u01fd\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\u01fe\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\u01ff\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\3\42\1\u0200" - + "\6\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\12\42\1\0" - + "\11\42\1\0\2\42\5\0\1\u0201\1\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\42\1\0\1\42\1\0\6\42\1\u0202\3\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\2\10\1\u0203\7\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\6\10\1\u0204\3\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\10\10\1\u0205\1\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\3\10\1\u0206\6\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\7\10\1\u0207\2\10" - + "\1\0\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\u0208\1\0\1\10\1\0\12\10\1\0\11\10" - + "\1\0\2\10\5\0\2\10\6\0\1\10\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\10\42\1\u0209\1\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u020a" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\u020b\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\u020c\1\0\1\42\1\0\12\42" - + "\1\0\11\42\1\0\2\42\5\0\2\42\6\0\1\42" - + "\5\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u020d\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\7\42\1\u020e\1\u020f\1\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\3\42\1\u0210\6\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\10\42\1\u0211\1\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\u0212\1\0\1\42\1\0\12\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\4\42\1\u0213\4\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0214\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\6\42\1\u0215\3\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\42\1\0\1\42\1\0" - + "\10\42\1\u0216\1\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\3\10\1\u0217\6\10\1\0\11\10\1\0\2\10\5\0" - + "\2\10\6\0\1\10\5\0\1\10\1\0\1\10\1\0" - + "\2\10\1\74\1\10\2\0\1\10\1\0\1\10\1\0" - + "\12\10\1\0\1\u0218\10\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\11\10" - + "\1\u0219\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\10\10\1\u021a" - + "\1\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\2\10\1\u021b" - + "\7\10\1\0\11\10\1\0\2\10\5\0\2\10\6\0" - + "\1\10\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\u021c\1\0\1\42\1\0\12\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\11\42\1\u021d\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\7\42\1\u021e\2\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\7\42\1\u021f\2\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\u0220" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\12\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\3\42\1\u0221\6\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\42\1\0\1\42" - + "\1\0\6\42\1\u0222\3\42\1\0\11\42\1\0\2\42" - + "\5\0\2\42\6\0\1\42\5\0\1\42\1\0\1\42" - + "\1\0\2\42\1\0\1\42\2\0\1\u0223\1\0\1\42" - + "\1\0\12\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\42" - + "\1\u0224\10\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u0225\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\4\42\1\u0226\4\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\0\7\10\1\u0227\1\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\10\1\0\1\10\1\0\2\10" - + "\1\74\1\10\2\0\1\10\1\0\1\10\1\0\12\10" - + "\1\u0228\11\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\12\10\1\0\1\10" - + "\1\u0229\7\10\1\0\2\10\5\0\2\10\6\0\1\10" - + "\5\0\1\10\1\0\1\10\1\0\2\10\1\74\1\10" - + "\2\0\1\10\1\0\1\10\1\0\11\10\1\u022a\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\3\10\1\u022b\6\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\7\42\1\u022c\2\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\6\42\1\u022d\3\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\2\42\1\u022e\7\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\2\42\1\u022f\7\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\u0230\1\0\1\42\1\0\12\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\4\42\1\u0231\5\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\3\42\1\u0232\6\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\3\42\1\u0233\6\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\u0234\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\7\0\1\u0235\4\0\1\u0236\43\0" - + "\1\u0235\14\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\u0237\1\0\1\10\1\0\12\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\3\10\1\u0238\6\10\1\0" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\10\1\0\1\10\1\0\2\10\1\74\1\10\2\0" - + "\1\10\1\0\1\10\1\0\12\10\1\0\7\10\1\u0239" - + "\1\10\1\0\2\10\5\0\2\10\6\0\1\10\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\2\42\1\u023a\7\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\10\42\1\u023b\1\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\10\42\1\u023c\1\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\10\42\1\u023d\1\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\7\42\1\u023e\2\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\5\42\1\u023f\4\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\42\1\0\1\42\1\0\7\42\1\u0240\2\42\1\0" - + "\11\42\1\0\2\42\5\0\2\42\6\0\1\42\5\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\u0241\1\0\1\42\1\0\12\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0242\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\7\0\1\u0235\3\0\1\u0243\1\u0235" - + "\43\0\1\u0235\22\0\1\u0243\61\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\3\10\1\u0244\6\10\1\0\11\10\1\0\2\10" - + "\5\0\2\10\6\0\1\10\5\0\1\10\1\0\1\10" - + "\1\0\2\10\1\74\1\10\2\0\1\10\1\0\1\10" - + "\1\0\12\10\1\u0245\11\10\1\0\2\10\5\0\2\10" - + "\6\0\1\10\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\10\42" - + "\1\u0246\1\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\4\42\1\u0247\4\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\42" - + "\1\u0248\10\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\1\42" - + "\1\u0249\10\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\2\42" - + "\1\u024a\7\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\6\42" - + "\1\u024b\3\42\1\0\11\42\1\0\2\42\5\0\2\42" - + "\6\0\1\42\5\0\1\42\1\0\1\42\1\0\2\42" - + "\1\0\1\42\2\0\1\42\1\0\1\42\1\0\12\42" - + "\1\0\1\u024c\10\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\7\42\1\u024d" - + "\2\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\10\1\0\1\10\1\0\2\10\1\74" - + "\1\10\2\0\1\10\1\0\1\10\1\0\12\10\1\u024e" - + "\11\10\1\0\2\10\5\0\2\10\6\0\1\10\7\0" - + "\1\u024f\4\0\1\u0250\43\0\1\u024f\14\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\1\42\1\u0251\10\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\42\1\0" - + "\1\42\1\0\6\42\1\u0252\3\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42\5\0\1\42\1\0" - + "\1\42\1\0\2\42\1\0\1\42\2\0\1\u0253\1\0" - + "\1\42\1\0\12\42\1\0\11\42\1\0\2\42\5\0" - + "\2\42\6\0\1\42\5\0\1\42\1\0\1\42\1\0" - + "\2\42\1\0\1\42\2\0\1\u0254\1\0\1\42\1\0" - + "\12\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\10\42\1\u0255" - + "\1\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\5\0\1\42\1\0\1\42\1\0\2\42\1\0" - + "\1\42\2\0\1\42\1\0\1\42\1\0\6\42\1\u0256" - + "\3\42\1\0\11\42\1\0\2\42\5\0\2\42\6\0" - + "\1\42\7\0\1\u0257\4\0\1\u0258\43\0\1\u0257\16\0" - + "\1\u024f\3\0\1\u0259\1\u024f\43\0\1\u024f\22\0\1\u0259" - + "\61\0\1\42\1\0\1\42\1\0\2\42\1\0\1\42" - + "\2\0\1\u025a\1\0\1\42\1\0\12\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\7\42\1\u025b\2\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\1\42\1\u025c\10\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\5\0\1\42" - + "\1\0\1\42\1\0\2\42\1\0\1\42\2\0\1\42" - + "\1\0\1\42\1\0\7\42\1\u025d\2\42\1\0\11\42" - + "\1\0\2\42\5\0\2\42\6\0\1\42\7\0\1\u0257" - + "\3\0\1\u025e\1\u0257\43\0\1\u0257\22\0\1\u025e\61\0" - + "\1\42\1\0\1\42\1\0\2\42\1\0\1\42\2\0" - + "\1\u025f\1\0\1\42\1\0\12\42\1\0\11\42\1\0" - + "\2\42\5\0\2\42\6\0\1\42"; + /** the current state of the DFA */ + private int zzState; - private static int[] zzUnpackTrans() { - int[] result = new int[27776]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } + /** the current lexical state */ + private int zzLexicalState = YYINITIAL; - private static int zzUnpackTrans(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /** this buffer contains the current text to be matched and is + the source of the yytext() string */ + private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; + /** the textposition at the last accepting state */ + private int zzMarkedPos; - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; + /** the current text position in the buffer */ + private int zzCurrentPos; - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; + /** startRead marks the beginning of the yytext() string in the buffer */ + private int zzStartRead; - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); + /** endRead marks the last character in the buffer, that has been read + from input */ + private int zzEndRead; - private static final String ZZ_ATTRIBUTE_PACKED_0 - = "\3\0\1\11\22\1\1\11\1\1\1\11\1\1\1\11" - + "\1\1\1\11\1\1\1\11\1\1\1\11\23\1\1\11" - + "\1\1\6\11\26\1\3\11\1\1\4\11\1\1\3\11" - + "\1\1\1\0\3\1\1\0\1\1\1\0\76\1\5\0" - + "\3\1\1\0\100\1\1\11\1\0\1\11\1\0\76\1" - + "\1\11\367\1\1\0\14\1\2\0\14\1\1\11\1\1" - + "\1\0\10\1\3\0\6\1\2\0\1\11\4\1\1\11" - + "\1\1"; + /** number of newlines encountered up to the start of the matched text */ + private int yyline; - private static int[] zzUnpackAttribute() { - int[] result = new int[607]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } + /** the number of characters up to the start of the matched text */ + private int yychar; - private static int zzUnpackAttribute(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; - /** - * the input device - */ - private java.io.Reader zzReader; + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + private boolean zzAtBOL = true; - /** - * the current state of the DFA - */ - private int zzState; + /** zzAtEOF == true <=> the scanner is at the EOF */ + private boolean zzAtEOF; - /** - * the current lexical state - */ - private int zzLexicalState = YYINITIAL; + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /** + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; - /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string - */ - private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; + /* user code: */ - /** - * the textposition at the last accepting state - */ - private int zzMarkedPos; - - /** - * the current text position in the buffer - */ - private int zzCurrentPos; - - /** - * startRead marks the beginning of the yytext() string in the buffer - */ - private int zzStartRead; - - /** - * endRead marks the last character in the buffer, that has been read from - * input - */ - private int zzEndRead; - - /** - * number of newlines encountered up to the start of the matched text - */ - private int yyline; - - /** - * the number of characters up to the start of the matched text - */ - private int yychar; - - /** - * the number of characters from the last newline up to the start of the - * matched text - */ - private int yycolumn; - - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; - - /** - * zzAtEOF == true <=> the scanner is at the EOF - */ - private boolean zzAtEOF; - - /** - * denotes if the user-EOF-code has already been executed - */ - private boolean zzEOFDone; - - /** - * The number of occupied positions in zzBuffer beyond zzEndRead. When a - * lead/high surrogate has been read from the input stream into the final - * zzBuffer position, this will have a value of 1; otherwise, it will have a - * value of 0. - */ - private int zzFinalHighSurrogate = 0; - - /* user code: */ StringBuilder string = new StringBuilder(); boolean isMultiname = false; long multinameId = 0; private int repeatNum = 1; + private int stringPos = 0; /** * Create an empty lexer, yyrset will be called later to reset and assign @@ -2015,10 +1978,9 @@ public final class Flasm3Lexer { } ParsedSymbol last; - - public ParsedSymbol lex() throws java.io.IOException, AVM2ParseException { + public ParsedSymbol lex() throws java.io.IOException, AVM2ParseException{ ParsedSymbol ret = null; - if (!pushedBack.isEmpty()) { + if (!pushedBack.isEmpty()){ ret = last = pushedBack.pop(); } else { ret = last = yylex(); @@ -2026,1046 +1988,872 @@ public final class Flasm3Lexer { return ret; } - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public Flasm3Lexer(java.io.Reader in) { - this.zzReader = in; + + + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + public Flasm3Lexer(java.io.Reader in) { + this.zzReader = in; + } + + + /** + * Unpacks the compressed character translation table. + * + * @param packed the packed character translation table + * @return the unpacked character translation table + */ + private static char [] zzUnpackCMap(String packed) { + char [] map = new char[0x110000]; + int i = 0; /* index in packed string */ + int j = 0; /* index in unpacked array */ + while (i < 3870) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; } - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char[] zzUnpackCMap(String packed) { - char[] map = new char[0x110000]; - int i = 0; - /* index in packed string */ - int j = 0; - /* index in unpacked array */ - while (i < 3870) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do { - map[j++] = value; - } while (--count > 0); + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { + /* if not: blow it up */ + char newBuffer[] = new char[zzBuffer.length*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } + + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int totalRead = 0; + while (totalRead < requested) { + int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); + if (numRead == -1) { + break; + } + totalRead += numRead; + } + + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; } - return map; + } + return false; } - /** - * Refills the input buffer. - * - * @return false, iff there was new input. - * - * @exception java.io.IOException if any I/O-Error occurs - */ - private boolean zzRefill() throws java.io.IOException { + // totalRead = 0: End of stream + return true; + } - /* first: make room (if you can) */ - if (zzStartRead > 0) { - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead - zzStartRead); + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - /* translate stored positions */ - zzEndRead -= zzStartRead; - zzCurrentPos -= zzStartRead; - zzMarkedPos -= zzStartRead; - zzStartRead = 0; + if (zzReader != null) + zzReader.close(); + } + + + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + zzFinalHighSurrogate = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) + zzBuffer = new char[ZZ_BUFFERSIZE]; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } + + + /** + * Returns the text matched by the current regular expression. + */ + public final String yytext() { + return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); + } + + + /** + * Returns the character at position pos from the + * matched text. + * + * It is equivalent to yytext().charAt(pos), but faster + * + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. + * + * @return the character at position pos + */ + public final char yycharat(int pos) { + return zzBuffer[zzStartRead+pos]; + } + + + /** + * Returns the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos-zzStartRead; + } + + + /** + * Reports an error that occured while scanning. + * + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). + * + * Usual syntax/scanner level error handling should be done + * in error fallback rules. + * + * @param errorCode the code of the errormessage to display + */ + private void zzScanError(int errorCode) { + String message; + try { + message = ZZ_ERROR_MSG[errorCode]; + } + catch (ArrayIndexOutOfBoundsException e) { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; + } + + throw new Error(message); + } + + + /** + * Pushes the specified amount of characters back into the input stream. + * + * They will be read again by then next call of the scanning method + * + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! + */ + public void yypushback(int number) { + if ( number > yylength() ) + zzScanError(ZZ_PUSHBACK_2BIG); + + zzMarkedPos -= number; + } + + + /** + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. + * + * @return the next token + * @exception java.io.IOException if any I/O-Error occurs + */ + public ParsedSymbol yylex() throws java.io.IOException, AVM2ParseException { + int zzInput; + int zzAction; + + // cached fields: + int zzCurrentPosL; + int zzMarkedPosL; + int zzEndReadL = zzEndRead; + char [] zzBufferL = zzBuffer; + char [] zzCMapL = ZZ_CMAP; + + int [] zzTransL = ZZ_TRANS; + int [] zzRowMapL = ZZ_ROWMAP; + int [] zzAttrL = ZZ_ATTRIBUTE; + + while (true) { + zzMarkedPosL = zzMarkedPos; + + yychar+= zzMarkedPosL-zzStartRead; + + boolean zzR = false; + int zzCh; + int zzCharCount; + for (zzCurrentPosL = zzStartRead ; + zzCurrentPosL < zzMarkedPosL ; + zzCurrentPosL += zzCharCount ) { + zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); + zzCharCount = Character.charCount(zzCh); + switch (zzCh) { + case '\u000B': + case '\u000C': + case '\u0085': + case '\u2028': + case '\u2029': + yyline++; + yycolumn = 0; + zzR = false; + break; + case '\r': + yyline++; + yycolumn = 0; + zzR = true; + break; + case '\n': + if (zzR) + zzR = false; + else { + yyline++; + yycolumn = 0; + } + break; + default: + zzR = false; + yycolumn += zzCharCount; } + } - /* is the buffer big enough? */ - if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { - /* if not: blow it up */ - char newBuffer[] = new char[zzBuffer.length * 2]; - System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); - zzBuffer = newBuffer; - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; + if (zzR) { + // peek one character ahead if it is \n (if we have counted one line too much) + boolean zzPeek; + if (zzMarkedPosL < zzEndReadL) + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + else if (zzAtEOF) + zzPeek = false; + else { + boolean eof = zzRefill(); + zzEndReadL = zzEndRead; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + if (eof) + zzPeek = false; + else + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; } + if (zzPeek) yyline--; + } + zzAction = -1; - /* fill the buffer with new input */ - int requested = zzBuffer.length - zzEndRead; - int totalRead = 0; - while (totalRead < requested) { - int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); - if (numRead == -1) { - break; - } - totalRead += numRead; - } + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; - if (totalRead > 0) { - zzEndRead += totalRead; - if (totalRead == requested) { - /* possibly more input available */ - if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { - --zzEndRead; - zzFinalHighSurrogate = 1; - } - } - return false; - } + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } - // totalRead = 0: End of stream - return true; - } - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; - /* indicate end of file */ - zzEndRead = zzStartRead; - /* invalidate buffer */ - - if (zzReader != null) { - zzReader.close(); - } - } - - /** - * Resets the scanner to read from a new input stream. Does not close the - * old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. - * - * Internal scan buffer is resized down to its initial length, if it has - * grown. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - zzEOFDone = false; - zzEndRead = zzStartRead = 0; - zzCurrentPos = zzMarkedPos = 0; - zzFinalHighSurrogate = 0; - yyline = yychar = yycolumn = 0; - zzLexicalState = YYINITIAL; - if (zzBuffer.length > ZZ_BUFFERSIZE) { - zzBuffer = new char[ZZ_BUFFERSIZE]; - } - } - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); - } - - /** - * Returns the character at position pos from the matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. A value from 0 to - * yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead + pos]; - } - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos - zzStartRead; - } - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of yypushback(int) and - * a match-all fallback rule) this method will only be called with things - * that "Can't Possibly Happen". If this method is called, something is - * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done in error - * fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. This number must - * not be greater than yylength()! - */ - public void yypushback(int number) { - if (number > yylength()) { - zzScanError(ZZ_PUSHBACK_2BIG); - } - - zzMarkedPos -= number; - } - - /** - * Resumes scanning until the next regular expression is matched, the end of - * input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public ParsedSymbol yylex() throws java.io.IOException, AVM2ParseException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char[] zzBufferL = zzBuffer; - char[] zzCMapL = ZZ_CMAP; - - int[] zzTransL = ZZ_TRANS; - int[] zzRowMapL = ZZ_ROWMAP; - int[] zzAttrL = ZZ_ATTRIBUTE; + zzForAction: { while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar += zzMarkedPosL - zzStartRead; - - boolean zzR = false; - int zzCh; - int zzCharCount; - for (zzCurrentPosL = zzStartRead; - zzCurrentPosL < zzMarkedPosL; - zzCurrentPosL += zzCharCount) { - zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); - zzCharCount = Character.charCount(zzCh); - switch (zzCh) { - case '\u000B': - case '\u000C': - case '\u0085': - case '\u2028': - case '\u2029': - yyline++; - yycolumn = 0; - zzR = false; - break; - case '\r': - yyline++; - yycolumn = 0; - zzR = true; - break; - case '\n': - if (zzR) { - zzR = false; - } else { - yyline++; - yycolumn = 0; - } - break; - default: - zzR = false; - yycolumn += zzCharCount; - } + + if (zzCurrentPosL < zzEndReadL) { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + else if (zzAtEOF) { + zzInput = YYEOF; + break zzForAction; + } + else { + // store back cached positions + zzCurrentPos = zzCurrentPosL; + zzMarkedPos = zzMarkedPosL; + boolean eof = zzRefill(); + // get translated positions and possibly new buffer + zzCurrentPosL = zzCurrentPos; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + zzEndReadL = zzEndRead; + if (eof) { + zzInput = YYEOF; + break zzForAction; } - - if (zzR) { - // peek one character ahead if it is \n (if we have counted one line too much) - boolean zzPeek; - if (zzMarkedPosL < zzEndReadL) { - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; - } else if (zzAtEOF) { - zzPeek = false; - } else { - boolean eof = zzRefill(); - zzEndReadL = zzEndRead; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - if (eof) { - zzPeek = false; - } else { - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; - } - } - if (zzPeek) { - yyline--; - } + else { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); } - zzAction = -1; + } + int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; + if (zzNext == -1) break zzForAction; + zzState = zzNext; - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } - zzState = ZZ_LEXSTATE[zzLexicalState]; - - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - } - - zzForAction: - { - while (true) { - - if (zzCurrentPosL < zzEndReadL) { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } else { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } - } - int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]]; - if (zzNext == -1) { - break zzForAction; - } - zzState = zzNext; - - zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ((zzAttributes & 8) == 8) { - break zzForAction; - } - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: { - } - case 116: - break; - case 2: { - return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT, yytext().substring(1)); - } - case 117: - break; - case 3: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); - } - case 118: - break; - case 4: { - for (int r = 0; r < repeatNum; r++) { - string.append(yytext()); - } - repeatNum = 1; - } - case 119: - break; - case 5: { - repeatNum = 1; - throw new AVM2ParseException("Unterminated string at end of line", yyline + 1); - } - case 120: - break; - case 6: { - yybegin(PARAMETERS); - repeatNum = 1; - // length also includes the trailing quote - if (isMultiname) { - return new ParsedSymbol(ParsedSymbol.TYPE_MULTINAME, multinameId); - } else { - return new ParsedSymbol(ParsedSymbol.TYPE_STRING, string.toString()); - } - } - case 121: - break; - case 7: { - yybegin(YYINITIAL); - } - case 122: - break; - case 8: { - return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER, yytext()); - } - case 123: - break; - case 9: { - return new ParsedSymbol(ParsedSymbol.TYPE_BRACKET_OPEN, yytext()); - } - case 124: - break; - case 10: { - try { - return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER, Integer.parseInt((yytext()))); - } catch (NumberFormatException nfe) { - return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); - } - } - case 125: - break; - case 11: { - return new ParsedSymbol(ParsedSymbol.TYPE_BRACKET_CLOSE, yytext()); - } - case 126: - break; - case 12: { - isMultiname = false; - yybegin(STRING); - string.setLength(0); - } - case 127: - break; - case 13: { - return new ParsedSymbol(ParsedSymbol.TYPE_PARENT_OPEN, yytext()); - } - case 128: - break; - case 14: { - return new ParsedSymbol(ParsedSymbol.TYPE_PARENT_CLOSE, yytext()); - } - case 129: - break; - case 15: { - return new ParsedSymbol(ParsedSymbol.TYPE_LOWERTHAN, yytext()); - } - case 130: - break; - case 16: { - return new ParsedSymbol(ParsedSymbol.TYPE_GREATERTHAN, yytext()); - } - case 131: - break; - case 17: { - return new ParsedSymbol(ParsedSymbol.TYPE_COMMA, yytext()); - } - case 132: - break; - case 18: { - String s = yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); - } - case 133: - break; - case 19: { - repeatNum = 1; - throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 134: - break; - case 20: { - for (int r = 0; r < repeatNum; r++) { - string.append('\b'); - } - repeatNum = 1; - } - case 135: - break; - case 21: { - for (int r = 0; r < repeatNum; r++) { - string.append('\\'); - } - repeatNum = 1; - } - case 136: - break; - case 22: { - for (int r = 0; r < repeatNum; r++) { - string.append('\t'); - } - repeatNum = 1; - } - case 137: - break; - case 23: { - for (int r = 0; r < repeatNum; r++) { - string.append('\n'); - } - repeatNum = 1; - } - case 138: - break; - case 24: { - for (int r = 0; r < repeatNum; r++) { - string.append('\r'); - } - repeatNum = 1; - } - case 139: - break; - case 25: { - for (int r = 0; r < repeatNum; r++) { - string.append('\f'); - } - repeatNum = 1; - } - case 140: - break; - case 26: { - for (int r = 0; r < repeatNum; r++) { - string.append('\"'); - } - repeatNum = 1; - } - case 141: - break; - case 27: { - for (int r = 0; r < repeatNum; r++) { - string.append('\u00A7'); - } - repeatNum = 1; - } - case 142: - break; - case 28: { - for (int r = 0; r < repeatNum; r++) { - string.append('\''); - } - repeatNum = 1; - } - case 143: - break; - case 29: { - return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); - } - case 144: - break; - case 30: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TO, yytext()); - } - case 145: - break; - case 31: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_END, yytext()); - } - case 146: - break; - case 32: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TRY, yytext()); - } - case 147: - break; - case 33: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_BODY, yytext()); - } - case 148: - break; - case 34: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CODE, yytext()); - } - case 149: - break; - case 35: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TYPE, yytext()); - } - case 150: - break; - case 36: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_ITEM, yytext()); - } - case 151: - break; - case 37: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NAME, yytext()); - } - case 152: - break; - case 38: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FLAG, yytext()); - } - case 153: - break; - case 39: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - for (int r = 0; r < repeatNum; r++) { - string.append(val); - } - repeatNum = 1; - } - case 154: - break; - case 40: { - repeatNum = Integer.parseInt(yytext().substring(2, yytext().length() - 1)); - } - case 155: - break; - case 41: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TRUE, yytext()); - } - case 156: - break; - case 42: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TYPE, yytext()); - } - case 157: - break; - case 43: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NAME, yytext()); - } - case 158: - break; - case 44: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NULL, yytext()); - } - case 159: - break; - case 45: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SLOT, yytext()); - } - case 160: - break; - case 46: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FROM, yytext()); - } - case 161: - break; - case 47: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_UTF8, yytext()); - } - case 162: - break; - case 48: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_VOID, yytext()); - } - case 163: - break; - case 49: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CLASS, yytext()); - } - case 164: - break; - case 50: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PARAM, yytext()); - } - case 165: - break; - case 51: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TRAIT, yytext()); - } - case 166: - break; - case 52: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_VALUE, yytext()); - } - case 167: - break; - case 53: { - isMultiname = true; - String s = yytext(); - multinameId = Long.parseLong(s.substring(2, s.length() - 2)); - yybegin(STRING); - string.setLength(0); - } - case 168: - break; - case 54: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_CONST, yytext()); - } - case 169: - break; - case 55: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FINAL, yytext()); - } - case 170: - break; - case 56: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FALSE, yytext()); - } - case 171: - break; - case 57: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_QNAME, yytext()); - } - case 172: - break; - case 58: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METHOD, yytext()); - } - case 173: - break; - case 59: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SLOTID, yytext()); - } - case 174: - break; - case 60: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DISPID, yytext()); - } - case 175: - break; - case 61: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TARGET, yytext()); - } - case 176: - break; - case 62: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NATIVE, yytext()); - } - case 177: - break; - case 63: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SETTER, yytext()); - } - case 178: - break; - case 64: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SEALED, yytext()); - } - case 179: - break; - case 65: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DOUBLE, yytext()); - } - case 180: - break; - case 66: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_GETTER, yytext()); - } - case 181: - break; - case 67: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_QNAMEA, yytext()); - } - case 182: - break; - case 68: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_EXTENDS, yytext()); - } - case 183: - break; - case 69: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RETURNS, yytext()); - } - case 184: - break; - case 70: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INTEGER, yytext()); - } - case 185: - break; - case 71: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAME, yytext()); - } - case 186: - break; - case 72: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_DECIMAL, yytext()); - } - case 187: - break; - case 73: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_UNKNOWN, yytext()); - } - case 188: - break; - case 74: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METADATA_BLOCK, yytext()); - } - case 189: - break; - case 75: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MAXSTACK, yytext()); - } - case 190: - break; - case 76: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INSTANCE, yytext()); - } - case 191: - break; - case 77: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_OPTIONAL, yytext()); - } - case 192: - break; - case 78: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_METADATA, yytext()); - } - case 193: - break; - case 79: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_TYPENAME, yytext()); - } - case 194: - break; - case 80: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_OVERRIDE, yytext()); - } - case 195: - break; - case 81: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_SET_DXNS, yytext()); - } - case 196: - break; - case 82: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAMEA, yytext()); - } - case 197: - break; - case 83: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAMEL, yytext()); - } - case 198: - break; - case 84: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_FUNCTION, yytext()); - } - case 199: - break; - case 85: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_UINTEGER, yytext()); - } - case 200: - break; - case 86: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PARAMNAME, yytext()); - } - case 201: - break; - case 87: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAME, yytext()); - } - case 202: - break; - case 88: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INTERFACE, yytext()); - } - case 203: - break; - case 89: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NEED_REST, yytext()); - } - case 204: - break; - case 90: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NAMESPACE, yytext()); - } - case 205: - break; - case 91: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_RTQNAMELA, yytext()); - } - case 206: - break; - case 92: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_IMPLEMENTS, yytext()); - } - case 207: - break; - case 93: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_LOCALCOUNT, yytext()); - } - case 208: - break; - case 94: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAMEA, yytext()); - } - case 209: - break; - case 95: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAMEL, yytext()); - } - case 210: - break; - case 96: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PROTECTEDNS_BLOCK, yytext()); - } - case 211: - break; - case 97: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MULTINAMELA, yytext()); - } - case 212: - break; - case 98: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PROTECTEDNS, yytext()); - } - case 213: - break; - case 99: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_IGNORE_REST, yytext()); - } - case 214: - break; - case 100: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NON_NULLABLE, yytext()); - } - case 215: - break; - case 101: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_HAS_OPTIONAL, yytext()); - } - case 216: - break; - case 102: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_MAXSCOPEDEPTH, yytext()); - } - case 217: - break; - case 103: { - yybegin(PARAMETERS); - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_INITSCOPEDEPTH, yytext()); - } - case 218: - break; - case 104: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NEED_ARGUMENTS, yytext()); - } - case 219: - break; - case 105: { - String s = yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_END, Integer.parseInt(s.substring(13, s.length() - 1))); - } - case 220: - break; - case 106: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_NEED_ACTIVATION, yytext()); - } - case 221: - break; - case 107: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_HAS_PARAM_NAMES, yytext()); - } - case 222: - break; - case 108: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PACKAGENAMESPACE, yytext()); - } - case 223: - break; - case 109: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PRIVATENAMESPACE, yytext()); - } - case 224: - break; - case 110: { - String s = yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_START, Integer.parseInt(s.substring(15, s.length() - 1))); - } - case 225: - break; - case 111: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_EXPLICITNAMESPACE, yytext()); - } - case 226: - break; - case 112: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PACKAGEINTERNALNS, yytext()); - } - case 227: - break; - case 113: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_STATICPROTECTEDNS, yytext()); - } - case 228: - break; - case 114: { - String s = yytext(); - return new ParsedSymbol(ParsedSymbol.TYPE_EXCEPTION_TARGET, Integer.parseInt(s.substring(16, s.length() - 1))); - } - case 229: - break; - case 115: { - return new ParsedSymbol(ParsedSymbol.TYPE_KEYWORD_PROTECTEDNAMESPACE, yytext()); - } - case 230: - break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ParsedSymbol(ParsedSymbol.TYPE_EOF); - } - } else { - zzScanError(ZZ_NO_MATCH); - } - } } + } + + // store back cached position + zzMarkedPos = zzMarkedPosL; + + switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { + case 1: + { + } + case 116: break; + case 2: + { return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_COMMENT, yytext().substring(1)); + } + case 117: break; + case 3: + { yybegin(PARAMETERS); + return new ParsedSymbol(yychar(), ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + } + case 118: break; + case 4: + { for(int r=0;r"; + int opIndex = docs.indexOf(opHeader) + opHeader.length(); + int opEndIndex = docs.indexOf("", opIndex); + String operandDocs = docs.substring(opIndex, opEndIndex).trim(); + if (operandDocs.isEmpty()) { + return docs; + } + + DocsOperandLexer lexer = new DocsOperandLexer(new StringReader(operandDocs)); + try { + ParsedSymbol symb; + + int pos = 0; + int endPos = 0; + int startPos = 0; + while (true) { + startPos = lexer.yychar(); + symb = lexer.lex(); + if (symb.type == ParsedSymbol.TYPE_BRACKET_OPEN) { + while (symb.type != ParsedSymbol.TYPE_BRACKET_CLOSE && symb.type != ParsedSymbol.TYPE_EOF) { + symb = lexer.lex(); + } + endPos = lexer.yychar() + 1; + break; + } + if (symb.type == ParsedSymbol.TYPE_IDENTIFIER) { + symb = lexer.lex(); + endPos = lexer.yychar(); + if (symb.type == ParsedSymbol.TYPE_COLON) { + do { + symb = lexer.lex(); + if (symb.type != ParsedSymbol.TYPE_IDENTIFIER && symb.type != ParsedSymbol.TYPE_STAR) { + throw new IOException("type identifier expected"); + } + symb = lexer.lex(); + endPos = lexer.yychar(); + } while (symb.type == ParsedSymbol.TYPE_PIPE); + } + + if (pos == argumentIndex) { + break; + } + + if (symb.type == ParsedSymbol.TYPE_COMMA) { + pos++; + } else { + break; + } + } + } + String hilightedOperandDocs = operandDocs.substring(0, startPos) + + "" + operandDocs.substring(startPos, endPos) + "" + + operandDocs.substring(endPos); + docs = docs.substring(0, opIndex) + hilightedOperandDocs + docs.substring(opEndIndex); + } catch (IOException ex) { + //ignore + } + return docs; + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As12PCodeDocs.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As12PCodeDocs.java index a8ea17674..a25d28f91 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As12PCodeDocs.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As12PCodeDocs.java @@ -164,71 +164,7 @@ public class As12PCodeDocs extends AbstractDocs { } } return identName.toString(); - } - - private static String hilightArgument(String docs, int argumentIndex) { - if (argumentIndex < 0) { - return docs; - } - String opHeader = ""; - int opIndex = docs.indexOf(opHeader) + opHeader.length(); - int opEndIndex = docs.indexOf("", opIndex); - String operandDocs = docs.substring(opIndex, opEndIndex).trim(); - if (operandDocs.isEmpty()) { - return docs; - } - - DocsOperandLexer lexer = new DocsOperandLexer(new StringReader(operandDocs)); - try { - ParsedSymbol symb; - - int pos = 0; - int endPos = 0; - int startPos = 0; - while (true) { - startPos = lexer.yychar(); - symb = lexer.lex(); - if (symb.type == ParsedSymbol.TYPE_BRACKET_OPEN) { - while (symb.type != ParsedSymbol.TYPE_BRACKET_CLOSE && symb.type != ParsedSymbol.TYPE_EOF) { - symb = lexer.lex(); - } - endPos = lexer.yychar() + 1; - break; - } - if (symb.type == ParsedSymbol.TYPE_IDENTIFIER) { - symb = lexer.lex(); - endPos = lexer.yychar(); - if (symb.type == ParsedSymbol.TYPE_COLON) { - do { - symb = lexer.lex(); - if (symb.type != ParsedSymbol.TYPE_IDENTIFIER && symb.type != ParsedSymbol.TYPE_STAR) { - throw new IOException("type identifier expected"); - } - symb = lexer.lex(); - endPos = lexer.yychar(); - } while (symb.type == ParsedSymbol.TYPE_PIPE); - } - - if (pos == argumentIndex) { - break; - } - - if (symb.type == ParsedSymbol.TYPE_COMMA) { - pos++; - } else { - break; - } - } - } - String hilightedOperandDocs = operandDocs.substring(0, startPos) - + "" + operandDocs.substring(startPos, endPos) + "" - + operandDocs.substring(endPos); - docs = docs.substring(0, opIndex) + hilightedOperandDocs + docs.substring(opEndIndex); - } catch (IOException ex) { - //ignore - } - return docs; - } + } public static String getDocsForIns(String insName, boolean ui, boolean standalone, boolean nightMode, int argumentToHilight) { insName = insName.toLowerCase(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As3PCodeDocs.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As3PCodeDocs.java index 2d06a0410..434daae4d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As3PCodeDocs.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/docs/As3PCodeDocs.java @@ -83,18 +83,18 @@ public class As3PCodeDocs extends AbstractDocs { return identName.toString(); } - public static String getDocsForIns(String insName, boolean showDataSize, boolean ui, boolean withStyle, boolean nightMode) { + public static String getDocsForIns(String insName, boolean showDataSize, boolean ui, boolean withStyle, boolean nightMode, int argumentToHilight) { if (!nameToDef.containsKey(insName)) { return null; } - return getDocsForIns(nameToDef.get(insName), showDataSize, ui, withStyle, nightMode); + return getDocsForIns(nameToDef.get(insName), showDataSize, ui, withStyle, nightMode, argumentToHilight); } - public static String getDocsForIns(InstructionDefinition def, boolean showDataSize, boolean ui, boolean standalone, boolean nightMode) { + public static String getDocsForIns(InstructionDefinition def, boolean showDataSize, boolean ui, boolean standalone, boolean nightMode, int argumentToHilight) { final String cacheKey = def.instructionName + "|" + (showDataSize ? 1 : 0) + "|" + (ui ? 1 : 0) + "|" + (standalone ? 1 : 0); String v = docsCache.get(cacheKey); if (v != null) { - return v; + return hilightArgument(v, argumentToHilight); } StringBuilder sb = new StringBuilder(); @@ -122,7 +122,7 @@ public class As3PCodeDocs extends AbstractDocs { String stack = def.hasFlag(AVM2InstructionFlag.UNKNOWN_STACK) ? getProperty("ui.unknown") : stackBefore + "" + getProperty("ui.stack.to") + "" + stackAfter; String operandsDoc = def.hasFlag(AVM2InstructionFlag.UNKNOWN_OPERANDS) ? getProperty("ui.unknown") : getProperty("instruction." + insName + ".operands"); - + if (standalone) { sb.append(""); + sb.append(getProperty("instruction.lookupswitch.operands.ui")); + sb.append(""); } else { String[] operandsDocs = operandsDoc.split(", ?"); boolean first = true; if (def.operands.length > 0) { sb.append(" "); } + sb.append(""); for (int i = 0; i < def.operands.length; i++) { int op = def.operands[i]; String opDoc = operandsDocs[i]; @@ -191,6 +197,7 @@ public class As3PCodeDocs extends AbstractDocs { } } } + sb.append(""); } sb.append("").append(NEWLINE); @@ -229,7 +236,7 @@ public class As3PCodeDocs extends AbstractDocs { } String r = sb.toString(); docsCache.put(cacheKey, r); - return r; + return hilightArgument(r, argumentToHilight); } public static String getJs() { @@ -288,7 +295,7 @@ public class As3PCodeDocs extends AbstractDocs { continue; } sb.append("\t\t\t
  • ").append(NEWLINE); - sb.append("\t\t\t\t").append(getDocsForIns(def, true, false, false, nightMode).trim().replace(NEWLINE, NEWLINE + "\t\t\t\t")).append(NEWLINE); + sb.append("\t\t\t\t").append(getDocsForIns(def, true, false, false, nightMode, -1).trim().replace(NEWLINE, NEWLINE + "\t\t\t\t")).append(NEWLINE); sb.append("\t\t\t
  • ").append(NEWLINE); } sb.append("\t\t").append(NEWLINE); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3.properties b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3.properties index d796cff8b..f4a4b5b86 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3.properties +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3.properties @@ -167,6 +167,13 @@ operandType.namespaceIndex = Index into namespace constant pool operandType.namespaceIndex.name = namespaceIndex operandType.namespaceIndex.uiName = namespace +operandType.number = Number +operandType.number.name = number +operandType.number.uiName = uint + +operandType.U30 = U30 +operandType.U30.name = U30 +operandType.U30.uiName = uint #----------------------- Instructions @@ -331,6 +338,8 @@ instruction.lookupswitch.description = instruction.lookupswitch.stackBefore = index instruction.lookupswitch.stackAfter = instruction.lookupswitch.operands = defaultTarget, caseCount, case0Target, case1Target, ... +# special case for UI +instruction.lookupswitch.operands.ui = defaultTarget:labelName, [case0Target:labelName, case1Target:labelName, ...] instruction.pushwith.shortDescription = Push with onto scope stack instruction.pushwith.description = diff --git a/src/com/jpexs/decompiler/flash/gui/abc/ASMSourceEditorPane.java b/src/com/jpexs/decompiler/flash/gui/abc/ASMSourceEditorPane.java index 7902e4f27..0bc47d800 100644 --- a/src/com/jpexs/decompiler/flash/gui/abc/ASMSourceEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/abc/ASMSourceEditorPane.java @@ -63,6 +63,8 @@ import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Utilities; /** * @@ -633,33 +635,77 @@ public class ASMSourceEditorPane extends DebuggableEditorPane implements CaretLi if (curLine == null) { return; } - curLine = curLine.trim(); - //strip labels, e.g. ofs123:pushint 25 - if (curLine.matches("\\p{L}[\\p{L}0-9]*:.*")) { - curLine = curLine.substring(curLine.indexOf(':') + 1).trim(); - } - - //strip instruction arguments, we want only its name - if (curLine.contains(" ")) { - curLine = curLine.substring(0, curLine.indexOf(' ')); - } - //strip comments, e.g. pushnull;comment - if (curLine.contains(";")) { - curLine = curLine.substring(0, curLine.indexOf(';')); - } - String insName = curLine.toLowerCase(); - if (AVM2Code.instructionAliases.containsKey(insName)) { - insName = AVM2Code.instructionAliases.get(insName); - } - Point loc = getLineLocation(getLine() + 1); - if (loc != null) { - SwingUtilities.convertPointToScreen(loc, this); - } - if (insNameToDef.containsKey(insName)) { - - fireDocs("instruction." + insName, As3PCodeDocs.getDocsForIns(insName, false, true, true, nightMode), loc); - return; - } + try { + Flasm3Lexer lexer = new Flasm3Lexer(new StringReader(curLine)); + ParsedSymbol symb = lexer.lex(); + while (symb.type == ParsedSymbol.TYPE_LABEL) { + symb = lexer.lex(); + } + if (symb.type == ParsedSymbol.TYPE_INSTRUCTION_NAME) { + String insName = (String) symb.value; + int argumentToHilight = -1; + int column = 0; + try { + int caretPosition = getCaretPosition(); + int rowStart = Utilities.getRowStart(this, caretPosition); + column = caretPosition - rowStart; + } catch (BadLocationException ex) { + //ignore + } + symb = lexer.lex(); + if (symb.pos <= column) { + argumentToHilight++; + int parentLevel = 0; + Stack parentsStack = new Stack<>(); + while (symb.type != ParsedSymbol.TYPE_EOF) { + if (symb.pos >= column) { + break; + } + if (symb.type == ParsedSymbol.TYPE_PARENT_OPEN + || symb.type == ParsedSymbol.TYPE_BRACKET_OPEN + ) { + parentsStack.push(symb.type); + parentLevel++; + } + if (symb.type == ParsedSymbol.TYPE_PARENT_CLOSE) { + if (parentsStack.isEmpty()) { + throw new IOException("parent stack empty"); + } + if (parentsStack.pop() != ParsedSymbol.TYPE_PARENT_OPEN) { + throw new IOException("invalid parent"); + } + parentLevel--; + } + if (symb.type == ParsedSymbol.TYPE_BRACKET_CLOSE) { + if (parentsStack.isEmpty()) { + throw new IOException("parent stack empty"); + } + if (parentsStack.pop() != ParsedSymbol.TYPE_BRACKET_OPEN) { + throw new IOException("invalid parent"); + } + parentLevel--; + } + if (parentLevel == 0 && symb.type == ParsedSymbol.TYPE_COMMA) { + argumentToHilight++; + } + symb = lexer.lex(); + } + } + if (AVM2Code.instructionAliases.containsKey(insName)) { + insName = AVM2Code.instructionAliases.get(insName); + } + Point loc = getLineLocation(getLine() + 1); + if (loc != null) { + SwingUtilities.convertPointToScreen(loc, this); + } + if (insNameToDef.containsKey(insName)) { + fireDocs("instruction." + insName, As3PCodeDocs.getDocsForIns(insName, false, true, true, nightMode, argumentToHilight), loc); + return; + } + } + } catch (IOException | AVM2ParseException iex) { + //ignore + } } String pathDocs = As3PCodeOtherDocs.getDocsForPath(pathNoTrait, nightMode); if (pathDocs == null) {