diff --git a/tool/playground/HTMLParser.g b/tool/playground/HTMLParser.g
new file mode 100644
index 000000000..4f055b493
--- /dev/null
+++ b/tool/playground/HTMLParser.g
@@ -0,0 +1,14 @@
+parser grammar HTMLParser;
+
+options { tokenVocab=HTMLLexer; }
+
+file : ( TAG_START (starttag | endtag) | TEXT
+{System.out.println("TEXT "+$TEXT);} )+ EOF ;
+
+starttag : ID attr* TAG_STOP ;
+
+attr : ID (EQ (ID|STRING))? ;
+
+endtag
+ : END_TAG {System.out.println("END tag "+$END_TAG);}
+ ;
diff --git a/tool/playground/JavaLexer.g b/tool/playground/JavaLexer.g
new file mode 100644
index 000000000..d2d50bc97
--- /dev/null
+++ b/tool/playground/JavaLexer.g
@@ -0,0 +1,204 @@
+lexer grammar JavaLexer;
+
+@members {
+ protected boolean enumIsKeyword = true;
+ protected boolean assertIsKeyword = true;
+}
+
+T__25 : 'package' ;
+T__26 : ';' ;
+T__27 : 'import' ;
+T__28 : 'static' ;
+T__29 : '.' ;
+T__30 : '*' ;
+T__31 : 'public' ;
+T__32 : 'protected' ;
+T__33 : 'private' ;
+T__34 : 'abstract' ;
+T__35 : 'final' ;
+T__36 : 'strictfp' ;
+T__37 : 'class' ;
+T__38 : 'extends' ;
+T__39 : 'implements' ;
+T__40 : '<' ;
+T__41 : ',' ;
+T__42 : '>' ;
+T__43 : '&' ;
+T__44 : '{' ;
+T__45 : '}' ;
+T__46 : 'interface' ;
+T__47 : 'void' ;
+T__48 : '[' ;
+T__49 : ']' ;
+T__50 : 'throws' ;
+T__51 : '=' ;
+T__52 : 'native' ;
+T__53 : 'synchronized' ;
+T__54 : 'transient' ;
+T__55 : 'volatile' ;
+T__56 : 'boolean' ;
+T__57 : 'char' ;
+T__58 : 'byte' ;
+T__59 : 'short' ;
+T__60 : 'int' ;
+T__61 : 'long' ;
+T__62 : 'float' ;
+T__63 : 'double' ;
+T__64 : '?' ;
+T__65 : 'super' ;
+T__66 : '(' ;
+T__67 : ')' ;
+T__68 : '...' ;
+T__69 : 'this' ;
+T__70 : 'null' ;
+T__71 : 'true' ;
+T__72 : 'false' ;
+T__73 : '@' ;
+T__74 : 'default' ;
+T__75 : ':' ;
+T__76 : 'if' ;
+T__77 : 'else' ;
+T__78 : 'for' ;
+T__79 : 'while' ;
+T__80 : 'do' ;
+T__81 : 'try' ;
+T__82 : 'finally' ;
+T__83 : 'switch' ;
+T__84 : 'return' ;
+T__85 : 'throw' ;
+T__86 : 'break' ;
+T__87 : 'continue' ;
+T__88 : 'catch' ;
+T__89 : 'case' ;
+T__90 : '+=' ;
+T__91 : '-=' ;
+T__92 : '*=' ;
+T__93 : '/=' ;
+T__94 : '&=' ;
+T__95 : '|=' ;
+T__96 : '^=' ;
+T__97 : '%=' ;
+T__98 : '||' ;
+T__99 : '&&' ;
+T__100 : '|' ;
+T__101 : '^' ;
+T__102 : '==' ;
+T__103 : '!=' ;
+T__104 : 'instanceof' ;
+T__105 : '+' ;
+T__106 : '-' ;
+T__107 : '/' ;
+T__108 : '%' ;
+T__109 : '++' ;
+T__110 : '--' ;
+T__111 : '~' ;
+T__112 : '!' ;
+T__113 : 'new' ;
+
+// $ANTLR src "JavaCombined.g" 911
+HexLiteral : '0' ('x'|'X') HexDigit+ IntegerTypeSuffix? ;// $ANTLR src "JavaCombined.g" 913
+DecimalLiteral : ('0' | '1'..'9' '0'..'9'*) IntegerTypeSuffix? ;// $ANTLR src "JavaCombined.g" 915
+OctalLiteral : '0' ('0'..'7')+ IntegerTypeSuffix? ;// $ANTLR src "JavaCombined.g" 917
+fragment
+HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;// $ANTLR src "JavaCombined.g" 920
+fragment
+IntegerTypeSuffix : ('l'|'L') ;// $ANTLR src "JavaCombined.g" 923
+FloatingPointLiteral
+ : ('0'..'9')+ '.' ('0'..'9')* Exponent? FloatTypeSuffix?
+ | '.' ('0'..'9')+ Exponent? FloatTypeSuffix?
+ | ('0'..'9')+ Exponent FloatTypeSuffix?
+ | ('0'..'9')+ FloatTypeSuffix
+ | ('0x' | '0X') (HexDigit )*
+ ('.' (HexDigit)*)?
+ ( 'p' | 'P' )
+ ( '+' | '-' )?
+ ( '0' .. '9' )+
+ FloatTypeSuffix?
+ ;// $ANTLR src "JavaCombined.g" 930
+fragment
+Exponent : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;// $ANTLR src "JavaCombined.g" 933
+fragment
+FloatTypeSuffix : ('f'|'F'|'d'|'D') ;// $ANTLR src "JavaCombined.g" 936
+CharacterLiteral
+ : '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
+ ;// $ANTLR src "JavaCombined.g" 940
+StringLiteral
+ : '"' ( EscapeSequence | ~('\\'|'"') )* '"'
+ ;// $ANTLR src "JavaCombined.g" 944
+fragment
+EscapeSequence
+ : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
+ | UnicodeEscape
+ | OctalEscape
+ ;// $ANTLR src "JavaCombined.g" 951
+fragment
+OctalEscape
+ : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7')
+ ;// $ANTLR src "JavaCombined.g" 958
+fragment
+UnicodeEscape
+ : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+ ;// $ANTLR src "JavaCombined.g" 963
+ENUM: 'enum' {if (!enumIsKeyword) state.type=Identifier;}
+ ;// $ANTLR src "JavaCombined.g" 966
+ASSERT
+ : 'assert' {if (!assertIsKeyword) state.type=Identifier;}
+ ;// $ANTLR src "JavaCombined.g" 970
+Identifier
+ : Letter (Letter|JavaIDDigit)*
+ ;// $ANTLR src "JavaCombined.g" 974
+/**I found this char range in JavaCC's grammar, but Letter and Digit overlap.
+ Still works, but...
+ */
+fragment
+Letter
+ : '\u0024' |
+ '\u0041'..'\u005a' |
+ '\u005f' |
+ '\u0061'..'\u007a' |
+ '\u00c0'..'\u00d6' |
+ '\u00d8'..'\u00f6' |
+ '\u00f8'..'\u00ff' |
+ '\u0100'..'\u1fff' |
+ '\u3040'..'\u318f' |
+ '\u3300'..'\u337f' |
+ '\u3400'..'\u3d2d' |
+ '\u4e00'..'\u9fff' |
+ '\uf900'..'\ufaff'
+ ;// $ANTLR src "JavaCombined.g" 994
+fragment
+JavaIDDigit
+ : '\u0030'..'\u0039' |
+ '\u0660'..'\u0669' |
+ '\u06f0'..'\u06f9' |
+ '\u0966'..'\u096f' |
+ '\u09e6'..'\u09ef' |
+ '\u0a66'..'\u0a6f' |
+ '\u0ae6'..'\u0aef' |
+ '\u0b66'..'\u0b6f' |
+ '\u0be7'..'\u0bef' |
+ '\u0c66'..'\u0c6f' |
+ '\u0ce6'..'\u0cef' |
+ '\u0d66'..'\u0d6f' |
+ '\u0e50'..'\u0e59' |
+ '\u0ed0'..'\u0ed9' |
+ '\u1040'..'\u1049'
+ ;// $ANTLR src "JavaCombined.g" 1013
+WS : (' '|'\r'|'\t'|'\u000C'|'\n')+ {skip();}
+ ;
+
+LINE_COMMENT
+ : '//' ~('\n'|'\r')* '\r'? '\n' {skip();}
+ ;
+
+COMMENT_START
+ : '/*' {pushMode(COMMENT_MODE); more();}
+ ;
+
+mode COMMENT_MODE;
+
+COMMENT : '*/' {skip(); popMode();} ;
+
+COMMENT_INSIDE : . {more();} ;
diff --git a/tool/playground/JavaLexer.java b/tool/playground/JavaLexer.java
new file mode 100644
index 000000000..3a712472c
--- /dev/null
+++ b/tool/playground/JavaLexer.java
@@ -0,0 +1,612 @@
+// $ANTLR ANTLRVersion> JavaLexer.java generatedTimestamp>
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.LexerSharedState;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.runtime.*;
+
+public class JavaLexer extends Lexer {
+ public static final int
+ EOR=1, T__25=4, T__26=5, T__27=6, T__28=7, T__29=8, T__30=9, T__31=10,
+ T__32=11, T__33=12, T__34=13, T__35=14, T__36=15, T__37=16, T__38=17,
+ T__39=18, T__40=19, T__41=20, T__42=21, T__43=22, T__44=23, T__45=24,
+ T__46=25, T__47=26, T__48=27, T__49=28, T__50=29, T__51=30, T__52=31,
+ T__53=32, T__54=33, T__55=34, T__56=35, T__57=36, T__58=37, T__59=38,
+ T__60=39, T__61=40, T__62=41, T__63=42, T__64=43, T__65=44, T__66=45,
+ T__67=46, T__68=47, T__69=48, T__70=49, T__71=50, T__72=51, T__73=52,
+ T__74=53, T__75=54, T__76=55, T__77=56, T__78=57, T__79=58, T__80=59,
+ T__81=60, T__82=61, T__83=62, T__84=63, T__85=64, T__86=65, T__87=66,
+ T__88=67, T__89=68, T__90=69, T__91=70, T__92=71, T__93=72, T__94=73,
+ T__95=74, T__96=75, T__97=76, T__98=77, T__99=78, T__100=79, T__101=80,
+ T__102=81, T__103=82, T__104=83, T__105=84, T__106=85, T__107=86,
+ T__108=87, T__109=88, T__110=89, T__111=90, T__112=91, T__113=92,
+ HexLiteral=93, DecimalLiteral=94, OctalLiteral=95, FloatingPointLiteral=96,
+ CharacterLiteral=97, StringLiteral=98, ENUM=99, ASSERT=100, Identifier=101,
+ WS=102, LINE_COMMENT=103, COMMENT_START=104, COMMENT=105, COMMENT_INSIDE=106;
+ public static final int DEFAULT_MODE = 0;
+ public static final int COMMENT_MODE = 1;
+
+ public static final String[] tokenNames = {
+ "", "", "",
+ "EOR", "'package'", "';'", "'import'", "'static'", "'.'", "'*'",
+ "'public'", "'protected'", "'private'", "'abstract'", "'final'",
+ "'strictfp'", "'class'", "'extends'", "'implements'", "'<'", "','",
+ "'>'", "'&'", "'{'", "'}'", "'interface'", "'void'", "'['", "']'",
+ "'throws'", "'='", "'native'", "'synchronized'", "'transient'",
+ "'volatile'", "'boolean'", "'char'", "'byte'", "'short'", "'int'",
+ "'long'", "'float'", "'double'", "'?'", "'super'", "'('", "')'",
+ "'...'", "'this'", "'null'", "'true'", "'false'", "'@'", "'default'",
+ "':'", "'if'", "'else'", "'for'", "'while'", "'do'", "'try'", "'finally'",
+ "'switch'", "'return'", "'throw'", "'break'", "'continue'", "'catch'",
+ "'case'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='",
+ "'%='", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", "'instanceof'",
+ "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", "'~'", "'!'", "'new'",
+ "HexLiteral", "DecimalLiteral", "OctalLiteral", "FloatingPointLiteral",
+ "CharacterLiteral", "StringLiteral", "ENUM", "ASSERT", "Identifier",
+ "WS", "LINE_COMMENT", "COMMENT_START", "COMMENT", "COMMENT_INSIDE"
+ };
+ public static final String[] ruleNames = {
+ "",
+ "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32",
+ "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40",
+ "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48",
+ "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56",
+ "T__57", "T__58", "T__59", "T__60", "T__61", "T__62", "T__63", "T__64",
+ "T__65", "T__66", "T__67", "T__68", "T__69", "T__70", "T__71", "T__72",
+ "T__73", "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", "T__80",
+ "T__81", "T__82", "T__83", "T__84", "T__85", "T__86", "T__87", "T__88",
+ "T__89", "T__90", "T__91", "T__92", "T__93", "T__94", "T__95", "T__96",
+ "T__97", "T__98", "T__99", "T__100", "T__101", "T__102", "T__103",
+ "T__104", "T__105", "T__106", "T__107", "T__108", "T__109", "T__110",
+ "T__111", "T__112", "T__113", "HexLiteral", "DecimalLiteral", "OctalLiteral",
+ "HexDigit", "IntegerTypeSuffix", "FloatingPointLiteral", "Exponent",
+ "FloatTypeSuffix", "CharacterLiteral", "StringLiteral", "EscapeSequence",
+ "OctalEscape", "UnicodeEscape", "ENUM", "ASSERT", "Identifier",
+ "Letter", "JavaIDDigit", "WS", "LINE_COMMENT", "COMMENT_START",
+ "COMMENT", "COMMENT_INSIDE"
+ };
+
+
+ protected boolean enumIsKeyword = true;
+ protected boolean assertIsKeyword = true;
+
+
+ public JavaLexer(CharStream input) {
+ this(input, new LexerSharedState());
+ }
+ public JavaLexer(CharStream input, LexerSharedState state) {
+ super(input,state);
+ _interp = new LexerInterpreter(this,_ATN);
+ }
+
+ public String getGrammarFileName() { return "JavaLexer.java"; }
+ @Override
+ public String[] getTokenNames() { return tokenNames; }
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+ @Override
+ public ATN getATN() { return _ATN; }
+
+
+ public void action(int ruleIndex, int actionIndex) {
+ switch ( actionIndex ) {
+ case 1 : if (!enumIsKeyword) state.type=Identifier; break;
+ case 2 : if (!assertIsKeyword) state.type=Identifier; break;
+ case 3 : skip(); break;
+ case 4 : skip(); break;
+ case 5 : pushMode(COMMENT_MODE); more(); break;
+ case 6 : skip(); popMode(); break;
+ case 7 : more(); break;
+ }
+ }
+
+ public static final String _serializedATN =
+ "\030\155\u041e\06\00\06\00\02\01\07\01\02\02\07\02\02\03\07\03\02\04"+
+ "\07\04\02\05\07\05\02\06\07\06\02\07\07\07\02\010\07\010\02\011\07"+
+ "\011\02\012\07\012\02\013\07\013\02\014\07\014\02\015\07\015\02\016"+
+ "\07\016\02\017\07\017\02\020\07\020\02\021\07\021\02\022\07\022\02"+
+ "\023\07\023\02\024\07\024\02\025\07\025\02\026\07\026\02\027\07\027"+
+ "\02\030\07\030\02\031\07\031\02\032\07\032\02\033\07\033\02\034\07"+
+ "\034\02\035\07\035\02\036\07\036\02\037\07\037\02\040\07\040\02\041"+
+ "\07\041\02\042\07\042\02\043\07\043\02\044\07\044\02\045\07\045\02"+
+ "\046\07\046\02\047\07\047\02\050\07\050\02\051\07\051\02\052\07\052"+
+ "\02\053\07\053\02\054\07\054\02\055\07\055\02\056\07\056\02\057\07"+
+ "\057\02\060\07\060\02\061\07\061\02\062\07\062\02\063\07\063\02\064"+
+ "\07\064\02\065\07\065\02\066\07\066\02\067\07\067\02\070\07\070\02"+
+ "\071\07\071\02\072\07\072\02\073\07\073\02\074\07\074\02\075\07\075"+
+ "\02\076\07\076\02\077\07\077\02\100\07\100\02\101\07\101\02\102\07"+
+ "\102\02\103\07\103\02\104\07\104\02\105\07\105\02\106\07\106\02\107"+
+ "\07\107\02\110\07\110\02\111\07\111\02\112\07\112\02\113\07\113\02"+
+ "\114\07\114\02\115\07\115\02\116\07\116\02\117\07\117\02\120\07\120"+
+ "\02\121\07\121\02\122\07\122\02\123\07\123\02\124\07\124\02\125\07"+
+ "\125\02\126\07\126\02\127\07\127\02\130\07\130\02\131\07\131\02\132"+
+ "\07\132\02\133\07\133\02\134\07\134\02\135\07\135\02\136\07\136\02"+
+ "\137\07\137\02\140\07\140\02\141\07\141\02\142\07\142\02\143\07\143"+
+ "\02\144\07\144\02\145\07\145\02\146\07\146\02\147\07\147\02\150\07"+
+ "\150\02\151\07\151\02\152\07\152\02\153\07\153\02\154\07\154\02\155"+
+ "\07\155\02\156\07\156\02\157\07\157\02\160\07\160\01\01\01\01\01\01"+
+ "\01\01\01\01\01\01\01\01\01\01\01\02\01\02\01\03\01\03\01\03\01\03"+
+ "\01\03\01\03\01\03\01\04\01\04\01\04\01\04\01\04\01\04\01\04\01\05"+
+ "\01\05\01\06\01\06\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\010"+
+ "\01\010\01\010\01\010\01\010\01\010\01\010\01\010\01\010\01\010\01"+
+ "\011\01\011\01\011\01\011\01\011\01\011\01\011\01\011\01\012\01\012"+
+ "\01\012\01\012\01\012\01\012\01\012\01\012\01\012\01\013\01\013\01"+
+ "\013\01\013\01\013\01\013\01\014\01\014\01\014\01\014\01\014\01\014"+
+ "\01\014\01\014\01\014\01\015\01\015\01\015\01\015\01\015\01\015\01"+
+ "\016\01\016\01\016\01\016\01\016\01\016\01\016\01\016\01\017\01\017"+
+ "\01\017\01\017\01\017\01\017\01\017\01\017\01\017\01\017\01\017\01"+
+ "\020\01\020\01\021\01\021\01\022\01\022\01\023\01\023\01\024\01\024"+
+ "\01\025\01\025\01\026\01\026\01\026\01\026\01\026\01\026\01\026\01"+
+ "\026\01\026\01\026\01\027\01\027\01\027\01\027\01\027\01\030\01\030"+
+ "\01\031\01\031\01\032\01\032\01\032\01\032\01\032\01\032\01\032\01"+
+ "\033\01\033\01\034\01\034\01\034\01\034\01\034\01\034\01\034\01\035"+
+ "\01\035\01\035\01\035\01\035\01\035\01\035\01\035\01\035\01\035\01"+
+ "\035\01\035\01\035\01\036\01\036\01\036\01\036\01\036\01\036\01\036"+
+ "\01\036\01\036\01\036\01\037\01\037\01\037\01\037\01\037\01\037\01"+
+ "\037\01\037\01\037\01\040\01\040\01\040\01\040\01\040\01\040\01\040"+
+ "\01\040\01\041\01\041\01\041\01\041\01\041\01\042\01\042\01\042\01"+
+ "\042\01\042\01\043\01\043\01\043\01\043\01\043\01\043\01\044\01\044"+
+ "\01\044\01\044\01\045\01\045\01\045\01\045\01\045\01\046\01\046\01"+
+ "\046\01\046\01\046\01\046\01\047\01\047\01\047\01\047\01\047\01\047"+
+ "\01\047\01\050\01\050\01\051\01\051\01\051\01\051\01\051\01\051\01"+
+ "\052\01\052\01\053\01\053\01\054\01\054\01\054\01\054\01\055\01\055"+
+ "\01\055\01\055\01\055\01\056\01\056\01\056\01\056\01\056\01\057\01"+
+ "\057\01\057\01\057\01\057\01\060\01\060\01\060\01\060\01\060\01\060"+
+ "\01\061\01\061\01\062\01\062\01\062\01\062\01\062\01\062\01\062\01"+
+ "\062\01\063\01\063\01\064\01\064\01\064\01\065\01\065\01\065\01\065"+
+ "\01\065\01\066\01\066\01\066\01\066\01\067\01\067\01\067\01\067\01"+
+ "\067\01\067\01\070\01\070\01\070\01\071\01\071\01\071\01\071\01\072"+
+ "\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\073\01\073\01"+
+ "\073\01\073\01\073\01\073\01\073\01\074\01\074\01\074\01\074\01\074"+
+ "\01\074\01\074\01\075\01\075\01\075\01\075\01\075\01\075\01\076\01"+
+ "\076\01\076\01\076\01\076\01\076\01\077\01\077\01\077\01\077\01\077"+
+ "\01\077\01\077\01\077\01\077\01\100\01\100\01\100\01\100\01\100\01"+
+ "\100\01\101\01\101\01\101\01\101\01\101\01\102\01\102\01\102\01\103"+
+ "\01\103\01\103\01\104\01\104\01\104\01\105\01\105\01\105\01\106\01"+
+ "\106\01\106\01\107\01\107\01\107\01\110\01\110\01\110\01\111\01\111"+
+ "\01\111\01\112\01\112\01\112\01\113\01\113\01\113\01\114\01\114\01"+
+ "\115\01\115\01\116\01\116\01\116\01\117\01\117\01\117\01\120\01\120"+
+ "\01\120\01\120\01\120\01\120\01\120\01\120\01\120\01\120\01\120\01"+
+ "\121\01\121\01\122\01\122\01\123\01\123\01\124\01\124\01\125\01\125"+
+ "\01\125\01\126\01\126\01\126\01\127\01\127\01\130\01\130\01\131\01"+
+ "\131\01\131\01\131\01\132\01\132\01\132\01\132\01\132\01\132\03\132"+
+ "\010\132\01\132\01\132\04\132\010\132\012\132\01\132\01\132\01\132"+
+ "\03\132\010\132\01\133\01\133\01\133\01\133\01\133\01\133\05\133\010"+
+ "\133\011\133\01\133\03\133\010\133\01\133\01\133\03\133\010\133\01"+
+ "\134\01\134\01\134\01\134\04\134\010\134\012\134\01\134\01\134\01"+
+ "\134\03\134\010\134\01\135\01\135\01\135\01\135\01\135\01\135\03\135"+
+ "\010\135\01\136\01\136\01\136\01\136\03\136\010\136\01\137\01\137"+
+ "\04\137\010\137\012\137\01\137\01\137\01\137\01\137\01\137\05\137"+
+ "\010\137\011\137\01\137\01\137\01\137\03\137\010\137\01\137\01\137"+
+ "\03\137\010\137\01\137\01\137\01\137\01\137\04\137\010\137\012\137"+
+ "\01\137\01\137\01\137\03\137\010\137\01\137\01\137\03\137\010\137"+
+ "\01\137\01\137\04\137\010\137\012\137\01\137\01\137\01\137\01\137"+
+ "\01\137\03\137\010\137\01\137\01\137\04\137\010\137\012\137\01\137"+
+ "\01\137\01\137\01\137\01\137\01\137\01\137\01\137\01\137\03\137\010"+
+ "\137\01\137\01\137\05\137\010\137\011\137\01\137\01\137\01\137\01"+
+ "\137\01\137\05\137\010\137\011\137\01\137\03\137\010\137\01\137\01"+
+ "\137\01\137\01\137\03\137\010\137\01\137\01\137\01\137\01\137\03\137"+
+ "\010\137\01\137\01\137\04\137\010\137\012\137\01\137\01\137\01\137"+
+ "\03\137\010\137\03\137\010\137\01\140\01\140\01\140\01\140\03\140"+
+ "\010\140\01\140\01\140\01\140\01\140\03\140\010\140\01\140\01\140"+
+ "\04\140\010\140\012\140\01\140\01\141\01\141\01\141\01\141\01\141"+
+ "\01\141\01\141\01\141\03\141\010\141\01\142\01\142\01\142\01\142\01"+
+ "\142\01\142\03\142\010\142\01\142\01\142\01\143\01\143\01\143\01\143"+
+ "\01\143\01\143\05\143\010\143\011\143\01\143\01\143\01\143\01\144"+
+ "\01\144\01\144\01\144\01\144\01\144\01\144\01\144\01\144\01\144\01"+
+ "\144\01\144\01\144\01\144\01\144\01\144\01\144\01\144\03\144\010\144"+
+ "\01\144\01\144\01\144\01\144\03\144\010\144\01\145\01\145\01\145\01"+
+ "\145\01\145\01\145\01\145\01\145\01\145\01\145\01\145\01\145\01\145"+
+ "\01\145\01\145\01\145\01\145\01\145\03\145\010\145\01\146\01\146\01"+
+ "\146\01\146\01\146\01\146\01\146\01\146\01\146\01\146\01\146\01\146"+
+ "\01\147\01\147\01\147\01\147\01\147\01\147\01\150\01\150\01\150\01"+
+ "\150\01\150\01\150\01\150\01\150\01\151\01\151\01\151\01\151\01\151"+
+ "\01\151\05\151\010\151\011\151\01\151\01\152\01\152\01\152\01\152"+
+ "\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01"+
+ "\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152"+
+ "\01\152\01\152\01\152\03\152\010\152\01\153\01\153\01\153\01\153\01"+
+ "\153\01\153\01\153\01\153\01\153\01\153\01\153\01\153\01\153\01\153"+
+ "\01\153\01\153\01\153\01\153\01\153\01\153\01\153\01\153\01\153\01"+
+ "\153\01\153\01\153\01\153\01\153\01\153\01\153\03\153\010\153\01\154"+
+ "\01\154\01\154\01\154\01\154\01\154\01\154\01\154\01\154\01\154\04"+
+ "\154\010\154\012\154\01\154\01\154\01\155\01\155\01\155\01\155\01"+
+ "\155\05\155\010\155\011\155\01\155\01\155\01\155\03\155\010\155\01"+
+ "\155\01\155\01\155\01\156\01\156\01\156\01\156\01\157\01\157\01\157"+
+ "\01\157\01\160\01\160\01\160\160\02\04\00\04\05\00\06\06\00\010\07"+
+ "\00\012\010\00\014\011\00\016\012\00\020\013\00\022\014\00\024\015"+
+ "\00\026\016\00\030\017\00\032\020\00\034\021\00\036\022\00\040\023"+
+ "\00\042\024\00\044\025\00\046\026\00\050\027\00\052\030\00\054\031"+
+ "\00\056\032\00\060\033\00\062\034\00\064\035\00\066\036\00\070\037"+
+ "\00\072\040\00\074\041\00\076\042\00\100\043\00\102\044\00\104\045"+
+ "\00\106\046\00\110\047\00\112\050\00\114\051\00\116\052\00\120\053"+
+ "\00\122\054\00\124\055\00\126\056\00\130\057\00\132\060\00\134\061"+
+ "\00\136\062\00\140\063\00\142\064\00\144\065\00\146\066\00\150\067"+
+ "\00\152\070\00\154\071\00\156\072\00\160\073\00\162\074\00\164\075"+
+ "\00\166\076\00\170\077\00\172\100\00\174\101\00\176\102\00\u0080\103"+
+ "\00\u0082\104\00\u0084\105\00\u0086\106\00\u0088\107\00\u008a\110"+
+ "\00\u008c\111\00\u008e\112\00\u0090\113\00\u0092\114\00\u0094\115"+
+ "\00\u0096\116\00\u0098\117\00\u009a\120\00\u009c\121\00\u009e\122"+
+ "\00\u00a0\123\00\u00a2\124\00\u00a4\125\00\u00a6\126\00\u00a8\127"+
+ "\00\u00aa\130\00\u00ac\131\00\u00ae\132\00\u00b0\133\00\u00b2\134"+
+ "\00\u00b4\135\00\u00b6\136\00\u00b8\137\00\u00ba\uffff\00\u00bc\uffff"+
+ "\00\u00be\140\00\u00c0\uffff\00\u00c2\uffff\00\u00c4\141\00\u00c6"+
+ "\142\00\u00c8\uffff\00\u00ca\uffff\00\u00cc\uffff\00\u00ce\143\01"+
+ "\u00d0\144\02\u00d2\145\00\u00d4\uffff\00\u00d6\uffff\00\u00d8\146"+
+ "\03\u00da\147\04\u00dc\150\05\u00de\151\06\u00e0\152\07\02\00\01\03"+
+ "\02\047\047\134\134\02\042\042\134\134\02\012\012\015\015\u0471\00"+
+ "\02\01\00\00\00\04\01\00\00\00\06\01\00\00\00\010\01\00\00\00\012"+
+ "\01\00\00\00\014\01\00\00\00\016\01\00\00\00\020\01\00\00\00\022\01"+
+ "\00\00\00\024\01\00\00\00\026\01\00\00\00\030\01\00\00\00\032\01\00"+
+ "\00\00\034\01\00\00\00\036\01\00\00\00\040\01\00\00\00\042\01\00\00"+
+ "\00\044\01\00\00\00\046\01\00\00\00\050\01\00\00\00\052\01\00\00\00"+
+ "\054\01\00\00\00\056\01\00\00\00\060\01\00\00\00\062\01\00\00\00\064"+
+ "\01\00\00\00\066\01\00\00\00\070\01\00\00\00\072\01\00\00\00\074\01"+
+ "\00\00\00\076\01\00\00\00\100\01\00\00\00\102\01\00\00\00\104\01\00"+
+ "\00\00\106\01\00\00\00\110\01\00\00\00\112\01\00\00\00\114\01\00\00"+
+ "\00\116\01\00\00\00\120\01\00\00\00\122\01\00\00\00\124\01\00\00\00"+
+ "\126\01\00\00\00\130\01\00\00\00\132\01\00\00\00\134\01\00\00\00\136"+
+ "\01\00\00\00\140\01\00\00\00\142\01\00\00\00\144\01\00\00\00\146\01"+
+ "\00\00\00\150\01\00\00\00\152\01\00\00\00\154\01\00\00\00\156\01\00"+
+ "\00\00\160\01\00\00\00\162\01\00\00\00\164\01\00\00\00\166\01\00\00"+
+ "\00\170\01\00\00\00\172\01\00\00\00\174\01\00\00\00\176\01\00\00\00"+
+ "\u0080\01\00\00\00\u0082\01\00\00\00\u0084\01\00\00\00\u0086\01\00"+
+ "\00\00\u0088\01\00\00\00\u008a\01\00\00\00\u008c\01\00\00\00\u008e"+
+ "\01\00\00\00\u0090\01\00\00\00\u0092\01\00\00\00\u0094\01\00\00\00"+
+ "\u0096\01\00\00\00\u0098\01\00\00\00\u009a\01\00\00\00\u009c\01\00"+
+ "\00\00\u009e\01\00\00\00\u00a0\01\00\00\00\u00a2\01\00\00\00\u00a4"+
+ "\01\00\00\00\u00a6\01\00\00\00\u00a8\01\00\00\00\u00aa\01\00\00\00"+
+ "\u00ac\01\00\00\00\u00ae\01\00\00\00\u00b0\01\00\00\00\u00b2\01\00"+
+ "\00\00\u00b4\01\00\00\00\u00b6\01\00\00\00\u00b8\01\00\00\00\u00be"+
+ "\01\00\00\00\u00c4\01\00\00\00\u00c6\01\00\00\00\u00ce\01\00\00\00"+
+ "\u00d0\01\00\00\00\u00d2\01\00\00\00\u00d8\01\00\00\00\u00da\01\00"+
+ "\00\00\u00dc\01\00\00\01\u00de\01\00\00\01\u00e0\01\00\00\02\u00e2"+
+ "\01\00\00\04\u00ea\01\00\00\06\u00ec\01\00\00\010\u00f3\01\00\00\012"+
+ "\u00fa\01\00\00\014\u00fc\01\00\00\016\u00fe\01\00\00\020\u0105\01"+
+ "\00\00\022\u010f\01\00\00\024\u0117\01\00\00\026\u0120\01\00\00\030"+
+ "\u0126\01\00\00\032\u012f\01\00\00\034\u0135\01\00\00\036\u013d\01"+
+ "\00\00\040\u0148\01\00\00\042\u014a\01\00\00\044\u014c\01\00\00\046"+
+ "\u014e\01\00\00\050\u0150\01\00\00\052\u0152\01\00\00\054\u0154\01"+
+ "\00\00\056\u015e\01\00\00\060\u0163\01\00\00\062\u0165\01\00\00\064"+
+ "\u0167\01\00\00\066\u016e\01\00\00\070\u0170\01\00\00\072\u0177\01"+
+ "\00\00\074\u0184\01\00\00\076\u018e\01\00\00\100\u0197\01\00\00\102"+
+ "\u019f\01\00\00\104\u01a4\01\00\00\106\u01a9\01\00\00\110\u01af\01"+
+ "\00\00\112\u01b3\01\00\00\114\u01b8\01\00\00\116\u01be\01\00\00\120"+
+ "\u01c5\01\00\00\122\u01c7\01\00\00\124\u01cd\01\00\00\126\u01cf\01"+
+ "\00\00\130\u01d1\01\00\00\132\u01d5\01\00\00\134\u01da\01\00\00\136"+
+ "\u01df\01\00\00\140\u01e4\01\00\00\142\u01ea\01\00\00\144\u01ec\01"+
+ "\00\00\146\u01f4\01\00\00\150\u01f6\01\00\00\152\u01f9\01\00\00\154"+
+ "\u01fe\01\00\00\156\u0202\01\00\00\160\u0208\01\00\00\162\u020b\01"+
+ "\00\00\164\u020f\01\00\00\166\u0217\01\00\00\170\u021e\01\00\00\172"+
+ "\u0225\01\00\00\174\u022b\01\00\00\176\u0231\01\00\00\u0080\u023a"+
+ "\01\00\00\u0082\u0240\01\00\00\u0084\u0245\01\00\00\u0086\u0248\01"+
+ "\00\00\u0088\u024b\01\00\00\u008a\u024e\01\00\00\u008c\u0251\01\00"+
+ "\00\u008e\u0254\01\00\00\u0090\u0257\01\00\00\u0092\u025a\01\00\00"+
+ "\u0094\u025d\01\00\00\u0096\u0260\01\00\00\u0098\u0263\01\00\00\u009a"+
+ "\u0265\01\00\00\u009c\u0267\01\00\00\u009e\u026a\01\00\00\u00a0\u026d"+
+ "\01\00\00\u00a2\u0278\01\00\00\u00a4\u027a\01\00\00\u00a6\u027c\01"+
+ "\00\00\u00a8\u027e\01\00\00\u00aa\u0280\01\00\00\u00ac\u0283\01\00"+
+ "\00\u00ae\u0286\01\00\00\u00b0\u0288\01\00\00\u00b2\u028a\01\00\00"+
+ "\u00b4\u028e\01\00\00\u00b6\u02aa\01\00\00\u00b8\u02b0\01\00\00\u00ba"+
+ "\u02c2\01\00\00\u00bc\u02c8\01\00\00\u00be\u0332\01\00\00\u00c0\u0338"+
+ "\01\00\00\u00c2\u034e\01\00\00\u00c4\u0350\01\00\00\u00c6\u035a\01"+
+ "\00\00\u00c8\u037e\01\00\00\u00ca\u0392\01\00\00\u00cc\u0394\01\00"+
+ "\00\u00ce\u03a0\01\00\00\u00d0\u03a6\01\00\00\u00d2\u03ae\01\00\00"+
+ "\u00d4\u03d2\01\00\00\u00d6\u03f2\01\00\00\u00d8\u03fe\01\00\00\u00da"+
+ "\u0403\01\00\00\u00dc\u0413\01\00\00\u00de\u0417\01\00\00\u00e0\u041b"+
+ "\01\00\00\u00e2\u00e3\05\160\00\u00e3\u00e4\05\141\00\u00e4\u00e5"+
+ "\05\143\00\u00e5\u00e6\05\153\00\u00e6\u00e7\05\141\00\u00e7\u00e8"+
+ "\05\147\00\u00e8\u00e9\05\145\00\u00e9\03\01\00\00\u00ea\u00eb\05"+
+ "\073\00\u00eb\05\01\00\00\u00ec\u00ed\05\151\00\u00ed\u00ee\05\155"+
+ "\00\u00ee\u00ef\05\160\00\u00ef\u00f0\05\157\00\u00f0\u00f1\05\162"+
+ "\00\u00f1\u00f2\05\164\00\u00f2\07\01\00\00\u00f3\u00f4\05\163\00"+
+ "\u00f4\u00f5\05\164\00\u00f5\u00f6\05\141\00\u00f6\u00f7\05\164\00"+
+ "\u00f7\u00f8\05\151\00\u00f8\u00f9\05\143\00\u00f9\011\01\00\00\u00fa"+
+ "\u00fb\05\056\00\u00fb\013\01\00\00\u00fc\u00fd\05\052\00\u00fd\015"+
+ "\01\00\00\u00fe\u00ff\05\160\00\u00ff\u0100\05\165\00\u0100\u0101"+
+ "\05\142\00\u0101\u0102\05\154\00\u0102\u0103\05\151\00\u0103\u0104"+
+ "\05\143\00\u0104\017\01\00\00\u0105\u0106\05\160\00\u0106\u0107\05"+
+ "\162\00\u0107\u0108\05\157\00\u0108\u0109\05\164\00\u0109\u010a\05"+
+ "\145\00\u010a\u010b\05\143\00\u010b\u010c\05\164\00\u010c\u010d\05"+
+ "\145\00\u010d\u010e\05\144\00\u010e\021\01\00\00\u010f\u0110\05\160"+
+ "\00\u0110\u0111\05\162\00\u0111\u0112\05\151\00\u0112\u0113\05\166"+
+ "\00\u0113\u0114\05\141\00\u0114\u0115\05\164\00\u0115\u0116\05\145"+
+ "\00\u0116\023\01\00\00\u0117\u0118\05\141\00\u0118\u0119\05\142\00"+
+ "\u0119\u011a\05\163\00\u011a\u011b\05\164\00\u011b\u011c\05\162\00"+
+ "\u011c\u011d\05\141\00\u011d\u011e\05\143\00\u011e\u011f\05\164\00"+
+ "\u011f\025\01\00\00\u0120\u0121\05\146\00\u0121\u0122\05\151\00\u0122"+
+ "\u0123\05\156\00\u0123\u0124\05\141\00\u0124\u0125\05\154\00\u0125"+
+ "\027\01\00\00\u0126\u0127\05\163\00\u0127\u0128\05\164\00\u0128\u0129"+
+ "\05\162\00\u0129\u012a\05\151\00\u012a\u012b\05\143\00\u012b\u012c"+
+ "\05\164\00\u012c\u012d\05\146\00\u012d\u012e\05\160\00\u012e\031\01"+
+ "\00\00\u012f\u0130\05\143\00\u0130\u0131\05\154\00\u0131\u0132\05"+
+ "\141\00\u0132\u0133\05\163\00\u0133\u0134\05\163\00\u0134\033\01\00"+
+ "\00\u0135\u0136\05\145\00\u0136\u0137\05\170\00\u0137\u0138\05\164"+
+ "\00\u0138\u0139\05\145\00\u0139\u013a\05\156\00\u013a\u013b\05\144"+
+ "\00\u013b\u013c\05\163\00\u013c\035\01\00\00\u013d\u013e\05\151\00"+
+ "\u013e\u013f\05\155\00\u013f\u0140\05\160\00\u0140\u0141\05\154\00"+
+ "\u0141\u0142\05\145\00\u0142\u0143\05\155\00\u0143\u0144\05\145\00"+
+ "\u0144\u0145\05\156\00\u0145\u0146\05\164\00\u0146\u0147\05\163\00"+
+ "\u0147\037\01\00\00\u0148\u0149\05\074\00\u0149\041\01\00\00\u014a"+
+ "\u014b\05\054\00\u014b\043\01\00\00\u014c\u014d\05\076\00\u014d\045"+
+ "\01\00\00\u014e\u014f\05\046\00\u014f\047\01\00\00\u0150\u0151\05"+
+ "\173\00\u0151\051\01\00\00\u0152\u0153\05\175\00\u0153\053\01\00\00"+
+ "\u0154\u0155\05\151\00\u0155\u0156\05\156\00\u0156\u0157\05\164\00"+
+ "\u0157\u0158\05\145\00\u0158\u0159\05\162\00\u0159\u015a\05\146\00"+
+ "\u015a\u015b\05\141\00\u015b\u015c\05\143\00\u015c\u015d\05\145\00"+
+ "\u015d\055\01\00\00\u015e\u015f\05\166\00\u015f\u0160\05\157\00\u0160"+
+ "\u0161\05\151\00\u0161\u0162\05\144\00\u0162\057\01\00\00\u0163\u0164"+
+ "\05\133\00\u0164\061\01\00\00\u0165\u0166\05\135\00\u0166\063\01\00"+
+ "\00\u0167\u0168\05\164\00\u0168\u0169\05\150\00\u0169\u016a\05\162"+
+ "\00\u016a\u016b\05\157\00\u016b\u016c\05\167\00\u016c\u016d\05\163"+
+ "\00\u016d\065\01\00\00\u016e\u016f\05\075\00\u016f\067\01\00\00\u0170"+
+ "\u0171\05\156\00\u0171\u0172\05\141\00\u0172\u0173\05\164\00\u0173"+
+ "\u0174\05\151\00\u0174\u0175\05\166\00\u0175\u0176\05\145\00\u0176"+
+ "\071\01\00\00\u0177\u0178\05\163\00\u0178\u0179\05\171\00\u0179\u017a"+
+ "\05\156\00\u017a\u017b\05\143\00\u017b\u017c\05\150\00\u017c\u017d"+
+ "\05\162\00\u017d\u017e\05\157\00\u017e\u017f\05\156\00\u017f\u0180"+
+ "\05\151\00\u0180\u0181\05\172\00\u0181\u0182\05\145\00\u0182\u0183"+
+ "\05\144\00\u0183\073\01\00\00\u0184\u0185\05\164\00\u0185\u0186\05"+
+ "\162\00\u0186\u0187\05\141\00\u0187\u0188\05\156\00\u0188\u0189\05"+
+ "\163\00\u0189\u018a\05\151\00\u018a\u018b\05\145\00\u018b\u018c\05"+
+ "\156\00\u018c\u018d\05\164\00\u018d\075\01\00\00\u018e\u018f\05\166"+
+ "\00\u018f\u0190\05\157\00\u0190\u0191\05\154\00\u0191\u0192\05\141"+
+ "\00\u0192\u0193\05\164\00\u0193\u0194\05\151\00\u0194\u0195\05\154"+
+ "\00\u0195\u0196\05\145\00\u0196\077\01\00\00\u0197\u0198\05\142\00"+
+ "\u0198\u0199\05\157\00\u0199\u019a\05\157\00\u019a\u019b\05\154\00"+
+ "\u019b\u019c\05\145\00\u019c\u019d\05\141\00\u019d\u019e\05\156\00"+
+ "\u019e\101\01\00\00\u019f\u01a0\05\143\00\u01a0\u01a1\05\150\00\u01a1"+
+ "\u01a2\05\141\00\u01a2\u01a3\05\162\00\u01a3\103\01\00\00\u01a4\u01a5"+
+ "\05\142\00\u01a5\u01a6\05\171\00\u01a6\u01a7\05\164\00\u01a7\u01a8"+
+ "\05\145\00\u01a8\105\01\00\00\u01a9\u01aa\05\163\00\u01aa\u01ab\05"+
+ "\150\00\u01ab\u01ac\05\157\00\u01ac\u01ad\05\162\00\u01ad\u01ae\05"+
+ "\164\00\u01ae\107\01\00\00\u01af\u01b0\05\151\00\u01b0\u01b1\05\156"+
+ "\00\u01b1\u01b2\05\164\00\u01b2\111\01\00\00\u01b3\u01b4\05\154\00"+
+ "\u01b4\u01b5\05\157\00\u01b5\u01b6\05\156\00\u01b6\u01b7\05\147\00"+
+ "\u01b7\113\01\00\00\u01b8\u01b9\05\146\00\u01b9\u01ba\05\154\00\u01ba"+
+ "\u01bb\05\157\00\u01bb\u01bc\05\141\00\u01bc\u01bd\05\164\00\u01bd"+
+ "\115\01\00\00\u01be\u01bf\05\144\00\u01bf\u01c0\05\157\00\u01c0\u01c1"+
+ "\05\165\00\u01c1\u01c2\05\142\00\u01c2\u01c3\05\154\00\u01c3\u01c4"+
+ "\05\145\00\u01c4\117\01\00\00\u01c5\u01c6\05\077\00\u01c6\121\01\00"+
+ "\00\u01c7\u01c8\05\163\00\u01c8\u01c9\05\165\00\u01c9\u01ca\05\160"+
+ "\00\u01ca\u01cb\05\145\00\u01cb\u01cc\05\162\00\u01cc\123\01\00\00"+
+ "\u01cd\u01ce\05\050\00\u01ce\125\01\00\00\u01cf\u01d0\05\051\00\u01d0"+
+ "\127\01\00\00\u01d1\u01d2\05\056\00\u01d2\u01d3\05\056\00\u01d3\u01d4"+
+ "\05\056\00\u01d4\131\01\00\00\u01d5\u01d6\05\164\00\u01d6\u01d7\05"+
+ "\150\00\u01d7\u01d8\05\151\00\u01d8\u01d9\05\163\00\u01d9\133\01\00"+
+ "\00\u01da\u01db\05\156\00\u01db\u01dc\05\165\00\u01dc\u01dd\05\154"+
+ "\00\u01dd\u01de\05\154\00\u01de\135\01\00\00\u01df\u01e0\05\164\00"+
+ "\u01e0\u01e1\05\162\00\u01e1\u01e2\05\165\00\u01e2\u01e3\05\145\00"+
+ "\u01e3\137\01\00\00\u01e4\u01e5\05\146\00\u01e5\u01e6\05\141\00\u01e6"+
+ "\u01e7\05\154\00\u01e7\u01e8\05\163\00\u01e8\u01e9\05\145\00\u01e9"+
+ "\141\01\00\00\u01ea\u01eb\05\100\00\u01eb\143\01\00\00\u01ec\u01ed"+
+ "\05\144\00\u01ed\u01ee\05\145\00\u01ee\u01ef\05\146\00\u01ef\u01f0"+
+ "\05\141\00\u01f0\u01f1\05\165\00\u01f1\u01f2\05\154\00\u01f2\u01f3"+
+ "\05\164\00\u01f3\145\01\00\00\u01f4\u01f5\05\072\00\u01f5\147\01\00"+
+ "\00\u01f6\u01f7\05\151\00\u01f7\u01f8\05\146\00\u01f8\151\01\00\00"+
+ "\u01f9\u01fa\05\145\00\u01fa\u01fb\05\154\00\u01fb\u01fc\05\163\00"+
+ "\u01fc\u01fd\05\145\00\u01fd\153\01\00\00\u01fe\u01ff\05\146\00\u01ff"+
+ "\u0200\05\157\00\u0200\u0201\05\162\00\u0201\155\01\00\00\u0202\u0203"+
+ "\05\167\00\u0203\u0204\05\150\00\u0204\u0205\05\151\00\u0205\u0206"+
+ "\05\154\00\u0206\u0207\05\145\00\u0207\157\01\00\00\u0208\u0209\05"+
+ "\144\00\u0209\u020a\05\157\00\u020a\161\01\00\00\u020b\u020c\05\164"+
+ "\00\u020c\u020d\05\162\00\u020d\u020e\05\171\00\u020e\163\01\00\00"+
+ "\u020f\u0210\05\146\00\u0210\u0211\05\151\00\u0211\u0212\05\156\00"+
+ "\u0212\u0213\05\141\00\u0213\u0214\05\154\00\u0214\u0215\05\154\00"+
+ "\u0215\u0216\05\171\00\u0216\165\01\00\00\u0217\u0218\05\163\00\u0218"+
+ "\u0219\05\167\00\u0219\u021a\05\151\00\u021a\u021b\05\164\00\u021b"+
+ "\u021c\05\143\00\u021c\u021d\05\150\00\u021d\167\01\00\00\u021e\u021f"+
+ "\05\162\00\u021f\u0220\05\145\00\u0220\u0221\05\164\00\u0221\u0222"+
+ "\05\165\00\u0222\u0223\05\162\00\u0223\u0224\05\156\00\u0224\171\01"+
+ "\00\00\u0225\u0226\05\164\00\u0226\u0227\05\150\00\u0227\u0228\05"+
+ "\162\00\u0228\u0229\05\157\00\u0229\u022a\05\167\00\u022a\173\01\00"+
+ "\00\u022b\u022c\05\142\00\u022c\u022d\05\162\00\u022d\u022e\05\145"+
+ "\00\u022e\u022f\05\141\00\u022f\u0230\05\153\00\u0230\175\01\00\00"+
+ "\u0231\u0232\05\143\00\u0232\u0233\05\157\00\u0233\u0234\05\156\00"+
+ "\u0234\u0235\05\164\00\u0235\u0236\05\151\00\u0236\u0237\05\156\00"+
+ "\u0237\u0238\05\165\00\u0238\u0239\05\145\00\u0239\177\01\00\00\u023a"+
+ "\u023b\05\143\00\u023b\u023c\05\141\00\u023c\u023d\05\164\00\u023d"+
+ "\u023e\05\143\00\u023e\u023f\05\150\00\u023f\u0081\01\00\00\u0240"+
+ "\u0241\05\143\00\u0241\u0242\05\141\00\u0242\u0243\05\163\00\u0243"+
+ "\u0244\05\145\00\u0244\u0083\01\00\00\u0245\u0246\05\053\00\u0246"+
+ "\u0247\05\075\00\u0247\u0085\01\00\00\u0248\u0249\05\055\00\u0249"+
+ "\u024a\05\075\00\u024a\u0087\01\00\00\u024b\u024c\05\052\00\u024c"+
+ "\u024d\05\075\00\u024d\u0089\01\00\00\u024e\u024f\05\057\00\u024f"+
+ "\u0250\05\075\00\u0250\u008b\01\00\00\u0251\u0252\05\046\00\u0252"+
+ "\u0253\05\075\00\u0253\u008d\01\00\00\u0254\u0255\05\174\00\u0255"+
+ "\u0256\05\075\00\u0256\u008f\01\00\00\u0257\u0258\05\136\00\u0258"+
+ "\u0259\05\075\00\u0259\u0091\01\00\00\u025a\u025b\05\045\00\u025b"+
+ "\u025c\05\075\00\u025c\u0093\01\00\00\u025d\u025e\05\174\00\u025e"+
+ "\u025f\05\174\00\u025f\u0095\01\00\00\u0260\u0261\05\046\00\u0261"+
+ "\u0262\05\046\00\u0262\u0097\01\00\00\u0263\u0264\05\174\00\u0264"+
+ "\u0099\01\00\00\u0265\u0266\05\136\00\u0266\u009b\01\00\00\u0267\u0268"+
+ "\05\075\00\u0268\u0269\05\075\00\u0269\u009d\01\00\00\u026a\u026b"+
+ "\05\041\00\u026b\u026c\05\075\00\u026c\u009f\01\00\00\u026d\u026e"+
+ "\05\151\00\u026e\u026f\05\156\00\u026f\u0270\05\163\00\u0270\u0271"+
+ "\05\164\00\u0271\u0272\05\141\00\u0272\u0273\05\156\00\u0273\u0274"+
+ "\05\143\00\u0274\u0275\05\145\00\u0275\u0276\05\157\00\u0276\u0277"+
+ "\05\146\00\u0277\u00a1\01\00\00\u0278\u0279\05\053\00\u0279\u00a3"+
+ "\01\00\00\u027a\u027b\05\055\00\u027b\u00a5\01\00\00\u027c\u027d\05"+
+ "\057\00\u027d\u00a7\01\00\00\u027e\u027f\05\045\00\u027f\u00a9\01"+
+ "\00\00\u0280\u0281\05\053\00\u0281\u0282\05\053\00\u0282\u00ab\01"+
+ "\00\00\u0283\u0284\05\055\00\u0284\u0285\05\055\00\u0285\u00ad\01"+
+ "\00\00\u0286\u0287\05\176\00\u0287\u00af\01\00\00\u0288\u0289\05\041"+
+ "\00\u0289\u00b1\01\00\00\u028a\u028b\05\156\00\u028b\u028c\05\145"+
+ "\00\u028c\u028d\05\167\00\u028d\u00b3\01\00\00\u028e\u028f\05\060"+
+ "\00\u028f\u0294\01\00\00\u0290\u0291\05\170\00\u0291\u0295\01\00\00"+
+ "\u0292\u0293\05\130\00\u0293\u0295\01\00\00\u0294\u0290\01\00\00\u0294"+
+ "\u0292\01\00\00\u0295\u0298\01\00\00\u0296\u0297\03\u00ba\135\u0297"+
+ "\u0299\01\00\00\u0298\u0296\01\00\00\u0299\u029a\01\00\00\u029a\u0296"+
+ "\01\00\00\u029a\u029b\01\00\00\u029b\u029e\01\00\00\u029c\u029d\03"+
+ "\u00bc\136\u029d\u029f\01\00\00\u029e\u029c\01\00\00\u029e\u029f\01"+
+ "\00\00\u029f\u00b5\01\00\00\u02a0\u02a1\05\060\00\u02a1\u02ab\01\00"+
+ "\00\u02a2\u02a3\02\061\071\u02a3\u02a6\01\00\00\u02a4\u02a5\02\060"+
+ "\071\u02a5\u02a7\01\00\00\u02a6\u02a4\01\00\00\u02a6\u02a9\01\00\00"+
+ "\u02a7\u02a8\01\00\00\u02a8\u02a6\01\00\00\u02a9\u02ab\01\00\00\u02aa"+
+ "\u02a0\01\00\00\u02aa\u02a2\01\00\00\u02ab\u02ae\01\00\00\u02ac\u02ad"+
+ "\03\u00bc\136\u02ad\u02af\01\00\00\u02ae\u02ac\01\00\00\u02ae\u02af"+
+ "\01\00\00\u02af\u00b7\01\00\00\u02b0\u02b1\05\060\00\u02b1\u02b4\01"+
+ "\00\00\u02b2\u02b3\02\060\067\u02b3\u02b5\01\00\00\u02b4\u02b2\01"+
+ "\00\00\u02b5\u02b6\01\00\00\u02b6\u02b2\01\00\00\u02b6\u02b7\01\00"+
+ "\00\u02b7\u02ba\01\00\00\u02b8\u02b9\03\u00bc\136\u02b9\u02bb\01\00"+
+ "\00\u02ba\u02b8\01\00\00\u02ba\u02bb\01\00\00\u02bb\u00b9\01\00\00"+
+ "\u02bc\u02bd\02\060\071\u02bd\u02c3\01\00\00\u02be\u02bf\02\141\146"+
+ "\u02bf\u02c3\01\00\00\u02c0\u02c1\02\101\106\u02c1\u02c3\01\00\00"+
+ "\u02c2\u02bc\01\00\00\u02c2\u02be\01\00\00\u02c2\u02c0\01\00\00\u02c3"+
+ "\u00bb\01\00\00\u02c4\u02c5\05\154\00\u02c5\u02c9\01\00\00\u02c6\u02c7"+
+ "\05\114\00\u02c7\u02c9\01\00\00\u02c8\u02c4\01\00\00\u02c8\u02c6\01"+
+ "\00\00\u02c9\u00bd\01\00\00\u02ca\u02cb\02\060\071\u02cb\u02cd\01"+
+ "\00\00\u02cc\u02ca\01\00\00\u02cd\u02ce\01\00\00\u02ce\u02ca\01\00"+
+ "\00\u02ce\u02cf\01\00\00\u02cf\u02d0\01\00\00\u02d0\u02d1\05\056\00"+
+ "\u02d1\u02d4\01\00\00\u02d2\u02d3\02\060\071\u02d3\u02d5\01\00\00"+
+ "\u02d4\u02d2\01\00\00\u02d4\u02d7\01\00\00\u02d5\u02d6\01\00\00\u02d6"+
+ "\u02d4\01\00\00\u02d7\u02da\01\00\00\u02d8\u02d9\03\u00c0\140\u02d9"+
+ "\u02db\01\00\00\u02da\u02d8\01\00\00\u02da\u02db\01\00\00\u02db\u02de"+
+ "\01\00\00\u02dc\u02dd\03\u00c2\141\u02dd\u02df\01\00\00\u02de\u02dc"+
+ "\01\00\00\u02de\u02df\01\00\00\u02df\u0333\01\00\00\u02e0\u02e1\05"+
+ "\056\00\u02e1\u02e4\01\00\00\u02e2\u02e3\02\060\071\u02e3\u02e5\01"+
+ "\00\00\u02e4\u02e2\01\00\00\u02e5\u02e6\01\00\00\u02e6\u02e2\01\00"+
+ "\00\u02e6\u02e7\01\00\00\u02e7\u02ea\01\00\00\u02e8\u02e9\03\u00c0"+
+ "\140\u02e9\u02eb\01\00\00\u02ea\u02e8\01\00\00\u02ea\u02eb\01\00\00"+
+ "\u02eb\u02ee\01\00\00\u02ec\u02ed\03\u00c2\141\u02ed\u02ef\01\00\00"+
+ "\u02ee\u02ec\01\00\00\u02ee\u02ef\01\00\00\u02ef\u0333\01\00\00\u02f0"+
+ "\u02f1\02\060\071\u02f1\u02f3\01\00\00\u02f2\u02f0\01\00\00\u02f3"+
+ "\u02f4\01\00\00\u02f4\u02f0\01\00\00\u02f4\u02f5\01\00\00\u02f5\u02f6"+
+ "\01\00\00\u02f6\u02f7\03\u00c0\140\u02f7\u02fa\01\00\00\u02f8\u02f9"+
+ "\03\u00c2\141\u02f9\u02fb\01\00\00\u02fa\u02f8\01\00\00\u02fa\u02fb"+
+ "\01\00\00\u02fb\u0333\01\00\00\u02fc\u02fd\02\060\071\u02fd\u02ff"+
+ "\01\00\00\u02fe\u02fc\01\00\00\u02ff\u0300\01\00\00\u0300\u02fc\01"+
+ "\00\00\u0300\u0301\01\00\00\u0301\u0302\01\00\00\u0302\u0303\03\u00c2"+
+ "\141\u0303\u0333\01\00\00\u0304\u0305\05\060\00\u0305\u0306\05\170"+
+ "\00\u0306\u030b\01\00\00\u0307\u0308\05\060\00\u0308\u0309\05\130"+
+ "\00\u0309\u030b\01\00\00\u030a\u0304\01\00\00\u030a\u0307\01\00\00"+
+ "\u030b\u030e\01\00\00\u030c\u030d\03\u00ba\135\u030d\u030f\01\00\00"+
+ "\u030e\u030c\01\00\00\u030e\u0311\01\00\00\u030f\u0310\01\00\00\u0310"+
+ "\u030e\01\00\00\u0311\u031a\01\00\00\u0312\u0313\05\056\00\u0313\u0316"+
+ "\01\00\00\u0314\u0315\03\u00ba\135\u0315\u0317\01\00\00\u0316\u0314"+
+ "\01\00\00\u0316\u0319\01\00\00\u0317\u0318\01\00\00\u0318\u0316\01"+
+ "\00\00\u0319\u031b\01\00\00\u031a\u0312\01\00\00\u031a\u031b\01\00"+
+ "\00\u031b\u0320\01\00\00\u031c\u031d\05\160\00\u031d\u0321\01\00\00"+
+ "\u031e\u031f\05\120\00\u031f\u0321\01\00\00\u0320\u031c\01\00\00\u0320"+
+ "\u031e\01\00\00\u0321\u0326\01\00\00\u0322\u0323\05\053\00\u0323\u0327"+
+ "\01\00\00\u0324\u0325\05\055\00\u0325\u0327\01\00\00\u0326\u0322\01"+
+ "\00\00\u0326\u0324\01\00\00\u0326\u0327\01\00\00\u0327\u032a\01\00"+
+ "\00\u0328\u0329\02\060\071\u0329\u032b\01\00\00\u032a\u0328\01\00"+
+ "\00\u032b\u032c\01\00\00\u032c\u0328\01\00\00\u032c\u032d\01\00\00"+
+ "\u032d\u0330\01\00\00\u032e\u032f\03\u00c2\141\u032f\u0331\01\00\00"+
+ "\u0330\u032e\01\00\00\u0330\u0331\01\00\00\u0331\u0333\01\00\00\u0332"+
+ "\u02cc\01\00\00\u0332\u02e0\01\00\00\u0332\u02f2\01\00\00\u0332\u02fe"+
+ "\01\00\00\u0332\u030a\01\00\00\u0333\u00bf\01\00\00\u0334\u0335\05"+
+ "\145\00\u0335\u0339\01\00\00\u0336\u0337\05\105\00\u0337\u0339\01"+
+ "\00\00\u0338\u0334\01\00\00\u0338\u0336\01\00\00\u0339\u033e\01\00"+
+ "\00\u033a\u033b\05\053\00\u033b\u033f\01\00\00\u033c\u033d\05\055"+
+ "\00\u033d\u033f\01\00\00\u033e\u033a\01\00\00\u033e\u033c\01\00\00"+
+ "\u033e\u033f\01\00\00\u033f\u0342\01\00\00\u0340\u0341\02\060\071"+
+ "\u0341\u0343\01\00\00\u0342\u0340\01\00\00\u0343\u0344\01\00\00\u0344"+
+ "\u0340\01\00\00\u0344\u0345\01\00\00\u0345\u00c1\01\00\00\u0346\u0347"+
+ "\05\146\00\u0347\u034f\01\00\00\u0348\u0349\05\106\00\u0349\u034f"+
+ "\01\00\00\u034a\u034b\05\144\00\u034b\u034f\01\00\00\u034c\u034d\05"+
+ "\104\00\u034d\u034f\01\00\00\u034e\u0346\01\00\00\u034e\u0348\01\00"+
+ "\00\u034e\u034a\01\00\00\u034e\u034c\01\00\00\u034f\u00c3\01\00\00"+
+ "\u0350\u0351\05\047\00\u0351\u0356\01\00\00\u0352\u0353\03\u00c8\144"+
+ "\u0353\u0357\01\00\00\u0354\u0355\012\00\00\u0355\u0357\01\00\00\u0356"+
+ "\u0352\01\00\00\u0356\u0354\01\00\00\u0357\u0358\01\00\00\u0358\u0359"+
+ "\05\047\00\u0359\u00c5\01\00\00\u035a\u035b\05\042\00\u035b\u0360"+
+ "\01\00\00\u035c\u035d\03\u00c8\144\u035d\u0361\01\00\00\u035e\u035f"+
+ "\012\01\00\u035f\u0361\01\00\00\u0360\u035c\01\00\00\u0360\u035e\01"+
+ "\00\00\u0360\u0363\01\00\00\u0361\u0362\01\00\00\u0362\u0360\01\00"+
+ "\00\u0363\u0364\01\00\00\u0364\u0365\05\042\00\u0365\u00c7\01\00\00"+
+ "\u0366\u0367\05\134\00\u0367\u0378\01\00\00\u0368\u0369\05\142\00"+
+ "\u0369\u0379\01\00\00\u036a\u036b\05\164\00\u036b\u0379\01\00\00\u036c"+
+ "\u036d\05\156\00\u036d\u0379\01\00\00\u036e\u036f\05\146\00\u036f"+
+ "\u0379\01\00\00\u0370\u0371\05\162\00\u0371\u0379\01\00\00\u0372\u0373"+
+ "\05\042\00\u0373\u0379\01\00\00\u0374\u0375\05\047\00\u0375\u0379"+
+ "\01\00\00\u0376\u0377\05\134\00\u0377\u0379\01\00\00\u0378\u0368\01"+
+ "\00\00\u0378\u036a\01\00\00\u0378\u036c\01\00\00\u0378\u036e\01\00"+
+ "\00\u0378\u0370\01\00\00\u0378\u0372\01\00\00\u0378\u0374\01\00\00"+
+ "\u0378\u0376\01\00\00\u0379\u037f\01\00\00\u037a\u037b\03\u00cc\146"+
+ "\u037b\u037f\01\00\00\u037c\u037d\03\u00ca\145\u037d\u037f\01\00\00"+
+ "\u037e\u0366\01\00\00\u037e\u037a\01\00\00\u037e\u037c\01\00\00\u037f"+
+ "\u00c9\01\00\00\u0380\u0381\05\134\00\u0381\u0382\01\00\00\u0382\u0383"+
+ "\02\060\063\u0383\u0384\01\00\00\u0384\u0385\02\060\067\u0385\u0386"+
+ "\01\00\00\u0386\u0387\02\060\067\u0387\u0393\01\00\00\u0388\u0389"+
+ "\05\134\00\u0389\u038a\01\00\00\u038a\u038b\02\060\067\u038b\u038c"+
+ "\01\00\00\u038c\u038d\02\060\067\u038d\u0393\01\00\00\u038e\u038f"+
+ "\05\134\00\u038f\u0390\01\00\00\u0390\u0391\02\060\067\u0391\u0393"+
+ "\01\00\00\u0392\u0380\01\00\00\u0392\u0388\01\00\00\u0392\u038e\01"+
+ "\00\00\u0393\u00cb\01\00\00\u0394\u0395\05\134\00\u0395\u0396\01\00"+
+ "\00\u0396\u0397\05\165\00\u0397\u0398\01\00\00\u0398\u0399\03\u00ba"+
+ "\135\u0399\u039a\01\00\00\u039a\u039b\03\u00ba\135\u039b\u039c\01"+
+ "\00\00\u039c\u039d\03\u00ba\135\u039d\u039e\01\00\00\u039e\u039f\03"+
+ "\u00ba\135\u039f\u00cd\01\00\00\u03a0\u03a1\05\145\00\u03a1\u03a2"+
+ "\05\156\00\u03a2\u03a3\05\165\00\u03a3\u03a4\05\155\00\u03a4\u03a5"+
+ "\01\00\00\u03a5\u00cf\01\00\00\u03a6\u03a7\05\141\00\u03a7\u03a8\05"+
+ "\163\00\u03a8\u03a9\05\163\00\u03a9\u03aa\05\145\00\u03aa\u03ab\05"+
+ "\162\00\u03ab\u03ac\05\164\00\u03ac\u03ad\01\00\00\u03ad\u00d1\01"+
+ "\00\00\u03ae\u03af\03\u00d4\152\u03af\u03b4\01\00\00\u03b0\u03b1\03"+
+ "\u00d4\152\u03b1\u03b5\01\00\00\u03b2\u03b3\03\u00d6\153\u03b3\u03b5"+
+ "\01\00\00\u03b4\u03b0\01\00\00\u03b4\u03b2\01\00\00\u03b4\u03b7\01"+
+ "\00\00\u03b5\u03b6\01\00\00\u03b6\u03b4\01\00\00\u03b7\u00d3\01\00"+
+ "\00\u03b8\u03b9\05\044\00\u03b9\u03d3\01\00\00\u03ba\u03bb\02\101"+
+ "\132\u03bb\u03d3\01\00\00\u03bc\u03bd\05\137\00\u03bd\u03d3\01\00"+
+ "\00\u03be\u03bf\02\141\172\u03bf\u03d3\01\00\00\u03c0\u03c1\02\u00c0"+
+ "\u00d6\u03c1\u03d3\01\00\00\u03c2\u03c3\02\u00d8\u00f6\u03c3\u03d3"+
+ "\01\00\00\u03c4\u03c5\02\u00f8\u00ff\u03c5\u03d3\01\00\00\u03c6\u03c7"+
+ "\02\u0100\u1fff\u03c7\u03d3\01\00\00\u03c8\u03c9\02\u3040\u318f\u03c9"+
+ "\u03d3\01\00\00\u03ca\u03cb\02\u3300\u337f\u03cb\u03d3\01\00\00\u03cc"+
+ "\u03cd\02\u3400\u3d2d\u03cd\u03d3\01\00\00\u03ce\u03cf\02\u4e00\u9fff"+
+ "\u03cf\u03d3\01\00\00\u03d0\u03d1\02\uf900\ufaff\u03d1\u03d3\01\00"+
+ "\00\u03d2\u03b8\01\00\00\u03d2\u03ba\01\00\00\u03d2\u03bc\01\00\00"+
+ "\u03d2\u03be\01\00\00\u03d2\u03c0\01\00\00\u03d2\u03c2\01\00\00\u03d2"+
+ "\u03c4\01\00\00\u03d2\u03c6\01\00\00\u03d2\u03c8\01\00\00\u03d2\u03ca"+
+ "\01\00\00\u03d2\u03cc\01\00\00\u03d2\u03ce\01\00\00\u03d2\u03d0\01"+
+ "\00\00\u03d3\u00d5\01\00\00\u03d4\u03d5\02\060\071\u03d5\u03f3\01"+
+ "\00\00\u03d6\u03d7\02\u0660\u0669\u03d7\u03f3\01\00\00\u03d8\u03d9"+
+ "\02\u06f0\u06f9\u03d9\u03f3\01\00\00\u03da\u03db\02\u0966\u096f\u03db"+
+ "\u03f3\01\00\00\u03dc\u03dd\02\u09e6\u09ef\u03dd\u03f3\01\00\00\u03de"+
+ "\u03df\02\u0a66\u0a6f\u03df\u03f3\01\00\00\u03e0\u03e1\02\u0ae6\u0aef"+
+ "\u03e1\u03f3\01\00\00\u03e2\u03e3\02\u0b66\u0b6f\u03e3\u03f3\01\00"+
+ "\00\u03e4\u03e5\02\u0be7\u0bef\u03e5\u03f3\01\00\00\u03e6\u03e7\02"+
+ "\u0c66\u0c6f\u03e7\u03f3\01\00\00\u03e8\u03e9\02\u0ce6\u0cef\u03e9"+
+ "\u03f3\01\00\00\u03ea\u03eb\02\u0d66\u0d6f\u03eb\u03f3\01\00\00\u03ec"+
+ "\u03ed\02\u0e50\u0e59\u03ed\u03f3\01\00\00\u03ee\u03ef\02\u0ed0\u0ed9"+
+ "\u03ef\u03f3\01\00\00\u03f0\u03f1\02\u1040\u1049\u03f1\u03f3\01\00"+
+ "\00\u03f2\u03d4\01\00\00\u03f2\u03d6\01\00\00\u03f2\u03d8\01\00\00"+
+ "\u03f2\u03da\01\00\00\u03f2\u03dc\01\00\00\u03f2\u03de\01\00\00\u03f2"+
+ "\u03e0\01\00\00\u03f2\u03e2\01\00\00\u03f2\u03e4\01\00\00\u03f2\u03e6"+
+ "\01\00\00\u03f2\u03e8\01\00\00\u03f2\u03ea\01\00\00\u03f2\u03ec\01"+
+ "\00\00\u03f2\u03ee\01\00\00\u03f2\u03f0\01\00\00\u03f3\u00d7\01\00"+
+ "\00\u03f4\u03f5\05\040\00\u03f5\u03ff\01\00\00\u03f6\u03f7\05\015"+
+ "\00\u03f7\u03ff\01\00\00\u03f8\u03f9\05\011\00\u03f9\u03ff\01\00\00"+
+ "\u03fa\u03fb\05\014\00\u03fb\u03ff\01\00\00\u03fc\u03fd\05\012\00"+
+ "\u03fd\u03ff\01\00\00\u03fe\u03f4\01\00\00\u03fe\u03f6\01\00\00\u03fe"+
+ "\u03f8\01\00\00\u03fe\u03fa\01\00\00\u03fe\u03fc\01\00\00\u03ff\u0400"+
+ "\01\00\00\u0400\u03f4\01\00\00\u0400\u03f6\01\00\00\u0400\u03f8\01"+
+ "\00\00\u0400\u03fa\01\00\00\u0400\u03fc\01\00\00\u0400\u0401\01\00"+
+ "\00\u0401\u0402\01\00\00\u0402\u00d9\01\00\00\u0403\u0404\05\057\00"+
+ "\u0404\u0405\05\057\00\u0405\u0408\01\00\00\u0406\u0407\012\02\00"+
+ "\u0407\u0409\01\00\00\u0408\u0406\01\00\00\u0408\u040b\01\00\00\u0409"+
+ "\u040a\01\00\00\u040a\u0408\01\00\00\u040b\u040e\01\00\00\u040c\u040d"+
+ "\05\015\00\u040d\u040f\01\00\00\u040e\u040c\01\00\00\u040e\u040f\01"+
+ "\00\00\u040f\u0410\01\00\00\u0410\u0411\05\012\00\u0411\u0412\01\00"+
+ "\00\u0412\u00db\01\00\00\u0413\u0414\05\057\00\u0414\u0415\05\052"+
+ "\00\u0415\u0416\01\00\00\u0416\u00dd\01\00\00\u0417\u0418\05\052\00"+
+ "\u0418\u0419\05\057\00\u0419\u041a\01\00\00\u041a\u00df\01\00\00\u041b"+
+ "\u041c\013\00\00\u041c\u041d\01\00\00\u041d\u00e1\01\00\00\100\00"+
+ "\01\u0294\u0298\u0298\u029a\u029e\u02a6\u02aa\u02ae\u02b4\u02b4\u02b6"+
+ "\u02ba\u02c2\u02c8\u02cc\u02cc\u02ce\u02d4\u02da\u02de\u02e4\u02e4"+
+ "\u02e6\u02ea\u02ee\u02f2\u02f2\u02f4\u02fa\u02fe\u02fe\u0300\u030a"+
+ "\u030e\u0316\u031a\u0320\u0326\u032a\u032a\u032c\u0330\u0332\u0338"+
+ "\u033e\u0342\u0342\u0344\u034e\u0356\u0360\u0378\u037e\u0392\u03b4"+
+ "\u03d2\u03f2\u03fe\u03fe\u0400\u0408\u040e";
+ public static final ATN _ATN =
+ ATNInterpreter.deserialize(_serializedATN.toCharArray());
+ static {
+ org.antlr.v4.tool.DOTGenerator dot = new org.antlr.v4.tool.DOTGenerator(null);
+ //System.out.println(dot.getDOT(_ATN.decisionToATNState.get(0)));
+ }
+}
\ No newline at end of file
diff --git a/tool/playground/JavaParser.g b/tool/playground/JavaParser.g
new file mode 100644
index 000000000..fdd6ccdb6
--- /dev/null
+++ b/tool/playground/JavaParser.g
@@ -0,0 +1,756 @@
+ūparser grammar JavaParser;
+options {backtrack=true; memoize=true; tokenVocab=JavaLexer;}
+
+// starting point for parsing a java file
+/* The annotations are separated out to make parsing faster, but must be associated with
+ a packageDeclaration or a typeDeclaration (and not an empty one). */
+compilationUnit
+ : annotations
+ ( packageDeclaration importDeclaration* typeDeclaration*
+ | classOrInterfaceDeclaration typeDeclaration*
+ )
+ | packageDeclaration? importDeclaration* typeDeclaration*
+ ;
+
+packageDeclaration
+ : 'package' qualifiedName ';'
+ ;
+
+importDeclaration
+ : 'import' 'static'? qualifiedName ('.' '*')? ';'
+ ;
+
+typeDeclaration
+ : classOrInterfaceDeclaration
+ | ';'
+ ;
+
+classOrInterfaceDeclaration
+ : classOrInterfaceModifiers (classDeclaration | interfaceDeclaration)
+ ;
+
+classOrInterfaceModifiers
+ : classOrInterfaceModifier*
+ ;
+
+classOrInterfaceModifier
+ : annotation // class or interface
+ | 'public' // class or interface
+ | 'protected' // class or interface
+ | 'private' // class or interface
+ | 'abstract' // class or interface
+ | 'static' // class or interface
+ | 'final' // class only -- does not apply to interfaces
+ | 'strictfp' // class or interface
+ ;
+
+modifiers
+ : modifier*
+ ;
+
+classDeclaration
+ : normalClassDeclaration
+ | enumDeclaration
+ ;
+
+normalClassDeclaration
+ : 'class' Identifier typeParameters?
+ ('extends' type)?
+ ('implements' typeList)?
+ classBody
+ ;
+
+typeParameters
+ : '<' typeParameter (',' typeParameter)* '>'
+ ;
+
+typeParameter
+ : Identifier ('extends' typeBound)?
+ ;
+
+typeBound
+ : type ('&' type)*
+ ;
+
+enumDeclaration
+ : ENUM Identifier ('implements' typeList)? enumBody
+ ;
+
+enumBody
+ : '{' enumConstants? ','? enumBodyDeclarations? '}'
+ ;
+
+enumConstants
+ : enumConstant (',' enumConstant)*
+ ;
+
+enumConstant
+ : annotations? Identifier arguments? classBody?
+ ;
+
+enumBodyDeclarations
+ : ';' (classBodyDeclaration)*
+ ;
+
+interfaceDeclaration
+ : normalInterfaceDeclaration
+ | annotationTypeDeclaration
+ ;
+
+normalInterfaceDeclaration
+ : 'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
+ ;
+
+typeList
+ : type (',' type)*
+ ;
+
+classBody
+ : '{' classBodyDeclaration* '}'
+ ;
+
+interfaceBody
+ : '{' interfaceBodyDeclaration* '}'
+ ;
+
+classBodyDeclaration
+ : ';'
+ | 'static'? block
+ | modifiers memberDecl
+ ;
+
+memberDecl
+ : genericMethodOrConstructorDecl
+ | memberDeclaration
+ | 'void' Identifier voidMethodDeclaratorRest
+ | Identifier constructorDeclaratorRest
+ | interfaceDeclaration
+ | classDeclaration
+ ;
+
+memberDeclaration
+ : type (methodDeclaration | fieldDeclaration)
+ ;
+
+genericMethodOrConstructorDecl
+ : typeParameters genericMethodOrConstructorRest
+ ;
+
+genericMethodOrConstructorRest
+ : (type | 'void') Identifier methodDeclaratorRest
+ | Identifier constructorDeclaratorRest
+ ;
+
+methodDeclaration
+ : Identifier methodDeclaratorRest
+ ;
+
+fieldDeclaration
+ : variableDeclarators ';'
+ ;
+
+interfaceBodyDeclaration
+ : modifiers interfaceMemberDecl
+ | ';'
+ ;
+
+interfaceMemberDecl
+ : interfaceMethodOrFieldDecl
+ | interfaceGenericMethodDecl
+ | 'void' Identifier voidInterfaceMethodDeclaratorRest
+ | interfaceDeclaration
+ | classDeclaration
+ ;
+
+interfaceMethodOrFieldDecl
+ : type Identifier interfaceMethodOrFieldRest
+ ;
+
+interfaceMethodOrFieldRest
+ : constantDeclaratorsRest ';'
+ | interfaceMethodDeclaratorRest
+ ;
+
+methodDeclaratorRest
+ : formalParameters ('[' ']')*
+ ('throws' qualifiedNameList)?
+ ( methodBody
+ | ';'
+ )
+ ;
+
+voidMethodDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)?
+ ( methodBody
+ | ';'
+ )
+ ;
+
+interfaceMethodDeclaratorRest
+ : formalParameters ('[' ']')* ('throws' qualifiedNameList)? ';'
+ ;
+
+interfaceGenericMethodDecl
+ : typeParameters (type | 'void') Identifier
+ interfaceMethodDeclaratorRest
+ ;
+
+voidInterfaceMethodDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)? ';'
+ ;
+
+constructorDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)? constructorBody
+ ;
+
+constantDeclarator
+ : Identifier constantDeclaratorRest
+ ;
+
+variableDeclarators
+ : variableDeclarator (',' variableDeclarator)*
+ ;
+
+variableDeclarator
+ : variableDeclaratorId ('=' variableInitializer)?
+ ;
+
+constantDeclaratorsRest
+ : constantDeclaratorRest (',' constantDeclarator)*
+ ;
+
+constantDeclaratorRest
+ : ('[' ']')* '=' variableInitializer
+ ;
+
+variableDeclaratorId
+ : Identifier ('[' ']')*
+ ;
+
+variableInitializer
+ : arrayInitializer
+ | expression
+ ;
+
+arrayInitializer
+ : '{' (variableInitializer (',' variableInitializer)* (',')? )? '}'
+ ;
+
+modifier
+ : annotation
+ | 'public'
+ | 'protected'
+ | 'private'
+ | 'static'
+ | 'abstract'
+ | 'final'
+ | 'native'
+ | 'synchronized'
+ | 'transient'
+ | 'volatile'
+ | 'strictfp'
+ ;
+
+packageOrTypeName
+ : qualifiedName
+ ;
+
+enumConstantName
+ : Identifier
+ ;
+
+typeName
+ : qualifiedName
+ ;
+
+type
+ : classOrInterfaceType ('[' ']')*
+ | primitiveType ('[' ']')*
+ ;
+
+classOrInterfaceType
+ : Identifier typeArguments? ('.' Identifier typeArguments? )*
+ ;
+
+primitiveType
+ : 'boolean'
+ | 'char'
+ | 'byte'
+ | 'short'
+ | 'int'
+ | 'long'
+ | 'float'
+ | 'double'
+ ;
+
+variableModifier
+ : 'final'
+ | annotation
+ ;
+
+typeArguments
+ : '<' typeArgument (',' typeArgument)* '>'
+ ;
+
+typeArgument
+ : type
+ | '?' (('extends' | 'super') type)?
+ ;
+
+qualifiedNameList
+ : qualifiedName (',' qualifiedName)*
+ ;
+
+formalParameters
+ : '(' formalParameterDecls? ')'
+ ;
+
+formalParameterDecls
+ : variableModifiers type formalParameterDeclsRest
+ ;
+
+formalParameterDeclsRest
+ : variableDeclaratorId (',' formalParameterDecls)?
+ | '...' variableDeclaratorId
+ ;
+
+methodBody
+ : block
+ ;
+
+constructorBody
+ : '{' explicitConstructorInvocation? blockStatement* '}'
+ ;
+
+explicitConstructorInvocation
+ : nonWildcardTypeArguments? ('this' | 'super') arguments ';'
+ | primary '.' nonWildcardTypeArguments? 'super' arguments ';'
+ ;
+
+
+qualifiedName
+ : Identifier ('.' Identifier)*
+ ;
+
+literal
+ : integerLiteral
+ | FloatingPointLiteral
+ | CharacterLiteral
+ | StringLiteral
+ | booleanLiteral
+ | 'null'
+ ;
+
+integerLiteral
+ : HexLiteral
+ | OctalLiteral
+ | DecimalLiteral
+ ;
+
+booleanLiteral
+ : 'true'
+ | 'false'
+ ;
+
+// ANNOTATIONS
+
+annotations
+ : annotation+
+ ;
+
+annotation
+ : '@' annotationName ( '(' ( elementValuePairs | elementValue )? ')' )?
+ ;
+
+annotationName
+ : Identifier ('.' Identifier)*
+ ;
+
+elementValuePairs
+ : elementValuePair (',' elementValuePair)*
+ ;
+
+elementValuePair
+ : Identifier '=' elementValue
+ ;
+
+elementValue
+ : conditionalExpression
+ | annotation
+ | elementValueArrayInitializer
+ ;
+
+elementValueArrayInitializer
+ : '{' (elementValue (',' elementValue)*)? (',')? '}'
+ ;
+
+annotationTypeDeclaration
+ : '@' 'interface' Identifier annotationTypeBody
+ ;
+
+annotationTypeBody
+ : '{' (annotationTypeElementDeclaration)* '}'
+ ;
+
+annotationTypeElementDeclaration
+ : modifiers annotationTypeElementRest
+ ;
+
+annotationTypeElementRest
+ : type annotationMethodOrConstantRest ';'
+ | normalClassDeclaration ';'?
+ | normalInterfaceDeclaration ';'?
+ | enumDeclaration ';'?
+ | annotationTypeDeclaration ';'?
+ ;
+
+annotationMethodOrConstantRest
+ : annotationMethodRest
+ | annotationConstantRest
+ ;
+
+annotationMethodRest
+ : Identifier '(' ')' defaultValue?
+ ;
+
+annotationConstantRest
+ : variableDeclarators
+ ;
+
+defaultValue
+ : 'default' elementValue
+ ;
+
+// STATEMENTS / BLOCKS
+
+block
+ : '{' blockStatement* '}'
+ ;
+
+blockStatement
+ : localVariableDeclarationStatement
+ | classOrInterfaceDeclaration
+ | statement
+ ;
+
+localVariableDeclarationStatement
+ : localVariableDeclaration ';'
+ ;
+
+localVariableDeclaration
+ : variableModifiers type variableDeclarators
+ ;
+
+variableModifiers
+ : variableModifier*
+ ;
+
+statement
+ : block
+ | ASSERT expression (':' expression)? ';'
+ | 'if' parExpression statement (options {k=1;}:'else' statement)?
+ | 'for' '(' forControl ')' statement
+ | 'while' parExpression statement
+ | 'do' statement 'while' parExpression ';'
+ | 'try' block
+ ( catches 'finally' block
+ | catches
+ | 'finally' block
+ )
+ | 'switch' parExpression '{' switchBlockStatementGroups '}'
+ | 'synchronized' parExpression block
+ | 'return' expression? ';'
+ | 'throw' expression ';'
+ | 'break' Identifier? ';'
+ | 'continue' Identifier? ';'
+ | ';'
+ | statementExpression ';'
+ | Identifier ':' statement
+ ;
+
+catches
+ : catchClause (catchClause)*
+ ;
+
+catchClause
+ : 'catch' '(' formalParameter ')' block
+ ;
+
+formalParameter
+ : variableModifiers type variableDeclaratorId
+ ;
+
+switchBlockStatementGroups
+ : (switchBlockStatementGroup)*
+ ;
+
+/* The change here (switchLabel -> switchLabel+) technically makes this grammar
+ ambiguous; but with appropriately greedy parsing it yields the most
+ appropriate AST, one in which each group, except possibly the last one, has
+ labels and statements. */
+switchBlockStatementGroup
+ : switchLabel+ blockStatement*
+ ;
+
+switchLabel
+ : 'case' constantExpression ':'
+ | 'case' enumConstantName ':'
+ | 'default' ':'
+ ;
+
+forControl
+options {k=3;} // be efficient for common case: for (ID ID : ID) ...
+ : enhancedForControl
+ | forInit? ';' expression? ';' forUpdate?
+ ;
+
+forInit
+ : localVariableDeclaration
+ | expressionList
+ ;
+
+enhancedForControl
+ : variableModifiers type Identifier ':' expression
+ ;
+
+forUpdate
+ : expressionList
+ ;
+
+// EXPRESSIONS
+
+parExpression
+ : '(' expression ')'
+ ;
+
+expressionList
+ : expression (',' expression)*
+ ;
+
+statementExpression
+ : expression
+ ;
+
+constantExpression
+ : expression
+ ;
+
+expression
+ : conditionalExpression (assignmentOperator expression)?
+ ;
+
+assignmentOperator
+ : '='
+ | '+='
+ | '-='
+ | '*='
+ | '/='
+ | '&='
+ | '|='
+ | '^='
+ | '%='
+ | '<' '<' '='
+ | '>' '>' '>' '='
+ | '>' '>' '='
+/*
+ | ('<' '<' '=')=> t1='<' t2='<' t3='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ | ('>' '>' '>' '=')=> t1='>' t2='>' t3='>' t4='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() &&
+ $t3.getLine() == $t4.getLine() &&
+ $t3.getCharPositionInLine() + 1 == $t4.getCharPositionInLine() }?
+ | ('>' '>' '=')=> t1='>' t2='>' t3='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ */
+ ;
+
+conditionalExpression
+ : conditionalOrExpression ( '?' conditionalExpression ':' conditionalExpression )?
+ ;
+
+conditionalOrExpression
+ : conditionalAndExpression ( '||' conditionalAndExpression )*
+ ;
+
+conditionalAndExpression
+ : inclusiveOrExpression ( '&&' inclusiveOrExpression )*
+ ;
+
+inclusiveOrExpression
+ : exclusiveOrExpression ( '|' exclusiveOrExpression )*
+ ;
+
+exclusiveOrExpression
+ : andExpression ( '^' andExpression )*
+ ;
+
+andExpression
+ : equalityExpression ( '&' equalityExpression )*
+ ;
+
+equalityExpression
+ : instanceOfExpression ( ('==' | '!=') instanceOfExpression )*
+ ;
+
+instanceOfExpression
+ : relationalExpression ('instanceof' type)?
+ ;
+
+relationalExpression
+ : shiftExpression ( relationalOp shiftExpression )*
+ ;
+
+relationalOp
+ : '<' '='
+ | '>' '='
+ | '<'
+ | '>'
+ ;
+/*
+relationalOp
+ : ('<' '=')=> t1='<' t2='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | ('>' '=')=> t1='>' t2='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | '<'
+ | '>'
+ ;
+ */
+
+shiftExpression
+ : additiveExpression ( shiftOp additiveExpression )*
+ ;
+
+shiftOp
+ : '<' '<'
+ | '>' '>' '>'
+ | '>' '>'
+ ;
+
+/*
+shiftOp
+ : ('<' '<')=> t1='<' t2='<'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | ('>' '>' '>')=> t1='>' t2='>' t3='>'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ | ('>' '>')=> t1='>' t2='>'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ ;
+*/
+
+additiveExpression
+ : multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
+ ;
+
+multiplicativeExpression
+ : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
+ ;
+
+unaryExpression
+ : '+' unaryExpression
+ | '-' unaryExpression
+ | '++' unaryExpression
+ | '--' unaryExpression
+ | unaryExpressionNotPlusMinus
+ ;
+
+unaryExpressionNotPlusMinus
+ : '~' unaryExpression
+ | '!' unaryExpression
+ | castExpression
+ | primary selector* ('++'|'--')?
+ ;
+
+castExpression
+ : '(' primitiveType ')' unaryExpression
+ | '(' (type | expression) ')' unaryExpressionNotPlusMinus
+ ;
+
+primary
+ : parExpression
+ | 'this' ('.' Identifier)* identifierSuffix?
+ | 'super' superSuffix
+ | literal
+ | 'new' creator
+ | Identifier ('.' Identifier)* identifierSuffix?
+ | primitiveType ('[' ']')* '.' 'class'
+ | 'void' '.' 'class'
+ ;
+
+identifierSuffix
+ : ('[' ']')+ '.' 'class'
+// | ('[' expression ']')+ // can also be matched by selector, but do here
+ | arguments
+ | '.' 'class'
+ | '.' explicitGenericInvocation
+ | '.' 'this'
+ | '.' 'super' arguments
+ | '.' 'new' innerCreator
+ ;
+
+creator
+ : nonWildcardTypeArguments createdName classCreatorRest
+ | createdName (arrayCreatorRest | classCreatorRest)
+ ;
+
+createdName
+ : classOrInterfaceType
+ | primitiveType
+ ;
+
+innerCreator
+ : nonWildcardTypeArguments? Identifier classCreatorRest
+ ;
+
+arrayCreatorRest
+ : '['
+ ( ']' ('[' ']')* arrayInitializer
+ | expression ']' ('[' expression ']')* ('[' ']')*
+ )
+ ;
+
+classCreatorRest
+ : arguments classBody?
+ ;
+
+explicitGenericInvocation
+ : nonWildcardTypeArguments Identifier arguments
+ ;
+
+nonWildcardTypeArguments
+ : '<' typeList '>'
+ ;
+
+selector
+ : '.' Identifier arguments?
+ | '.' 'this'
+ | '.' 'super' superSuffix
+ | '.' 'new' innerCreator
+ | '[' expression ']'
+ ;
+
+superSuffix
+ : arguments
+ | '.' Identifier arguments?
+ ;
+
+arguments
+ : '(' expressionList? ')'
+ ;
+
diff --git a/tool/playground/JavaParser.java b/tool/playground/JavaParser.java
new file mode 100644
index 000000000..7da319e55
--- /dev/null
+++ b/tool/playground/JavaParser.java
@@ -0,0 +1,6448 @@
+// $ANTLR ANTLRVersion> JavaParser.java generatedTimestamp>
+import org.antlr.v4.runtime.NoViableAltException;
+import org.antlr.v4.runtime.Parser;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.EarlyExitException;
+import org.antlr.v4.runtime.ParserSharedState;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.FailedPredicateException;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.runtime.*;
+
+public class JavaParser extends Parser {
+ public static final int
+ EOR=1, T__29=8, T__28=7, T__27=6, T__26=5, T__25=4, OctalLiteral=95,
+ Identifier=101, T__93=72, T__94=73, T__91=70, T__92=71, T__90=69,
+ COMMENT=105, T__99=78, T__98=77, T__97=76, T__96=75, T__95=74, T__80=59,
+ T__81=60, T__82=61, T__83=62, LINE_COMMENT=103, T__85=64, T__84=63,
+ T__87=66, ASSERT=100, T__86=65, T__89=68, T__88=67, WS=102, T__71=50,
+ T__72=51, T__70=49, FloatingPointLiteral=96, T__76=55, T__75=54,
+ T__74=53, T__73=52, T__79=58, T__78=57, T__77=56, T__68=47, T__69=48,
+ T__66=45, T__67=46, T__64=43, T__65=44, T__62=41, T__63=42, CharacterLiteral=97,
+ T__61=40, T__60=39, COMMENT_START=104, T__55=34, T__56=35, T__57=36,
+ T__58=37, T__51=30, T__52=31, T__53=32, T__54=33, T__107=86, T__108=87,
+ T__109=88, T__59=38, T__103=82, T__104=83, T__105=84, T__106=85,
+ T__111=90, T__110=89, T__113=92, T__112=91, T__50=29, T__42=21,
+ T__43=22, HexLiteral=93, T__40=19, T__41=20, T__46=25, T__47=26,
+ T__44=23, T__45=24, T__48=27, T__49=28, T__102=81, T__101=80, T__100=79,
+ DecimalLiteral=94, StringLiteral=98, T__30=9, T__31=10, T__32=11,
+ T__33=12, T__34=13, ENUM=99, T__35=14, T__36=15, T__37=16, T__38=17,
+ T__39=18, COMMENT_INSIDE=106;
+ public static final String[] tokenNames = {
+ "", "", "",
+ "EOR", "'package'", "';'", "'import'", "'static'", "'.'", "'*'",
+ "'public'", "'protected'", "'private'", "'abstract'", "'final'",
+ "'strictfp'", "'class'", "'extends'", "'implements'", "'<'", "','",
+ "'>'", "'&'", "'{'", "'}'", "'interface'", "'void'", "'['", "']'",
+ "'throws'", "'='", "'native'", "'synchronized'", "'transient'",
+ "'volatile'", "'boolean'", "'char'", "'byte'", "'short'", "'int'",
+ "'long'", "'float'", "'double'", "'?'", "'super'", "'('", "')'",
+ "'...'", "'this'", "'null'", "'true'", "'false'", "'@'", "'default'",
+ "':'", "'if'", "'else'", "'for'", "'while'", "'do'", "'try'", "'finally'",
+ "'switch'", "'return'", "'throw'", "'break'", "'continue'", "'catch'",
+ "'case'", "'+='", "'-='", "'*='", "'/='", "'&='", "'|='", "'^='",
+ "'%='", "'||'", "'&&'", "'|'", "'^'", "'=='", "'!='", "'instanceof'",
+ "'+'", "'-'", "'/'", "'%'", "'++'", "'--'", "'~'", "'!'", "'new'",
+ "HexLiteral", "DecimalLiteral", "OctalLiteral", "FloatingPointLiteral",
+ "CharacterLiteral", "StringLiteral", "ENUM", "ASSERT", "Identifier",
+ "WS", "LINE_COMMENT", "COMMENT_START", "COMMENT", "COMMENT_INSIDE"
+ };
+ public static final String[] ruleNames = {
+ "",
+ "compilationUnit", "packageDeclaration", "importDeclaration", "typeDeclaration",
+ "classOrInterfaceDeclaration", "classOrInterfaceModifiers", "classOrInterfaceModifier",
+ "modifiers", "classDeclaration", "normalClassDeclaration", "typeParameters",
+ "typeParameter", "typeBound", "enumDeclaration", "enumBody", "enumConstants",
+ "enumConstant", "enumBodyDeclarations", "interfaceDeclaration",
+ "normalInterfaceDeclaration", "typeList", "classBody", "interfaceBody",
+ "classBodyDeclaration", "memberDecl", "memberDeclaration", "genericMethodOrConstructorDecl",
+ "genericMethodOrConstructorRest", "methodDeclaration", "fieldDeclaration",
+ "interfaceBodyDeclaration", "interfaceMemberDecl", "interfaceMethodOrFieldDecl",
+ "interfaceMethodOrFieldRest", "methodDeclaratorRest", "voidMethodDeclaratorRest",
+ "interfaceMethodDeclaratorRest", "interfaceGenericMethodDecl", "voidInterfaceMethodDeclaratorRest",
+ "constructorDeclaratorRest", "constantDeclarator", "variableDeclarators",
+ "variableDeclarator", "constantDeclaratorsRest", "constantDeclaratorRest",
+ "variableDeclaratorId", "variableInitializer", "arrayInitializer",
+ "modifier", "packageOrTypeName", "enumConstantName", "typeName",
+ "type", "classOrInterfaceType", "primitiveType", "variableModifier",
+ "typeArguments", "typeArgument", "qualifiedNameList", "formalParameters",
+ "formalParameterDecls", "formalParameterDeclsRest", "methodBody",
+ "constructorBody", "explicitConstructorInvocation", "qualifiedName",
+ "literal", "integerLiteral", "booleanLiteral", "annotations", "annotation",
+ "annotationName", "elementValuePairs", "elementValuePair", "elementValue",
+ "elementValueArrayInitializer", "annotationTypeDeclaration", "annotationTypeBody",
+ "annotationTypeElementDeclaration", "annotationTypeElementRest",
+ "annotationMethodOrConstantRest", "annotationMethodRest", "annotationConstantRest",
+ "defaultValue", "block", "blockStatement", "localVariableDeclarationStatement",
+ "localVariableDeclaration", "variableModifiers", "statement", "catches",
+ "catchClause", "formalParameter", "switchBlockStatementGroups",
+ "switchBlockStatementGroup", "switchLabel", "forControl", "forInit",
+ "enhancedForControl", "forUpdate", "parExpression", "expressionList",
+ "statementExpression", "constantExpression", "expression", "assignmentOperator",
+ "conditionalExpression", "conditionalOrExpression", "conditionalAndExpression",
+ "inclusiveOrExpression", "exclusiveOrExpression", "andExpression",
+ "equalityExpression", "instanceOfExpression", "relationalExpression",
+ "relationalOp", "shiftExpression", "shiftOp", "additiveExpression",
+ "multiplicativeExpression", "unaryExpression", "unaryExpressionNotPlusMinus",
+ "castExpression", "primary", "identifierSuffix", "creator", "createdName",
+ "innerCreator", "arrayCreatorRest", "classCreatorRest", "explicitGenericInvocation",
+ "nonWildcardTypeArguments", "selector", "superSuffix", "arguments"
+ };
+ public JavaParser(TokenStream input) {
+ this(input, new ParserSharedState());
+ }
+ public JavaParser(TokenStream input, ParserSharedState state) {
+ super(input, state);
+ _interp = new ParserInterpreter(this,_ATN);
+ }
+
+ public final ParserRuleContext compilationUnit(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 0);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[1]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,7,_ctx) ) {
+ case 1:
+ _ctx.s = 270;
+ annotations(_ctx);
+ switch ( state.input.LA(1) ) {
+ case T__25:
+ _ctx.s = 272;
+ packageDeclaration(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__27 ) {
+ _ctx.s = 274;
+ importDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_0);
+ }
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__46 || _la==T__73 || _la==ENUM ) {
+ _ctx.s = 280;
+ typeDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_1);
+ }
+ break;
+ case T__28:
+ case T__31:
+ case T__32:
+ case T__33:
+ case T__34:
+ case T__35:
+ case T__36:
+ case T__37:
+ case T__46:
+ case T__73:
+ case ENUM:
+ _ctx.s = 286;
+ classOrInterfaceDeclaration(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__46 || _la==T__73 || _la==ENUM ) {
+ _ctx.s = 288;
+ typeDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_2);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ break;
+ case 2:
+ _la = state.input.LA(1);
+ if ( _la==T__25 ) {
+ _ctx.s = 296;
+ packageDeclaration(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ while ( _la==T__27 ) {
+ _ctx.s = 300;
+ importDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_5);
+ }
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__46 || _la==T__73 || _la==ENUM ) {
+ _ctx.s = 306;
+ typeDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_6);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[1]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext packageDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 2);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[2]);
+ try {
+ _ctx.s = 314;
+ match(T__25);
+ _ctx.s = 316;
+ qualifiedName(_ctx);
+ _ctx.s = 318;
+ match(T__26);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[2]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext importDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 4);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[3]);
+ int _la;
+ try {
+ _ctx.s = 320;
+ match(T__27);
+ _la = state.input.LA(1);
+ if ( _la==T__28 ) {
+ _ctx.s = 322;
+ match(T__28);
+ }
+
+ _ctx.s = 326;
+ qualifiedName(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__29 ) {
+ _ctx.s = 328;
+ match(T__29);
+ _ctx.s = 330;
+ match(T__30);
+ }
+
+ _ctx.s = 334;
+ match(T__26);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[3]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 6);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[4]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__28:
+ case T__31:
+ case T__32:
+ case T__33:
+ case T__34:
+ case T__35:
+ case T__36:
+ case T__37:
+ case T__46:
+ case T__73:
+ case ENUM:
+ _ctx.s = 336;
+ classOrInterfaceDeclaration(_ctx);
+ break;
+ case T__26:
+ _ctx.s = 338;
+ match(T__26);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[4]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classOrInterfaceDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 8);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[5]);
+ try {
+ _ctx.s = 342;
+ classOrInterfaceModifiers(_ctx);
+ switch ( state.input.LA(1) ) {
+ case T__37:
+ case ENUM:
+ _ctx.s = 344;
+ classDeclaration(_ctx);
+ break;
+ case T__46:
+ case T__73:
+ _ctx.s = 346;
+ interfaceDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[5]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classOrInterfaceModifiers(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 10);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[6]);
+ try {
+ int _alt133 = _interp.adaptivePredict(state.input,12,_ctx);
+ while ( _alt133!=2 ) {
+ switch ( _alt133 ) {
+ case 1:
+ _ctx.s = 350;
+ classOrInterfaceModifier(_ctx);
+ break;
+ }
+ _alt133 = _interp.adaptivePredict(state.input,12,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[6]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classOrInterfaceModifier(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 12);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[7]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__73:
+ _ctx.s = 356;
+ annotation(_ctx);
+ break;
+ case T__31:
+ _ctx.s = 358;
+ match(T__31);
+ break;
+ case T__32:
+ _ctx.s = 360;
+ match(T__32);
+ break;
+ case T__33:
+ _ctx.s = 362;
+ match(T__33);
+ break;
+ case T__34:
+ _ctx.s = 364;
+ match(T__34);
+ break;
+ case T__28:
+ _ctx.s = 366;
+ match(T__28);
+ break;
+ case T__35:
+ _ctx.s = 368;
+ match(T__35);
+ break;
+ case T__36:
+ _ctx.s = 370;
+ match(T__36);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[7]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext modifiers(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 14);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[8]);
+ try {
+ int _alt194 = _interp.adaptivePredict(state.input,14,_ctx);
+ while ( _alt194!=2 ) {
+ switch ( _alt194 ) {
+ case 1:
+ _ctx.s = 374;
+ modifier(_ctx);
+ break;
+ }
+ _alt194 = _interp.adaptivePredict(state.input,14,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[8]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 16);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[9]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__37:
+ _ctx.s = 380;
+ normalClassDeclaration(_ctx);
+ break;
+ case ENUM:
+ _ctx.s = 382;
+ enumDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[9]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext normalClassDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 18);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[10]);
+ int _la;
+ try {
+ _ctx.s = 386;
+ match(T__37);
+ _ctx.s = 388;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__40 ) {
+ _ctx.s = 390;
+ typeParameters(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__38 ) {
+ _ctx.s = 394;
+ match(T__38);
+ _ctx.s = 396;
+ type(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__39 ) {
+ _ctx.s = 400;
+ match(T__39);
+ _ctx.s = 402;
+ typeList(_ctx);
+ }
+
+ _ctx.s = 406;
+ classBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[10]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeParameters(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 20);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[11]);
+ int _la;
+ try {
+ _ctx.s = 408;
+ match(T__40);
+ _ctx.s = 410;
+ typeParameter(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 412;
+ match(T__41);
+ _ctx.s = 414;
+ typeParameter(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeParameters_iter_19);
+ }
+ _ctx.s = 420;
+ match(T__42);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[11]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeParameter(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 22);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[12]);
+ int _la;
+ try {
+ _ctx.s = 422;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__38 ) {
+ _ctx.s = 424;
+ match(T__38);
+ _ctx.s = 426;
+ typeBound(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[12]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeBound(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 24);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[13]);
+ int _la;
+ try {
+ _ctx.s = 430;
+ type(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__43 ) {
+ _ctx.s = 432;
+ match(T__43);
+ _ctx.s = 434;
+ type(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeBound_iter_21);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[13]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 26);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[14]);
+ int _la;
+ try {
+ _ctx.s = 440;
+ match(ENUM);
+ _ctx.s = 442;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__39 ) {
+ _ctx.s = 444;
+ match(T__39);
+ _ctx.s = 446;
+ typeList(_ctx);
+ }
+
+ _ctx.s = 450;
+ enumBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[14]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 28);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[15]);
+ int _la;
+ try {
+ _ctx.s = 452;
+ match(T__44);
+ _la = state.input.LA(1);
+ if ( _la==T__73 || _la==Identifier ) {
+ _ctx.s = 454;
+ enumConstants(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__41 ) {
+ _ctx.s = 458;
+ match(T__41);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__26 ) {
+ _ctx.s = 462;
+ enumBodyDeclarations(_ctx);
+ }
+
+ _ctx.s = 466;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[15]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumConstants(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 30);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[16]);
+ try {
+ _ctx.s = 468;
+ enumConstant(_ctx);
+ int _alt337 = _interp.adaptivePredict(state.input,26,_ctx);
+ while ( _alt337!=2 ) {
+ switch ( _alt337 ) {
+ case 1:
+ _ctx.s = 470;
+ match(T__41);
+ _ctx.s = 472;
+ enumConstant(_ctx);
+ break;
+ }
+ _alt337 = _interp.adaptivePredict(state.input,26,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[16]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumConstant(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 32);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[17]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ if ( _la==T__73 ) {
+ _ctx.s = 478;
+ annotations(_ctx);
+ }
+
+ _ctx.s = 482;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__66 ) {
+ _ctx.s = 484;
+ arguments(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__44 ) {
+ _ctx.s = 488;
+ classBody(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[17]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumBodyDeclarations(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 34);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[18]);
+ int _la;
+ try {
+ _ctx.s = 492;
+ match(T__26);
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__40 || _la==T__44 || _la==T__46 || _la==T__47 || _la==T__52 || _la==T__53 || _la==T__54 || _la==T__55 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__73 || _la==ENUM || _la==Identifier ) {
+ _ctx.s = 494;
+ classBodyDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_enumBodyDeclarations_iter_30);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[18]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 36);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[19]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__46:
+ _ctx.s = 500;
+ normalInterfaceDeclaration(_ctx);
+ break;
+ case T__73:
+ _ctx.s = 502;
+ annotationTypeDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[19]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext normalInterfaceDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 38);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[20]);
+ int _la;
+ try {
+ _ctx.s = 506;
+ match(T__46);
+ _ctx.s = 508;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__40 ) {
+ _ctx.s = 510;
+ typeParameters(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__38 ) {
+ _ctx.s = 514;
+ match(T__38);
+ _ctx.s = 516;
+ typeList(_ctx);
+ }
+
+ _ctx.s = 520;
+ interfaceBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[20]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeList(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 40);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[21]);
+ int _la;
+ try {
+ _ctx.s = 522;
+ type(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 524;
+ match(T__41);
+ _ctx.s = 526;
+ type(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeList_iter_34);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[21]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 42);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[22]);
+ int _la;
+ try {
+ _ctx.s = 532;
+ match(T__44);
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__40 || _la==T__44 || _la==T__46 || _la==T__47 || _la==T__52 || _la==T__53 || _la==T__54 || _la==T__55 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__73 || _la==ENUM || _la==Identifier ) {
+ _ctx.s = 534;
+ classBodyDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_classBody_iter_35);
+ }
+ _ctx.s = 540;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[22]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 44);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[23]);
+ int _la;
+ try {
+ _ctx.s = 542;
+ match(T__44);
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__40 || _la==T__46 || _la==T__47 || _la==T__52 || _la==T__53 || _la==T__54 || _la==T__55 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__73 || _la==ENUM || _la==Identifier ) {
+ _ctx.s = 544;
+ interfaceBodyDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_interfaceBody_iter_36);
+ }
+ _ctx.s = 550;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[23]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classBodyDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 46);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[24]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,38,_ctx) ) {
+ case 1:
+ _ctx.s = 552;
+ match(T__26);
+ break;
+ case 2:
+ _la = state.input.LA(1);
+ if ( _la==T__28 ) {
+ _ctx.s = 554;
+ match(T__28);
+ }
+
+ _ctx.s = 558;
+ block(_ctx);
+ break;
+ case 3:
+ _ctx.s = 560;
+ modifiers(_ctx);
+ _ctx.s = 562;
+ memberDecl(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[24]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext memberDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 48);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[25]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,39,_ctx) ) {
+ case 1:
+ _ctx.s = 566;
+ genericMethodOrConstructorDecl(_ctx);
+ break;
+ case 2:
+ _ctx.s = 568;
+ memberDeclaration(_ctx);
+ break;
+ case 3:
+ _ctx.s = 570;
+ match(T__47);
+ _ctx.s = 572;
+ match(Identifier);
+ _ctx.s = 574;
+ voidMethodDeclaratorRest(_ctx);
+ break;
+ case 4:
+ _ctx.s = 576;
+ match(Identifier);
+ _ctx.s = 578;
+ constructorDeclaratorRest(_ctx);
+ break;
+ case 5:
+ _ctx.s = 580;
+ interfaceDeclaration(_ctx);
+ break;
+ case 6:
+ _ctx.s = 582;
+ classDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[25]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext memberDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 50);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[26]);
+ try {
+ _ctx.s = 586;
+ type(_ctx);
+ switch ( _interp.adaptivePredict(state.input,40,_ctx) ) {
+ case 1:
+ _ctx.s = 588;
+ methodDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 590;
+ fieldDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[26]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext genericMethodOrConstructorDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 52);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[27]);
+ try {
+ _ctx.s = 594;
+ typeParameters(_ctx);
+ _ctx.s = 596;
+ genericMethodOrConstructorRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[27]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext genericMethodOrConstructorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 54);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[28]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,42,_ctx) ) {
+ case 1:
+ switch ( state.input.LA(1) ) {
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case Identifier:
+ _ctx.s = 598;
+ type(_ctx);
+ break;
+ case T__47:
+ _ctx.s = 600;
+ match(T__47);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 604;
+ match(Identifier);
+ _ctx.s = 606;
+ methodDeclaratorRest(_ctx);
+ break;
+ case 2:
+ _ctx.s = 608;
+ match(Identifier);
+ _ctx.s = 610;
+ constructorDeclaratorRest(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[28]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext methodDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 56);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[29]);
+ try {
+ _ctx.s = 614;
+ match(Identifier);
+ _ctx.s = 616;
+ methodDeclaratorRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[29]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext fieldDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 58);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[30]);
+ try {
+ _ctx.s = 618;
+ variableDeclarators(_ctx);
+ _ctx.s = 620;
+ match(T__26);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[30]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceBodyDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 60);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[31]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__28:
+ case T__31:
+ case T__32:
+ case T__33:
+ case T__34:
+ case T__35:
+ case T__36:
+ case T__37:
+ case T__40:
+ case T__46:
+ case T__47:
+ case T__52:
+ case T__53:
+ case T__54:
+ case T__55:
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case T__73:
+ case ENUM:
+ case Identifier:
+ _ctx.s = 622;
+ modifiers(_ctx);
+ _ctx.s = 624;
+ interfaceMemberDecl(_ctx);
+ break;
+ case T__26:
+ _ctx.s = 626;
+ match(T__26);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[31]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceMemberDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 62);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[32]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case Identifier:
+ _ctx.s = 630;
+ interfaceMethodOrFieldDecl(_ctx);
+ break;
+ case T__40:
+ _ctx.s = 632;
+ interfaceGenericMethodDecl(_ctx);
+ break;
+ case T__47:
+ _ctx.s = 634;
+ match(T__47);
+ _ctx.s = 636;
+ match(Identifier);
+ _ctx.s = 638;
+ voidInterfaceMethodDeclaratorRest(_ctx);
+ break;
+ case T__46:
+ case T__73:
+ _ctx.s = 640;
+ interfaceDeclaration(_ctx);
+ break;
+ case T__37:
+ case ENUM:
+ _ctx.s = 642;
+ classDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[32]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceMethodOrFieldDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 64);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[33]);
+ try {
+ _ctx.s = 646;
+ type(_ctx);
+ _ctx.s = 648;
+ match(Identifier);
+ _ctx.s = 650;
+ interfaceMethodOrFieldRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[33]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceMethodOrFieldRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 66);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[34]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__48:
+ case T__51:
+ _ctx.s = 652;
+ constantDeclaratorsRest(_ctx);
+ _ctx.s = 654;
+ match(T__26);
+ break;
+ case T__66:
+ _ctx.s = 656;
+ interfaceMethodDeclaratorRest(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[34]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext methodDeclaratorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 68);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[35]);
+ int _la;
+ try {
+ _ctx.s = 660;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 662;
+ match(T__48);
+ _ctx.s = 664;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_methodDeclaratorRest_iter_46);
+ }
+ _la = state.input.LA(1);
+ if ( _la==T__50 ) {
+ _ctx.s = 670;
+ match(T__50);
+ _ctx.s = 672;
+ qualifiedNameList(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case T__44:
+ _ctx.s = 676;
+ methodBody(_ctx);
+ break;
+ case T__26:
+ _ctx.s = 678;
+ match(T__26);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[35]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext voidMethodDeclaratorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 70);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[36]);
+ int _la;
+ try {
+ _ctx.s = 682;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__50 ) {
+ _ctx.s = 684;
+ match(T__50);
+ _ctx.s = 686;
+ qualifiedNameList(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case T__44:
+ _ctx.s = 690;
+ methodBody(_ctx);
+ break;
+ case T__26:
+ _ctx.s = 692;
+ match(T__26);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[36]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceMethodDeclaratorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 72);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[37]);
+ int _la;
+ try {
+ _ctx.s = 696;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 698;
+ match(T__48);
+ _ctx.s = 700;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_interfaceMethodDeclaratorRest_iter_51);
+ }
+ _la = state.input.LA(1);
+ if ( _la==T__50 ) {
+ _ctx.s = 706;
+ match(T__50);
+ _ctx.s = 708;
+ qualifiedNameList(_ctx);
+ }
+
+ _ctx.s = 712;
+ match(T__26);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[37]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceGenericMethodDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 74);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[38]);
+ try {
+ _ctx.s = 714;
+ typeParameters(_ctx);
+ switch ( state.input.LA(1) ) {
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case Identifier:
+ _ctx.s = 716;
+ type(_ctx);
+ break;
+ case T__47:
+ _ctx.s = 718;
+ match(T__47);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 722;
+ match(Identifier);
+ _ctx.s = 724;
+ interfaceMethodDeclaratorRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[38]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext voidInterfaceMethodDeclaratorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 76);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[39]);
+ int _la;
+ try {
+ _ctx.s = 726;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__50 ) {
+ _ctx.s = 728;
+ match(T__50);
+ _ctx.s = 730;
+ qualifiedNameList(_ctx);
+ }
+
+ _ctx.s = 734;
+ match(T__26);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[39]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext constructorDeclaratorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 78);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[40]);
+ int _la;
+ try {
+ _ctx.s = 736;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__50 ) {
+ _ctx.s = 738;
+ match(T__50);
+ _ctx.s = 740;
+ qualifiedNameList(_ctx);
+ }
+
+ _ctx.s = 744;
+ constructorBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[40]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext constantDeclarator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 80);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[41]);
+ try {
+ _ctx.s = 746;
+ match(Identifier);
+ _ctx.s = 748;
+ constantDeclaratorRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[41]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableDeclarators(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 82);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[42]);
+ int _la;
+ try {
+ _ctx.s = 750;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 752;
+ match(T__41);
+ _ctx.s = 754;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_variableDeclarators_iter_56);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[42]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableDeclarator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 84);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[43]);
+ int _la;
+ try {
+ _ctx.s = 760;
+ variableDeclaratorId(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__51 ) {
+ _ctx.s = 762;
+ match(T__51);
+ _ctx.s = 764;
+ variableInitializer(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[43]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext constantDeclaratorsRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 86);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[44]);
+ int _la;
+ try {
+ _ctx.s = 768;
+ constantDeclaratorRest(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 770;
+ match(T__41);
+ _ctx.s = 772;
+ constantDeclarator(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_constantDeclaratorsRest_iter_58);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[44]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext constantDeclaratorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 88);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[45]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 778;
+ match(T__48);
+ _ctx.s = 780;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_constantDeclaratorRest_iter_59);
+ }
+ _ctx.s = 786;
+ match(T__51);
+ _ctx.s = 788;
+ variableInitializer(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[45]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableDeclaratorId(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 90);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[46]);
+ int _la;
+ try {
+ _ctx.s = 790;
+ match(Identifier);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 792;
+ match(T__48);
+ _ctx.s = 794;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_variableDeclaratorId_iter_60);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[46]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableInitializer(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 92);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[47]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__44:
+ _ctx.s = 800;
+ arrayInitializer(_ctx);
+ break;
+ case T__47:
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case T__65:
+ case T__66:
+ case T__69:
+ case T__70:
+ case T__71:
+ case T__72:
+ case T__105:
+ case T__106:
+ case T__109:
+ case T__110:
+ case T__111:
+ case T__112:
+ case T__113:
+ case HexLiteral:
+ case DecimalLiteral:
+ case OctalLiteral:
+ case FloatingPointLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case Identifier:
+ _ctx.s = 802;
+ expression(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[47]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext arrayInitializer(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 94);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[48]);
+ int _la;
+ try {
+ _ctx.s = 806;
+ match(T__44);
+ _la = state.input.LA(1);
+ if ( _la==T__44 || _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 808;
+ variableInitializer(_ctx);
+ int _alt887 = _interp.adaptivePredict(state.input,62,_ctx);
+ while ( _alt887!=2 ) {
+ switch ( _alt887 ) {
+ case 1:
+ _ctx.s = 810;
+ match(T__41);
+ _ctx.s = 812;
+ variableInitializer(_ctx);
+ break;
+ }
+ _alt887 = _interp.adaptivePredict(state.input,62,_ctx);
+ }
+ _la = state.input.LA(1);
+ if ( _la==T__41 ) {
+ _ctx.s = 818;
+ match(T__41);
+ }
+
+ }
+
+ _ctx.s = 824;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[48]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext modifier(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 96);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[49]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__73:
+ _ctx.s = 826;
+ annotation(_ctx);
+ break;
+ case T__31:
+ _ctx.s = 828;
+ match(T__31);
+ break;
+ case T__32:
+ _ctx.s = 830;
+ match(T__32);
+ break;
+ case T__33:
+ _ctx.s = 832;
+ match(T__33);
+ break;
+ case T__28:
+ _ctx.s = 834;
+ match(T__28);
+ break;
+ case T__34:
+ _ctx.s = 836;
+ match(T__34);
+ break;
+ case T__35:
+ _ctx.s = 838;
+ match(T__35);
+ break;
+ case T__52:
+ _ctx.s = 840;
+ match(T__52);
+ break;
+ case T__53:
+ _ctx.s = 842;
+ match(T__53);
+ break;
+ case T__54:
+ _ctx.s = 844;
+ match(T__54);
+ break;
+ case T__55:
+ _ctx.s = 846;
+ match(T__55);
+ break;
+ case T__36:
+ _ctx.s = 848;
+ match(T__36);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[49]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext packageOrTypeName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 98);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[50]);
+ try {
+ _ctx.s = 852;
+ qualifiedName(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[50]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumConstantName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 100);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[51]);
+ try {
+ _ctx.s = 854;
+ match(Identifier);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[51]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 102);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[52]);
+ try {
+ _ctx.s = 856;
+ qualifiedName(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[52]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext type(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 104);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[53]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case Identifier:
+ _ctx.s = 858;
+ classOrInterfaceType(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 860;
+ match(T__48);
+ _ctx.s = 862;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_type_iter_66);
+ }
+ break;
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ _ctx.s = 868;
+ primitiveType(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 870;
+ match(T__48);
+ _ctx.s = 872;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_type_iter_67);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[53]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classOrInterfaceType(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 106);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[54]);
+ int _la;
+ try {
+ _ctx.s = 880;
+ match(Identifier);
+ switch ( _interp.adaptivePredict(state.input,69,_ctx) ) {
+ case 1:
+ _ctx.s = 882;
+ typeArguments(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ while ( _la==T__29 ) {
+ _ctx.s = 886;
+ match(T__29);
+ _ctx.s = 888;
+ match(Identifier);
+ switch ( _interp.adaptivePredict(state.input,70,_ctx) ) {
+ case 1:
+ _ctx.s = 890;
+ typeArguments(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_classOrInterfaceType_iter_71);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[54]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext primitiveType(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 108);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[55]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__56:
+ _ctx.s = 898;
+ match(T__56);
+ break;
+ case T__57:
+ _ctx.s = 900;
+ match(T__57);
+ break;
+ case T__58:
+ _ctx.s = 902;
+ match(T__58);
+ break;
+ case T__59:
+ _ctx.s = 904;
+ match(T__59);
+ break;
+ case T__60:
+ _ctx.s = 906;
+ match(T__60);
+ break;
+ case T__61:
+ _ctx.s = 908;
+ match(T__61);
+ break;
+ case T__62:
+ _ctx.s = 910;
+ match(T__62);
+ break;
+ case T__63:
+ _ctx.s = 912;
+ match(T__63);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[55]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableModifier(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 110);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[56]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__35:
+ _ctx.s = 916;
+ match(T__35);
+ break;
+ case T__73:
+ _ctx.s = 918;
+ annotation(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[56]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeArguments(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 112);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[57]);
+ int _la;
+ try {
+ _ctx.s = 922;
+ match(T__40);
+ _ctx.s = 924;
+ typeArgument(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 926;
+ match(T__41);
+ _ctx.s = 928;
+ typeArgument(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeArguments_iter_74);
+ }
+ _ctx.s = 934;
+ match(T__42);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[57]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeArgument(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 114);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[58]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case Identifier:
+ _ctx.s = 936;
+ type(_ctx);
+ break;
+ case T__64:
+ _ctx.s = 938;
+ match(T__64);
+ _la = state.input.LA(1);
+ if ( _la==T__38 || _la==T__65 ) {
+ switch ( state.input.LA(1) ) {
+ case T__38:
+ _ctx.s = 940;
+ match(T__38);
+ break;
+ case T__65:
+ _ctx.s = 942;
+ match(T__65);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 946;
+ type(_ctx);
+ }
+
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[58]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext qualifiedNameList(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 116);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[59]);
+ int _la;
+ try {
+ _ctx.s = 952;
+ qualifiedName(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 954;
+ match(T__41);
+ _ctx.s = 956;
+ qualifiedName(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_qualifiedNameList_iter_78);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[59]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameters(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 118);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[60]);
+ int _la;
+ try {
+ _ctx.s = 962;
+ match(T__66);
+ _la = state.input.LA(1);
+ if ( _la==T__35 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__73 || _la==Identifier ) {
+ _ctx.s = 964;
+ formalParameterDecls(_ctx);
+ }
+
+ _ctx.s = 968;
+ match(T__67);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[60]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameterDecls(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 120);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[61]);
+ try {
+ _ctx.s = 970;
+ variableModifiers(_ctx);
+ _ctx.s = 972;
+ type(_ctx);
+ _ctx.s = 974;
+ formalParameterDeclsRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[61]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameterDeclsRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 122);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[62]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case Identifier:
+ _ctx.s = 976;
+ variableDeclaratorId(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__41 ) {
+ _ctx.s = 978;
+ match(T__41);
+ _ctx.s = 980;
+ formalParameterDecls(_ctx);
+ }
+
+ break;
+ case T__68:
+ _ctx.s = 984;
+ match(T__68);
+ _ctx.s = 986;
+ variableDeclaratorId(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[62]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext methodBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 124);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[63]);
+ try {
+ _ctx.s = 990;
+ block(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[63]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext constructorBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 126);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[64]);
+ int _la;
+ try {
+ _ctx.s = 992;
+ match(T__44);
+ switch ( _interp.adaptivePredict(state.input,82,_ctx) ) {
+ case 1:
+ _ctx.s = 994;
+ explicitConstructorInvocation(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__44 || _la==T__46 || _la==T__47 || _la==T__53 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__73 || _la==T__76 || _la==T__78 || _la==T__79 || _la==T__80 || _la==T__81 || _la==T__83 || _la==T__84 || _la==T__85 || _la==T__86 || _la==T__87 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==ENUM || _la==ASSERT || _la==Identifier ) {
+ _ctx.s = 998;
+ blockStatement(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_constructorBody_iter_83);
+ }
+ _ctx.s = 1004;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[64]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext explicitConstructorInvocation(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 128);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[65]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,87,_ctx) ) {
+ case 1:
+ _la = state.input.LA(1);
+ if ( _la==T__40 ) {
+ _ctx.s = 1006;
+ nonWildcardTypeArguments(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case T__69:
+ _ctx.s = 1010;
+ match(T__69);
+ break;
+ case T__65:
+ _ctx.s = 1012;
+ match(T__65);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 1016;
+ arguments(_ctx);
+ _ctx.s = 1018;
+ match(T__26);
+ break;
+ case 2:
+ _ctx.s = 1020;
+ primary(_ctx);
+ _ctx.s = 1022;
+ match(T__29);
+ _la = state.input.LA(1);
+ if ( _la==T__40 ) {
+ _ctx.s = 1024;
+ nonWildcardTypeArguments(_ctx);
+ }
+
+ _ctx.s = 1028;
+ match(T__65);
+ _ctx.s = 1030;
+ arguments(_ctx);
+ _ctx.s = 1032;
+ match(T__26);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[65]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext qualifiedName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 130);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[66]);
+ try {
+ _ctx.s = 1036;
+ match(Identifier);
+ int _alt1249 = _interp.adaptivePredict(state.input,88,_ctx);
+ while ( _alt1249!=2 ) {
+ switch ( _alt1249 ) {
+ case 1:
+ _ctx.s = 1038;
+ match(T__29);
+ _ctx.s = 1040;
+ match(Identifier);
+ break;
+ }
+ _alt1249 = _interp.adaptivePredict(state.input,88,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[66]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext literal(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 132);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[67]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case HexLiteral:
+ case DecimalLiteral:
+ case OctalLiteral:
+ _ctx.s = 1046;
+ integerLiteral(_ctx);
+ break;
+ case FloatingPointLiteral:
+ _ctx.s = 1048;
+ match(FloatingPointLiteral);
+ break;
+ case CharacterLiteral:
+ _ctx.s = 1050;
+ match(CharacterLiteral);
+ break;
+ case StringLiteral:
+ _ctx.s = 1052;
+ match(StringLiteral);
+ break;
+ case T__71:
+ case T__72:
+ _ctx.s = 1054;
+ booleanLiteral(_ctx);
+ break;
+ case T__70:
+ _ctx.s = 1056;
+ match(T__70);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[67]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext integerLiteral(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 134);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[68]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case HexLiteral:
+ _ctx.s = 1060;
+ match(HexLiteral);
+ break;
+ case OctalLiteral:
+ _ctx.s = 1062;
+ match(OctalLiteral);
+ break;
+ case DecimalLiteral:
+ _ctx.s = 1064;
+ match(DecimalLiteral);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[68]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext booleanLiteral(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 136);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[69]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__71:
+ _ctx.s = 1068;
+ match(T__71);
+ break;
+ case T__72:
+ _ctx.s = 1070;
+ match(T__72);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[69]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotations(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 138);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[70]);
+ try {
+ int _alt1316 = _interp.adaptivePredict(state.input,94,_ctx);
+ do {
+ switch ( _alt1316 ) {
+ case 1:
+ _ctx.s = 1074;
+ annotation(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _alt1316 = _interp.adaptivePredict(state.input,94,_ctx);
+ } while ( _alt1316!=2 );
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[70]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotation(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 140);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[71]);
+ int _la;
+ try {
+ _ctx.s = 1080;
+ match(T__73);
+ _ctx.s = 1082;
+ annotationName(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__66 ) {
+ _ctx.s = 1084;
+ match(T__66);
+ switch ( _interp.adaptivePredict(state.input,95,_ctx) ) {
+ case 1:
+ _ctx.s = 1086;
+ elementValuePairs(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1088;
+ elementValue(_ctx);
+ break;
+ }
+ _ctx.s = 1092;
+ match(T__67);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[71]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 142);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[72]);
+ int _la;
+ try {
+ _ctx.s = 1096;
+ match(Identifier);
+ _la = state.input.LA(1);
+ while ( _la==T__29 ) {
+ _ctx.s = 1098;
+ match(T__29);
+ _ctx.s = 1100;
+ match(Identifier);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_annotationName_iter_97);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[72]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValuePairs(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 144);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[73]);
+ int _la;
+ try {
+ _ctx.s = 1106;
+ elementValuePair(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 1108;
+ match(T__41);
+ _ctx.s = 1110;
+ elementValuePair(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_elementValuePairs_iter_98);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[73]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValuePair(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 146);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[74]);
+ try {
+ _ctx.s = 1116;
+ match(Identifier);
+ _ctx.s = 1118;
+ match(T__51);
+ _ctx.s = 1120;
+ elementValue(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[74]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValue(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 148);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[75]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__47:
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case T__65:
+ case T__66:
+ case T__69:
+ case T__70:
+ case T__71:
+ case T__72:
+ case T__105:
+ case T__106:
+ case T__109:
+ case T__110:
+ case T__111:
+ case T__112:
+ case T__113:
+ case HexLiteral:
+ case DecimalLiteral:
+ case OctalLiteral:
+ case FloatingPointLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case Identifier:
+ _ctx.s = 1122;
+ conditionalExpression(_ctx);
+ break;
+ case T__73:
+ _ctx.s = 1124;
+ annotation(_ctx);
+ break;
+ case T__44:
+ _ctx.s = 1126;
+ elementValueArrayInitializer(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[75]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValueArrayInitializer(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 150);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[76]);
+ int _la;
+ try {
+ _ctx.s = 1130;
+ match(T__44);
+ _la = state.input.LA(1);
+ if ( _la==T__44 || _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__73 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 1132;
+ elementValue(_ctx);
+ int _alt1422 = _interp.adaptivePredict(state.input,100,_ctx);
+ while ( _alt1422!=2 ) {
+ switch ( _alt1422 ) {
+ case 1:
+ _ctx.s = 1134;
+ match(T__41);
+ _ctx.s = 1136;
+ elementValue(_ctx);
+ break;
+ }
+ _alt1422 = _interp.adaptivePredict(state.input,100,_ctx);
+ }
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==T__41 ) {
+ _ctx.s = 1144;
+ match(T__41);
+ }
+
+ _ctx.s = 1148;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[76]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 152);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[77]);
+ try {
+ _ctx.s = 1150;
+ match(T__73);
+ _ctx.s = 1152;
+ match(T__46);
+ _ctx.s = 1154;
+ match(Identifier);
+ _ctx.s = 1156;
+ annotationTypeBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[77]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 154);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[78]);
+ int _la;
+ try {
+ _ctx.s = 1158;
+ match(T__44);
+ _la = state.input.LA(1);
+ while ( _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__46 || _la==T__52 || _la==T__53 || _la==T__54 || _la==T__55 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__73 || _la==ENUM || _la==Identifier ) {
+ _ctx.s = 1160;
+ annotationTypeElementDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_annotationTypeBody_iter_103);
+ }
+ _ctx.s = 1166;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[78]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeElementDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 156);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[79]);
+ try {
+ _ctx.s = 1168;
+ modifiers(_ctx);
+ _ctx.s = 1170;
+ annotationTypeElementRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[79]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeElementRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 158);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[80]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case Identifier:
+ _ctx.s = 1172;
+ type(_ctx);
+ _ctx.s = 1174;
+ annotationMethodOrConstantRest(_ctx);
+ _ctx.s = 1176;
+ match(T__26);
+ break;
+ case T__37:
+ _ctx.s = 1178;
+ normalClassDeclaration(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__26 ) {
+ _ctx.s = 1180;
+ match(T__26);
+ }
+
+ break;
+ case T__46:
+ _ctx.s = 1184;
+ normalInterfaceDeclaration(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__26 ) {
+ _ctx.s = 1186;
+ match(T__26);
+ }
+
+ break;
+ case ENUM:
+ _ctx.s = 1190;
+ enumDeclaration(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__26 ) {
+ _ctx.s = 1192;
+ match(T__26);
+ }
+
+ break;
+ case T__73:
+ _ctx.s = 1196;
+ annotationTypeDeclaration(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__26 ) {
+ _ctx.s = 1198;
+ match(T__26);
+ }
+
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[80]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationMethodOrConstantRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 160);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[81]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,109,_ctx) ) {
+ case 1:
+ _ctx.s = 1204;
+ annotationMethodRest(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1206;
+ annotationConstantRest(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[81]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationMethodRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 162);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[82]);
+ int _la;
+ try {
+ _ctx.s = 1210;
+ match(Identifier);
+ _ctx.s = 1212;
+ match(T__66);
+ _ctx.s = 1214;
+ match(T__67);
+ _la = state.input.LA(1);
+ if ( _la==T__74 ) {
+ _ctx.s = 1216;
+ defaultValue(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[82]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationConstantRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 164);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[83]);
+ try {
+ _ctx.s = 1220;
+ variableDeclarators(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[83]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext defaultValue(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 166);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[84]);
+ try {
+ _ctx.s = 1222;
+ match(T__74);
+ _ctx.s = 1224;
+ elementValue(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[84]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext block(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 168);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[85]);
+ int _la;
+ try {
+ _ctx.s = 1226;
+ match(T__44);
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__44 || _la==T__46 || _la==T__47 || _la==T__53 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__73 || _la==T__76 || _la==T__78 || _la==T__79 || _la==T__80 || _la==T__81 || _la==T__83 || _la==T__84 || _la==T__85 || _la==T__86 || _la==T__87 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==ENUM || _la==ASSERT || _la==Identifier ) {
+ _ctx.s = 1228;
+ blockStatement(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_block_iter_111);
+ }
+ _ctx.s = 1234;
+ match(T__45);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[85]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext blockStatement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 170);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[86]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,112,_ctx) ) {
+ case 1:
+ _ctx.s = 1236;
+ localVariableDeclarationStatement(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1238;
+ classOrInterfaceDeclaration(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1240;
+ statement(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[86]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext localVariableDeclarationStatement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 172);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[87]);
+ try {
+ _ctx.s = 1244;
+ localVariableDeclaration(_ctx);
+ _ctx.s = 1246;
+ match(T__26);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[87]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext localVariableDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 174);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[88]);
+ try {
+ _ctx.s = 1248;
+ variableModifiers(_ctx);
+ _ctx.s = 1250;
+ type(_ctx);
+ _ctx.s = 1252;
+ variableDeclarators(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[88]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableModifiers(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 176);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[89]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ while ( _la==T__35 || _la==T__73 ) {
+ _ctx.s = 1254;
+ variableModifier(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_variableModifiers_iter_113);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[89]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext statement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 178);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[90]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,120,_ctx) ) {
+ case 1:
+ _ctx.s = 1260;
+ block(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1262;
+ match(ASSERT);
+ _ctx.s = 1264;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__75 ) {
+ _ctx.s = 1266;
+ match(T__75);
+ _ctx.s = 1268;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1272;
+ match(T__26);
+ break;
+ case 3:
+ _ctx.s = 1274;
+ match(T__76);
+ _ctx.s = 1276;
+ parExpression(_ctx);
+ _ctx.s = 1278;
+ statement(_ctx);
+ switch ( _interp.adaptivePredict(state.input,115,_ctx) ) {
+ case 1:
+ _ctx.s = 1280;
+ match(T__77);
+ _ctx.s = 1282;
+ statement(_ctx);
+ break;
+ }
+ break;
+ case 4:
+ _ctx.s = 1286;
+ match(T__78);
+ _ctx.s = 1288;
+ match(T__66);
+ _ctx.s = 1290;
+ forControl(_ctx);
+ _ctx.s = 1292;
+ match(T__67);
+ _ctx.s = 1294;
+ statement(_ctx);
+ break;
+ case 5:
+ _ctx.s = 1296;
+ match(T__79);
+ _ctx.s = 1298;
+ parExpression(_ctx);
+ _ctx.s = 1300;
+ statement(_ctx);
+ break;
+ case 6:
+ _ctx.s = 1302;
+ match(T__80);
+ _ctx.s = 1304;
+ statement(_ctx);
+ _ctx.s = 1306;
+ match(T__79);
+ _ctx.s = 1308;
+ parExpression(_ctx);
+ _ctx.s = 1310;
+ match(T__26);
+ break;
+ case 7:
+ _ctx.s = 1312;
+ match(T__81);
+ _ctx.s = 1314;
+ block(_ctx);
+ switch ( _interp.adaptivePredict(state.input,116,_ctx) ) {
+ case 1:
+ _ctx.s = 1316;
+ catches(_ctx);
+ _ctx.s = 1318;
+ match(T__82);
+ _ctx.s = 1320;
+ block(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1322;
+ catches(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1324;
+ match(T__82);
+ _ctx.s = 1326;
+ block(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ break;
+ case 8:
+ _ctx.s = 1330;
+ match(T__83);
+ _ctx.s = 1332;
+ parExpression(_ctx);
+ _ctx.s = 1334;
+ match(T__44);
+ _ctx.s = 1336;
+ switchBlockStatementGroups(_ctx);
+ _ctx.s = 1338;
+ match(T__45);
+ break;
+ case 9:
+ _ctx.s = 1340;
+ match(T__53);
+ _ctx.s = 1342;
+ parExpression(_ctx);
+ _ctx.s = 1344;
+ block(_ctx);
+ break;
+ case 10:
+ _ctx.s = 1346;
+ match(T__84);
+ _la = state.input.LA(1);
+ if ( _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 1348;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1352;
+ match(T__26);
+ break;
+ case 11:
+ _ctx.s = 1354;
+ match(T__85);
+ _ctx.s = 1356;
+ expression(_ctx);
+ _ctx.s = 1358;
+ match(T__26);
+ break;
+ case 12:
+ _ctx.s = 1360;
+ match(T__86);
+ _la = state.input.LA(1);
+ if ( _la==Identifier ) {
+ _ctx.s = 1362;
+ match(Identifier);
+ }
+
+ _ctx.s = 1366;
+ match(T__26);
+ break;
+ case 13:
+ _ctx.s = 1368;
+ match(T__87);
+ _la = state.input.LA(1);
+ if ( _la==Identifier ) {
+ _ctx.s = 1370;
+ match(Identifier);
+ }
+
+ _ctx.s = 1374;
+ match(T__26);
+ break;
+ case 14:
+ _ctx.s = 1376;
+ match(T__26);
+ break;
+ case 15:
+ _ctx.s = 1378;
+ statementExpression(_ctx);
+ _ctx.s = 1380;
+ match(T__26);
+ break;
+ case 16:
+ _ctx.s = 1382;
+ match(Identifier);
+ _ctx.s = 1384;
+ match(T__75);
+ _ctx.s = 1386;
+ statement(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[90]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext catches(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 180);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[91]);
+ int _la;
+ try {
+ _ctx.s = 1390;
+ catchClause(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__88 ) {
+ _ctx.s = 1392;
+ catchClause(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_catches_iter_121);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[91]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext catchClause(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 182);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[92]);
+ try {
+ _ctx.s = 1398;
+ match(T__88);
+ _ctx.s = 1400;
+ match(T__66);
+ _ctx.s = 1402;
+ formalParameter(_ctx);
+ _ctx.s = 1404;
+ match(T__67);
+ _ctx.s = 1406;
+ block(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[92]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameter(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 184);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[93]);
+ try {
+ _ctx.s = 1408;
+ variableModifiers(_ctx);
+ _ctx.s = 1410;
+ type(_ctx);
+ _ctx.s = 1412;
+ variableDeclaratorId(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[93]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext switchBlockStatementGroups(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 186);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[94]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ while ( _la==T__74 || _la==T__89 ) {
+ _ctx.s = 1414;
+ switchBlockStatementGroup(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_switchBlockStatementGroups_iter_122);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[94]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext switchBlockStatementGroup(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 188);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[95]);
+ int _la;
+ try {
+ int _alt1856 = _interp.adaptivePredict(state.input,125,_ctx);
+ do {
+ switch ( _alt1856 ) {
+ case 1:
+ _ctx.s = 1420;
+ switchLabel(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _alt1856 = _interp.adaptivePredict(state.input,125,_ctx);
+ } while ( _alt1856!=2 );
+ _la = state.input.LA(1);
+ while ( _la==T__26 || _la==T__28 || _la==T__31 || _la==T__32 || _la==T__33 || _la==T__34 || _la==T__35 || _la==T__36 || _la==T__37 || _la==T__44 || _la==T__46 || _la==T__47 || _la==T__53 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__73 || _la==T__76 || _la==T__78 || _la==T__79 || _la==T__80 || _la==T__81 || _la==T__83 || _la==T__84 || _la==T__85 || _la==T__86 || _la==T__87 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==ENUM || _la==ASSERT || _la==Identifier ) {
+ _ctx.s = 1426;
+ blockStatement(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_switchBlockStatementGroup_iter_126);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[95]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext switchLabel(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 190);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[96]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,127,_ctx) ) {
+ case 1:
+ _ctx.s = 1432;
+ match(T__89);
+ _ctx.s = 1434;
+ constantExpression(_ctx);
+ _ctx.s = 1436;
+ match(T__75);
+ break;
+ case 2:
+ _ctx.s = 1438;
+ match(T__89);
+ _ctx.s = 1440;
+ enumConstantName(_ctx);
+ _ctx.s = 1442;
+ match(T__75);
+ break;
+ case 3:
+ _ctx.s = 1444;
+ match(T__74);
+ _ctx.s = 1446;
+ match(T__75);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[96]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext forControl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 192);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[97]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,131,_ctx) ) {
+ case 1:
+ _ctx.s = 1450;
+ enhancedForControl(_ctx);
+ break;
+ case 2:
+ _la = state.input.LA(1);
+ if ( _la==T__35 || _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__73 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 1452;
+ forInit(_ctx);
+ }
+
+ _ctx.s = 1456;
+ match(T__26);
+ _la = state.input.LA(1);
+ if ( _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 1458;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1462;
+ match(T__26);
+ _la = state.input.LA(1);
+ if ( _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 1464;
+ forUpdate(_ctx);
+ }
+
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[97]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext forInit(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 194);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[98]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,132,_ctx) ) {
+ case 1:
+ _ctx.s = 1470;
+ localVariableDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1472;
+ expressionList(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[98]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enhancedForControl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 196);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[99]);
+ try {
+ _ctx.s = 1476;
+ variableModifiers(_ctx);
+ _ctx.s = 1478;
+ type(_ctx);
+ _ctx.s = 1480;
+ match(Identifier);
+ _ctx.s = 1482;
+ match(T__75);
+ _ctx.s = 1484;
+ expression(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[99]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext forUpdate(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 198);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[100]);
+ try {
+ _ctx.s = 1486;
+ expressionList(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[100]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext parExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 200);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[101]);
+ try {
+ _ctx.s = 1488;
+ match(T__66);
+ _ctx.s = 1490;
+ expression(_ctx);
+ _ctx.s = 1492;
+ match(T__67);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[101]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext expressionList(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 202);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[102]);
+ int _la;
+ try {
+ _ctx.s = 1494;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__41 ) {
+ _ctx.s = 1496;
+ match(T__41);
+ _ctx.s = 1498;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_expressionList_iter_133);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[102]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext statementExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 204);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[103]);
+ try {
+ _ctx.s = 1504;
+ expression(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[103]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext constantExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 206);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[104]);
+ try {
+ _ctx.s = 1506;
+ expression(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[104]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext expression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 208);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[105]);
+ int _la;
+ try {
+ _ctx.s = 1508;
+ conditionalExpression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__40 || _la==T__42 || _la==T__51 || _la==T__90 || _la==T__91 || _la==T__92 || _la==T__93 || _la==T__94 || _la==T__95 || _la==T__96 || _la==T__97 ) {
+ _ctx.s = 1510;
+ assignmentOperator(_ctx);
+ _ctx.s = 1512;
+ expression(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[105]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext assignmentOperator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 210);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[106]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,135,_ctx) ) {
+ case 1:
+ _ctx.s = 1516;
+ match(T__51);
+ break;
+ case 2:
+ _ctx.s = 1518;
+ match(T__90);
+ break;
+ case 3:
+ _ctx.s = 1520;
+ match(T__91);
+ break;
+ case 4:
+ _ctx.s = 1522;
+ match(T__92);
+ break;
+ case 5:
+ _ctx.s = 1524;
+ match(T__93);
+ break;
+ case 6:
+ _ctx.s = 1526;
+ match(T__94);
+ break;
+ case 7:
+ _ctx.s = 1528;
+ match(T__95);
+ break;
+ case 8:
+ _ctx.s = 1530;
+ match(T__96);
+ break;
+ case 9:
+ _ctx.s = 1532;
+ match(T__97);
+ break;
+ case 10:
+ _ctx.s = 1534;
+ match(T__40);
+ _ctx.s = 1536;
+ match(T__40);
+ _ctx.s = 1538;
+ match(T__51);
+ break;
+ case 11:
+ _ctx.s = 1540;
+ match(T__42);
+ _ctx.s = 1542;
+ match(T__42);
+ _ctx.s = 1544;
+ match(T__42);
+ _ctx.s = 1546;
+ match(T__51);
+ break;
+ case 12:
+ _ctx.s = 1548;
+ match(T__42);
+ _ctx.s = 1550;
+ match(T__42);
+ _ctx.s = 1552;
+ match(T__51);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[106]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext conditionalExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 212);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[107]);
+ int _la;
+ try {
+ _ctx.s = 1556;
+ conditionalOrExpression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__64 ) {
+ _ctx.s = 1558;
+ match(T__64);
+ _ctx.s = 1560;
+ conditionalExpression(_ctx);
+ _ctx.s = 1562;
+ match(T__75);
+ _ctx.s = 1564;
+ conditionalExpression(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[107]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext conditionalOrExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 214);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[108]);
+ int _la;
+ try {
+ _ctx.s = 1568;
+ conditionalAndExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__98 ) {
+ _ctx.s = 1570;
+ match(T__98);
+ _ctx.s = 1572;
+ conditionalAndExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_conditionalOrExpression_iter_137);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[108]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext conditionalAndExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 216);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[109]);
+ int _la;
+ try {
+ _ctx.s = 1578;
+ inclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__99 ) {
+ _ctx.s = 1580;
+ match(T__99);
+ _ctx.s = 1582;
+ inclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_conditionalAndExpression_iter_138);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[109]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext inclusiveOrExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 218);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[110]);
+ int _la;
+ try {
+ _ctx.s = 1588;
+ exclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__100 ) {
+ _ctx.s = 1590;
+ match(T__100);
+ _ctx.s = 1592;
+ exclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_inclusiveOrExpression_iter_139);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[110]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext exclusiveOrExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 220);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[111]);
+ int _la;
+ try {
+ _ctx.s = 1598;
+ andExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__101 ) {
+ _ctx.s = 1600;
+ match(T__101);
+ _ctx.s = 1602;
+ andExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_exclusiveOrExpression_iter_140);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[111]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext andExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 222);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[112]);
+ int _la;
+ try {
+ _ctx.s = 1608;
+ equalityExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__43 ) {
+ _ctx.s = 1610;
+ match(T__43);
+ _ctx.s = 1612;
+ equalityExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_andExpression_iter_141);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[112]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext equalityExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 224);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[113]);
+ int _la;
+ try {
+ _ctx.s = 1618;
+ instanceOfExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__102 || _la==T__103 ) {
+ switch ( state.input.LA(1) ) {
+ case T__102:
+ _ctx.s = 1620;
+ match(T__102);
+ break;
+ case T__103:
+ _ctx.s = 1622;
+ match(T__103);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 1626;
+ instanceOfExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_equalityExpression_iter_143);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[113]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext instanceOfExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 226);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[114]);
+ int _la;
+ try {
+ _ctx.s = 1632;
+ relationalExpression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__104 ) {
+ _ctx.s = 1634;
+ match(T__104);
+ _ctx.s = 1636;
+ type(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[114]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext relationalExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 228);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[115]);
+ try {
+ _ctx.s = 1640;
+ shiftExpression(_ctx);
+ int _alt2242 = _interp.adaptivePredict(state.input,145,_ctx);
+ while ( _alt2242!=2 ) {
+ switch ( _alt2242 ) {
+ case 1:
+ _ctx.s = 1642;
+ relationalOp(_ctx);
+ _ctx.s = 1644;
+ shiftExpression(_ctx);
+ break;
+ }
+ _alt2242 = _interp.adaptivePredict(state.input,145,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[115]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext relationalOp(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 230);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[116]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,146,_ctx) ) {
+ case 1:
+ _ctx.s = 1650;
+ match(T__40);
+ _ctx.s = 1652;
+ match(T__51);
+ break;
+ case 2:
+ _ctx.s = 1654;
+ match(T__42);
+ _ctx.s = 1656;
+ match(T__51);
+ break;
+ case 3:
+ _ctx.s = 1658;
+ match(T__40);
+ break;
+ case 4:
+ _ctx.s = 1660;
+ match(T__42);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[116]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext shiftExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 232);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[117]);
+ try {
+ _ctx.s = 1664;
+ additiveExpression(_ctx);
+ int _alt2285 = _interp.adaptivePredict(state.input,147,_ctx);
+ while ( _alt2285!=2 ) {
+ switch ( _alt2285 ) {
+ case 1:
+ _ctx.s = 1666;
+ shiftOp(_ctx);
+ _ctx.s = 1668;
+ additiveExpression(_ctx);
+ break;
+ }
+ _alt2285 = _interp.adaptivePredict(state.input,147,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[117]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext shiftOp(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 234);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[118]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,148,_ctx) ) {
+ case 1:
+ _ctx.s = 1674;
+ match(T__40);
+ _ctx.s = 1676;
+ match(T__40);
+ break;
+ case 2:
+ _ctx.s = 1678;
+ match(T__42);
+ _ctx.s = 1680;
+ match(T__42);
+ _ctx.s = 1682;
+ match(T__42);
+ break;
+ case 3:
+ _ctx.s = 1684;
+ match(T__42);
+ _ctx.s = 1686;
+ match(T__42);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[118]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext additiveExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 236);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[119]);
+ int _la;
+ try {
+ _ctx.s = 1690;
+ multiplicativeExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__105 || _la==T__106 ) {
+ switch ( state.input.LA(1) ) {
+ case T__105:
+ _ctx.s = 1692;
+ match(T__105);
+ break;
+ case T__106:
+ _ctx.s = 1694;
+ match(T__106);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 1698;
+ multiplicativeExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_additiveExpression_iter_150);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[119]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext multiplicativeExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 238);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[120]);
+ int _la;
+ try {
+ _ctx.s = 1704;
+ unaryExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__30 || _la==T__107 || _la==T__108 ) {
+ switch ( state.input.LA(1) ) {
+ case T__30:
+ _ctx.s = 1706;
+ match(T__30);
+ break;
+ case T__107:
+ _ctx.s = 1708;
+ match(T__107);
+ break;
+ case T__108:
+ _ctx.s = 1710;
+ match(T__108);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 1714;
+ unaryExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_multiplicativeExpression_iter_152);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[120]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext unaryExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 240);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[121]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__105:
+ _ctx.s = 1720;
+ match(T__105);
+ _ctx.s = 1722;
+ unaryExpression(_ctx);
+ break;
+ case T__106:
+ _ctx.s = 1724;
+ match(T__106);
+ _ctx.s = 1726;
+ unaryExpression(_ctx);
+ break;
+ case T__109:
+ _ctx.s = 1728;
+ match(T__109);
+ _ctx.s = 1730;
+ unaryExpression(_ctx);
+ break;
+ case T__110:
+ _ctx.s = 1732;
+ match(T__110);
+ _ctx.s = 1734;
+ unaryExpression(_ctx);
+ break;
+ case T__47:
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case T__65:
+ case T__66:
+ case T__69:
+ case T__70:
+ case T__71:
+ case T__72:
+ case T__111:
+ case T__112:
+ case T__113:
+ case HexLiteral:
+ case DecimalLiteral:
+ case OctalLiteral:
+ case FloatingPointLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case Identifier:
+ _ctx.s = 1736;
+ unaryExpressionNotPlusMinus(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[121]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext unaryExpressionNotPlusMinus(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 242);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[122]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,156,_ctx) ) {
+ case 1:
+ _ctx.s = 1740;
+ match(T__111);
+ _ctx.s = 1742;
+ unaryExpression(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1744;
+ match(T__112);
+ _ctx.s = 1746;
+ unaryExpression(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1748;
+ castExpression(_ctx);
+ break;
+ case 4:
+ _ctx.s = 1750;
+ primary(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__29 || _la==T__48 ) {
+ _ctx.s = 1752;
+ selector(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_unaryExpressionNotPlusMinus_iter_154);
+ }
+ switch ( state.input.LA(1) ) {
+ case T__109:
+ _ctx.s = 1758;
+ match(T__109);
+ break;
+ case T__110:
+ _ctx.s = 1760;
+ match(T__110);
+ break;
+ case T__26:
+ case T__30:
+ case T__40:
+ case T__41:
+ case T__42:
+ case T__43:
+ case T__45:
+ case T__49:
+ case T__51:
+ case T__64:
+ case T__67:
+ case T__75:
+ case T__90:
+ case T__91:
+ case T__92:
+ case T__93:
+ case T__94:
+ case T__95:
+ case T__96:
+ case T__97:
+ case T__98:
+ case T__99:
+ case T__100:
+ case T__101:
+ case T__102:
+ case T__103:
+ case T__104:
+ case T__105:
+ case T__106:
+ case T__107:
+ case T__108:
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[122]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext castExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 244);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[123]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,158,_ctx) ) {
+ case 1:
+ _ctx.s = 1766;
+ match(T__66);
+ _ctx.s = 1768;
+ primitiveType(_ctx);
+ _ctx.s = 1770;
+ match(T__67);
+ _ctx.s = 1772;
+ unaryExpression(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1774;
+ match(T__66);
+ switch ( _interp.adaptivePredict(state.input,157,_ctx) ) {
+ case 1:
+ _ctx.s = 1776;
+ type(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1778;
+ expression(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ _ctx.s = 1782;
+ match(T__67);
+ _ctx.s = 1784;
+ unaryExpressionNotPlusMinus(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[123]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext primary(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 246);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[124]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__66:
+ _ctx.s = 1788;
+ parExpression(_ctx);
+ break;
+ case T__69:
+ _ctx.s = 1790;
+ match(T__69);
+ int _alt2478 = _interp.adaptivePredict(state.input,159,_ctx);
+ while ( _alt2478!=2 ) {
+ switch ( _alt2478 ) {
+ case 1:
+ _ctx.s = 1792;
+ match(T__29);
+ _ctx.s = 1794;
+ match(Identifier);
+ break;
+ }
+ _alt2478 = _interp.adaptivePredict(state.input,159,_ctx);
+ }
+ switch ( _interp.adaptivePredict(state.input,160,_ctx) ) {
+ case 1:
+ _ctx.s = 1800;
+ identifierSuffix(_ctx);
+ break;
+ }
+ break;
+ case T__65:
+ _ctx.s = 1804;
+ match(T__65);
+ _ctx.s = 1806;
+ superSuffix(_ctx);
+ break;
+ case T__70:
+ case T__71:
+ case T__72:
+ case HexLiteral:
+ case DecimalLiteral:
+ case OctalLiteral:
+ case FloatingPointLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ _ctx.s = 1808;
+ literal(_ctx);
+ break;
+ case T__113:
+ _ctx.s = 1810;
+ match(T__113);
+ _ctx.s = 1812;
+ creator(_ctx);
+ break;
+ case Identifier:
+ _ctx.s = 1814;
+ match(Identifier);
+ int _alt2508 = _interp.adaptivePredict(state.input,161,_ctx);
+ while ( _alt2508!=2 ) {
+ switch ( _alt2508 ) {
+ case 1:
+ _ctx.s = 1816;
+ match(T__29);
+ _ctx.s = 1818;
+ match(Identifier);
+ break;
+ }
+ _alt2508 = _interp.adaptivePredict(state.input,161,_ctx);
+ }
+ switch ( _interp.adaptivePredict(state.input,162,_ctx) ) {
+ case 1:
+ _ctx.s = 1824;
+ identifierSuffix(_ctx);
+ break;
+ }
+ break;
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ _ctx.s = 1828;
+ primitiveType(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 1830;
+ match(T__48);
+ _ctx.s = 1832;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_primary_iter_163);
+ }
+ _ctx.s = 1838;
+ match(T__29);
+ _ctx.s = 1840;
+ match(T__37);
+ break;
+ case T__47:
+ _ctx.s = 1842;
+ match(T__47);
+ _ctx.s = 1844;
+ match(T__29);
+ _ctx.s = 1846;
+ match(T__37);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[124]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext identifierSuffix(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 248);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[125]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,168,_ctx) ) {
+ case 1:
+ //sync(EXPECTING_in_identifierSuffix_enter_167);
+ _la = state.input.LA(1);
+ do {
+ _ctx.s = 1850;
+ match(T__48);
+ _ctx.s = 1852;
+ match(T__49);
+ _la = state.input.LA(1);
+ // sync(EXPECTING_in_identifierSuffix_iter_167);
+ } while ( _la==T__48 );
+ _ctx.s = 1858;
+ match(T__29);
+ _ctx.s = 1860;
+ match(T__37);
+ break;
+ case 2:
+ _ctx.s = 1862;
+ arguments(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1864;
+ match(T__29);
+ _ctx.s = 1866;
+ match(T__37);
+ break;
+ case 4:
+ _ctx.s = 1868;
+ match(T__29);
+ _ctx.s = 1870;
+ explicitGenericInvocation(_ctx);
+ break;
+ case 5:
+ _ctx.s = 1872;
+ match(T__29);
+ _ctx.s = 1874;
+ match(T__69);
+ break;
+ case 6:
+ _ctx.s = 1876;
+ match(T__29);
+ _ctx.s = 1878;
+ match(T__65);
+ _ctx.s = 1880;
+ arguments(_ctx);
+ break;
+ case 7:
+ _ctx.s = 1882;
+ match(T__29);
+ _ctx.s = 1884;
+ match(T__113);
+ _ctx.s = 1886;
+ innerCreator(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[125]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext creator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 250);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[126]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__40:
+ _ctx.s = 1890;
+ nonWildcardTypeArguments(_ctx);
+ _ctx.s = 1892;
+ createdName(_ctx);
+ _ctx.s = 1894;
+ classCreatorRest(_ctx);
+ break;
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case Identifier:
+ _ctx.s = 1896;
+ createdName(_ctx);
+ switch ( state.input.LA(1) ) {
+ case T__48:
+ _ctx.s = 1898;
+ arrayCreatorRest(_ctx);
+ break;
+ case T__66:
+ _ctx.s = 1900;
+ classCreatorRest(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[126]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext createdName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 252);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[127]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case Identifier:
+ _ctx.s = 1906;
+ classOrInterfaceType(_ctx);
+ break;
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ _ctx.s = 1908;
+ primitiveType(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[127]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext innerCreator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 254);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[128]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ if ( _la==T__40 ) {
+ _ctx.s = 1912;
+ nonWildcardTypeArguments(_ctx);
+ }
+
+ _ctx.s = 1916;
+ match(Identifier);
+ _ctx.s = 1918;
+ classCreatorRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[128]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext arrayCreatorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 256);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[129]);
+ int _la;
+ try {
+ _ctx.s = 1920;
+ match(T__48);
+ switch ( state.input.LA(1) ) {
+ case T__49:
+ _ctx.s = 1922;
+ match(T__49);
+ _la = state.input.LA(1);
+ while ( _la==T__48 ) {
+ _ctx.s = 1924;
+ match(T__48);
+ _ctx.s = 1926;
+ match(T__49);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_arrayCreatorRest_iter_173);
+ }
+ _ctx.s = 1932;
+ arrayInitializer(_ctx);
+ break;
+ case T__47:
+ case T__56:
+ case T__57:
+ case T__58:
+ case T__59:
+ case T__60:
+ case T__61:
+ case T__62:
+ case T__63:
+ case T__65:
+ case T__66:
+ case T__69:
+ case T__70:
+ case T__71:
+ case T__72:
+ case T__105:
+ case T__106:
+ case T__109:
+ case T__110:
+ case T__111:
+ case T__112:
+ case T__113:
+ case HexLiteral:
+ case DecimalLiteral:
+ case OctalLiteral:
+ case FloatingPointLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case Identifier:
+ _ctx.s = 1934;
+ expression(_ctx);
+ _ctx.s = 1936;
+ match(T__49);
+ int _alt2676 = _interp.adaptivePredict(state.input,174,_ctx);
+ while ( _alt2676!=2 ) {
+ switch ( _alt2676 ) {
+ case 1:
+ _ctx.s = 1938;
+ match(T__48);
+ _ctx.s = 1940;
+ expression(_ctx);
+ _ctx.s = 1942;
+ match(T__49);
+ break;
+ }
+ _alt2676 = _interp.adaptivePredict(state.input,174,_ctx);
+ }
+ int _alt2683 = _interp.adaptivePredict(state.input,175,_ctx);
+ while ( _alt2683!=2 ) {
+ switch ( _alt2683 ) {
+ case 1:
+ _ctx.s = 1948;
+ match(T__48);
+ _ctx.s = 1950;
+ match(T__49);
+ break;
+ }
+ _alt2683 = _interp.adaptivePredict(state.input,175,_ctx);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[129]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classCreatorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 258);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[130]);
+ int _la;
+ try {
+ _ctx.s = 1958;
+ arguments(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==T__44 ) {
+ _ctx.s = 1960;
+ classBody(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[130]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext explicitGenericInvocation(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 260);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[131]);
+ try {
+ _ctx.s = 1964;
+ nonWildcardTypeArguments(_ctx);
+ _ctx.s = 1966;
+ match(Identifier);
+ _ctx.s = 1968;
+ arguments(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[131]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext nonWildcardTypeArguments(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 262);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[132]);
+ try {
+ _ctx.s = 1970;
+ match(T__40);
+ _ctx.s = 1972;
+ typeList(_ctx);
+ _ctx.s = 1974;
+ match(T__42);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[132]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext selector(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 264);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[133]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,179,_ctx) ) {
+ case 1:
+ _ctx.s = 1976;
+ match(T__29);
+ _ctx.s = 1978;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__66 ) {
+ _ctx.s = 1980;
+ arguments(_ctx);
+ }
+
+ break;
+ case 2:
+ _ctx.s = 1984;
+ match(T__29);
+ _ctx.s = 1986;
+ match(T__69);
+ break;
+ case 3:
+ _ctx.s = 1988;
+ match(T__29);
+ _ctx.s = 1990;
+ match(T__65);
+ _ctx.s = 1992;
+ superSuffix(_ctx);
+ break;
+ case 4:
+ _ctx.s = 1994;
+ match(T__29);
+ _ctx.s = 1996;
+ match(T__113);
+ _ctx.s = 1998;
+ innerCreator(_ctx);
+ break;
+ case 5:
+ _ctx.s = 2000;
+ match(T__48);
+ _ctx.s = 2002;
+ expression(_ctx);
+ _ctx.s = 2004;
+ match(T__49);
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[133]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext superSuffix(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 266);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[134]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case T__66:
+ _ctx.s = 2008;
+ arguments(_ctx);
+ break;
+ case T__29:
+ _ctx.s = 2010;
+ match(T__29);
+ _ctx.s = 2012;
+ match(Identifier);
+ _la = state.input.LA(1);
+ if ( _la==T__66 ) {
+ _ctx.s = 2014;
+ arguments(_ctx);
+ }
+
+ break;
+ default :
+ throw new NoViableAltException(this,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[134]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext arguments(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 268);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[135]);
+ int _la;
+ try {
+ _ctx.s = 2020;
+ match(T__66);
+ _la = state.input.LA(1);
+ if ( _la==T__47 || _la==T__56 || _la==T__57 || _la==T__58 || _la==T__59 || _la==T__60 || _la==T__61 || _la==T__62 || _la==T__63 || _la==T__65 || _la==T__66 || _la==T__69 || _la==T__70 || _la==T__71 || _la==T__72 || _la==T__105 || _la==T__106 || _la==T__109 || _la==T__110 || _la==T__111 || _la==T__112 || _la==T__113 || _la==HexLiteral || _la==DecimalLiteral || _la==OctalLiteral || _la==FloatingPointLiteral || _la==CharacterLiteral || _la==StringLiteral || _la==Identifier ) {
+ _ctx.s = 2022;
+ expressionList(_ctx);
+ }
+
+ _ctx.s = 2026;
+ match(T__67);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[135]);
+ }
+ return _ctx;
+ }
+
+ @Override
+ public String[] getTokenNames() { return tokenNames; }
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\031\155\u07ed\02\01\07\01\02\02\07\02\02\03\07\03\02\04\07\04\02\05"+
+ "\07\05\02\06\07\06\02\07\07\07\02\010\07\010\02\011\07\011\02\012"+
+ "\07\012\02\013\07\013\02\014\07\014\02\015\07\015\02\016\07\016\02"+
+ "\017\07\017\02\020\07\020\02\021\07\021\02\022\07\022\02\023\07\023"+
+ "\02\024\07\024\02\025\07\025\02\026\07\026\02\027\07\027\02\030\07"+
+ "\030\02\031\07\031\02\032\07\032\02\033\07\033\02\034\07\034\02\035"+
+ "\07\035\02\036\07\036\02\037\07\037\02\040\07\040\02\041\07\041\02"+
+ "\042\07\042\02\043\07\043\02\044\07\044\02\045\07\045\02\046\07\046"+
+ "\02\047\07\047\02\050\07\050\02\051\07\051\02\052\07\052\02\053\07"+
+ "\053\02\054\07\054\02\055\07\055\02\056\07\056\02\057\07\057\02\060"+
+ "\07\060\02\061\07\061\02\062\07\062\02\063\07\063\02\064\07\064\02"+
+ "\065\07\065\02\066\07\066\02\067\07\067\02\070\07\070\02\071\07\071"+
+ "\02\072\07\072\02\073\07\073\02\074\07\074\02\075\07\075\02\076\07"+
+ "\076\02\077\07\077\02\100\07\100\02\101\07\101\02\102\07\102\02\103"+
+ "\07\103\02\104\07\104\02\105\07\105\02\106\07\106\02\107\07\107\02"+
+ "\110\07\110\02\111\07\111\02\112\07\112\02\113\07\113\02\114\07\114"+
+ "\02\115\07\115\02\116\07\116\02\117\07\117\02\120\07\120\02\121\07"+
+ "\121\02\122\07\122\02\123\07\123\02\124\07\124\02\125\07\125\02\126"+
+ "\07\126\02\127\07\127\02\130\07\130\02\131\07\131\02\132\07\132\02"+
+ "\133\07\133\02\134\07\134\02\135\07\135\02\136\07\136\02\137\07\137"+
+ "\02\140\07\140\02\141\07\141\02\142\07\142\02\143\07\143\02\144\07"+
+ "\144\02\145\07\145\02\146\07\146\02\147\07\147\02\150\07\150\02\151"+
+ "\07\151\02\152\07\152\02\153\07\153\02\154\07\154\02\155\07\155\02"+
+ "\156\07\156\02\157\07\157\02\160\07\160\02\161\07\161\02\162\07\162"+
+ "\02\163\07\163\02\164\07\164\02\165\07\165\02\166\07\166\02\167\07"+
+ "\167\02\170\07\170\02\171\07\171\02\172\07\172\02\173\07\173\02\174"+
+ "\07\174\02\175\07\175\02\176\07\176\02\177\07\177\02\u0080\07\u0080"+
+ "\02\u0081\07\u0081\02\u0082\07\u0082\02\u0083\07\u0083\02\u0084\07"+
+ "\u0084\02\u0085\07\u0085\02\u0086\07\u0086\02\u0087\07\u0087\01\01"+
+ "\01\01\01\01\01\01\01\01\01\01\05\01\010\01\011\01\01\01\01\01\01"+
+ "\01\05\01\010\01\011\01\01\01\01\01\01\01\01\01\01\01\05\01\010\01"+
+ "\011\01\01\01\03\01\010\01\01\01\01\01\03\01\010\01\01\01\01\01\05"+
+ "\01\010\01\011\01\01\01\01\01\01\01\05\01\010\01\011\01\01\01\03\01"+
+ "\010\01\01\02\01\02\01\02\01\02\01\02\01\02\01\03\01\03\01\03\01\03"+
+ "\03\03\010\03\01\03\01\03\01\03\01\03\01\03\01\03\03\03\010\03\01"+
+ "\03\01\03\01\04\01\04\01\04\01\04\03\04\010\04\01\05\01\05\01\05\01"+
+ "\05\01\05\01\05\03\05\010\05\01\06\01\06\05\06\010\06\011\06\01\06"+
+ "\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07"+
+ "\01\07\01\07\01\07\01\07\01\07\03\07\010\07\01\010\01\010\05\010\010"+
+ "\010\011\010\01\010\01\011\01\011\01\011\01\011\03\011\010\011\01"+
+ "\012\01\012\01\012\01\012\01\012\01\012\03\012\010\012\01\012\01\012"+
+ "\01\012\01\012\03\012\010\012\01\012\01\012\01\012\01\012\03\012\010"+
+ "\012\01\012\01\012\01\013\01\013\01\013\01\013\01\013\01\013\01\013"+
+ "\01\013\05\013\010\013\011\013\01\013\01\013\01\013\01\014\01\014"+
+ "\01\014\01\014\01\014\01\014\03\014\010\014\01\015\01\015\01\015\01"+
+ "\015\01\015\01\015\05\015\010\015\011\015\01\015\01\016\01\016\01"+
+ "\016\01\016\01\016\01\016\01\016\01\016\03\016\010\016\01\016\01\016"+
+ "\01\017\01\017\01\017\01\017\03\017\010\017\01\017\01\017\03\017\010"+
+ "\017\01\017\01\017\03\017\010\017\01\017\01\017\01\020\01\020\01\020"+
+ "\01\020\01\020\01\020\05\020\010\020\011\020\01\020\01\021\01\021"+
+ "\03\021\010\021\01\021\01\021\01\021\01\021\03\021\010\021\01\021"+
+ "\01\021\03\021\010\021\01\022\01\022\01\022\01\022\05\022\010\022"+
+ "\011\022\01\022\01\023\01\023\01\023\01\023\03\023\010\023\01\024"+
+ "\01\024\01\024\01\024\01\024\01\024\03\024\010\024\01\024\01\024\01"+
+ "\024\01\024\03\024\010\024\01\024\01\024\01\025\01\025\01\025\01\025"+
+ "\01\025\01\025\05\025\010\025\011\025\01\025\01\026\01\026\01\026"+
+ "\01\026\05\026\010\026\011\026\01\026\01\026\01\026\01\027\01\027"+
+ "\01\027\01\027\05\027\010\027\011\027\01\027\01\027\01\027\01\030"+
+ "\01\030\01\030\01\030\03\030\010\030\01\030\01\030\01\030\01\030\01"+
+ "\030\01\030\03\030\010\030\01\031\01\031\01\031\01\031\01\031\01\031"+
+ "\01\031\01\031\01\031\01\031\01\031\01\031\01\031\01\031\01\031\01"+
+ "\031\01\031\01\031\03\031\010\031\01\032\01\032\01\032\01\032\01\032"+
+ "\01\032\03\032\010\032\01\033\01\033\01\033\01\033\01\034\01\034\01"+
+ "\034\01\034\03\034\010\034\01\034\01\034\01\034\01\034\01\034\01\034"+
+ "\01\034\01\034\03\034\010\034\01\035\01\035\01\035\01\035\01\036\01"+
+ "\036\01\036\01\036\01\037\01\037\01\037\01\037\01\037\01\037\03\037"+
+ "\010\037\01\040\01\040\01\040\01\040\01\040\01\040\01\040\01\040\01"+
+ "\040\01\040\01\040\01\040\01\040\01\040\03\040\010\040\01\041\01\041"+
+ "\01\041\01\041\01\041\01\041\01\042\01\042\01\042\01\042\01\042\01"+
+ "\042\03\042\010\042\01\043\01\043\01\043\01\043\01\043\01\043\05\043"+
+ "\010\043\011\043\01\043\01\043\01\043\01\043\01\043\03\043\010\043"+
+ "\01\043\01\043\01\043\01\043\03\043\010\043\01\044\01\044\01\044\01"+
+ "\044\01\044\01\044\03\044\010\044\01\044\01\044\01\044\01\044\03\044"+
+ "\010\044\01\045\01\045\01\045\01\045\01\045\01\045\05\045\010\045"+
+ "\011\045\01\045\01\045\01\045\01\045\01\045\03\045\010\045\01\045"+
+ "\01\045\01\046\01\046\01\046\01\046\01\046\01\046\03\046\010\046\01"+
+ "\046\01\046\01\046\01\046\01\047\01\047\01\047\01\047\01\047\01\047"+
+ "\03\047\010\047\01\047\01\047\01\050\01\050\01\050\01\050\01\050\01"+
+ "\050\03\050\010\050\01\050\01\050\01\051\01\051\01\051\01\051\01\052"+
+ "\01\052\01\052\01\052\01\052\01\052\05\052\010\052\011\052\01\052"+
+ "\01\053\01\053\01\053\01\053\01\053\01\053\03\053\010\053\01\054\01"+
+ "\054\01\054\01\054\01\054\01\054\05\054\010\054\011\054\01\054\01"+
+ "\055\01\055\01\055\01\055\05\055\010\055\011\055\01\055\01\055\01"+
+ "\055\01\055\01\055\01\056\01\056\01\056\01\056\01\056\01\056\05\056"+
+ "\010\056\011\056\01\056\01\057\01\057\01\057\01\057\03\057\010\057"+
+ "\01\060\01\060\01\060\01\060\01\060\01\060\01\060\01\060\05\060\010"+
+ "\060\011\060\01\060\01\060\01\060\03\060\010\060\03\060\010\060\01"+
+ "\060\01\060\01\061\01\061\01\061\01\061\01\061\01\061\01\061\01\061"+
+ "\01\061\01\061\01\061\01\061\01\061\01\061\01\061\01\061\01\061\01"+
+ "\061\01\061\01\061\01\061\01\061\01\061\01\061\03\061\010\061\01\062"+
+ "\01\062\01\063\01\063\01\064\01\064\01\065\01\065\01\065\01\065\01"+
+ "\065\01\065\05\065\010\065\011\065\01\065\01\065\01\065\01\065\01"+
+ "\065\01\065\01\065\05\065\010\065\011\065\01\065\03\065\010\065\01"+
+ "\066\01\066\01\066\01\066\03\066\010\066\01\066\01\066\01\066\01\066"+
+ "\01\066\01\066\03\066\010\066\05\066\010\066\011\066\01\066\01\067"+
+ "\01\067\01\067\01\067\01\067\01\067\01\067\01\067\01\067\01\067\01"+
+ "\067\01\067\01\067\01\067\01\067\01\067\03\067\010\067\01\070\01\070"+
+ "\01\070\01\070\03\070\010\070\01\071\01\071\01\071\01\071\01\071\01"+
+ "\071\01\071\01\071\05\071\010\071\011\071\01\071\01\071\01\071\01"+
+ "\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\03\072\010\072"+
+ "\01\072\01\072\03\072\010\072\03\072\010\072\01\073\01\073\01\073"+
+ "\01\073\01\073\01\073\05\073\010\073\011\073\01\073\01\074\01\074"+
+ "\01\074\01\074\03\074\010\074\01\074\01\074\01\075\01\075\01\075\01"+
+ "\075\01\075\01\075\01\076\01\076\01\076\01\076\01\076\01\076\03\076"+
+ "\010\076\01\076\01\076\01\076\01\076\03\076\010\076\01\077\01\077"+
+ "\01\100\01\100\01\100\01\100\03\100\010\100\01\100\01\100\05\100\010"+
+ "\100\011\100\01\100\01\100\01\100\01\101\01\101\03\101\010\101\01"+
+ "\101\01\101\01\101\01\101\03\101\010\101\01\101\01\101\01\101\01\101"+
+ "\01\101\01\101\01\101\01\101\01\101\01\101\03\101\010\101\01\101\01"+
+ "\101\01\101\01\101\01\101\01\101\03\101\010\101\01\102\01\102\01\102"+
+ "\01\102\01\102\01\102\05\102\010\102\011\102\01\102\01\103\01\103"+
+ "\01\103\01\103\01\103\01\103\01\103\01\103\01\103\01\103\01\103\01"+
+ "\103\03\103\010\103\01\104\01\104\01\104\01\104\01\104\01\104\03\104"+
+ "\010\104\01\105\01\105\01\105\01\105\03\105\010\105\01\106\01\106"+
+ "\04\106\010\106\012\106\01\106\01\107\01\107\01\107\01\107\01\107"+
+ "\01\107\01\107\01\107\01\107\01\107\03\107\010\107\01\107\01\107\03"+
+ "\107\010\107\01\110\01\110\01\110\01\110\01\110\01\110\05\110\010"+
+ "\110\011\110\01\110\01\111\01\111\01\111\01\111\01\111\01\111\05\111"+
+ "\010\111\011\111\01\111\01\112\01\112\01\112\01\112\01\112\01\112"+
+ "\01\113\01\113\01\113\01\113\01\113\01\113\03\113\010\113\01\114\01"+
+ "\114\01\114\01\114\01\114\01\114\01\114\01\114\05\114\010\114\011"+
+ "\114\01\114\03\114\010\114\01\114\01\114\03\114\010\114\01\114\01"+
+ "\114\01\115\01\115\01\115\01\115\01\115\01\115\01\115\01\115\01\116"+
+ "\01\116\01\116\01\116\05\116\010\116\011\116\01\116\01\116\01\116"+
+ "\01\117\01\117\01\117\01\117\01\120\01\120\01\120\01\120\01\120\01"+
+ "\120\01\120\01\120\01\120\01\120\03\120\010\120\01\120\01\120\01\120"+
+ "\01\120\03\120\010\120\01\120\01\120\01\120\01\120\03\120\010\120"+
+ "\01\120\01\120\01\120\01\120\03\120\010\120\03\120\010\120\01\121"+
+ "\01\121\01\121\01\121\03\121\010\121\01\122\01\122\01\122\01\122\01"+
+ "\122\01\122\01\122\01\122\03\122\010\122\01\123\01\123\01\124\01\124"+
+ "\01\124\01\124\01\125\01\125\01\125\01\125\05\125\010\125\011\125"+
+ "\01\125\01\125\01\125\01\126\01\126\01\126\01\126\01\126\01\126\03"+
+ "\126\010\126\01\127\01\127\01\127\01\127\01\130\01\130\01\130\01\130"+
+ "\01\130\01\130\01\131\01\131\05\131\010\131\011\131\01\131\01\132"+
+ "\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\03"+
+ "\132\010\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132"+
+ "\01\132\01\132\01\132\01\132\03\132\010\132\01\132\01\132\01\132\01"+
+ "\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132"+
+ "\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01"+
+ "\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132"+
+ "\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01"+
+ "\132\03\132\010\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132"+
+ "\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01"+
+ "\132\01\132\01\132\01\132\03\132\010\132\01\132\01\132\01\132\01\132"+
+ "\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\03\132\010"+
+ "\132\01\132\01\132\01\132\01\132\01\132\01\132\03\132\010\132\01\132"+
+ "\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01\132\01"+
+ "\132\01\132\01\132\01\132\03\132\010\132\01\133\01\133\01\133\01\133"+
+ "\05\133\010\133\011\133\01\133\01\134\01\134\01\134\01\134\01\134"+
+ "\01\134\01\134\01\134\01\134\01\134\01\135\01\135\01\135\01\135\01"+
+ "\135\01\135\01\136\01\136\05\136\010\136\011\136\01\136\01\137\01"+
+ "\137\04\137\010\137\012\137\01\137\01\137\01\137\05\137\010\137\011"+
+ "\137\01\137\01\140\01\140\01\140\01\140\01\140\01\140\01\140\01\140"+
+ "\01\140\01\140\01\140\01\140\01\140\01\140\01\140\01\140\03\140\010"+
+ "\140\01\141\01\141\01\141\01\141\03\141\010\141\01\141\01\141\01\141"+
+ "\01\141\03\141\010\141\01\141\01\141\01\141\01\141\03\141\010\141"+
+ "\03\141\010\141\01\142\01\142\01\142\01\142\03\142\010\142\01\143"+
+ "\01\143\01\143\01\143\01\143\01\143\01\143\01\143\01\143\01\143\01"+
+ "\144\01\144\01\145\01\145\01\145\01\145\01\145\01\145\01\146\01\146"+
+ "\01\146\01\146\01\146\01\146\05\146\010\146\011\146\01\146\01\147"+
+ "\01\147\01\150\01\150\01\151\01\151\01\151\01\151\01\151\01\151\03"+
+ "\151\010\151\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152"+
+ "\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01"+
+ "\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152"+
+ "\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01\152\01"+
+ "\152\01\152\03\152\010\152\01\153\01\153\01\153\01\153\01\153\01\153"+
+ "\01\153\01\153\01\153\01\153\03\153\010\153\01\154\01\154\01\154\01"+
+ "\154\01\154\01\154\05\154\010\154\011\154\01\154\01\155\01\155\01"+
+ "\155\01\155\01\155\01\155\05\155\010\155\011\155\01\155\01\156\01"+
+ "\156\01\156\01\156\01\156\01\156\05\156\010\156\011\156\01\156\01"+
+ "\157\01\157\01\157\01\157\01\157\01\157\05\157\010\157\011\157\01"+
+ "\157\01\160\01\160\01\160\01\160\01\160\01\160\05\160\010\160\011"+
+ "\160\01\160\01\161\01\161\01\161\01\161\01\161\01\161\03\161\010\161"+
+ "\01\161\01\161\05\161\010\161\011\161\01\161\01\162\01\162\01\162"+
+ "\01\162\01\162\01\162\03\162\010\162\01\163\01\163\01\163\01\163\01"+
+ "\163\01\163\05\163\010\163\011\163\01\163\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\03\164"+
+ "\010\164\01\165\01\165\01\165\01\165\01\165\01\165\05\165\010\165"+
+ "\011\165\01\165\01\166\01\166\01\166\01\166\01\166\01\166\01\166\01"+
+ "\166\01\166\01\166\01\166\01\166\01\166\01\166\03\166\010\166\01\167"+
+ "\01\167\01\167\01\167\01\167\01\167\03\167\010\167\01\167\01\167\05"+
+ "\167\010\167\011\167\01\167\01\170\01\170\01\170\01\170\01\170\01"+
+ "\170\01\170\01\170\03\170\010\170\01\170\01\170\05\170\010\170\011"+
+ "\170\01\170\01\171\01\171\01\171\01\171\01\171\01\171\01\171\01\171"+
+ "\01\171\01\171\01\171\01\171\01\171\01\171\01\171\01\171\01\171\01"+
+ "\171\03\171\010\171\01\172\01\172\01\172\01\172\01\172\01\172\01\172"+
+ "\01\172\01\172\01\172\01\172\01\172\01\172\01\172\05\172\010\172\011"+
+ "\172\01\172\01\172\01\172\01\172\01\172\03\172\010\172\03\172\010"+
+ "\172\01\173\01\173\01\173\01\173\01\173\01\173\01\173\01\173\01\173"+
+ "\01\173\01\173\01\173\01\173\01\173\03\173\010\173\01\173\01\173\01"+
+ "\173\01\173\03\173\010\173\01\174\01\174\01\174\01\174\01\174\01\174"+
+ "\01\174\01\174\05\174\010\174\011\174\01\174\01\174\01\174\03\174"+
+ "\010\174\01\174\01\174\01\174\01\174\01\174\01\174\01\174\01\174\01"+
+ "\174\01\174\01\174\01\174\01\174\01\174\01\174\01\174\05\174\010\174"+
+ "\011\174\01\174\01\174\01\174\03\174\010\174\01\174\01\174\01\174"+
+ "\01\174\01\174\01\174\05\174\010\174\011\174\01\174\01\174\01\174"+
+ "\01\174\01\174\01\174\01\174\01\174\01\174\01\174\01\174\03\174\010"+
+ "\174\01\175\01\175\01\175\01\175\04\175\010\175\012\175\01\175\01"+
+ "\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175"+
+ "\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01"+
+ "\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175\01\175"+
+ "\01\175\03\175\010\175\01\176\01\176\01\176\01\176\01\176\01\176\01"+
+ "\176\01\176\01\176\01\176\01\176\01\176\03\176\010\176\03\176\010"+
+ "\176\01\177\01\177\01\177\01\177\03\177\010\177\01\u0080\01\u0080"+
+ "\03\u0080\010\u0080\01\u0080\01\u0080\01\u0080\01\u0080\01\u0081\01"+
+ "\u0081\01\u0081\01\u0081\01\u0081\01\u0081\01\u0081\01\u0081\05\u0081"+
+ "\010\u0081\011\u0081\01\u0081\01\u0081\01\u0081\01\u0081\01\u0081"+
+ "\01\u0081\01\u0081\01\u0081\01\u0081\01\u0081\01\u0081\01\u0081\01"+
+ "\u0081\05\u0081\010\u0081\011\u0081\01\u0081\01\u0081\01\u0081\01"+
+ "\u0081\01\u0081\05\u0081\010\u0081\011\u0081\01\u0081\03\u0081\010"+
+ "\u0081\01\u0082\01\u0082\01\u0082\01\u0082\03\u0082\010\u0082\01\u0083"+
+ "\01\u0083\01\u0083\01\u0083\01\u0083\01\u0083\01\u0084\01\u0084\01"+
+ "\u0084\01\u0084\01\u0084\01\u0084\01\u0085\01\u0085\01\u0085\01\u0085"+
+ "\01\u0085\01\u0085\03\u0085\010\u0085\01\u0085\01\u0085\01\u0085\01"+
+ "\u0085\01\u0085\01\u0085\01\u0085\01\u0085\01\u0085\01\u0085\01\u0085"+
+ "\01\u0085\01\u0085\01\u0085\01\u0085\01\u0085\01\u0085\01\u0085\01"+
+ "\u0085\01\u0085\01\u0085\01\u0085\03\u0085\010\u0085\01\u0086\01\u0086"+
+ "\01\u0086\01\u0086\01\u0086\01\u0086\01\u0086\01\u0086\03\u0086\010"+
+ "\u0086\03\u0086\010\u0086\01\u0087\01\u0087\01\u0087\01\u0087\03\u0087"+
+ "\010\u0087\01\u0087\01\u0087\01\u0087\u0087\00\00\00\02\00\00\04\00"+
+ "\00\06\00\00\010\00\00\012\00\00\014\00\00\016\00\00\020\00\00\022"+
+ "\00\00\024\00\00\026\00\00\030\00\00\032\00\00\034\00\00\036\00\00"+
+ "\040\00\00\042\00\00\044\00\00\046\00\00\050\00\00\052\00\00\054\00"+
+ "\00\056\00\00\060\00\00\062\00\00\064\00\00\066\00\00\070\00\00\072"+
+ "\00\00\074\00\00\076\00\00\100\00\00\102\00\00\104\00\00\106\00\00"+
+ "\110\00\00\112\00\00\114\00\00\116\00\00\120\00\00\122\00\00\124\00"+
+ "\00\126\00\00\130\00\00\132\00\00\134\00\00\136\00\00\140\00\00\142"+
+ "\00\00\144\00\00\146\00\00\150\00\00\152\00\00\154\00\00\156\00\00"+
+ "\160\00\00\162\00\00\164\00\00\166\00\00\170\00\00\172\00\00\174\00"+
+ "\00\176\00\00\u0080\00\00\u0082\00\00\u0084\00\00\u0086\00\00\u0088"+
+ "\00\00\u008a\00\00\u008c\00\00\u008e\00\00\u0090\00\00\u0092\00\00"+
+ "\u0094\00\00\u0096\00\00\u0098\00\00\u009a\00\00\u009c\00\00\u009e"+
+ "\00\00\u00a0\00\00\u00a2\00\00\u00a4\00\00\u00a6\00\00\u00a8\00\00"+
+ "\u00aa\00\00\u00ac\00\00\u00ae\00\00\u00b0\00\00\u00b2\00\00\u00b4"+
+ "\00\00\u00b6\00\00\u00b8\00\00\u00ba\00\00\u00bc\00\00\u00be\00\00"+
+ "\u00c0\00\00\u00c2\00\00\u00c4\00\00\u00c6\00\00\u00c8\00\00\u00ca"+
+ "\00\00\u00cc\00\00\u00ce\00\00\u00d0\00\00\u00d2\00\00\u00d4\00\00"+
+ "\u00d6\00\00\u00d8\00\00\u00da\00\00\u00dc\00\00\u00de\00\00\u00e0"+
+ "\00\00\u00e2\00\00\u00e4\00\00\u00e6\00\00\u00e8\00\00\u00ea\00\00"+
+ "\u00ec\00\00\u00ee\00\00\u00f0\00\00\u00f2\00\00\u00f4\00\00\u00f6"+
+ "\00\00\u00f8\00\00\u00fa\00\00\u00fc\00\00\u00fe\00\00\u0100\00\00"+
+ "\u0102\00\00\u0104\00\00\u0106\00\00\u0108\00\00\u010a\00\00\u010c"+
+ "\00\00\00\00\u09a6\00\u0138\01\00\00\01\u07ec\05\uffff\00\02\u013a"+
+ "\01\00\00\03\u0111\01\00\00\03\u0129\01\00\00\04\u0140\01\00\00\05"+
+ "\u0113\01\00\00\05\u012d\01\00\00\06\u0154\01\00\00\07\u0119\01\00"+
+ "\00\07\u0121\01\00\00\07\u0133\01\00\00\010\u0156\01\00\00\011\u011f"+
+ "\01\00\00\011\u0151\01\00\00\011\u04d7\01\00\00\012\u0160\01\00\00"+
+ "\013\u0157\01\00\00\014\u0174\01\00\00\015\u015f\01\00\00\016\u0178"+
+ "\01\00\00\017\u0231\01\00\00\017\u026f\01\00\00\017\u0491\01\00\00"+
+ "\020\u0180\01\00\00\021\u0159\01\00\00\021\u0247\01\00\00\021\u0283"+
+ "\01\00\00\022\u0182\01\00\00\023\u017d\01\00\00\023\u049b\01\00\00"+
+ "\024\u0198\01\00\00\025\u0187\01\00\00\025\u01ff\01\00\00\025\u0253"+
+ "\01\00\00\025\u02cb\01\00\00\026\u01a6\01\00\00\027\u019b\01\00\00"+
+ "\027\u019f\01\00\00\030\u01ae\01\00\00\031\u01ab\01\00\00\032\u01b8"+
+ "\01\00\00\033\u017f\01\00\00\033\u04a7\01\00\00\034\u01c4\01\00\00"+
+ "\035\u01c3\01\00\00\036\u01d4\01\00\00\037\u01c7\01\00\00\040\u01e0"+
+ "\01\00\00\041\u01d5\01\00\00\041\u01d9\01\00\00\042\u01ec\01\00\00"+
+ "\043\u01cf\01\00\00\044\u01f8\01\00\00\045\u015b\01\00\00\045\u0245"+
+ "\01\00\00\045\u0281\01\00\00\046\u01fa\01\00\00\047\u01f5\01\00\00"+
+ "\047\u04a1\01\00\00\050\u020a\01\00\00\051\u0193\01\00\00\051\u01bf"+
+ "\01\00\00\051\u0205\01\00\00\051\u07b5\01\00\00\052\u0214\01\00\00"+
+ "\053\u0197\01\00\00\053\u01e9\01\00\00\053\u07a9\01\00\00\054\u021e"+
+ "\01\00\00\055\u0209\01\00\00\056\u0234\01\00\00\057\u01ef\01\00\00"+
+ "\057\u0217\01\00\00\060\u0248\01\00\00\061\u0233\01\00\00\062\u024a"+
+ "\01\00\00\063\u0239\01\00\00\064\u0252\01\00\00\065\u0237\01\00\00"+
+ "\066\u0264\01\00\00\067\u0255\01\00\00\070\u0266\01\00\00\071\u024d"+
+ "\01\00\00\072\u026a\01\00\00\073\u024f\01\00\00\074\u0274\01\00\00"+
+ "\075\u0221\01\00\00\076\u0284\01\00\00\077\u0271\01\00\00\100\u0286"+
+ "\01\00\00\101\u0277\01\00\00\102\u0292\01\00\00\103\u028b\01\00\00"+
+ "\104\u0294\01\00\00\105\u025f\01\00\00\105\u0269\01\00\00\106\u02aa"+
+ "\01\00\00\107\u023f\01\00\00\110\u02b8\01\00\00\111\u0291\01\00\00"+
+ "\111\u02d5\01\00\00\112\u02ca\01\00\00\113\u0279\01\00\00\114\u02d6"+
+ "\01\00\00\115\u027f\01\00\00\116\u02e0\01\00\00\117\u0243\01\00\00"+
+ "\117\u0263\01\00\00\120\u02ea\01\00\00\121\u0305\01\00\00\122\u02ee"+
+ "\01\00\00\123\u026b\01\00\00\123\u04c5\01\00\00\123\u04e5\01\00\00"+
+ "\124\u02f8\01\00\00\125\u02ef\01\00\00\125\u02f3\01\00\00\126\u0300"+
+ "\01\00\00\127\u028d\01\00\00\130\u030e\01\00\00\131\u02ed\01\00\00"+
+ "\131\u0301\01\00\00\132\u0316\01\00\00\133\u02f9\01\00\00\133\u03d1"+
+ "\01\00\00\133\u03db\01\00\00\133\u0585\01\00\00\134\u0324\01\00\00"+
+ "\135\u02fd\01\00\00\135\u0315\01\00\00\135\u0329\01\00\00\135\u032d"+
+ "\01\00\00\136\u0326\01\00\00\137\u0321\01\00\00\137\u078d\01\00\00"+
+ "\140\u0352\01\00\00\141\u0177\01\00\00\142\u0354\01\00\00\143\u07ec"+
+ "\05\uffff\00\144\u0356\01\00\00\145\u05a1\01\00\00\146\u0358\01\00"+
+ "\00\147\u07ec\05\uffff\00\150\u036e\01\00\00\151\u018d\01\00\00\151"+
+ "\u01af\01\00\00\151\u01b3\01\00\00\151\u020b\01\00\00\151\u020f\01"+
+ "\00\00\151\u024b\01\00\00\151\u0257\01\00\00\151\u0287\01\00\00\151"+
+ "\u02cd\01\00\00\151\u03a9\01\00\00\151\u03b3\01\00\00\151\u03cd\01"+
+ "\00\00\151\u0495\01\00\00\151\u04e3\01\00\00\151\u0583\01\00\00\151"+
+ "\u05c7\01\00\00\151\u0665\01\00\00\151\u06f1\01\00\00\152\u0370\01"+
+ "\00\00\153\u035b\01\00\00\153\u0773\01\00\00\154\u0392\01\00\00\155"+
+ "\u0365\01\00\00\155\u06e9\01\00\00\155\u0725\01\00\00\155\u0775\01"+
+ "\00\00\156\u0398\01\00\00\157\u04e7\01\00\00\160\u039a\01\00\00\161"+
+ "\u0373\01\00\00\161\u037b\01\00\00\162\u03b6\01\00\00\163\u039d\01"+
+ "\00\00\163\u03a1\01\00\00\164\u03b8\01\00\00\165\u02a1\01\00\00\165"+
+ "\u02af\01\00\00\165\u02c5\01\00\00\165\u02db\01\00\00\165\u02e5\01"+
+ "\00\00\166\u03c2\01\00\00\167\u0295\01\00\00\167\u02ab\01\00\00\167"+
+ "\u02b9\01\00\00\167\u02d7\01\00\00\167\u02e1\01\00\00\170\u03ca\01"+
+ "\00\00\171\u03c5\01\00\00\171\u03d5\01\00\00\172\u03dc\01\00\00\173"+
+ "\u03cf\01\00\00\174\u03de\01\00\00\175\u02a5\01\00\00\175\u02b3\01"+
+ "\00\00\176\u03e0\01\00\00\177\u02e9\01\00\00\u0080\u040a\01\00\00"+
+ "\u0081\u03e3\01\00\00\u0082\u040c\01\00\00\u0083\u013d\01\00\00\u0083"+
+ "\u0147\01\00\00\u0083\u0355\01\00\00\u0083\u0359\01\00\00\u0083\u03b9"+
+ "\01\00\00\u0083\u03bd\01\00\00\u0084\u0422\01\00\00\u0085\u0711\01"+
+ "\00\00\u0086\u042a\01\00\00\u0087\u0417\01\00\00\u0088\u0430\01\00"+
+ "\00\u0089\u041f\01\00\00\u008a\u0434\01\00\00\u008b\u010f\01\00\00"+
+ "\u008b\u01df\01\00\00\u008c\u0438\01\00\00\u008d\u0165\01\00\00\u008d"+
+ "\u033b\01\00\00\u008d\u0397\01\00\00\u008d\u0433\01\00\00\u008d\u0465"+
+ "\01\00\00\u008e\u0448\01\00\00\u008f\u043b\01\00\00\u0090\u0452\01"+
+ "\00\00\u0091\u043f\01\00\00\u0092\u045c\01\00\00\u0093\u0453\01\00"+
+ "\00\u0093\u0457\01\00\00\u0094\u0468\01\00\00\u0095\u0441\01\00\00"+
+ "\u0095\u0461\01\00\00\u0095\u046d\01\00\00\u0095\u0471\01\00\00\u0095"+
+ "\u04c9\01\00\00\u0096\u046a\01\00\00\u0097\u0467\01\00\00\u0098\u047e"+
+ "\01\00\00\u0099\u01f7\01\00\00\u0099\u04ad\01\00\00\u009a\u0486\01"+
+ "\00\00\u009b\u0485\01\00\00\u009c\u0490\01\00\00\u009d\u0489\01\00"+
+ "\00\u009e\u04b2\01\00\00\u009f\u0493\01\00\00\u00a0\u04b8\01\00\00"+
+ "\u00a1\u0497\01\00\00\u00a2\u04ba\01\00\00\u00a3\u04b5\01\00\00\u00a4"+
+ "\u04c4\01\00\00\u00a5\u04b7\01\00\00\u00a6\u04c6\01\00\00\u00a7\u04c1"+
+ "\01\00\00\u00a8\u04ca\01\00\00\u00a9\u022f\01\00\00\u00a9\u03df\01"+
+ "\00\00\u00a9\u04ed\01\00\00\u00a9\u0523\01\00\00\u00a9\u0529\01\00"+
+ "\00\u00a9\u052f\01\00\00\u00a9\u0541\01\00\00\u00a9\u057f\01\00\00"+
+ "\u00aa\u04da\01\00\00\u00ab\u03e7\01\00\00\u00ab\u04cd\01\00\00\u00ab"+
+ "\u0593\01\00\00\u00ac\u04dc\01\00\00\u00ad\u04d5\01\00\00\u00ae\u04e0"+
+ "\01\00\00\u00af\u04dd\01\00\00\u00af\u05bf\01\00\00\u00b0\u04e8\01"+
+ "\00\00\u00b1\u03cb\01\00\00\u00b1\u04e1\01\00\00\u00b1\u0581\01\00"+
+ "\00\u00b1\u05c5\01\00\00\u00b2\u056c\01\00\00\u00b3\u04d9\01\00\00"+
+ "\u00b3\u04ff\01\00\00\u00b3\u0503\01\00\00\u00b3\u050f\01\00\00\u00b3"+
+ "\u0515\01\00\00\u00b3\u0519\01\00\00\u00b3\u056b\01\00\00\u00b4\u056e"+
+ "\01\00\00\u00b5\u0525\01\00\00\u00b5\u052b\01\00\00\u00b6\u0576\01"+
+ "\00\00\u00b7\u056f\01\00\00\u00b7\u0571\01\00\00\u00b8\u0580\01\00"+
+ "\00\u00b9\u057b\01\00\00\u00ba\u0588\01\00\00\u00bb\u0539\01\00\00"+
+ "\u00bc\u058e\01\00\00\u00bd\u0587\01\00\00\u00be\u05a8\01\00\00\u00bf"+
+ "\u058d\01\00\00\u00c0\u05bc\01\00\00\u00c1\u050b\01\00\00\u00c2\u05c2"+
+ "\01\00\00\u00c3\u05ad\01\00\00\u00c4\u05c4\01\00\00\u00c5\u05ab\01"+
+ "\00\00\u00c6\u05ce\01\00\00\u00c7\u05b9\01\00\00\u00c8\u05d0\01\00"+
+ "\00\u00c9\u04fd\01\00\00\u00c9\u0513\01\00\00\u00c9\u051d\01\00\00"+
+ "\u00c9\u0535\01\00\00\u00c9\u053f\01\00\00\u00c9\u06fd\01\00\00\u00ca"+
+ "\u05d6\01\00\00\u00cb\u05c1\01\00\00\u00cb\u05cf\01\00\00\u00cb\u07e7"+
+ "\01\00\00\u00cc\u05e0\01\00\00\u00cd\u0563\01\00\00\u00ce\u05e2\01"+
+ "\00\00\u00cf\u059b\01\00\00\u00d0\u05e4\01\00\00\u00d1\u0323\01\00"+
+ "\00\u00d1\u04f1\01\00\00\u00d1\u04f5\01\00\00\u00d1\u0545\01\00\00"+
+ "\u00d1\u054d\01\00\00\u00d1\u05b3\01\00\00\u00d1\u05cd\01\00\00\u00d1"+
+ "\u05d3\01\00\00\u00d1\u05d7\01\00\00\u00d1\u05db\01\00\00\u00d1\u05e1"+
+ "\01\00\00\u00d1\u05e3\01\00\00\u00d1\u05e9\01\00\00\u00d1\u06f3\01"+
+ "\00\00\u00d1\u078f\01\00\00\u00d1\u0795\01\00\00\u00d1\u07d3\01\00"+
+ "\00\u00d2\u0612\01\00\00\u00d3\u05e7\01\00\00\u00d4\u0614\01\00\00"+
+ "\u00d5\u0463\01\00\00\u00d5\u05e5\01\00\00\u00d5\u0619\01\00\00\u00d5"+
+ "\u061d\01\00\00\u00d6\u0620\01\00\00\u00d7\u0615\01\00\00\u00d8\u062a"+
+ "\01\00\00\u00d9\u0621\01\00\00\u00d9\u0625\01\00\00\u00da\u0634\01"+
+ "\00\00\u00db\u062b\01\00\00\u00db\u062f\01\00\00\u00dc\u063e\01\00"+
+ "\00\u00dd\u0635\01\00\00\u00dd\u0639\01\00\00\u00de\u0648\01\00\00"+
+ "\u00df\u063f\01\00\00\u00df\u0643\01\00\00\u00e0\u0652\01\00\00\u00e1"+
+ "\u0649\01\00\00\u00e1\u064d\01\00\00\u00e2\u0660\01\00\00\u00e3\u0653"+
+ "\01\00\00\u00e3\u065b\01\00\00\u00e4\u0668\01\00\00\u00e5\u0661\01"+
+ "\00\00\u00e6\u067e\01\00\00\u00e7\u066b\01\00\00\u00e8\u0680\01\00"+
+ "\00\u00e9\u0669\01\00\00\u00e9\u066d\01\00\00\u00ea\u0698\01\00\00"+
+ "\u00eb\u0683\01\00\00\u00ec\u069a\01\00\00\u00ed\u0681\01\00\00\u00ed"+
+ "\u0685\01\00\00\u00ee\u06a8\01\00\00\u00ef\u069b\01\00\00\u00ef\u06a3"+
+ "\01\00\00\u00f0\u06ca\01\00\00\u00f1\u06a9\01\00\00\u00f1\u06b3\01"+
+ "\00\00\u00f1\u06bb\01\00\00\u00f1\u06bf\01\00\00\u00f1\u06c3\01\00"+
+ "\00\u00f1\u06c7\01\00\00\u00f1\u06cf\01\00\00\u00f1\u06d3\01\00\00"+
+ "\u00f1\u06ed\01\00\00\u00f2\u06e4\01\00\00\u00f3\u06c9\01\00\00\u00f3"+
+ "\u06f9\01\00\00\u00f4\u06fa\01\00\00\u00f5\u06d5\01\00\00\u00f6\u0738"+
+ "\01\00\00\u00f7\u03fd\01\00\00\u00f7\u06d7\01\00\00\u00f8\u0760\01"+
+ "\00\00\u00f9\u0709\01\00\00\u00f9\u0721\01\00\00\u00fa\u0770\01\00"+
+ "\00\u00fb\u0715\01\00\00\u00fc\u0776\01\00\00\u00fd\u0765\01\00\00"+
+ "\u00fd\u0769\01\00\00\u00fe\u077a\01\00\00\u00ff\u075f\01\00\00\u00ff"+
+ "\u07cf\01\00\00\u0100\u0780\01\00\00\u0101\u076b\01\00\00\u0102\u07a6"+
+ "\01\00\00\u0103\u0767\01\00\00\u0103\u076d\01\00\00\u0103\u077f\01"+
+ "\00\00\u0104\u07ac\01\00\00\u0105\u074f\01\00\00\u0106\u07b2\01\00"+
+ "\00\u0107\u03ef\01\00\00\u0107\u0401\01\00\00\u0107\u0763\01\00\00"+
+ "\u0107\u0779\01\00\00\u0107\u07ad\01\00\00\u0108\u07d6\01\00\00\u0109"+
+ "\u06d9\01\00\00\u010a\u07e2\01\00\00\u010b\u070f\01\00\00\u010b\u07c9"+
+ "\01\00\00\u010c\u07e4\01\00\00\u010d\u01e5\01\00\00\u010d\u03f9\01"+
+ "\00\00\u010d\u0407\01\00\00\u010d\u0747\01\00\00\u010d\u0759\01\00"+
+ "\00\u010d\u07a7\01\00\00\u010d\u07b1\01\00\00\u010d\u07bd\01\00\00"+
+ "\u010d\u07d9\01\00\00\u010d\u07df\01\00\00\u010e\u010f\03\u008a\106"+
+ "\u010f\u0126\01\00\00\u0110\u0111\03\02\02\u0111\u0114\01\00\00\u0112"+
+ "\u0113\03\04\03\u0113\u0115\01\00\00\u0114\u0112\01\00\00\u0114\u0117"+
+ "\01\00\00\u0115\u0116\01\00\00\u0116\u0114\01\00\00\u0117\u011a\01"+
+ "\00\00\u0118\u0119\03\06\04\u0119\u011b\01\00\00\u011a\u0118\01\00"+
+ "\00\u011a\u011d\01\00\00\u011b\u011c\01\00\00\u011c\u011a\01\00\00"+
+ "\u011d\u0127\01\00\00\u011e\u011f\03\010\05\u011f\u0122\01\00\00\u0120"+
+ "\u0121\03\06\04\u0121\u0123\01\00\00\u0122\u0120\01\00\00\u0122\u0125"+
+ "\01\00\00\u0123\u0124\01\00\00\u0124\u0122\01\00\00\u0125\u0127\01"+
+ "\00\00\u0126\u0110\01\00\00\u0126\u011e\01\00\00\u0127\u0139\01\00"+
+ "\00\u0128\u0129\03\02\02\u0129\u012b\01\00\00\u012a\u0128\01\00\00"+
+ "\u012a\u012b\01\00\00\u012b\u012e\01\00\00\u012c\u012d\03\04\03\u012d"+
+ "\u012f\01\00\00\u012e\u012c\01\00\00\u012e\u0131\01\00\00\u012f\u0130"+
+ "\01\00\00\u0130\u012e\01\00\00\u0131\u0134\01\00\00\u0132\u0133\03"+
+ "\06\04\u0133\u0135\01\00\00\u0134\u0132\01\00\00\u0134\u0137\01\00"+
+ "\00\u0135\u0136\01\00\00\u0136\u0134\01\00\00\u0137\u0139\01\00\00"+
+ "\u0138\u010e\01\00\00\u0138\u012a\01\00\00\u0139\01\01\00\00\u013a"+
+ "\u013b\05\04\00\u013b\u013c\01\00\00\u013c\u013d\03\u0082\102\u013d"+
+ "\u013e\01\00\00\u013e\u013f\05\05\00\u013f\03\01\00\00\u0140\u0141"+
+ "\05\06\00\u0141\u0144\01\00\00\u0142\u0143\05\07\00\u0143\u0145\01"+
+ "\00\00\u0144\u0142\01\00\00\u0144\u0145\01\00\00\u0145\u0146\01\00"+
+ "\00\u0146\u0147\03\u0082\102\u0147\u014c\01\00\00\u0148\u0149\05\010"+
+ "\00\u0149\u014a\01\00\00\u014a\u014b\05\011\00\u014b\u014d\01\00\00"+
+ "\u014c\u0148\01\00\00\u014c\u014d\01\00\00\u014d\u014e\01\00\00\u014e"+
+ "\u014f\05\05\00\u014f\05\01\00\00\u0150\u0151\03\010\05\u0151\u0155"+
+ "\01\00\00\u0152\u0153\05\05\00\u0153\u0155\01\00\00\u0154\u0150\01"+
+ "\00\00\u0154\u0152\01\00\00\u0155\07\01\00\00\u0156\u0157\03\012\06"+
+ "\u0157\u015c\01\00\00\u0158\u0159\03\020\011\u0159\u015d\01\00\00"+
+ "\u015a\u015b\03\044\023\u015b\u015d\01\00\00\u015c\u0158\01\00\00"+
+ "\u015c\u015a\01\00\00\u015d\011\01\00\00\u015e\u015f\03\014\07\u015f"+
+ "\u0161\01\00\00\u0160\u015e\01\00\00\u0160\u0163\01\00\00\u0161\u0162"+
+ "\01\00\00\u0162\u0160\01\00\00\u0163\013\01\00\00\u0164\u0165\03\u008c"+
+ "\107\u0165\u0175\01\00\00\u0166\u0167\05\012\00\u0167\u0175\01\00"+
+ "\00\u0168\u0169\05\013\00\u0169\u0175\01\00\00\u016a\u016b\05\014"+
+ "\00\u016b\u0175\01\00\00\u016c\u016d\05\015\00\u016d\u0175\01\00\00"+
+ "\u016e\u016f\05\07\00\u016f\u0175\01\00\00\u0170\u0171\05\016\00\u0171"+
+ "\u0175\01\00\00\u0172\u0173\05\017\00\u0173\u0175\01\00\00\u0174\u0164"+
+ "\01\00\00\u0174\u0166\01\00\00\u0174\u0168\01\00\00\u0174\u016a\01"+
+ "\00\00\u0174\u016c\01\00\00\u0174\u016e\01\00\00\u0174\u0170\01\00"+
+ "\00\u0174\u0172\01\00\00\u0175\015\01\00\00\u0176\u0177\03\140\061"+
+ "\u0177\u0179\01\00\00\u0178\u0176\01\00\00\u0178\u017b\01\00\00\u0179"+
+ "\u017a\01\00\00\u017a\u0178\01\00\00\u017b\017\01\00\00\u017c\u017d"+
+ "\03\022\012\u017d\u0181\01\00\00\u017e\u017f\03\032\016\u017f\u0181"+
+ "\01\00\00\u0180\u017c\01\00\00\u0180\u017e\01\00\00\u0181\021\01\00"+
+ "\00\u0182\u0183\05\020\00\u0183\u0184\01\00\00\u0184\u0185\05\145"+
+ "\00\u0185\u0188\01\00\00\u0186\u0187\03\024\013\u0187\u0189\01\00"+
+ "\00\u0188\u0186\01\00\00\u0188\u0189\01\00\00\u0189\u018e\01\00\00"+
+ "\u018a\u018b\05\021\00\u018b\u018c\01\00\00\u018c\u018d\03\150\065"+
+ "\u018d\u018f\01\00\00\u018e\u018a\01\00\00\u018e\u018f\01\00\00\u018f"+
+ "\u0194\01\00\00\u0190\u0191\05\022\00\u0191\u0192\01\00\00\u0192\u0193"+
+ "\03\050\025\u0193\u0195\01\00\00\u0194\u0190\01\00\00\u0194\u0195"+
+ "\01\00\00\u0195\u0196\01\00\00\u0196\u0197\03\052\026\u0197\023\01"+
+ "\00\00\u0198\u0199\05\023\00\u0199\u019a\01\00\00\u019a\u019b\03\026"+
+ "\014\u019b\u01a0\01\00\00\u019c\u019d\05\024\00\u019d\u019e\01\00"+
+ "\00\u019e\u019f\03\026\014\u019f\u01a1\01\00\00\u01a0\u019c\01\00"+
+ "\00\u01a0\u01a3\01\00\00\u01a1\u01a2\01\00\00\u01a2\u01a0\01\00\00"+
+ "\u01a3\u01a4\01\00\00\u01a4\u01a5\05\025\00\u01a5\025\01\00\00\u01a6"+
+ "\u01a7\05\145\00\u01a7\u01ac\01\00\00\u01a8\u01a9\05\021\00\u01a9"+
+ "\u01aa\01\00\00\u01aa\u01ab\03\030\015\u01ab\u01ad\01\00\00\u01ac"+
+ "\u01a8\01\00\00\u01ac\u01ad\01\00\00\u01ad\027\01\00\00\u01ae\u01af"+
+ "\03\150\065\u01af\u01b4\01\00\00\u01b0\u01b1\05\026\00\u01b1\u01b2"+
+ "\01\00\00\u01b2\u01b3\03\150\065\u01b3\u01b5\01\00\00\u01b4\u01b0"+
+ "\01\00\00\u01b4\u01b7\01\00\00\u01b5\u01b6\01\00\00\u01b6\u01b4\01"+
+ "\00\00\u01b7\031\01\00\00\u01b8\u01b9\05\143\00\u01b9\u01ba\01\00"+
+ "\00\u01ba\u01bb\05\145\00\u01bb\u01c0\01\00\00\u01bc\u01bd\05\022"+
+ "\00\u01bd\u01be\01\00\00\u01be\u01bf\03\050\025\u01bf\u01c1\01\00"+
+ "\00\u01c0\u01bc\01\00\00\u01c0\u01c1\01\00\00\u01c1\u01c2\01\00\00"+
+ "\u01c2\u01c3\03\034\017\u01c3\033\01\00\00\u01c4\u01c5\05\027\00\u01c5"+
+ "\u01c8\01\00\00\u01c6\u01c7\03\036\020\u01c7\u01c9\01\00\00\u01c8"+
+ "\u01c6\01\00\00\u01c8\u01c9\01\00\00\u01c9\u01cc\01\00\00\u01ca\u01cb"+
+ "\05\024\00\u01cb\u01cd\01\00\00\u01cc\u01ca\01\00\00\u01cc\u01cd\01"+
+ "\00\00\u01cd\u01d0\01\00\00\u01ce\u01cf\03\042\022\u01cf\u01d1\01"+
+ "\00\00\u01d0\u01ce\01\00\00\u01d0\u01d1\01\00\00\u01d1\u01d2\01\00"+
+ "\00\u01d2\u01d3\05\030\00\u01d3\035\01\00\00\u01d4\u01d5\03\040\021"+
+ "\u01d5\u01da\01\00\00\u01d6\u01d7\05\024\00\u01d7\u01d8\01\00\00\u01d8"+
+ "\u01d9\03\040\021\u01d9\u01db\01\00\00\u01da\u01d6\01\00\00\u01da"+
+ "\u01dd\01\00\00\u01db\u01dc\01\00\00\u01dc\u01da\01\00\00\u01dd\037"+
+ "\01\00\00\u01de\u01df\03\u008a\106\u01df\u01e1\01\00\00\u01e0\u01de"+
+ "\01\00\00\u01e0\u01e1\01\00\00\u01e1\u01e2\01\00\00\u01e2\u01e3\05"+
+ "\145\00\u01e3\u01e6\01\00\00\u01e4\u01e5\03\u010c\u0087\u01e5\u01e7"+
+ "\01\00\00\u01e6\u01e4\01\00\00\u01e6\u01e7\01\00\00\u01e7\u01ea\01"+
+ "\00\00\u01e8\u01e9\03\052\026\u01e9\u01eb\01\00\00\u01ea\u01e8\01"+
+ "\00\00\u01ea\u01eb\01\00\00\u01eb\041\01\00\00\u01ec\u01ed\05\05\00"+
+ "\u01ed\u01f0\01\00\00\u01ee\u01ef\03\056\030\u01ef\u01f1\01\00\00"+
+ "\u01f0\u01ee\01\00\00\u01f0\u01f3\01\00\00\u01f1\u01f2\01\00\00\u01f2"+
+ "\u01f0\01\00\00\u01f3\043\01\00\00\u01f4\u01f5\03\046\024\u01f5\u01f9"+
+ "\01\00\00\u01f6\u01f7\03\u0098\115\u01f7\u01f9\01\00\00\u01f8\u01f4"+
+ "\01\00\00\u01f8\u01f6\01\00\00\u01f9\045\01\00\00\u01fa\u01fb\05\031"+
+ "\00\u01fb\u01fc\01\00\00\u01fc\u01fd\05\145\00\u01fd\u0200\01\00\00"+
+ "\u01fe\u01ff\03\024\013\u01ff\u0201\01\00\00\u0200\u01fe\01\00\00"+
+ "\u0200\u0201\01\00\00\u0201\u0206\01\00\00\u0202\u0203\05\021\00\u0203"+
+ "\u0204\01\00\00\u0204\u0205\03\050\025\u0205\u0207\01\00\00\u0206"+
+ "\u0202\01\00\00\u0206\u0207\01\00\00\u0207\u0208\01\00\00\u0208\u0209"+
+ "\03\054\027\u0209\047\01\00\00\u020a\u020b\03\150\065\u020b\u0210"+
+ "\01\00\00\u020c\u020d\05\024\00\u020d\u020e\01\00\00\u020e\u020f\03"+
+ "\150\065\u020f\u0211\01\00\00\u0210\u020c\01\00\00\u0210\u0213\01"+
+ "\00\00\u0211\u0212\01\00\00\u0212\u0210\01\00\00\u0213\051\01\00\00"+
+ "\u0214\u0215\05\027\00\u0215\u0218\01\00\00\u0216\u0217\03\056\030"+
+ "\u0217\u0219\01\00\00\u0218\u0216\01\00\00\u0218\u021b\01\00\00\u0219"+
+ "\u021a\01\00\00\u021a\u0218\01\00\00\u021b\u021c\01\00\00\u021c\u021d"+
+ "\05\030\00\u021d\053\01\00\00\u021e\u021f\05\027\00\u021f\u0222\01"+
+ "\00\00\u0220\u0221\03\074\037\u0221\u0223\01\00\00\u0222\u0220\01"+
+ "\00\00\u0222\u0225\01\00\00\u0223\u0224\01\00\00\u0224\u0222\01\00"+
+ "\00\u0225\u0226\01\00\00\u0226\u0227\05\030\00\u0227\055\01\00\00"+
+ "\u0228\u0229\05\05\00\u0229\u0235\01\00\00\u022a\u022b\05\07\00\u022b"+
+ "\u022d\01\00\00\u022c\u022a\01\00\00\u022c\u022d\01\00\00\u022d\u022e"+
+ "\01\00\00\u022e\u022f\03\u00a8\125\u022f\u0235\01\00\00\u0230\u0231"+
+ "\03\016\010\u0231\u0232\01\00\00\u0232\u0233\03\060\031\u0233\u0235"+
+ "\01\00\00\u0234\u0228\01\00\00\u0234\u022c\01\00\00\u0234\u0230\01"+
+ "\00\00\u0235\057\01\00\00\u0236\u0237\03\064\033\u0237\u0249\01\00"+
+ "\00\u0238\u0239\03\062\032\u0239\u0249\01\00\00\u023a\u023b\05\032"+
+ "\00\u023b\u023c\01\00\00\u023c\u023d\05\145\00\u023d\u023e\01\00\00"+
+ "\u023e\u023f\03\106\044\u023f\u0249\01\00\00\u0240\u0241\05\145\00"+
+ "\u0241\u0242\01\00\00\u0242\u0243\03\116\050\u0243\u0249\01\00\00"+
+ "\u0244\u0245\03\044\023\u0245\u0249\01\00\00\u0246\u0247\03\020\011"+
+ "\u0247\u0249\01\00\00\u0248\u0236\01\00\00\u0248\u0238\01\00\00\u0248"+
+ "\u023a\01\00\00\u0248\u0240\01\00\00\u0248\u0244\01\00\00\u0248\u0246"+
+ "\01\00\00\u0249\061\01\00\00\u024a\u024b\03\150\065\u024b\u0250\01"+
+ "\00\00\u024c\u024d\03\070\035\u024d\u0251\01\00\00\u024e\u024f\03"+
+ "\072\036\u024f\u0251\01\00\00\u0250\u024c\01\00\00\u0250\u024e\01"+
+ "\00\00\u0251\063\01\00\00\u0252\u0253\03\024\013\u0253\u0254\01\00"+
+ "\00\u0254\u0255\03\066\034\u0255\065\01\00\00\u0256\u0257\03\150\065"+
+ "\u0257\u025b\01\00\00\u0258\u0259\05\032\00\u0259\u025b\01\00\00\u025a"+
+ "\u0256\01\00\00\u025a\u0258\01\00\00\u025b\u025c\01\00\00\u025c\u025d"+
+ "\05\145\00\u025d\u025e\01\00\00\u025e\u025f\03\104\043\u025f\u0265"+
+ "\01\00\00\u0260\u0261\05\145\00\u0261\u0262\01\00\00\u0262\u0263\03"+
+ "\116\050\u0263\u0265\01\00\00\u0264\u025a\01\00\00\u0264\u0260\01"+
+ "\00\00\u0265\067\01\00\00\u0266\u0267\05\145\00\u0267\u0268\01\00"+
+ "\00\u0268\u0269\03\104\043\u0269\071\01\00\00\u026a\u026b\03\122\052"+
+ "\u026b\u026c\01\00\00\u026c\u026d\05\05\00\u026d\073\01\00\00\u026e"+
+ "\u026f\03\016\010\u026f\u0270\01\00\00\u0270\u0271\03\076\040\u0271"+
+ "\u0275\01\00\00\u0272\u0273\05\05\00\u0273\u0275\01\00\00\u0274\u026e"+
+ "\01\00\00\u0274\u0272\01\00\00\u0275\075\01\00\00\u0276\u0277\03\100"+
+ "\041\u0277\u0285\01\00\00\u0278\u0279\03\112\046\u0279\u0285\01\00"+
+ "\00\u027a\u027b\05\032\00\u027b\u027c\01\00\00\u027c\u027d\05\145"+
+ "\00\u027d\u027e\01\00\00\u027e\u027f\03\114\047\u027f\u0285\01\00"+
+ "\00\u0280\u0281\03\044\023\u0281\u0285\01\00\00\u0282\u0283\03\020"+
+ "\011\u0283\u0285\01\00\00\u0284\u0276\01\00\00\u0284\u0278\01\00\00"+
+ "\u0284\u027a\01\00\00\u0284\u0280\01\00\00\u0284\u0282\01\00\00\u0285"+
+ "\077\01\00\00\u0286\u0287\03\150\065\u0287\u0288\01\00\00\u0288\u0289"+
+ "\05\145\00\u0289\u028a\01\00\00\u028a\u028b\03\102\042\u028b\101\01"+
+ "\00\00\u028c\u028d\03\126\054\u028d\u028e\01\00\00\u028e\u028f\05"+
+ "\05\00\u028f\u0293\01\00\00\u0290\u0291\03\110\045\u0291\u0293\01"+
+ "\00\00\u0292\u028c\01\00\00\u0292\u0290\01\00\00\u0293\103\01\00\00"+
+ "\u0294\u0295\03\166\074\u0295\u029a\01\00\00\u0296\u0297\05\033\00"+
+ "\u0297\u0298\01\00\00\u0298\u0299\05\034\00\u0299\u029b\01\00\00\u029a"+
+ "\u0296\01\00\00\u029a\u029d\01\00\00\u029b\u029c\01\00\00\u029c\u029a"+
+ "\01\00\00\u029d\u02a2\01\00\00\u029e\u029f\05\035\00\u029f\u02a0\01"+
+ "\00\00\u02a0\u02a1\03\164\073\u02a1\u02a3\01\00\00\u02a2\u029e\01"+
+ "\00\00\u02a2\u02a3\01\00\00\u02a3\u02a8\01\00\00\u02a4\u02a5\03\174"+
+ "\077\u02a5\u02a9\01\00\00\u02a6\u02a7\05\05\00\u02a7\u02a9\01\00\00"+
+ "\u02a8\u02a4\01\00\00\u02a8\u02a6\01\00\00\u02a9\105\01\00\00\u02aa"+
+ "\u02ab\03\166\074\u02ab\u02b0\01\00\00\u02ac\u02ad\05\035\00\u02ad"+
+ "\u02ae\01\00\00\u02ae\u02af\03\164\073\u02af\u02b1\01\00\00\u02b0"+
+ "\u02ac\01\00\00\u02b0\u02b1\01\00\00\u02b1\u02b6\01\00\00\u02b2\u02b3"+
+ "\03\174\077\u02b3\u02b7\01\00\00\u02b4\u02b5\05\05\00\u02b5\u02b7"+
+ "\01\00\00\u02b6\u02b2\01\00\00\u02b6\u02b4\01\00\00\u02b7\107\01\00"+
+ "\00\u02b8\u02b9\03\166\074\u02b9\u02be\01\00\00\u02ba\u02bb\05\033"+
+ "\00\u02bb\u02bc\01\00\00\u02bc\u02bd\05\034\00\u02bd\u02bf\01\00\00"+
+ "\u02be\u02ba\01\00\00\u02be\u02c1\01\00\00\u02bf\u02c0\01\00\00\u02c0"+
+ "\u02be\01\00\00\u02c1\u02c6\01\00\00\u02c2\u02c3\05\035\00\u02c3\u02c4"+
+ "\01\00\00\u02c4\u02c5\03\164\073\u02c5\u02c7\01\00\00\u02c6\u02c2"+
+ "\01\00\00\u02c6\u02c7\01\00\00\u02c7\u02c8\01\00\00\u02c8\u02c9\05"+
+ "\05\00\u02c9\111\01\00\00\u02ca\u02cb\03\024\013\u02cb\u02d0\01\00"+
+ "\00\u02cc\u02cd\03\150\065\u02cd\u02d1\01\00\00\u02ce\u02cf\05\032"+
+ "\00\u02cf\u02d1\01\00\00\u02d0\u02cc\01\00\00\u02d0\u02ce\01\00\00"+
+ "\u02d1\u02d2\01\00\00\u02d2\u02d3\05\145\00\u02d3\u02d4\01\00\00\u02d4"+
+ "\u02d5\03\110\045\u02d5\113\01\00\00\u02d6\u02d7\03\166\074\u02d7"+
+ "\u02dc\01\00\00\u02d8\u02d9\05\035\00\u02d9\u02da\01\00\00\u02da\u02db"+
+ "\03\164\073\u02db\u02dd\01\00\00\u02dc\u02d8\01\00\00\u02dc\u02dd"+
+ "\01\00\00\u02dd\u02de\01\00\00\u02de\u02df\05\05\00\u02df\115\01\00"+
+ "\00\u02e0\u02e1\03\166\074\u02e1\u02e6\01\00\00\u02e2\u02e3\05\035"+
+ "\00\u02e3\u02e4\01\00\00\u02e4\u02e5\03\164\073\u02e5\u02e7\01\00"+
+ "\00\u02e6\u02e2\01\00\00\u02e6\u02e7\01\00\00\u02e7\u02e8\01\00\00"+
+ "\u02e8\u02e9\03\176\100\u02e9\117\01\00\00\u02ea\u02eb\05\145\00\u02eb"+
+ "\u02ec\01\00\00\u02ec\u02ed\03\130\055\u02ed\121\01\00\00\u02ee\u02ef"+
+ "\03\124\053\u02ef\u02f4\01\00\00\u02f0\u02f1\05\024\00\u02f1\u02f2"+
+ "\01\00\00\u02f2\u02f3\03\124\053\u02f3\u02f5\01\00\00\u02f4\u02f0"+
+ "\01\00\00\u02f4\u02f7\01\00\00\u02f5\u02f6\01\00\00\u02f6\u02f4\01"+
+ "\00\00\u02f7\123\01\00\00\u02f8\u02f9\03\132\056\u02f9\u02fe\01\00"+
+ "\00\u02fa\u02fb\05\036\00\u02fb\u02fc\01\00\00\u02fc\u02fd\03\134"+
+ "\057\u02fd\u02ff\01\00\00\u02fe\u02fa\01\00\00\u02fe\u02ff\01\00\00"+
+ "\u02ff\125\01\00\00\u0300\u0301\03\130\055\u0301\u0306\01\00\00\u0302"+
+ "\u0303\05\024\00\u0303\u0304\01\00\00\u0304\u0305\03\120\051\u0305"+
+ "\u0307\01\00\00\u0306\u0302\01\00\00\u0306\u0309\01\00\00\u0307\u0308"+
+ "\01\00\00\u0308\u0306\01\00\00\u0309\127\01\00\00\u030a\u030b\05\033"+
+ "\00\u030b\u030c\01\00\00\u030c\u030d\05\034\00\u030d\u030f\01\00\00"+
+ "\u030e\u030a\01\00\00\u030e\u0311\01\00\00\u030f\u0310\01\00\00\u0310"+
+ "\u030e\01\00\00\u0311\u0312\01\00\00\u0312\u0313\05\036\00\u0313\u0314"+
+ "\01\00\00\u0314\u0315\03\134\057\u0315\131\01\00\00\u0316\u0317\05"+
+ "\145\00\u0317\u031c\01\00\00\u0318\u0319\05\033\00\u0319\u031a\01"+
+ "\00\00\u031a\u031b\05\034\00\u031b\u031d\01\00\00\u031c\u0318\01\00"+
+ "\00\u031c\u031f\01\00\00\u031d\u031e\01\00\00\u031e\u031c\01\00\00"+
+ "\u031f\133\01\00\00\u0320\u0321\03\136\060\u0321\u0325\01\00\00\u0322"+
+ "\u0323\03\u00d0\151\u0323\u0325\01\00\00\u0324\u0320\01\00\00\u0324"+
+ "\u0322\01\00\00\u0325\135\01\00\00\u0326\u0327\05\027\00\u0327\u0336"+
+ "\01\00\00\u0328\u0329\03\134\057\u0329\u032e\01\00\00\u032a\u032b"+
+ "\05\024\00\u032b\u032c\01\00\00\u032c\u032d\03\134\057\u032d\u032f"+
+ "\01\00\00\u032e\u032a\01\00\00\u032e\u0331\01\00\00\u032f\u0330\01"+
+ "\00\00\u0330\u032e\01\00\00\u0331\u0334\01\00\00\u0332\u0333\05\024"+
+ "\00\u0333\u0335\01\00\00\u0334\u0332\01\00\00\u0334\u0335\01\00\00"+
+ "\u0335\u0337\01\00\00\u0336\u0328\01\00\00\u0336\u0337\01\00\00\u0337"+
+ "\u0338\01\00\00\u0338\u0339\05\030\00\u0339\137\01\00\00\u033a\u033b"+
+ "\03\u008c\107\u033b\u0353\01\00\00\u033c\u033d\05\012\00\u033d\u0353"+
+ "\01\00\00\u033e\u033f\05\013\00\u033f\u0353\01\00\00\u0340\u0341\05"+
+ "\014\00\u0341\u0353\01\00\00\u0342\u0343\05\07\00\u0343\u0353\01\00"+
+ "\00\u0344\u0345\05\015\00\u0345\u0353\01\00\00\u0346\u0347\05\016"+
+ "\00\u0347\u0353\01\00\00\u0348\u0349\05\037\00\u0349\u0353\01\00\00"+
+ "\u034a\u034b\05\040\00\u034b\u0353\01\00\00\u034c\u034d\05\041\00"+
+ "\u034d\u0353\01\00\00\u034e\u034f\05\042\00\u034f\u0353\01\00\00\u0350"+
+ "\u0351\05\017\00\u0351\u0353\01\00\00\u0352\u033a\01\00\00\u0352\u033c"+
+ "\01\00\00\u0352\u033e\01\00\00\u0352\u0340\01\00\00\u0352\u0342\01"+
+ "\00\00\u0352\u0344\01\00\00\u0352\u0346\01\00\00\u0352\u0348\01\00"+
+ "\00\u0352\u034a\01\00\00\u0352\u034c\01\00\00\u0352\u034e\01\00\00"+
+ "\u0352\u0350\01\00\00\u0353\141\01\00\00\u0354\u0355\03\u0082\102"+
+ "\u0355\143\01\00\00\u0356\u0357\05\145\00\u0357\145\01\00\00\u0358"+
+ "\u0359\03\u0082\102\u0359\147\01\00\00\u035a\u035b\03\152\066\u035b"+
+ "\u0360\01\00\00\u035c\u035d\05\033\00\u035d\u035e\01\00\00\u035e\u035f"+
+ "\05\034\00\u035f\u0361\01\00\00\u0360\u035c\01\00\00\u0360\u0363\01"+
+ "\00\00\u0361\u0362\01\00\00\u0362\u0360\01\00\00\u0363\u036f\01\00"+
+ "\00\u0364\u0365\03\154\067\u0365\u036a\01\00\00\u0366\u0367\05\033"+
+ "\00\u0367\u0368\01\00\00\u0368\u0369\05\034\00\u0369\u036b\01\00\00"+
+ "\u036a\u0366\01\00\00\u036a\u036d\01\00\00\u036b\u036c\01\00\00\u036c"+
+ "\u036a\01\00\00\u036d\u036f\01\00\00\u036e\u035a\01\00\00\u036e\u0364"+
+ "\01\00\00\u036f\151\01\00\00\u0370\u0371\05\145\00\u0371\u0374\01"+
+ "\00\00\u0372\u0373\03\160\071\u0373\u0375\01\00\00\u0374\u0372\01"+
+ "\00\00\u0374\u0375\01\00\00\u0375\u037e\01\00\00\u0376\u0377\05\010"+
+ "\00\u0377\u0378\01\00\00\u0378\u0379\05\145\00\u0379\u037c\01\00\00"+
+ "\u037a\u037b\03\160\071\u037b\u037d\01\00\00\u037c\u037a\01\00\00"+
+ "\u037c\u037d\01\00\00\u037d\u037f\01\00\00\u037e\u0376\01\00\00\u037e"+
+ "\u0381\01\00\00\u037f\u0380\01\00\00\u0380\u037e\01\00\00\u0381\153"+
+ "\01\00\00\u0382\u0383\05\043\00\u0383\u0393\01\00\00\u0384\u0385\05"+
+ "\044\00\u0385\u0393\01\00\00\u0386\u0387\05\045\00\u0387\u0393\01"+
+ "\00\00\u0388\u0389\05\046\00\u0389\u0393\01\00\00\u038a\u038b\05\047"+
+ "\00\u038b\u0393\01\00\00\u038c\u038d\05\050\00\u038d\u0393\01\00\00"+
+ "\u038e\u038f\05\051\00\u038f\u0393\01\00\00\u0390\u0391\05\052\00"+
+ "\u0391\u0393\01\00\00\u0392\u0382\01\00\00\u0392\u0384\01\00\00\u0392"+
+ "\u0386\01\00\00\u0392\u0388\01\00\00\u0392\u038a\01\00\00\u0392\u038c"+
+ "\01\00\00\u0392\u038e\01\00\00\u0392\u0390\01\00\00\u0393\155\01\00"+
+ "\00\u0394\u0395\05\016\00\u0395\u0399\01\00\00\u0396\u0397\03\u008c"+
+ "\107\u0397\u0399\01\00\00\u0398\u0394\01\00\00\u0398\u0396\01\00\00"+
+ "\u0399\157\01\00\00\u039a\u039b\05\023\00\u039b\u039c\01\00\00\u039c"+
+ "\u039d\03\162\072\u039d\u03a2\01\00\00\u039e\u039f\05\024\00\u039f"+
+ "\u03a0\01\00\00\u03a0\u03a1\03\162\072\u03a1\u03a3\01\00\00\u03a2"+
+ "\u039e\01\00\00\u03a2\u03a5\01\00\00\u03a3\u03a4\01\00\00\u03a4\u03a2"+
+ "\01\00\00\u03a5\u03a6\01\00\00\u03a6\u03a7\05\025\00\u03a7\161\01"+
+ "\00\00\u03a8\u03a9\03\150\065\u03a9\u03b7\01\00\00\u03aa\u03ab\05"+
+ "\053\00\u03ab\u03b4\01\00\00\u03ac\u03ad\05\021\00\u03ad\u03b1\01"+
+ "\00\00\u03ae\u03af\05\054\00\u03af\u03b1\01\00\00\u03b0\u03ac\01\00"+
+ "\00\u03b0\u03ae\01\00\00\u03b1\u03b2\01\00\00\u03b2\u03b3\03\150\065"+
+ "\u03b3\u03b5\01\00\00\u03b4\u03b0\01\00\00\u03b4\u03b5\01\00\00\u03b5"+
+ "\u03b7\01\00\00\u03b6\u03a8\01\00\00\u03b6\u03aa\01\00\00\u03b7\163"+
+ "\01\00\00\u03b8\u03b9\03\u0082\102\u03b9\u03be\01\00\00\u03ba\u03bb"+
+ "\05\024\00\u03bb\u03bc\01\00\00\u03bc\u03bd\03\u0082\102\u03bd\u03bf"+
+ "\01\00\00\u03be\u03ba\01\00\00\u03be\u03c1\01\00\00\u03bf\u03c0\01"+
+ "\00\00\u03c0\u03be\01\00\00\u03c1\165\01\00\00\u03c2\u03c3\05\055"+
+ "\00\u03c3\u03c6\01\00\00\u03c4\u03c5\03\170\075\u03c5\u03c7\01\00"+
+ "\00\u03c6\u03c4\01\00\00\u03c6\u03c7\01\00\00\u03c7\u03c8\01\00\00"+
+ "\u03c8\u03c9\05\056\00\u03c9\167\01\00\00\u03ca\u03cb\03\u00b0\131"+
+ "\u03cb\u03cc\01\00\00\u03cc\u03cd\03\150\065\u03cd\u03ce\01\00\00"+
+ "\u03ce\u03cf\03\172\076\u03cf\171\01\00\00\u03d0\u03d1\03\132\056"+
+ "\u03d1\u03d6\01\00\00\u03d2\u03d3\05\024\00\u03d3\u03d4\01\00\00\u03d4"+
+ "\u03d5\03\170\075\u03d5\u03d7\01\00\00\u03d6\u03d2\01\00\00\u03d6"+
+ "\u03d7\01\00\00\u03d7\u03dd\01\00\00\u03d8\u03d9\05\057\00\u03d9\u03da"+
+ "\01\00\00\u03da\u03db\03\132\056\u03db\u03dd\01\00\00\u03dc\u03d0"+
+ "\01\00\00\u03dc\u03d8\01\00\00\u03dd\173\01\00\00\u03de\u03df\03\u00a8"+
+ "\125\u03df\175\01\00\00\u03e0\u03e1\05\027\00\u03e1\u03e4\01\00\00"+
+ "\u03e2\u03e3\03\u0080\101\u03e3\u03e5\01\00\00\u03e4\u03e2\01\00\00"+
+ "\u03e4\u03e5\01\00\00\u03e5\u03e8\01\00\00\u03e6\u03e7\03\u00aa\126"+
+ "\u03e7\u03e9\01\00\00\u03e8\u03e6\01\00\00\u03e8\u03eb\01\00\00\u03e9"+
+ "\u03ea\01\00\00\u03ea\u03e8\01\00\00\u03eb\u03ec\01\00\00\u03ec\u03ed"+
+ "\05\030\00\u03ed\177\01\00\00\u03ee\u03ef\03\u0106\u0084\u03ef\u03f1"+
+ "\01\00\00\u03f0\u03ee\01\00\00\u03f0\u03f1\01\00\00\u03f1\u03f6\01"+
+ "\00\00\u03f2\u03f3\05\060\00\u03f3\u03f7\01\00\00\u03f4\u03f5\05\054"+
+ "\00\u03f5\u03f7\01\00\00\u03f6\u03f2\01\00\00\u03f6\u03f4\01\00\00"+
+ "\u03f7\u03f8\01\00\00\u03f8\u03f9\03\u010c\u0087\u03f9\u03fa\01\00"+
+ "\00\u03fa\u03fb\05\05\00\u03fb\u040b\01\00\00\u03fc\u03fd\03\u00f6"+
+ "\174\u03fd\u03fe\01\00\00\u03fe\u03ff\05\010\00\u03ff\u0402\01\00"+
+ "\00\u0400\u0401\03\u0106\u0084\u0401\u0403\01\00\00\u0402\u0400\01"+
+ "\00\00\u0402\u0403\01\00\00\u0403\u0404\01\00\00\u0404\u0405\05\054"+
+ "\00\u0405\u0406\01\00\00\u0406\u0407\03\u010c\u0087\u0407\u0408\01"+
+ "\00\00\u0408\u0409\05\05\00\u0409\u040b\01\00\00\u040a\u03f0\01\00"+
+ "\00\u040a\u03fc\01\00\00\u040b\u0081\01\00\00\u040c\u040d\05\145\00"+
+ "\u040d\u0412\01\00\00\u040e\u040f\05\010\00\u040f\u0410\01\00\00\u0410"+
+ "\u0411\05\145\00\u0411\u0413\01\00\00\u0412\u040e\01\00\00\u0412\u0415"+
+ "\01\00\00\u0413\u0414\01\00\00\u0414\u0412\01\00\00\u0415\u0083\01"+
+ "\00\00\u0416\u0417\03\u0086\104\u0417\u0423\01\00\00\u0418\u0419\05"+
+ "\140\00\u0419\u0423\01\00\00\u041a\u041b\05\141\00\u041b\u0423\01"+
+ "\00\00\u041c\u041d\05\142\00\u041d\u0423\01\00\00\u041e\u041f\03\u0088"+
+ "\105\u041f\u0423\01\00\00\u0420\u0421\05\061\00\u0421\u0423\01\00"+
+ "\00\u0422\u0416\01\00\00\u0422\u0418\01\00\00\u0422\u041a\01\00\00"+
+ "\u0422\u041c\01\00\00\u0422\u041e\01\00\00\u0422\u0420\01\00\00\u0423"+
+ "\u0085\01\00\00\u0424\u0425\05\135\00\u0425\u042b\01\00\00\u0426\u0427"+
+ "\05\137\00\u0427\u042b\01\00\00\u0428\u0429\05\136\00\u0429\u042b"+
+ "\01\00\00\u042a\u0424\01\00\00\u042a\u0426\01\00\00\u042a\u0428\01"+
+ "\00\00\u042b\u0087\01\00\00\u042c\u042d\05\062\00\u042d\u0431\01\00"+
+ "\00\u042e\u042f\05\063\00\u042f\u0431\01\00\00\u0430\u042c\01\00\00"+
+ "\u0430\u042e\01\00\00\u0431\u0089\01\00\00\u0432\u0433\03\u008c\107"+
+ "\u0433\u0435\01\00\00\u0434\u0432\01\00\00\u0435\u0436\01\00\00\u0436"+
+ "\u0432\01\00\00\u0436\u0437\01\00\00\u0437\u008b\01\00\00\u0438\u0439"+
+ "\05\064\00\u0439\u043a\01\00\00\u043a\u043b\03\u008e\110\u043b\u0446"+
+ "\01\00\00\u043c\u043d\05\055\00\u043d\u0442\01\00\00\u043e\u043f\03"+
+ "\u0090\111\u043f\u0443\01\00\00\u0440\u0441\03\u0094\113\u0441\u0443"+
+ "\01\00\00\u0442\u043e\01\00\00\u0442\u0440\01\00\00\u0442\u0443\01"+
+ "\00\00\u0443\u0444\01\00\00\u0444\u0445\05\056\00\u0445\u0447\01\00"+
+ "\00\u0446\u043c\01\00\00\u0446\u0447\01\00\00\u0447\u008d\01\00\00"+
+ "\u0448\u0449\05\145\00\u0449\u044e\01\00\00\u044a\u044b\05\010\00"+
+ "\u044b\u044c\01\00\00\u044c\u044d\05\145\00\u044d\u044f\01\00\00\u044e"+
+ "\u044a\01\00\00\u044e\u0451\01\00\00\u044f\u0450\01\00\00\u0450\u044e"+
+ "\01\00\00\u0451\u008f\01\00\00\u0452\u0453\03\u0092\112\u0453\u0458"+
+ "\01\00\00\u0454\u0455\05\024\00\u0455\u0456\01\00\00\u0456\u0457\03"+
+ "\u0092\112\u0457\u0459\01\00\00\u0458\u0454\01\00\00\u0458\u045b\01"+
+ "\00\00\u0459\u045a\01\00\00\u045a\u0458\01\00\00\u045b\u0091\01\00"+
+ "\00\u045c\u045d\05\145\00\u045d\u045e\01\00\00\u045e\u045f\05\036"+
+ "\00\u045f\u0460\01\00\00\u0460\u0461\03\u0094\113\u0461\u0093\01\00"+
+ "\00\u0462\u0463\03\u00d4\153\u0463\u0469\01\00\00\u0464\u0465\03\u008c"+
+ "\107\u0465\u0469\01\00\00\u0466\u0467\03\u0096\114\u0467\u0469\01"+
+ "\00\00\u0468\u0462\01\00\00\u0468\u0464\01\00\00\u0468\u0466\01\00"+
+ "\00\u0469\u0095\01\00\00\u046a\u046b\05\027\00\u046b\u0476\01\00\00"+
+ "\u046c\u046d\03\u0094\113\u046d\u0472\01\00\00\u046e\u046f\05\024"+
+ "\00\u046f\u0470\01\00\00\u0470\u0471\03\u0094\113\u0471\u0473\01\00"+
+ "\00\u0472\u046e\01\00\00\u0472\u0475\01\00\00\u0473\u0474\01\00\00"+
+ "\u0474\u0472\01\00\00\u0475\u0477\01\00\00\u0476\u046c\01\00\00\u0476"+
+ "\u0477\01\00\00\u0477\u047a\01\00\00\u0478\u0479\05\024\00\u0479\u047b"+
+ "\01\00\00\u047a\u0478\01\00\00\u047a\u047b\01\00\00\u047b\u047c\01"+
+ "\00\00\u047c\u047d\05\030\00\u047d\u0097\01\00\00\u047e\u047f\05\064"+
+ "\00\u047f\u0480\01\00\00\u0480\u0481\05\031\00\u0481\u0482\01\00\00"+
+ "\u0482\u0483\05\145\00\u0483\u0484\01\00\00\u0484\u0485\03\u009a\116"+
+ "\u0485\u0099\01\00\00\u0486\u0487\05\027\00\u0487\u048a\01\00\00\u0488"+
+ "\u0489\03\u009c\117\u0489\u048b\01\00\00\u048a\u0488\01\00\00\u048a"+
+ "\u048d\01\00\00\u048b\u048c\01\00\00\u048c\u048a\01\00\00\u048d\u048e"+
+ "\01\00\00\u048e\u048f\05\030\00\u048f\u009b\01\00\00\u0490\u0491\03"+
+ "\016\010\u0491\u0492\01\00\00\u0492\u0493\03\u009e\120\u0493\u009d"+
+ "\01\00\00\u0494\u0495\03\150\065\u0495\u0496\01\00\00\u0496\u0497"+
+ "\03\u00a0\121\u0497\u0498\01\00\00\u0498\u0499\05\05\00\u0499\u04b3"+
+ "\01\00\00\u049a\u049b\03\022\012\u049b\u049e\01\00\00\u049c\u049d"+
+ "\05\05\00\u049d\u049f\01\00\00\u049e\u049c\01\00\00\u049e\u049f\01"+
+ "\00\00\u049f\u04b3\01\00\00\u04a0\u04a1\03\046\024\u04a1\u04a4\01"+
+ "\00\00\u04a2\u04a3\05\05\00\u04a3\u04a5\01\00\00\u04a4\u04a2\01\00"+
+ "\00\u04a4\u04a5\01\00\00\u04a5\u04b3\01\00\00\u04a6\u04a7\03\032\016"+
+ "\u04a7\u04aa\01\00\00\u04a8\u04a9\05\05\00\u04a9\u04ab\01\00\00\u04aa"+
+ "\u04a8\01\00\00\u04aa\u04ab\01\00\00\u04ab\u04b3\01\00\00\u04ac\u04ad"+
+ "\03\u0098\115\u04ad\u04b0\01\00\00\u04ae\u04af\05\05\00\u04af\u04b1"+
+ "\01\00\00\u04b0\u04ae\01\00\00\u04b0\u04b1\01\00\00\u04b1\u04b3\01"+
+ "\00\00\u04b2\u0494\01\00\00\u04b2\u049a\01\00\00\u04b2\u04a0\01\00"+
+ "\00\u04b2\u04a6\01\00\00\u04b2\u04ac\01\00\00\u04b3\u009f\01\00\00"+
+ "\u04b4\u04b5\03\u00a2\122\u04b5\u04b9\01\00\00\u04b6\u04b7\03\u00a4"+
+ "\123\u04b7\u04b9\01\00\00\u04b8\u04b4\01\00\00\u04b8\u04b6\01\00\00"+
+ "\u04b9\u00a1\01\00\00\u04ba\u04bb\05\145\00\u04bb\u04bc\01\00\00\u04bc"+
+ "\u04bd\05\055\00\u04bd\u04be\01\00\00\u04be\u04bf\05\056\00\u04bf"+
+ "\u04c2\01\00\00\u04c0\u04c1\03\u00a6\124\u04c1\u04c3\01\00\00\u04c2"+
+ "\u04c0\01\00\00\u04c2\u04c3\01\00\00\u04c3\u00a3\01\00\00\u04c4\u04c5"+
+ "\03\122\052\u04c5\u00a5\01\00\00\u04c6\u04c7\05\065\00\u04c7\u04c8"+
+ "\01\00\00\u04c8\u04c9\03\u0094\113\u04c9\u00a7\01\00\00\u04ca\u04cb"+
+ "\05\027\00\u04cb\u04ce\01\00\00\u04cc\u04cd\03\u00aa\126\u04cd\u04cf"+
+ "\01\00\00\u04ce\u04cc\01\00\00\u04ce\u04d1\01\00\00\u04cf\u04d0\01"+
+ "\00\00\u04d0\u04ce\01\00\00\u04d1\u04d2\01\00\00\u04d2\u04d3\05\030"+
+ "\00\u04d3\u00a9\01\00\00\u04d4\u04d5\03\u00ac\127\u04d5\u04db\01\00"+
+ "\00\u04d6\u04d7\03\010\05\u04d7\u04db\01\00\00\u04d8\u04d9\03\u00b2"+
+ "\132\u04d9\u04db\01\00\00\u04da\u04d4\01\00\00\u04da\u04d6\01\00\00"+
+ "\u04da\u04d8\01\00\00\u04db\u00ab\01\00\00\u04dc\u04dd\03\u00ae\130"+
+ "\u04dd\u04de\01\00\00\u04de\u04df\05\05\00\u04df\u00ad\01\00\00\u04e0"+
+ "\u04e1\03\u00b0\131\u04e1\u04e2\01\00\00\u04e2\u04e3\03\150\065\u04e3"+
+ "\u04e4\01\00\00\u04e4\u04e5\03\122\052\u04e5\u00af\01\00\00\u04e6"+
+ "\u04e7\03\156\070\u04e7\u04e9\01\00\00\u04e8\u04e6\01\00\00\u04e8"+
+ "\u04eb\01\00\00\u04e9\u04ea\01\00\00\u04ea\u04e8\01\00\00\u04eb\u00b1"+
+ "\01\00\00\u04ec\u04ed\03\u00a8\125\u04ed\u056d\01\00\00\u04ee\u04ef"+
+ "\05\144\00\u04ef\u04f0\01\00\00\u04f0\u04f1\03\u00d0\151\u04f1\u04f6"+
+ "\01\00\00\u04f2\u04f3\05\066\00\u04f3\u04f4\01\00\00\u04f4\u04f5\03"+
+ "\u00d0\151\u04f5\u04f7\01\00\00\u04f6\u04f2\01\00\00\u04f6\u04f7\01"+
+ "\00\00\u04f7\u04f8\01\00\00\u04f8\u04f9\05\05\00\u04f9\u056d\01\00"+
+ "\00\u04fa\u04fb\05\067\00\u04fb\u04fc\01\00\00\u04fc\u04fd\03\u00c8"+
+ "\145\u04fd\u04fe\01\00\00\u04fe\u04ff\03\u00b2\132\u04ff\u0504\01"+
+ "\00\00\u0500\u0501\05\070\00\u0501\u0502\01\00\00\u0502\u0503\03\u00b2"+
+ "\132\u0503\u0505\01\00\00\u0504\u0500\01\00\00\u0504\u0505\01\00\00"+
+ "\u0505\u056d\01\00\00\u0506\u0507\05\071\00\u0507\u0508\01\00\00\u0508"+
+ "\u0509\05\055\00\u0509\u050a\01\00\00\u050a\u050b\03\u00c0\141\u050b"+
+ "\u050c\01\00\00\u050c\u050d\05\056\00\u050d\u050e\01\00\00\u050e\u050f"+
+ "\03\u00b2\132\u050f\u056d\01\00\00\u0510\u0511\05\072\00\u0511\u0512"+
+ "\01\00\00\u0512\u0513\03\u00c8\145\u0513\u0514\01\00\00\u0514\u0515"+
+ "\03\u00b2\132\u0515\u056d\01\00\00\u0516\u0517\05\073\00\u0517\u0518"+
+ "\01\00\00\u0518\u0519\03\u00b2\132\u0519\u051a\01\00\00\u051a\u051b"+
+ "\05\072\00\u051b\u051c\01\00\00\u051c\u051d\03\u00c8\145\u051d\u051e"+
+ "\01\00\00\u051e\u051f\05\05\00\u051f\u056d\01\00\00\u0520\u0521\05"+
+ "\074\00\u0521\u0522\01\00\00\u0522\u0523\03\u00a8\125\u0523\u0530"+
+ "\01\00\00\u0524\u0525\03\u00b4\133\u0525\u0526\01\00\00\u0526\u0527"+
+ "\05\075\00\u0527\u0528\01\00\00\u0528\u0529\03\u00a8\125\u0529\u0531"+
+ "\01\00\00\u052a\u052b\03\u00b4\133\u052b\u0531\01\00\00\u052c\u052d"+
+ "\05\075\00\u052d\u052e\01\00\00\u052e\u052f\03\u00a8\125\u052f\u0531"+
+ "\01\00\00\u0530\u0524\01\00\00\u0530\u052a\01\00\00\u0530\u052c\01"+
+ "\00\00\u0531\u056d\01\00\00\u0532\u0533\05\076\00\u0533\u0534\01\00"+
+ "\00\u0534\u0535\03\u00c8\145\u0535\u0536\01\00\00\u0536\u0537\05\027"+
+ "\00\u0537\u0538\01\00\00\u0538\u0539\03\u00ba\136\u0539\u053a\01\00"+
+ "\00\u053a\u053b\05\030\00\u053b\u056d\01\00\00\u053c\u053d\05\040"+
+ "\00\u053d\u053e\01\00\00\u053e\u053f\03\u00c8\145\u053f\u0540\01\00"+
+ "\00\u0540\u0541\03\u00a8\125\u0541\u056d\01\00\00\u0542\u0543\05\077"+
+ "\00\u0543\u0546\01\00\00\u0544\u0545\03\u00d0\151\u0545\u0547\01\00"+
+ "\00\u0546\u0544\01\00\00\u0546\u0547\01\00\00\u0547\u0548\01\00\00"+
+ "\u0548\u0549\05\05\00\u0549\u056d\01\00\00\u054a\u054b\05\100\00\u054b"+
+ "\u054c\01\00\00\u054c\u054d\03\u00d0\151\u054d\u054e\01\00\00\u054e"+
+ "\u054f\05\05\00\u054f\u056d\01\00\00\u0550\u0551\05\101\00\u0551\u0554"+
+ "\01\00\00\u0552\u0553\05\145\00\u0553\u0555\01\00\00\u0554\u0552\01"+
+ "\00\00\u0554\u0555\01\00\00\u0555\u0556\01\00\00\u0556\u0557\05\05"+
+ "\00\u0557\u056d\01\00\00\u0558\u0559\05\102\00\u0559\u055c\01\00\00"+
+ "\u055a\u055b\05\145\00\u055b\u055d\01\00\00\u055c\u055a\01\00\00\u055c"+
+ "\u055d\01\00\00\u055d\u055e\01\00\00\u055e\u055f\05\05\00\u055f\u056d"+
+ "\01\00\00\u0560\u0561\05\05\00\u0561\u056d\01\00\00\u0562\u0563\03"+
+ "\u00cc\147\u0563\u0564\01\00\00\u0564\u0565\05\05\00\u0565\u056d\01"+
+ "\00\00\u0566\u0567\05\145\00\u0567\u0568\01\00\00\u0568\u0569\05\066"+
+ "\00\u0569\u056a\01\00\00\u056a\u056b\03\u00b2\132\u056b\u056d\01\00"+
+ "\00\u056c\u04ec\01\00\00\u056c\u04ee\01\00\00\u056c\u04fa\01\00\00"+
+ "\u056c\u0506\01\00\00\u056c\u0510\01\00\00\u056c\u0516\01\00\00\u056c"+
+ "\u0520\01\00\00\u056c\u0532\01\00\00\u056c\u053c\01\00\00\u056c\u0542"+
+ "\01\00\00\u056c\u054a\01\00\00\u056c\u0550\01\00\00\u056c\u0558\01"+
+ "\00\00\u056c\u0560\01\00\00\u056c\u0562\01\00\00\u056c\u0566\01\00"+
+ "\00\u056d\u00b3\01\00\00\u056e\u056f\03\u00b6\134\u056f\u0572\01\00"+
+ "\00\u0570\u0571\03\u00b6\134\u0571\u0573\01\00\00\u0572\u0570\01\00"+
+ "\00\u0572\u0575\01\00\00\u0573\u0574\01\00\00\u0574\u0572\01\00\00"+
+ "\u0575\u00b5\01\00\00\u0576\u0577\05\103\00\u0577\u0578\01\00\00\u0578"+
+ "\u0579\05\055\00\u0579\u057a\01\00\00\u057a\u057b\03\u00b8\135\u057b"+
+ "\u057c\01\00\00\u057c\u057d\05\056\00\u057d\u057e\01\00\00\u057e\u057f"+
+ "\03\u00a8\125\u057f\u00b7\01\00\00\u0580\u0581\03\u00b0\131\u0581"+
+ "\u0582\01\00\00\u0582\u0583\03\150\065\u0583\u0584\01\00\00\u0584"+
+ "\u0585\03\132\056\u0585\u00b9\01\00\00\u0586\u0587\03\u00bc\137\u0587"+
+ "\u0589\01\00\00\u0588\u0586\01\00\00\u0588\u058b\01\00\00\u0589\u058a"+
+ "\01\00\00\u058a\u0588\01\00\00\u058b\u00bb\01\00\00\u058c\u058d\03"+
+ "\u00be\140\u058d\u058f\01\00\00\u058e\u058c\01\00\00\u058f\u0590\01"+
+ "\00\00\u0590\u058c\01\00\00\u0590\u0591\01\00\00\u0591\u0594\01\00"+
+ "\00\u0592\u0593\03\u00aa\126\u0593\u0595\01\00\00\u0594\u0592\01\00"+
+ "\00\u0594\u0597\01\00\00\u0595\u0596\01\00\00\u0596\u0594\01\00\00"+
+ "\u0597\u00bd\01\00\00\u0598\u0599\05\104\00\u0599\u059a\01\00\00\u059a"+
+ "\u059b\03\u00ce\150\u059b\u059c\01\00\00\u059c\u059d\05\066\00\u059d"+
+ "\u05a9\01\00\00\u059e\u059f\05\104\00\u059f\u05a0\01\00\00\u05a0\u05a1"+
+ "\03\144\063\u05a1\u05a2\01\00\00\u05a2\u05a3\05\066\00\u05a3\u05a9"+
+ "\01\00\00\u05a4\u05a5\05\065\00\u05a5\u05a6\01\00\00\u05a6\u05a7\05"+
+ "\066\00\u05a7\u05a9\01\00\00\u05a8\u0598\01\00\00\u05a8\u059e\01\00"+
+ "\00\u05a8\u05a4\01\00\00\u05a9\u00bf\01\00\00\u05aa\u05ab\03\u00c4"+
+ "\143\u05ab\u05bd\01\00\00\u05ac\u05ad\03\u00c2\142\u05ad\u05af\01"+
+ "\00\00\u05ae\u05ac\01\00\00\u05ae\u05af\01\00\00\u05af\u05b0\01\00"+
+ "\00\u05b0\u05b1\05\05\00\u05b1\u05b4\01\00\00\u05b2\u05b3\03\u00d0"+
+ "\151\u05b3\u05b5\01\00\00\u05b4\u05b2\01\00\00\u05b4\u05b5\01\00\00"+
+ "\u05b5\u05b6\01\00\00\u05b6\u05b7\05\05\00\u05b7\u05ba\01\00\00\u05b8"+
+ "\u05b9\03\u00c6\144\u05b9\u05bb\01\00\00\u05ba\u05b8\01\00\00\u05ba"+
+ "\u05bb\01\00\00\u05bb\u05bd\01\00\00\u05bc\u05aa\01\00\00\u05bc\u05ae"+
+ "\01\00\00\u05bd\u00c1\01\00\00\u05be\u05bf\03\u00ae\130\u05bf\u05c3"+
+ "\01\00\00\u05c0\u05c1\03\u00ca\146\u05c1\u05c3\01\00\00\u05c2\u05be"+
+ "\01\00\00\u05c2\u05c0\01\00\00\u05c3\u00c3\01\00\00\u05c4\u05c5\03"+
+ "\u00b0\131\u05c5\u05c6\01\00\00\u05c6\u05c7\03\150\065\u05c7\u05c8"+
+ "\01\00\00\u05c8\u05c9\05\145\00\u05c9\u05ca\01\00\00\u05ca\u05cb\05"+
+ "\066\00\u05cb\u05cc\01\00\00\u05cc\u05cd\03\u00d0\151\u05cd\u00c5"+
+ "\01\00\00\u05ce\u05cf\03\u00ca\146\u05cf\u00c7\01\00\00\u05d0\u05d1"+
+ "\05\055\00\u05d1\u05d2\01\00\00\u05d2\u05d3\03\u00d0\151\u05d3\u05d4"+
+ "\01\00\00\u05d4\u05d5\05\056\00\u05d5\u00c9\01\00\00\u05d6\u05d7\03"+
+ "\u00d0\151\u05d7\u05dc\01\00\00\u05d8\u05d9\05\024\00\u05d9\u05da"+
+ "\01\00\00\u05da\u05db\03\u00d0\151\u05db\u05dd\01\00\00\u05dc\u05d8"+
+ "\01\00\00\u05dc\u05df\01\00\00\u05dd\u05de\01\00\00\u05de\u05dc\01"+
+ "\00\00\u05df\u00cb\01\00\00\u05e0\u05e1\03\u00d0\151\u05e1\u00cd\01"+
+ "\00\00\u05e2\u05e3\03\u00d0\151\u05e3\u00cf\01\00\00\u05e4\u05e5\03"+
+ "\u00d4\153\u05e5\u05ea\01\00\00\u05e6\u05e7\03\u00d2\152\u05e7\u05e8"+
+ "\01\00\00\u05e8\u05e9\03\u00d0\151\u05e9\u05eb\01\00\00\u05ea\u05e6"+
+ "\01\00\00\u05ea\u05eb\01\00\00\u05eb\u00d1\01\00\00\u05ec\u05ed\05"+
+ "\036\00\u05ed\u0613\01\00\00\u05ee\u05ef\05\105\00\u05ef\u0613\01"+
+ "\00\00\u05f0\u05f1\05\106\00\u05f1\u0613\01\00\00\u05f2\u05f3\05\107"+
+ "\00\u05f3\u0613\01\00\00\u05f4\u05f5\05\110\00\u05f5\u0613\01\00\00"+
+ "\u05f6\u05f7\05\111\00\u05f7\u0613\01\00\00\u05f8\u05f9\05\112\00"+
+ "\u05f9\u0613\01\00\00\u05fa\u05fb\05\113\00\u05fb\u0613\01\00\00\u05fc"+
+ "\u05fd\05\114\00\u05fd\u0613\01\00\00\u05fe\u05ff\05\023\00\u05ff"+
+ "\u0600\01\00\00\u0600\u0601\05\023\00\u0601\u0602\01\00\00\u0602\u0603"+
+ "\05\036\00\u0603\u0613\01\00\00\u0604\u0605\05\025\00\u0605\u0606"+
+ "\01\00\00\u0606\u0607\05\025\00\u0607\u0608\01\00\00\u0608\u0609\05"+
+ "\025\00\u0609\u060a\01\00\00\u060a\u060b\05\036\00\u060b\u0613\01"+
+ "\00\00\u060c\u060d\05\025\00\u060d\u060e\01\00\00\u060e\u060f\05\025"+
+ "\00\u060f\u0610\01\00\00\u0610\u0611\05\036\00\u0611\u0613\01\00\00"+
+ "\u0612\u05ec\01\00\00\u0612\u05ee\01\00\00\u0612\u05f0\01\00\00\u0612"+
+ "\u05f2\01\00\00\u0612\u05f4\01\00\00\u0612\u05f6\01\00\00\u0612\u05f8"+
+ "\01\00\00\u0612\u05fa\01\00\00\u0612\u05fc\01\00\00\u0612\u05fe\01"+
+ "\00\00\u0612\u0604\01\00\00\u0612\u060c\01\00\00\u0613\u00d3\01\00"+
+ "\00\u0614\u0615\03\u00d6\154\u0615\u061e\01\00\00\u0616\u0617\05\053"+
+ "\00\u0617\u0618\01\00\00\u0618\u0619\03\u00d4\153\u0619\u061a\01\00"+
+ "\00\u061a\u061b\05\066\00\u061b\u061c\01\00\00\u061c\u061d\03\u00d4"+
+ "\153\u061d\u061f\01\00\00\u061e\u0616\01\00\00\u061e\u061f\01\00\00"+
+ "\u061f\u00d5\01\00\00\u0620\u0621\03\u00d8\155\u0621\u0626\01\00\00"+
+ "\u0622\u0623\05\115\00\u0623\u0624\01\00\00\u0624\u0625\03\u00d8\155"+
+ "\u0625\u0627\01\00\00\u0626\u0622\01\00\00\u0626\u0629\01\00\00\u0627"+
+ "\u0628\01\00\00\u0628\u0626\01\00\00\u0629\u00d7\01\00\00\u062a\u062b"+
+ "\03\u00da\156\u062b\u0630\01\00\00\u062c\u062d\05\116\00\u062d\u062e"+
+ "\01\00\00\u062e\u062f\03\u00da\156\u062f\u0631\01\00\00\u0630\u062c"+
+ "\01\00\00\u0630\u0633\01\00\00\u0631\u0632\01\00\00\u0632\u0630\01"+
+ "\00\00\u0633\u00d9\01\00\00\u0634\u0635\03\u00dc\157\u0635\u063a\01"+
+ "\00\00\u0636\u0637\05\117\00\u0637\u0638\01\00\00\u0638\u0639\03\u00dc"+
+ "\157\u0639\u063b\01\00\00\u063a\u0636\01\00\00\u063a\u063d\01\00\00"+
+ "\u063b\u063c\01\00\00\u063c\u063a\01\00\00\u063d\u00db\01\00\00\u063e"+
+ "\u063f\03\u00de\160\u063f\u0644\01\00\00\u0640\u0641\05\120\00\u0641"+
+ "\u0642\01\00\00\u0642\u0643\03\u00de\160\u0643\u0645\01\00\00\u0644"+
+ "\u0640\01\00\00\u0644\u0647\01\00\00\u0645\u0646\01\00\00\u0646\u0644"+
+ "\01\00\00\u0647\u00dd\01\00\00\u0648\u0649\03\u00e0\161\u0649\u064e"+
+ "\01\00\00\u064a\u064b\05\026\00\u064b\u064c\01\00\00\u064c\u064d\03"+
+ "\u00e0\161\u064d\u064f\01\00\00\u064e\u064a\01\00\00\u064e\u0651\01"+
+ "\00\00\u064f\u0650\01\00\00\u0650\u064e\01\00\00\u0651\u00df\01\00"+
+ "\00\u0652\u0653\03\u00e2\162\u0653\u065c\01\00\00\u0654\u0655\05\121"+
+ "\00\u0655\u0659\01\00\00\u0656\u0657\05\122\00\u0657\u0659\01\00\00"+
+ "\u0658\u0654\01\00\00\u0658\u0656\01\00\00\u0659\u065a\01\00\00\u065a"+
+ "\u065b\03\u00e2\162\u065b\u065d\01\00\00\u065c\u0658\01\00\00\u065c"+
+ "\u065f\01\00\00\u065d\u065e\01\00\00\u065e\u065c\01\00\00\u065f\u00e1"+
+ "\01\00\00\u0660\u0661\03\u00e4\163\u0661\u0666\01\00\00\u0662\u0663"+
+ "\05\123\00\u0663\u0664\01\00\00\u0664\u0665\03\150\065\u0665\u0667"+
+ "\01\00\00\u0666\u0662\01\00\00\u0666\u0667\01\00\00\u0667\u00e3\01"+
+ "\00\00\u0668\u0669\03\u00e8\165\u0669\u066e\01\00\00\u066a\u066b\03"+
+ "\u00e6\164\u066b\u066c\01\00\00\u066c\u066d\03\u00e8\165\u066d\u066f"+
+ "\01\00\00\u066e\u066a\01\00\00\u066e\u0671\01\00\00\u066f\u0670\01"+
+ "\00\00\u0670\u066e\01\00\00\u0671\u00e5\01\00\00\u0672\u0673\05\023"+
+ "\00\u0673\u0674\01\00\00\u0674\u0675\05\036\00\u0675\u067f\01\00\00"+
+ "\u0676\u0677\05\025\00\u0677\u0678\01\00\00\u0678\u0679\05\036\00"+
+ "\u0679\u067f\01\00\00\u067a\u067b\05\023\00\u067b\u067f\01\00\00\u067c"+
+ "\u067d\05\025\00\u067d\u067f\01\00\00\u067e\u0672\01\00\00\u067e\u0676"+
+ "\01\00\00\u067e\u067a\01\00\00\u067e\u067c\01\00\00\u067f\u00e7\01"+
+ "\00\00\u0680\u0681\03\u00ec\167\u0681\u0686\01\00\00\u0682\u0683\03"+
+ "\u00ea\166\u0683\u0684\01\00\00\u0684\u0685\03\u00ec\167\u0685\u0687"+
+ "\01\00\00\u0686\u0682\01\00\00\u0686\u0689\01\00\00\u0687\u0688\01"+
+ "\00\00\u0688\u0686\01\00\00\u0689\u00e9\01\00\00\u068a\u068b\05\023"+
+ "\00\u068b\u068c\01\00\00\u068c\u068d\05\023\00\u068d\u0699\01\00\00"+
+ "\u068e\u068f\05\025\00\u068f\u0690\01\00\00\u0690\u0691\05\025\00"+
+ "\u0691\u0692\01\00\00\u0692\u0693\05\025\00\u0693\u0699\01\00\00\u0694"+
+ "\u0695\05\025\00\u0695\u0696\01\00\00\u0696\u0697\05\025\00\u0697"+
+ "\u0699\01\00\00\u0698\u068a\01\00\00\u0698\u068e\01\00\00\u0698\u0694"+
+ "\01\00\00\u0699\u00eb\01\00\00\u069a\u069b\03\u00ee\170\u069b\u06a4"+
+ "\01\00\00\u069c\u069d\05\124\00\u069d\u06a1\01\00\00\u069e\u069f\05"+
+ "\125\00\u069f\u06a1\01\00\00\u06a0\u069c\01\00\00\u06a0\u069e\01\00"+
+ "\00\u06a1\u06a2\01\00\00\u06a2\u06a3\03\u00ee\170\u06a3\u06a5\01\00"+
+ "\00\u06a4\u06a0\01\00\00\u06a4\u06a7\01\00\00\u06a5\u06a6\01\00\00"+
+ "\u06a6\u06a4\01\00\00\u06a7\u00ed\01\00\00\u06a8\u06a9\03\u00f0\171"+
+ "\u06a9\u06b4\01\00\00\u06aa\u06ab\05\011\00\u06ab\u06b1\01\00\00\u06ac"+
+ "\u06ad\05\126\00\u06ad\u06b1\01\00\00\u06ae\u06af\05\127\00\u06af"+
+ "\u06b1\01\00\00\u06b0\u06aa\01\00\00\u06b0\u06ac\01\00\00\u06b0\u06ae"+
+ "\01\00\00\u06b1\u06b2\01\00\00\u06b2\u06b3\03\u00f0\171\u06b3\u06b5"+
+ "\01\00\00\u06b4\u06b0\01\00\00\u06b4\u06b7\01\00\00\u06b5\u06b6\01"+
+ "\00\00\u06b6\u06b4\01\00\00\u06b7\u00ef\01\00\00\u06b8\u06b9\05\124"+
+ "\00\u06b9\u06ba\01\00\00\u06ba\u06bb\03\u00f0\171\u06bb\u06cb\01\00"+
+ "\00\u06bc\u06bd\05\125\00\u06bd\u06be\01\00\00\u06be\u06bf\03\u00f0"+
+ "\171\u06bf\u06cb\01\00\00\u06c0\u06c1\05\130\00\u06c1\u06c2\01\00"+
+ "\00\u06c2\u06c3\03\u00f0\171\u06c3\u06cb\01\00\00\u06c4\u06c5\05\131"+
+ "\00\u06c5\u06c6\01\00\00\u06c6\u06c7\03\u00f0\171\u06c7\u06cb\01\00"+
+ "\00\u06c8\u06c9\03\u00f2\172\u06c9\u06cb\01\00\00\u06ca\u06b8\01\00"+
+ "\00\u06ca\u06bc\01\00\00\u06ca\u06c0\01\00\00\u06ca\u06c4\01\00\00"+
+ "\u06ca\u06c8\01\00\00\u06cb\u00f1\01\00\00\u06cc\u06cd\05\132\00\u06cd"+
+ "\u06ce\01\00\00\u06ce\u06cf\03\u00f0\171\u06cf\u06e5\01\00\00\u06d0"+
+ "\u06d1\05\133\00\u06d1\u06d2\01\00\00\u06d2\u06d3\03\u00f0\171\u06d3"+
+ "\u06e5\01\00\00\u06d4\u06d5\03\u00f4\173\u06d5\u06e5\01\00\00\u06d6"+
+ "\u06d7\03\u00f6\174\u06d7\u06da\01\00\00\u06d8\u06d9\03\u0108\u0085"+
+ "\u06d9\u06db\01\00\00\u06da\u06d8\01\00\00\u06da\u06dd\01\00\00\u06db"+
+ "\u06dc\01\00\00\u06dc\u06da\01\00\00\u06dd\u06e2\01\00\00\u06de\u06df"+
+ "\05\130\00\u06df\u06e3\01\00\00\u06e0\u06e1\05\131\00\u06e1\u06e3"+
+ "\01\00\00\u06e2\u06de\01\00\00\u06e2\u06e0\01\00\00\u06e2\u06e3\01"+
+ "\00\00\u06e3\u06e5\01\00\00\u06e4\u06cc\01\00\00\u06e4\u06d0\01\00"+
+ "\00\u06e4\u06d4\01\00\00\u06e4\u06d6\01\00\00\u06e5\u00f3\01\00\00"+
+ "\u06e6\u06e7\05\055\00\u06e7\u06e8\01\00\00\u06e8\u06e9\03\154\067"+
+ "\u06e9\u06ea\01\00\00\u06ea\u06eb\05\056\00\u06eb\u06ec\01\00\00\u06ec"+
+ "\u06ed\03\u00f0\171\u06ed\u06fb\01\00\00\u06ee\u06ef\05\055\00\u06ef"+
+ "\u06f4\01\00\00\u06f0\u06f1\03\150\065\u06f1\u06f5\01\00\00\u06f2"+
+ "\u06f3\03\u00d0\151\u06f3\u06f5\01\00\00\u06f4\u06f0\01\00\00\u06f4"+
+ "\u06f2\01\00\00\u06f5\u06f6\01\00\00\u06f6\u06f7\05\056\00\u06f7\u06f8"+
+ "\01\00\00\u06f8\u06f9\03\u00f2\172\u06f9\u06fb\01\00\00\u06fa\u06e6"+
+ "\01\00\00\u06fa\u06ee\01\00\00\u06fb\u00f5\01\00\00\u06fc\u06fd\03"+
+ "\u00c8\145\u06fd\u0739\01\00\00\u06fe\u06ff\05\060\00\u06ff\u0704"+
+ "\01\00\00\u0700\u0701\05\010\00\u0701\u0702\01\00\00\u0702\u0703\05"+
+ "\145\00\u0703\u0705\01\00\00\u0704\u0700\01\00\00\u0704\u0707\01\00"+
+ "\00\u0705\u0706\01\00\00\u0706\u0704\01\00\00\u0707\u070a\01\00\00"+
+ "\u0708\u0709\03\u00f8\175\u0709\u070b\01\00\00\u070a\u0708\01\00\00"+
+ "\u070a\u070b\01\00\00\u070b\u0739\01\00\00\u070c\u070d\05\054\00\u070d"+
+ "\u070e\01\00\00\u070e\u070f\03\u010a\u0086\u070f\u0739\01\00\00\u0710"+
+ "\u0711\03\u0084\103\u0711\u0739\01\00\00\u0712\u0713\05\134\00\u0713"+
+ "\u0714\01\00\00\u0714\u0715\03\u00fa\176\u0715\u0739\01\00\00\u0716"+
+ "\u0717\05\145\00\u0717\u071c\01\00\00\u0718\u0719\05\010\00\u0719"+
+ "\u071a\01\00\00\u071a\u071b\05\145\00\u071b\u071d\01\00\00\u071c\u0718"+
+ "\01\00\00\u071c\u071f\01\00\00\u071d\u071e\01\00\00\u071e\u071c\01"+
+ "\00\00\u071f\u0722\01\00\00\u0720\u0721\03\u00f8\175\u0721\u0723\01"+
+ "\00\00\u0722\u0720\01\00\00\u0722\u0723\01\00\00\u0723\u0739\01\00"+
+ "\00\u0724\u0725\03\154\067\u0725\u072a\01\00\00\u0726\u0727\05\033"+
+ "\00\u0727\u0728\01\00\00\u0728\u0729\05\034\00\u0729\u072b\01\00\00"+
+ "\u072a\u0726\01\00\00\u072a\u072d\01\00\00\u072b\u072c\01\00\00\u072c"+
+ "\u072a\01\00\00\u072d\u072e\01\00\00\u072e\u072f\05\010\00\u072f\u0730"+
+ "\01\00\00\u0730\u0731\05\020\00\u0731\u0739\01\00\00\u0732\u0733\05"+
+ "\032\00\u0733\u0734\01\00\00\u0734\u0735\05\010\00\u0735\u0736\01"+
+ "\00\00\u0736\u0737\05\020\00\u0737\u0739\01\00\00\u0738\u06fc\01\00"+
+ "\00\u0738\u06fe\01\00\00\u0738\u070c\01\00\00\u0738\u0710\01\00\00"+
+ "\u0738\u0712\01\00\00\u0738\u0716\01\00\00\u0738\u0724\01\00\00\u0738"+
+ "\u0732\01\00\00\u0739\u00f7\01\00\00\u073a\u073b\05\033\00\u073b\u073c"+
+ "\01\00\00\u073c\u073d\05\034\00\u073d\u073f\01\00\00\u073e\u073a\01"+
+ "\00\00\u073f\u0740\01\00\00\u0740\u073a\01\00\00\u0740\u0741\01\00"+
+ "\00\u0741\u0742\01\00\00\u0742\u0743\05\010\00\u0743\u0744\01\00\00"+
+ "\u0744\u0745\05\020\00\u0745\u0761\01\00\00\u0746\u0747\03\u010c\u0087"+
+ "\u0747\u0761\01\00\00\u0748\u0749\05\010\00\u0749\u074a\01\00\00\u074a"+
+ "\u074b\05\020\00\u074b\u0761\01\00\00\u074c\u074d\05\010\00\u074d"+
+ "\u074e\01\00\00\u074e\u074f\03\u0104\u0083\u074f\u0761\01\00\00\u0750"+
+ "\u0751\05\010\00\u0751\u0752\01\00\00\u0752\u0753\05\060\00\u0753"+
+ "\u0761\01\00\00\u0754\u0755\05\010\00\u0755\u0756\01\00\00\u0756\u0757"+
+ "\05\054\00\u0757\u0758\01\00\00\u0758\u0759\03\u010c\u0087\u0759\u0761"+
+ "\01\00\00\u075a\u075b\05\010\00\u075b\u075c\01\00\00\u075c\u075d\05"+
+ "\134\00\u075d\u075e\01\00\00\u075e\u075f\03\u00fe\u0080\u075f\u0761"+
+ "\01\00\00\u0760\u073e\01\00\00\u0760\u0746\01\00\00\u0760\u0748\01"+
+ "\00\00\u0760\u074c\01\00\00\u0760\u0750\01\00\00\u0760\u0754\01\00"+
+ "\00\u0760\u075a\01\00\00\u0761\u00f9\01\00\00\u0762\u0763\03\u0106"+
+ "\u0084\u0763\u0764\01\00\00\u0764\u0765\03\u00fc\177\u0765\u0766\01"+
+ "\00\00\u0766\u0767\03\u0102\u0082\u0767\u0771\01\00\00\u0768\u0769"+
+ "\03\u00fc\177\u0769\u076e\01\00\00\u076a\u076b\03\u0100\u0081\u076b"+
+ "\u076f\01\00\00\u076c\u076d\03\u0102\u0082\u076d\u076f\01\00\00\u076e"+
+ "\u076a\01\00\00\u076e\u076c\01\00\00\u076f\u0771\01\00\00\u0770\u0762"+
+ "\01\00\00\u0770\u0768\01\00\00\u0771\u00fb\01\00\00\u0772\u0773\03"+
+ "\152\066\u0773\u0777\01\00\00\u0774\u0775\03\154\067\u0775\u0777\01"+
+ "\00\00\u0776\u0772\01\00\00\u0776\u0774\01\00\00\u0777\u00fd\01\00"+
+ "\00\u0778\u0779\03\u0106\u0084\u0779\u077b\01\00\00\u077a\u0778\01"+
+ "\00\00\u077a\u077b\01\00\00\u077b\u077c\01\00\00\u077c\u077d\05\145"+
+ "\00\u077d\u077e\01\00\00\u077e\u077f\03\u0102\u0082\u077f\u00ff\01"+
+ "\00\00\u0780\u0781\05\033\00\u0781\u07a4\01\00\00\u0782\u0783\05\034"+
+ "\00\u0783\u0788\01\00\00\u0784\u0785\05\033\00\u0785\u0786\01\00\00"+
+ "\u0786\u0787\05\034\00\u0787\u0789\01\00\00\u0788\u0784\01\00\00\u0788"+
+ "\u078b\01\00\00\u0789\u078a\01\00\00\u078a\u0788\01\00\00\u078b\u078c"+
+ "\01\00\00\u078c\u078d\03\136\060\u078d\u07a5\01\00\00\u078e\u078f"+
+ "\03\u00d0\151\u078f\u0790\01\00\00\u0790\u0791\05\034\00\u0791\u0798"+
+ "\01\00\00\u0792\u0793\05\033\00\u0793\u0794\01\00\00\u0794\u0795\03"+
+ "\u00d0\151\u0795\u0796\01\00\00\u0796\u0797\05\034\00\u0797\u0799"+
+ "\01\00\00\u0798\u0792\01\00\00\u0798\u079b\01\00\00\u0799\u079a\01"+
+ "\00\00\u079a\u0798\01\00\00\u079b\u07a0\01\00\00\u079c\u079d\05\033"+
+ "\00\u079d\u079e\01\00\00\u079e\u079f\05\034\00\u079f\u07a1\01\00\00"+
+ "\u07a0\u079c\01\00\00\u07a0\u07a3\01\00\00\u07a1\u07a2\01\00\00\u07a2"+
+ "\u07a0\01\00\00\u07a3\u07a5\01\00\00\u07a4\u0782\01\00\00\u07a4\u078e"+
+ "\01\00\00\u07a5\u0101\01\00\00\u07a6\u07a7\03\u010c\u0087\u07a7\u07aa"+
+ "\01\00\00\u07a8\u07a9\03\052\026\u07a9\u07ab\01\00\00\u07aa\u07a8"+
+ "\01\00\00\u07aa\u07ab\01\00\00\u07ab\u0103\01\00\00\u07ac\u07ad\03"+
+ "\u0106\u0084\u07ad\u07ae\01\00\00\u07ae\u07af\05\145\00\u07af\u07b0"+
+ "\01\00\00\u07b0\u07b1\03\u010c\u0087\u07b1\u0105\01\00\00\u07b2\u07b3"+
+ "\05\023\00\u07b3\u07b4\01\00\00\u07b4\u07b5\03\050\025\u07b5\u07b6"+
+ "\01\00\00\u07b6\u07b7\05\025\00\u07b7\u0107\01\00\00\u07b8\u07b9\05"+
+ "\010\00\u07b9\u07ba\01\00\00\u07ba\u07bb\05\145\00\u07bb\u07be\01"+
+ "\00\00\u07bc\u07bd\03\u010c\u0087\u07bd\u07bf\01\00\00\u07be\u07bc"+
+ "\01\00\00\u07be\u07bf\01\00\00\u07bf\u07d7\01\00\00\u07c0\u07c1\05"+
+ "\010\00\u07c1\u07c2\01\00\00\u07c2\u07c3\05\060\00\u07c3\u07d7\01"+
+ "\00\00\u07c4\u07c5\05\010\00\u07c5\u07c6\01\00\00\u07c6\u07c7\05\054"+
+ "\00\u07c7\u07c8\01\00\00\u07c8\u07c9\03\u010a\u0086\u07c9\u07d7\01"+
+ "\00\00\u07ca\u07cb\05\010\00\u07cb\u07cc\01\00\00\u07cc\u07cd\05\134"+
+ "\00\u07cd\u07ce\01\00\00\u07ce\u07cf\03\u00fe\u0080\u07cf\u07d7\01"+
+ "\00\00\u07d0\u07d1\05\033\00\u07d1\u07d2\01\00\00\u07d2\u07d3\03\u00d0"+
+ "\151\u07d3\u07d4\01\00\00\u07d4\u07d5\05\034\00\u07d5\u07d7\01\00"+
+ "\00\u07d6\u07b8\01\00\00\u07d6\u07c0\01\00\00\u07d6\u07c4\01\00\00"+
+ "\u07d6\u07ca\01\00\00\u07d6\u07d0\01\00\00\u07d7\u0109\01\00\00\u07d8"+
+ "\u07d9\03\u010c\u0087\u07d9\u07e3\01\00\00\u07da\u07db\05\010\00\u07db"+
+ "\u07dc\01\00\00\u07dc\u07dd\05\145\00\u07dd\u07e0\01\00\00\u07de\u07df"+
+ "\03\u010c\u0087\u07df\u07e1\01\00\00\u07e0\u07de\01\00\00\u07e0\u07e1"+
+ "\01\00\00\u07e1\u07e3\01\00\00\u07e2\u07d8\01\00\00\u07e2\u07da\01"+
+ "\00\00\u07e3\u010b\01\00\00\u07e4\u07e5\05\055\00\u07e5\u07e8\01\00"+
+ "\00\u07e6\u07e7\03\u00ca\146\u07e7\u07e9\01\00\00\u07e8\u07e6\01\00"+
+ "\00\u07e8\u07e9\01\00\00\u07e9\u07ea\01\00\00\u07ea\u07eb\05\056\00"+
+ "\u07eb\u010d\01\00\00\u00b7\u0114\u011a\u0122\u0126\u012a\u012e\u0134"+
+ "\u0138\u0144\u014c\u0154\u015c\u0160\u0174\u0178\u0180\u0188\u018e"+
+ "\u0194\u01a0\u01ac\u01b4\u01c0\u01c8\u01cc\u01d0\u01da\u01e0\u01e6"+
+ "\u01ea\u01f0\u01f8\u0200\u0206\u0210\u0218\u0222\u022c\u0234\u0248"+
+ "\u0250\u025a\u0264\u0274\u0284\u0292\u029a\u02a2\u02a8\u02b0\u02b6"+
+ "\u02be\u02c6\u02d0\u02dc\u02e6\u02f4\u02fe\u0306\u030e\u031c\u0324"+
+ "\u032e\u0334\u0336\u0352\u0360\u036a\u036e\u0374\u037c\u037e\u0392"+
+ "\u0398\u03a2\u03b0\u03b4\u03b6\u03be\u03c6\u03d6\u03dc\u03e4\u03e8"+
+ "\u03f0\u03f6\u0402\u040a\u0412\u0422\u042a\u0430\u0434\u0434\u0436"+
+ "\u0442\u0446\u044e\u0458\u0468\u0472\u0476\u047a\u048a\u049e\u04a4"+
+ "\u04aa\u04b0\u04b2\u04b8\u04c2\u04ce\u04da\u04e8\u04f6\u0504\u0530"+
+ "\u0546\u0554\u055c\u056c\u0572\u0588\u058e\u058e\u0590\u0594\u05a8"+
+ "\u05ae\u05b4\u05ba\u05bc\u05c2\u05dc\u05ea\u0612\u061e\u0626\u0630"+
+ "\u063a\u0644\u064e\u0658\u065c\u0666\u066e\u067e\u0686\u0698\u06a0"+
+ "\u06a4\u06b0\u06b4\u06ca\u06da\u06e2\u06e4\u06f4\u06fa\u0704\u070a"+
+ "\u071c\u0722\u072a\u0738\u073e\u073e\u0740\u0760\u076e\u0770\u0776"+
+ "\u077a\u0788\u0798\u07a0\u07a4\u07aa\u07be\u07d6\u07e0\u07e2\u07e8";
+ public static final ATN _ATN =
+ ATNInterpreter.deserialize(_serializedATN.toCharArray());
+ static {
+ org.antlr.v4.tool.DOTGenerator dot = new org.antlr.v4.tool.DOTGenerator(null);
+ //System.out.println(dot.getDOT(_ATN.decisionToATNState.get(0)));
+ }
+}
\ No newline at end of file
diff --git a/tool/playground/JavaParser.orig.g b/tool/playground/JavaParser.orig.g
new file mode 100644
index 000000000..4a35c273f
--- /dev/null
+++ b/tool/playground/JavaParser.orig.g
@@ -0,0 +1,756 @@
+parser grammar JavaParser;
+options {backtrack=true; memoize=true; tokenVocab=JavaLexer;}
+
+// starting point for parsing a java file
+/* The annotations are separated out to make parsing faster, but must be associated with
+ a packageDeclaration or a typeDeclaration (and not an empty one). */
+compilationUnit
+ : annotations
+ ( packageDeclaration importDeclaration* typeDeclaration*
+ | classOrInterfaceDeclaration typeDeclaration*
+ )
+ | packageDeclaration? importDeclaration* typeDeclaration*
+ ;
+
+packageDeclaration
+ : 'package' qualifiedName ';'
+ ;
+
+importDeclaration
+ : 'import' 'static'? qualifiedName ('.' '*')? ';'
+ ;
+
+typeDeclaration
+ : classOrInterfaceDeclaration
+ | ';'
+ ;
+
+classOrInterfaceDeclaration
+ : classOrInterfaceModifiers (classDeclaration | interfaceDeclaration)
+ ;
+
+classOrInterfaceModifiers
+ : classOrInterfaceModifier*
+ ;
+
+classOrInterfaceModifier
+ : annotation // class or interface
+ | 'public' // class or interface
+ | 'protected' // class or interface
+ | 'private' // class or interface
+ | 'abstract' // class or interface
+ | 'static' // class or interface
+ | 'final' // class only -- does not apply to interfaces
+ | 'strictfp' // class or interface
+ ;
+
+modifiers
+ : modifier*
+ ;
+
+classDeclaration
+ : normalClassDeclaration
+ | enumDeclaration
+ ;
+
+normalClassDeclaration
+ : 'class' Identifier typeParameters?
+ ('extends' type)?
+ ('implements' typeList)?
+ classBody
+ ;
+
+typeParameters
+ : '<' typeParameter (',' typeParameter)* '>'
+ ;
+
+typeParameter
+ : Identifier ('extends' typeBound)?
+ ;
+
+typeBound
+ : type ('&' type)*
+ ;
+
+enumDeclaration
+ : ENUM Identifier ('implements' typeList)? enumBody
+ ;
+
+enumBody
+ : '{' enumConstants? ','? enumBodyDeclarations? '}'
+ ;
+
+enumConstants
+ : enumConstant (',' enumConstant)*
+ ;
+
+enumConstant
+ : annotations? Identifier arguments? classBody?
+ ;
+
+enumBodyDeclarations
+ : ';' (classBodyDeclaration)*
+ ;
+
+interfaceDeclaration
+ : normalInterfaceDeclaration
+ | annotationTypeDeclaration
+ ;
+
+normalInterfaceDeclaration
+ : 'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
+ ;
+
+typeList
+ : type (',' type)*
+ ;
+
+classBody
+ : '{' classBodyDeclaration* '}'
+ ;
+
+interfaceBody
+ : '{' interfaceBodyDeclaration* '}'
+ ;
+
+classBodyDeclaration
+ : ';'
+ | 'static'? block
+ | modifiers memberDecl
+ ;
+
+memberDecl
+ : genericMethodOrConstructorDecl
+ | memberDeclaration
+ | 'void' Identifier voidMethodDeclaratorRest
+ | Identifier constructorDeclaratorRest
+ | interfaceDeclaration
+ | classDeclaration
+ ;
+
+memberDeclaration
+ : type (methodDeclaration | fieldDeclaration)
+ ;
+
+genericMethodOrConstructorDecl
+ : typeParameters genericMethodOrConstructorRest
+ ;
+
+genericMethodOrConstructorRest
+ : (type | 'void') Identifier methodDeclaratorRest
+ | Identifier constructorDeclaratorRest
+ ;
+
+methodDeclaration
+ : Identifier methodDeclaratorRest
+ ;
+
+fieldDeclaration
+ : variableDeclarators ';'
+ ;
+
+interfaceBodyDeclaration
+ : modifiers interfaceMemberDecl
+ | ';'
+ ;
+
+interfaceMemberDecl
+ : interfaceMethodOrFieldDecl
+ | interfaceGenericMethodDecl
+ | 'void' Identifier voidInterfaceMethodDeclaratorRest
+ | interfaceDeclaration
+ | classDeclaration
+ ;
+
+interfaceMethodOrFieldDecl
+ : type Identifier interfaceMethodOrFieldRest
+ ;
+
+interfaceMethodOrFieldRest
+ : constantDeclaratorsRest ';'
+ | interfaceMethodDeclaratorRest
+ ;
+
+methodDeclaratorRest
+ : formalParameters ('[' ']')*
+ ('throws' qualifiedNameList)?
+ ( methodBody
+ | ';'
+ )
+ ;
+
+voidMethodDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)?
+ ( methodBody
+ | ';'
+ )
+ ;
+
+interfaceMethodDeclaratorRest
+ : formalParameters ('[' ']')* ('throws' qualifiedNameList)? ';'
+ ;
+
+interfaceGenericMethodDecl
+ : typeParameters (type | 'void') Identifier
+ interfaceMethodDeclaratorRest
+ ;
+
+voidInterfaceMethodDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)? ';'
+ ;
+
+constructorDeclaratorRest
+ : formalParameters ('throws' qualifiedNameList)? constructorBody
+ ;
+
+constantDeclarator
+ : Identifier constantDeclaratorRest
+ ;
+
+variableDeclarators
+ : variableDeclarator (',' variableDeclarator)*
+ ;
+
+variableDeclarator
+ : variableDeclaratorId ('=' variableInitializer)?
+ ;
+
+constantDeclaratorsRest
+ : constantDeclaratorRest (',' constantDeclarator)*
+ ;
+
+constantDeclaratorRest
+ : ('[' ']')* '=' variableInitializer
+ ;
+
+variableDeclaratorId
+ : Identifier ('[' ']')*
+ ;
+
+variableInitializer
+ : arrayInitializer
+ | expression
+ ;
+
+arrayInitializer
+ : '{' (variableInitializer (',' variableInitializer)* (',')? )? '}'
+ ;
+
+modifier
+ : annotation
+ | 'public'
+ | 'protected'
+ | 'private'
+ | 'static'
+ | 'abstract'
+ | 'final'
+ | 'native'
+ | 'synchronized'
+ | 'transient'
+ | 'volatile'
+ | 'strictfp'
+ ;
+
+packageOrTypeName
+ : qualifiedName
+ ;
+
+enumConstantName
+ : Identifier
+ ;
+
+typeName
+ : qualifiedName
+ ;
+
+type
+ : classOrInterfaceType ('[' ']')*
+ | primitiveType ('[' ']')*
+ ;
+
+classOrInterfaceType
+ : Identifier typeArguments? ('.' Identifier typeArguments? )*
+ ;
+
+primitiveType
+ : 'boolean'
+ | 'char'
+ | 'byte'
+ | 'short'
+ | 'int'
+ | 'long'
+ | 'float'
+ | 'double'
+ ;
+
+variableModifier
+ : 'final'
+ | annotation
+ ;
+
+typeArguments
+ : '<' typeArgument (',' typeArgument)* '>'
+ ;
+
+typeArgument
+ : type
+ | '?' (('extends' | 'super') type)?
+ ;
+
+qualifiedNameList
+ : qualifiedName (',' qualifiedName)*
+ ;
+
+formalParameters
+ : '(' formalParameterDecls? ')'
+ ;
+
+formalParameterDecls
+ : variableModifiers type formalParameterDeclsRest
+ ;
+
+formalParameterDeclsRest
+ : variableDeclaratorId (',' formalParameterDecls)?
+ | '...' variableDeclaratorId
+ ;
+
+methodBody
+ : block
+ ;
+
+constructorBody
+ : '{' explicitConstructorInvocation? blockStatement* '}'
+ ;
+
+explicitConstructorInvocation
+ : nonWildcardTypeArguments? ('this' | 'super') arguments ';'
+ | primary '.' nonWildcardTypeArguments? 'super' arguments ';'
+ ;
+
+
+qualifiedName
+ : Identifier ('.' Identifier)*
+ ;
+
+literal
+ : integerLiteral
+ | FloatingPointLiteral
+ | CharacterLiteral
+ | StringLiteral
+ | booleanLiteral
+ | 'null'
+ ;
+
+integerLiteral
+ : HexLiteral
+ | OctalLiteral
+ | DecimalLiteral
+ ;
+
+booleanLiteral
+ : 'true'
+ | 'false'
+ ;
+
+// ANNOTATIONS
+
+annotations
+ : annotation+
+ ;
+
+annotation
+ : '@' annotationName ( '(' ( elementValuePairs | elementValue )? ')' )?
+ ;
+
+annotationName
+ : Identifier ('.' Identifier)*
+ ;
+
+elementValuePairs
+ : elementValuePair (',' elementValuePair)*
+ ;
+
+elementValuePair
+ : Identifier '=' elementValue
+ ;
+
+elementValue
+ : conditionalExpression
+ | annotation
+ | elementValueArrayInitializer
+ ;
+
+elementValueArrayInitializer
+ : '{' (elementValue (',' elementValue)*)? (',')? '}'
+ ;
+
+annotationTypeDeclaration
+ : '@' 'interface' Identifier annotationTypeBody
+ ;
+
+annotationTypeBody
+ : '{' (annotationTypeElementDeclaration)* '}'
+ ;
+
+annotationTypeElementDeclaration
+ : modifiers annotationTypeElementRest
+ ;
+
+annotationTypeElementRest
+ : type annotationMethodOrConstantRest ';'
+ | normalClassDeclaration ';'?
+ | normalInterfaceDeclaration ';'?
+ | enumDeclaration ';'?
+ | annotationTypeDeclaration ';'?
+ ;
+
+annotationMethodOrConstantRest
+ : annotationMethodRest
+ | annotationConstantRest
+ ;
+
+annotationMethodRest
+ : Identifier '(' ')' defaultValue?
+ ;
+
+annotationConstantRest
+ : variableDeclarators
+ ;
+
+defaultValue
+ : 'default' elementValue
+ ;
+
+// STATEMENTS / BLOCKS
+
+block
+ : '{' blockStatement* '}'
+ ;
+
+blockStatement
+ : localVariableDeclarationStatement
+ | classOrInterfaceDeclaration
+ | statement
+ ;
+
+localVariableDeclarationStatement
+ : localVariableDeclaration ';'
+ ;
+
+localVariableDeclaration
+ : variableModifiers type variableDeclarators
+ ;
+
+variableModifiers
+ : variableModifier*
+ ;
+
+statement
+ : block
+ | ASSERT expression (':' expression)? ';'
+ | 'if' parExpression statement (options {k=1;}:'else' statement)?
+ | 'for' '(' forControl ')' statement
+ | 'while' parExpression statement
+ | 'do' statement 'while' parExpression ';'
+ | 'try' block
+ ( catches 'finally' block
+ | catches
+ | 'finally' block
+ )
+ | 'switch' parExpression '{' switchBlockStatementGroups '}'
+ | 'synchronized' parExpression block
+ | 'return' expression? ';'
+ | 'throw' expression ';'
+ | 'break' Identifier? ';'
+ | 'continue' Identifier? ';'
+ | ';'
+ | statementExpression ';'
+ | Identifier ':' statement
+ ;
+
+catches
+ : catchClause (catchClause)*
+ ;
+
+catchClause
+ : 'catch' '(' formalParameter ')' block
+ ;
+
+formalParameter
+ : variableModifiers type variableDeclaratorId
+ ;
+
+switchBlockStatementGroups
+ : (switchBlockStatementGroup)*
+ ;
+
+/* The change here (switchLabel -> switchLabel+) technically makes this grammar
+ ambiguous; but with appropriately greedy parsing it yields the most
+ appropriate AST, one in which each group, except possibly the last one, has
+ labels and statements. */
+switchBlockStatementGroup
+ : switchLabel+ blockStatement*
+ ;
+
+switchLabel
+ : 'case' constantExpression ':'
+ | 'case' enumConstantName ':'
+ | 'default' ':'
+ ;
+
+forControl
+options {k=3;} // be efficient for common case: for (ID ID : ID) ...
+ : enhancedForControl
+ | forInit? ';' expression? ';' forUpdate?
+ ;
+
+forInit
+ : localVariableDeclaration
+ | expressionList
+ ;
+
+enhancedForControl
+ : variableModifiers type Identifier ':' expression
+ ;
+
+forUpdate
+ : expressionList
+ ;
+
+// EXPRESSIONS
+
+parExpression
+ : '(' expression ')'
+ ;
+
+expressionList
+ : expression (',' expression)*
+ ;
+
+statementExpression
+ : expression
+ ;
+
+constantExpression
+ : expression
+ ;
+
+expression
+ : conditionalExpression (assignmentOperator expression)?
+ ;
+
+assignmentOperator
+ : '='
+ | '+='
+ | '-='
+ | '*='
+ | '/='
+ | '&='
+ | '|='
+ | '^='
+ | '%='
+ | '<' '<' '='
+ | '>' '>' '>' '='
+ | '>' '>' '='
+/*
+ | ('<' '<' '=')=> t1='<' t2='<' t3='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ | ('>' '>' '>' '=')=> t1='>' t2='>' t3='>' t4='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() &&
+ $t3.getLine() == $t4.getLine() &&
+ $t3.getCharPositionInLine() + 1 == $t4.getCharPositionInLine() }?
+ | ('>' '>' '=')=> t1='>' t2='>' t3='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ */
+ ;
+
+conditionalExpression
+ : conditionalOrExpression ( '?' conditionalExpression ':' conditionalExpression )?
+ ;
+
+conditionalOrExpression
+ : conditionalAndExpression ( '||' conditionalAndExpression )*
+ ;
+
+conditionalAndExpression
+ : inclusiveOrExpression ( '&&' inclusiveOrExpression )*
+ ;
+
+inclusiveOrExpression
+ : exclusiveOrExpression ( '|' exclusiveOrExpression )*
+ ;
+
+exclusiveOrExpression
+ : andExpression ( '^' andExpression )*
+ ;
+
+andExpression
+ : equalityExpression ( '&' equalityExpression )*
+ ;
+
+equalityExpression
+ : instanceOfExpression ( ('==' | '!=') instanceOfExpression )*
+ ;
+
+instanceOfExpression
+ : relationalExpression ('instanceof' type)?
+ ;
+
+relationalExpression
+ : shiftExpression ( relationalOp shiftExpression )*
+ ;
+
+relationalOp
+ : '<' '='
+ | '>' '='
+ | '<'
+ | '>'
+ ;
+/*
+relationalOp
+ : ('<' '=')=> t1='<' t2='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | ('>' '=')=> t1='>' t2='='
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | '<'
+ | '>'
+ ;
+ */
+
+shiftExpression
+ : additiveExpression ( shiftOp additiveExpression )*
+ ;
+
+shiftOp
+ : '<' '<'
+ | '>' '>' '>'
+ | '>' '>'
+ ;
+
+/*
+shiftOp
+ : ('<' '<')=> t1='<' t2='<'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ | ('>' '>' '>')=> t1='>' t2='>' t3='>'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
+ $t2.getLine() == $t3.getLine() &&
+ $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
+ | ('>' '>')=> t1='>' t2='>'
+ { $t1.getLine() == $t2.getLine() &&
+ $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
+ ;
+*/
+
+additiveExpression
+ : multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
+ ;
+
+multiplicativeExpression
+ : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
+ ;
+
+unaryExpression
+ : '+' unaryExpression
+ | '-' unaryExpression
+ | '++' unaryExpression
+ | '--' unaryExpression
+ | unaryExpressionNotPlusMinus
+ ;
+
+unaryExpressionNotPlusMinus
+ : '~' unaryExpression
+ | '!' unaryExpression
+ | castExpression
+ | primary selector* ('++'|'--')?
+ ;
+
+castExpression
+ : '(' primitiveType ')' unaryExpression
+ | '(' (type | expression) ')' unaryExpressionNotPlusMinus
+ ;
+
+primary
+ : parExpression
+ | 'this' ('.' Identifier)* identifierSuffix?
+ | 'super' superSuffix
+ | literal
+ | 'new' creator
+ | Identifier ('.' Identifier)* identifierSuffix?
+ | primitiveType ('[' ']')* '.' 'class'
+ | 'void' '.' 'class'
+ ;
+
+identifierSuffix
+ : ('[' ']')+ '.' 'class'
+ | ('[' expression ']')+ // can also be matched by selector, but do here
+ | arguments
+ | '.' 'class'
+ | '.' explicitGenericInvocation
+ | '.' 'this'
+ | '.' 'super' arguments
+ | '.' 'new' innerCreator
+ ;
+
+creator
+ : nonWildcardTypeArguments createdName classCreatorRest
+ | createdName (arrayCreatorRest | classCreatorRest)
+ ;
+
+createdName
+ : classOrInterfaceType
+ | primitiveType
+ ;
+
+innerCreator
+ : nonWildcardTypeArguments? Identifier classCreatorRest
+ ;
+
+arrayCreatorRest
+ : '['
+ ( ']' ('[' ']')* arrayInitializer
+ | expression ']' ('[' expression ']')* ('[' ']')*
+ )
+ ;
+
+classCreatorRest
+ : arguments classBody?
+ ;
+
+explicitGenericInvocation
+ : nonWildcardTypeArguments Identifier arguments
+ ;
+
+nonWildcardTypeArguments
+ : '<' typeList '>'
+ ;
+
+selector
+ : '.' Identifier arguments?
+ | '.' 'this'
+ | '.' 'super' superSuffix
+ | '.' 'new' innerCreator
+ | '[' expression ']'
+ ;
+
+superSuffix
+ : arguments
+ | '.' Identifier arguments?
+ ;
+
+arguments
+ : '(' expressionList? ')'
+ ;
+
diff --git a/tool/playground/L.g b/tool/playground/L.g
new file mode 100644
index 000000000..b1b032d3b
--- /dev/null
+++ b/tool/playground/L.g
@@ -0,0 +1,7 @@
+lexer grammar L;
+
+WS : ' '+ {skip();} ;
+
+StringLiteral
+ : '"' ( ~('\\'|'"') )* '"'
+ ;
diff --git a/tool/playground/LL1.g b/tool/playground/LL1.g
new file mode 100644
index 000000000..198201652
--- /dev/null
+++ b/tool/playground/LL1.g
@@ -0,0 +1,14 @@
+grammar LL1;
+
+b : B | C ;
+
+c1 : A? B ;
+
+c2 : (B|C)? D ;
+
+d1 : A* B ;
+
+d2 : ({true}? B | {true}? A)* D {System.out.println("works!");} ;
+
+e1 : A+ B ;
+e2 : (B|A)+ D ;
diff --git a/tool/playground/T.g b/tool/playground/T.g
new file mode 100644
index 000000000..dbe7b4f41
--- /dev/null
+++ b/tool/playground/T.g
@@ -0,0 +1,11 @@
+lexer grammar T;
+
+STRING_START : '"' {pushMode(STRING_MODE); more();} ;
+
+WS : ' ' | '\n' {skip();} ;
+
+mode STRING_MODE;
+
+STRING : '"' {popMode();} ;
+
+ANY : . {more();} ;
diff --git a/tool/playground/T.java b/tool/playground/T.java
new file mode 100644
index 000000000..584bfc6a1
--- /dev/null
+++ b/tool/playground/T.java
@@ -0,0 +1,79 @@
+/*
+ * @(#)SerializationTester.java 1.5 03/12/19
+ *
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.LexerSharedState;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.runtime.*;
+
+public class T extends Lexer {
+ public static final int
+ EOR=1, STRING_START=4, WS=5, STRING=6, ANY=7;
+ public static final int DEFAULT_MODE = 0;
+ public static final int STRING_MODE = 1;
+
+ public static final String[] tokenNames = {
+ "", "", "",
+ "EOR", "STRING_START", "WS", "STRING", "ANY"
+ };
+ public static final String[] ruleNames = {
+ "",
+ "STRING_START", "WS", "STRING", "ANY"
+ };
+
+
+ public T(CharStream input) {
+ this(input, new LexerSharedState());
+ }
+ public T(CharStream input, LexerSharedState state) {
+ super(input,state);
+ _interp = new LexerInterpreter(this,_ATN);
+ }
+
+ public String getGrammarFileName() { return "T.java"; }
+ @Override
+ public String[] getTokenNames() { return tokenNames; }
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+ @Override
+ public ATN getATN() { return _ATN; }
+
+
+ public void action(int ruleIndex, int actionIndex) {
+ switch ( actionIndex ) {
+ case 1 : pushMode(STRING_MODE); more(); break;
+ case 2 : skip(); break;
+ case 3 : popMode(); break;
+ case 4 : more(); break;
+ }
+ }
+
+ public static final String _serializedATN =
+ "\030\012\032\06\00\06\00\02\01\07\01\02\02\07\02\02\03\07\03\02\04"+
+ "\07\04\01\01\01\01\01\01\01\02\01\02\01\02\01\02\01\02\03\02\010\02"+
+ "\01\03\01\03\01\03\01\04\01\04\01\04\04\02\04\01\04\05\02\06\06\03"+
+ "\010\07\04\02\00\01\00\031\00\02\01\00\00\00\04\01\00\00\01\06\01"+
+ "\00\00\01\010\01\00\00\02\012\01\00\00\04\022\01\00\00\06\024\01\00"+
+ "\00\010\027\01\00\00\012\013\05\042\00\013\014\01\00\00\014\03\01"+
+ "\00\00\015\016\05\040\00\016\023\01\00\00\017\020\05\012\00\020\021"+
+ "\01\00\00\021\023\01\00\00\022\015\01\00\00\022\017\01\00\00\023\05"+
+ "\01\00\00\024\025\05\042\00\025\026\01\00\00\026\07\01\00\00\027\030"+
+ "\013\00\00\030\031\01\00\00\031\011\01\00\00\03\00\01\022";
+ public static final ATN _ATN =
+ ATNInterpreter.deserialize(_serializedATN.toCharArray());
+ static {
+ org.antlr.v4.tool.DOTGenerator dot = new org.antlr.v4.tool.DOTGenerator(null);
+ //System.out.println(dot.getDOT(_ATN.decisionToATNState.get(0)));
+ }
+}
diff --git a/tool/playground/Test.java b/tool/playground/Test.java
new file mode 100644
index 000000000..fa25fe18d
--- /dev/null
+++ b/tool/playground/Test.java
@@ -0,0 +1,120 @@
+import org.antlr.v4.Tool;
+import org.antlr.v4.automata.ParserATNFactory;
+import org.antlr.v4.runtime.CommonToken;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenSource;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.atn.ATN;
+import org.antlr.v4.semantics.SemanticPipeline;
+import org.antlr.v4.tool.DOTGenerator;
+import org.antlr.v4.tool.Grammar;
+
+import java.util.List;
+
+public class Test {
+ public static void main(String[] args) throws Exception {
+// T t = new T(new ANTLRFileStream(args[0]));
+// CommonTokenStream tokens = new CommonTokenStream(t);
+// tokens.fill();
+// for (Object tok : tokens.getTokens()) {
+// System.out.println(tok);
+// }
+
+ }
+
+ public static void dump() throws Exception {
+ Grammar g = new Grammar(
+ "grammar T;\n" +
+ "\n" +
+ "a : A | b ;\n" +
+ "\n" +
+ "b : B C | B D ;\n" +
+ "\n" +
+ "c : (B C)? B D ;\n" +
+ "\n" +
+ "d : (B C|B A)* B D ;\n" +
+ "\n" +
+ "e : (B C|B A)+ B D ;"
+ );
+ if ( g.ast!=null && !g.ast.hasErrors ) {
+ System.out.println(g.ast.toStringTree());
+ Tool antlr = new Tool();
+ SemanticPipeline sem = new SemanticPipeline(g);
+ sem.process();
+ if ( g.getImportedGrammars()!=null ) { // process imported grammars (if any)
+ for (Grammar imp : g.getImportedGrammars()) {
+ antlr.process(imp);
+ }
+ }
+ }
+
+ ParserATNFactory f = new ParserATNFactory(g);
+ ATN atn = f.createATN();
+
+ DOTGenerator dot = new DOTGenerator(g);
+ System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("d"))));
+ }
+
+ public static class IntTokenStream implements TokenStream {
+ List types;
+ int p=0;
+ public IntTokenStream(List types) { this.types = types; }
+
+ public void consume() { p++; }
+
+ public int LA(int i) { return LT(i).getType(); }
+
+ public int mark() {
+ return index();
+ }
+
+ public int index() { return p; }
+
+ public void rewind(int marker) {
+ }
+
+ public void rewind() {
+ }
+
+ public void release(int marker) {
+ seek(marker);
+ }
+
+ public void seek(int index) {
+ p = index;
+ }
+
+ public int size() {
+ return types.size();
+ }
+
+ public String getSourceName() {
+ return null;
+ }
+
+ public Token LT(int i) {
+ if ( (p+i-1)>=types.size() ) return new CommonToken(-1);
+ return new CommonToken(types.get(p+i-1));
+ }
+
+ public int range() {
+ return 0;
+ }
+
+ public Token get(int i) {
+ return new CommonToken(types.get(i));
+ }
+
+ public TokenSource getTokenSource() {
+ return null;
+ }
+
+ public String toString(int start, int stop) {
+ return null;
+ }
+
+ public String toString(Token start, Token stop) {
+ return null;
+ }
+ }
+}
diff --git a/tool/playground/TestJava.java b/tool/playground/TestJava.java
new file mode 100644
index 000000000..a03868b23
--- /dev/null
+++ b/tool/playground/TestJava.java
@@ -0,0 +1,117 @@
+import org.antlr.runtime.debug.BlankDebugEventListener;
+import org.antlr.v4.runtime.ANTLRFileStream;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.atn.LexerInterpreter;
+import org.antlr.v4.runtime.atn.ParserInterpreter;
+
+import java.io.File;
+
+/** Parse a java file or directory of java files using the generated parser
+ * ANTLR builds from java.g
+ */
+class TestJava {
+ public static long lexerTime = 0;
+ public static boolean profile = false;
+ public static JavaLexer lexer;
+ public static JavaParser parser = null;
+
+ public static void main(String[] args) {
+ try {
+ long start = System.currentTimeMillis();
+ if (args.length > 0 ) {
+ // for each directory/file specified on the command line
+ for(int i=0; i< args.length;i++) {
+ doFile(new File(args[i])); // parse it
+ }
+ }
+ else {
+ System.err.println("Usage: java Main ");
+ }
+ long stop = System.currentTimeMillis();
+ System.out.println("Lexer total time " + lexerTime + "ms.");
+ System.out.println("Total time " + (stop - start) + "ms.");
+
+ System.out.println("finished parsing OK");
+ System.out.println(LexerInterpreter.ATN_failover+" lexer failovers");
+ System.out.println(LexerInterpreter.match_calls+" lexer match calls");
+ System.out.println(ParserInterpreter.ATN_failover+" parser failovers");
+ System.out.println(ParserInterpreter.predict_calls +" parser predict calls");
+ if ( profile ) {
+ System.out.println("num decisions "+profiler.numDecisions);
+ }
+ }
+ catch(Exception e) {
+ System.err.println("exception: "+e);
+ e.printStackTrace(System.err); // so we can get stack trace
+ }
+ }
+
+
+ // This method decides what action to take based on the type of
+ // file we are looking at
+ public static void doFile(File f)
+ throws Exception {
+ // If this is a directory, walk each file/dir in that directory
+ if (f.isDirectory()) {
+ String files[] = f.list();
+ for(int i=0; i < files.length; i++)
+ doFile(new File(f, files[i]));
+ }
+
+ // otherwise, if this is a java file, parse it!
+ else if ( ((f.getName().length()>5) &&
+ f.getName().substring(f.getName().length()-5).equals(".java"))
+ || f.getName().equals("input") )
+ {
+ System.err.println("parsing "+f.getAbsolutePath());
+ parseFile(f.getAbsolutePath());
+ }
+ }
+
+ static class CountDecisions extends BlankDebugEventListener {
+ public int numDecisions = 0;
+ public void enterDecision(int decisionNumber) {
+ numDecisions++;
+ }
+ }
+ static CountDecisions profiler = new CountDecisions();
+
+ // Here's where we do the real work...
+ public static void parseFile(String f)
+ throws Exception {
+ try {
+ // Create a scanner that reads from the input stream passed to us
+ if ( lexer==null ) {
+ lexer = new JavaLexer(null);
+ }
+ lexer.setCharStream(new ANTLRFileStream(f));
+
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ long start = System.currentTimeMillis();
+ tokens.fill();
+// System.out.println(tokens.getTokens());
+ long stop = System.currentTimeMillis();
+ lexerTime += stop-start;
+// for (Object t : tokens.getTokens()) {
+// System.out.println(t);
+// }
+
+ if ( true ) {
+ // Create a parser that reads from the scanner
+ if ( parser==null ) {
+ parser = new JavaParser(tokens);
+ }
+ parser.setTokenStream(tokens);
+ // start parsing at the compilationUnit rule
+ parser.compilationUnit(null);
+ //System.err.println("finished "+f);
+ }
+ }
+ catch (Exception e) {
+ System.err.println("parser exception: "+e);
+ e.printStackTrace(); // so we can get stack trace
+ }
+ }
+
+}
+
diff --git a/tool/playground/TestL.java b/tool/playground/TestL.java
new file mode 100644
index 000000000..c97c688b2
--- /dev/null
+++ b/tool/playground/TestL.java
@@ -0,0 +1,8 @@
+public class TestL {
+ public static void main(String[] args) throws Exception {
+// L lexer = new L(new ANTLRFileStream(args[0]));
+// CommonTokenStream tokens = new CommonTokenStream(lexer);
+// tokens.fill();
+// System.out.println(tokens.getTokens());
+ }
+}
diff --git a/tool/playground/TestYang.java b/tool/playground/TestYang.java
new file mode 100644
index 000000000..a6e763a34
--- /dev/null
+++ b/tool/playground/TestYang.java
@@ -0,0 +1,117 @@
+import org.antlr.runtime.debug.BlankDebugEventListener;
+import org.antlr.v4.runtime.ANTLRFileStream;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.atn.LexerInterpreter;
+import org.antlr.v4.runtime.atn.ParserInterpreter;
+
+import java.io.File;
+
+/** Parse a java file or directory of java files using the generated parser
+ * ANTLR builds from java.g
+ */
+class TestYang {
+ public static long lexerTime = 0;
+ public static boolean profile = false;
+ public static YangJavaLexer lexer;
+ public static YangJavaParser parser = null;
+
+ public static void main(String[] args) {
+ try {
+ long start = System.currentTimeMillis();
+ if (args.length > 0 ) {
+ // for each directory/file specified on the command line
+ for(int i=0; i< args.length;i++) {
+ doFile(new File(args[i])); // parse it
+ }
+ }
+ else {
+ System.err.println("Usage: java Main ");
+ }
+ long stop = System.currentTimeMillis();
+ System.out.println("Lexer total time " + lexerTime + "ms.");
+ System.out.println("Total time " + (stop - start) + "ms.");
+
+ System.out.println("finished parsing OK");
+ System.out.println(LexerInterpreter.ATN_failover+" lexer failovers");
+ System.out.println(LexerInterpreter.match_calls+" lexer match calls");
+ System.out.println(ParserInterpreter.ATN_failover+" parser failovers");
+ System.out.println(ParserInterpreter.predict_calls +" parser predict calls");
+ if ( profile ) {
+ System.out.println("num decisions "+profiler.numDecisions);
+ }
+ }
+ catch(Exception e) {
+ System.err.println("exception: "+e);
+ e.printStackTrace(System.err); // so we can get stack trace
+ }
+ }
+
+
+ // This method decides what action to take based on the type of
+ // file we are looking at
+ public static void doFile(File f)
+ throws Exception {
+ // If this is a directory, walk each file/dir in that directory
+ if (f.isDirectory()) {
+ String files[] = f.list();
+ for(int i=0; i < files.length; i++)
+ doFile(new File(f, files[i]));
+ }
+
+ // otherwise, if this is a java file, parse it!
+ else if ( ((f.getName().length()>5) &&
+ f.getName().substring(f.getName().length()-5).equals(".java"))
+ || f.getName().equals("input") )
+ {
+ System.err.println("parsing "+f.getAbsolutePath());
+ parseFile(f.getAbsolutePath());
+ }
+ }
+
+ static class CountDecisions extends BlankDebugEventListener {
+ public int numDecisions = 0;
+ public void enterDecision(int decisionNumber) {
+ numDecisions++;
+ }
+ }
+ static CountDecisions profiler = new CountDecisions();
+
+ // Here's where we do the real work...
+ public static void parseFile(String f)
+ throws Exception {
+ try {
+ // Create a scanner that reads from the input stream passed to us
+ if ( lexer==null ) {
+ lexer = new YangJavaLexer(null);
+ }
+ lexer.setCharStream(new ANTLRFileStream(f));
+
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ long start = System.currentTimeMillis();
+ tokens.fill();
+// System.out.println(tokens.getTokens());
+ long stop = System.currentTimeMillis();
+ lexerTime += stop-start;
+ for (Object t : tokens.getTokens()) {
+ System.out.println(t);
+ }
+
+ if ( true ) {
+ // Create a parser that reads from the scanner
+ if ( parser==null ) {
+ parser = new YangJavaParser(tokens);
+ }
+ parser.setTokenStream(tokens);
+ // start parsing at the compilationUnit rule
+ parser.compilationUnit(null);
+ //System.err.println("finished "+f);
+ }
+ }
+ catch (Exception e) {
+ System.err.println("parser exception: "+e);
+ e.printStackTrace(); // so we can get stack trace
+ }
+ }
+
+}
+
diff --git a/tool/playground/YangJavaLexer.g b/tool/playground/YangJavaLexer.g
new file mode 100644
index 000000000..17cc0e469
--- /dev/null
+++ b/tool/playground/YangJavaLexer.g
@@ -0,0 +1,1478 @@
+/*
+ [The "BSD licence"]
+ Copyright (c) 2007-2008 Terence Parr
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * This file is modified by Yang Jiang (yang.jiang.z@gmail.com), taken from the original
+ * java grammar in www.antlr.org, with the goal to provide a standard ANTLR grammar
+ * for java, as well as an implementation to construct the same AST trees as javac does.
+ *
+ * The major changes of this version as compared to the original version include:
+ * 1) Top level rules are changed to include all of their sub-components.
+ * For example, the rule
+ *
+ * classOrInterfaceDeclaration
+ * : classOrInterfaceModifiers (classDeclaration | interfaceDeclaration)
+ * ;
+ *
+ * is changed to
+ *
+ * classOrInterfaceDeclaration
+ * : classDeclaration | interfaceDeclaration
+ * ;
+ *
+ * with classOrInterfaceModifiers been moved inside classDeclaration and
+ * interfaceDeclaration.
+ *
+ * 2) The original version is not quite clear on certain rules like memberDecl,
+ * where it mixed the styles of listing of top level rules and listing of sub rules.
+ *
+ * memberDecl
+ * : genericMethodOrConstructorDecl
+ * | memberDeclaration
+ * | 'void' Identifier voidMethodDeclaratorRest
+ * | Identifier constructorDeclaratorRest
+ * | interfaceDeclaration
+ * | classDeclaration
+ * ;
+ *
+ * This is changed to a
+ *
+ * memberDecl
+ * : fieldDeclaration
+ * | methodDeclaration
+ * | classDeclaration
+ * | interfaceDeclaration
+ * ;
+ * by folding similar rules into single rule.
+ *
+ * 3) Some syntactical predicates are added for efficiency, although this is not necessary
+ * for correctness.
+ *
+ * 4) Lexer part is rewritten completely to construct tokens needed for the parser.
+ *
+ * 5) This grammar adds more source level support
+ *
+ *
+ * This grammar also adds bug fixes.
+ *
+ * 1) Adding typeArguments to superSuffix to alHexSignificandlow input like
+ * super.method()
+ *
+ * 2) Adding typeArguments to innerCreator to allow input like
+ * new Type1().new Type2()
+ *
+ * 3) conditionalExpression is changed to
+ * conditionalExpression
+ * : conditionalOrExpression ( '?' expression ':' conditionalExpression )?
+ * ;
+ * to accept input like
+ * true?1:2=3
+ *
+ * Note: note this is by no means a valid input, by the grammar should be able to parse
+ * this as
+ * (true?1:2)=3
+ * rather than
+ * true?1:(2=3)
+ *
+ *
+ * Know problems:
+ * Won't pass input containing unicode sequence like this
+ * char c = '\uffff'
+ * String s = "\uffff";
+ * Because Antlr does not treat '\uffff' as an valid char. This will be fixed in the next Antlr
+ * release. [Fixed in Antlr-3.1.1]
+ *
+ * Things to do:
+ * More effort to make this grammar faster.
+ * Error reporting/recovering.
+ *
+ *
+ * NOTE: If you try to compile this file from command line and Antlr gives an exception
+ * like error message while compiling, add option
+ * -Xconversiontimeout 100000
+ * to the command line.
+ * If it still doesn't work or the compilation process
+ * takes too long, try to comment out the following two lines:
+ * | {isValidSurrogateIdentifierStart((char)input.LT(1), (char)input.LT(2))}?=>('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ * | {isValidSurrogateIdentifierPart((char)input.LT(1), (char)input.LT(2))}?=>('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ *
+ *
+ * Below are comments found in the original version.
+ */
+
+
+/** A Java 1.5 grammar for ANTLR v3 derived from the spec
+ *
+ * This is a very close representation of the spec; the changes
+ * are comestic (remove left recursion) and also fixes (the spec
+ * isn't exactly perfect). I have run this on the 1.4.2 source
+ * and some nasty looking enums from 1.5, but have not really
+ * tested for 1.5 compatibility.
+ *
+ * I built this with: java -Xmx100M org.antlr.Tool java.g
+ * and got two errors that are ok (for now):
+ * java.g:691:9: Decision can match input such as
+ * "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
+ * using multiple alternatives: 3, 4
+ * As a result, alternative(s) 4 were disabled for that input
+ * java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
+ * '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
+ * '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
+ * '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
+ * using multiple alternatives: 1, 2
+ * As a result, alternative(s) 2 were disabled for that input
+ *
+ * You can turn enum on/off as a keyword :)
+ *
+ * Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
+ *
+ * Primary author: Terence Parr, July 2006
+ *
+ * Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
+ * October 25, 2006;
+ * fixed normalInterfaceDeclaration: now uses typeParameters instead
+ * of typeParameter (according to JLS, 3rd edition)
+ * fixed castExpression: no longer allows expression next to type
+ * (according to semantics in JLS, in contrast with syntax in JLS)
+ *
+ * Version 1.0.2 -- Terence Parr, Nov 27, 2006
+ * java spec I built this from had some bizarre for-loop control.
+ * Looked weird and so I looked elsewhere...Yep, it's messed up.
+ * simplified.
+ *
+ * Version 1.0.3 -- Chris Hogue, Feb 26, 2007
+ * Factored out an annotationName rule and used it in the annotation rule.
+ * Not sure why, but typeName wasn't recognizing references to inner
+ * annotations (e.g. @InterfaceName.InnerAnnotation())
+ * Factored out the elementValue section of an annotation reference. Created
+ * elementValuePair and elementValuePairs rules, then used them in the
+ * annotation rule. Allows it to recognize annotation references with
+ * multiple, comma separated attributes.
+ * Updated elementValueArrayInitializer so that it allows multiple elements.
+ * (It was only allowing 0 or 1 element).
+ * Updated localVariableDeclaration to allow annotations. Interestingly the JLS
+ * doesn't appear to indicate this is legal, but it does work as of at least
+ * JDK 1.5.0_06.
+ * Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
+ * Because annotationConstantRest already references variableDeclarator which
+ * has the Identifier portion in it, the parser would fail on constants in
+ * annotation definitions because it expected two identifiers.
+ * Added optional trailing ';' to the alternatives in annotationTypeElementRest.
+ * Wouldn't handle an inner interface that has a trailing ';'.
+ * Swapped the expression and type rule reference order in castExpression to
+ * make it check for genericized casts first. It was failing to recognize a
+ * statement like "Class TYPE = (Class)...;" because it was seeing
+ * 'Class'.
+ * Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
+ *
+ * Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
+ * just 'arguments'. The case it couldn't handle was a call to an explicit
+ * generic method invocation (e.g. this.doSomething()). Using identifierSuffix
+ * may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
+ *
+ * Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
+ *
+ * Fixed formalParameterDecls, localVariableDeclaration, forInit,
+ * and forVarControl to use variableModifier* not 'final'? (annotation)?
+ *
+ * Version 1.0.5 -- Terence, June 21, 2007
+ * --a[i].foo didn't work. Fixed unaryExpression
+ *
+ * Version 1.0.6 -- John Ridgway, March 17, 2008
+ * Made "assert" a switchable keyword like "enum".
+ * Fixed compilationUnit to disallow "annotation importDeclaration ...".
+ * Changed "Identifier ('.' Identifier)*" to "qualifiedName" in more
+ * places.
+ * Changed modifier* and/or variableModifier* to classOrInterfaceModifiers,
+ * modifiers or variableModifiers, as appropriate.
+ * Renamed "bound" to "typeBound" to better match language in the JLS.
+ * Added "memberDeclaration" which rewrites to methodDeclaration or
+ * fieldDeclaration and pulled type into memberDeclaration. So we parse
+ * type and then move on to decide whether we're dealing with a field
+ * or a method.
+ * Modified "constructorDeclaration" to use "constructorBody" instead of
+ * "methodBody". constructorBody starts with explicitConstructorInvocation,
+ * then goes on to blockStatement*. Pulling explicitConstructorInvocation
+ * out of expressions allowed me to simplify "primary".
+ * Changed variableDeclarator to simplify it.
+ * Changed type to use classOrInterfaceType, thus simplifying it; of course
+ * I then had to add classOrInterfaceType, but it is used in several
+ * places.
+ * Fixed annotations, old version allowed "@X(y,z)", which is illegal.
+ * Added optional comma to end of "elementValueArrayInitializer"; as per JLS.
+ * Changed annotationTypeElementRest to use normalClassDeclaration and
+ * normalInterfaceDeclaration rather than classDeclaration and
+ * interfaceDeclaration, thus getting rid of a couple of grammar ambiguities.
+ * Split localVariableDeclaration into localVariableDeclarationStatement
+ * (includes the terminating semi-colon) and localVariableDeclaration.
+ * This allowed me to use localVariableDeclaration in "forInit" clauses,
+ * simplifying them.
+ * Changed switchBlockStatementGroup to use multiple labels. This adds an
+ * ambiguity, but if one uses appropriately greedy parsing it yields the
+ * parse that is closest to the meaning of the switch statement.
+ * Renamed "forVarControl" to "enhancedForControl" -- JLS language.
+ * Added semantic predicates to test for shift operations rather than other
+ * things. Thus, for instance, the string "< <" will never be treated
+ * as a left-shift operator.
+ * In "creator" we rule out "nonWildcardTypeArguments" on arrayCreation,
+ * which are illegal.
+ * Moved "nonWildcardTypeArguments into innerCreator.
+ * Removed 'super' superSuffix from explicitGenericInvocation, since that
+ * is only used in explicitConstructorInvocation at the beginning of a
+ * constructorBody. (This is part of the simplification of expressions
+ * mentioned earlier.)
+ * Simplified primary (got rid of those things that are only used in
+ * explicitConstructorInvocation).
+ * Lexer -- removed "Exponent?" from FloatingPointLiteral choice 4, since it
+ * led to an ambiguity.
+ *
+ * This grammar successfully parses every .java file in the JDK 1.5 source
+ * tree (excluding those whose file names include '-', which are not
+ * valid Java compilation units).
+ *
+ * Known remaining problems:
+ * "Letter" and "JavaIDDigit" are wrong. The actual specification of
+ * "Letter" should be "a character for which the method
+ * Character.isJavaIdentifierStart(int) returns true." A "Java
+ * letter-or-digit is a character for which the method
+ * Character.isJavaIdentifierPart(int) returns true."
+ */
+
+
+ /*
+ This is a merged file, containing two versions of the Java.g grammar.
+ To extract a version from the file, run the ver.jar with the command provided below.
+
+ Version 1 - tree building version, with all source level support, error recovery etc.
+ This is the version for compiler grammar workspace.
+ This version can be extracted by invoking:
+ java -cp ver.jar Main 1 true true true true true Java.g
+
+ Version 2 - clean version, with no source leve support, no error recovery, no predicts,
+ assumes 1.6 level, works in Antlrworks.
+ This is the version for Alex.
+ This version can be extracted by invoking:
+ java -cp ver.jar Main 2 false false false false false Java.g
+*/
+
+lexer grammar YangJavaLexer;
+
+LONGLITERAL
+ : IntegerNumber LongSuffix
+ ;
+
+
+INTLITERAL
+ : IntegerNumber
+ ;
+
+fragment
+IntegerNumber
+ : '0'
+ | '1'..'9' ('0'..'9')*
+ | '0' ('0'..'7')+
+ | HexPrefix HexDigit+
+ ;
+
+fragment
+HexPrefix
+ : '0x' | '0X'
+ ;
+
+fragment
+HexDigit
+ : ('0'..'9'|'a'..'f'|'A'..'F')
+ ;
+
+fragment
+LongSuffix
+ : 'l' | 'L'
+ ;
+
+fragment
+NonIntegerNumber
+ : ('0' .. '9')+ '.' ('0' .. '9')* Exponent?
+ | '.' ( '0' .. '9' )+ Exponent?
+ | ('0' .. '9')+ Exponent
+ | ('0' .. '9')+
+ | HexPrefix HexDigit*
+ ('.' HexDigit*)?
+ ( 'p' | 'P' )
+ ( '+' | '-' )?
+ ( '0' .. '9' )+
+ ;
+
+fragment
+Exponent
+ : ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
+ ;
+
+fragment
+FloatSuffix
+ : 'f' | 'F'
+ ;
+
+fragment
+DoubleSuffix
+ : 'd' | 'D'
+ ;
+
+FLOATLITERAL
+ : NonIntegerNumber FloatSuffix
+ ;
+
+DOUBLELITERAL
+ : NonIntegerNumber DoubleSuffix?
+ ;
+
+CHARLITERAL
+ : '\''
+ ( EscapeSequence
+ | ~( '\'' | '\\' | '\r' | '\n' )
+ )
+ '\''
+ ;
+
+STRINGLITERAL
+ : '"'
+ ( EscapeSequence
+ | ~( '\\' | '"' | '\r' | '\n' )
+ )*
+ '"'
+ ;
+
+// TJP alters to mirror my JavaLexer.g
+
+fragment
+EscapeSequence
+ : '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
+ | UnicodeEscape
+ | OctalEscape
+ ;
+
+fragment
+OctalEscape
+ : '\\' ('0'..'3') ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7') ('0'..'7')
+ | '\\' ('0'..'7')
+ ;// $ANTLR src "JavaCombined.g" 958
+fragment
+UnicodeEscape
+ : '\\' 'u' HexDigit HexDigit HexDigit HexDigit
+ ;
+
+WS
+ : (
+ ' '
+ | '\r'
+ | '\t'
+ | '\u000C'
+ | '\n'
+ )
+ {
+ skip();
+ }
+ ;
+
+COMMENT
+ : '/*' .* '*/' {skip();}
+ ;
+
+LINE_COMMENT
+ : '//' .* ('\r\n' | '\r' | '\n') {skip();}
+ | '//' ~('\n'|'\r')* {skip();} // a line comment could appear at the end of the file without CR/LF
+ ;
+
+ABSTRACT
+ : 'abstract'
+ ;
+
+ASSERT
+ : 'assert'
+ ;
+
+BOOLEAN
+ : 'boolean'
+ ;
+
+BREAK
+ : 'break'
+ ;
+
+BYTE
+ : 'byte'
+ ;
+
+CASE
+ : 'case'
+ ;
+
+CATCH
+ : 'catch'
+ ;
+
+CHAR
+ : 'char'
+ ;
+
+CLASS
+ : 'class'
+ ;
+
+CONST
+ : 'const'
+ ;
+
+CONTINUE
+ : 'continue'
+ ;
+
+DEFAULT
+ : 'default'
+ ;
+
+DO
+ : 'do'
+ ;
+
+DOUBLE
+ : 'double'
+ ;
+
+ELSE
+ : 'else'
+ ;
+
+ENUM
+ : 'enum'
+ ;
+
+EXTENDS
+ : 'extends'
+ ;
+
+FINAL
+ : 'final'
+ ;
+
+FINALLY
+ : 'finally'
+ ;
+
+FLOAT
+ : 'float'
+ ;
+
+FOR
+ : 'for'
+ ;
+
+GOTO
+ : 'goto'
+ ;
+
+IF
+ : 'if'
+ ;
+
+IMPLEMENTS
+ : 'implements'
+ ;
+
+IMPORT
+ : 'import'
+ ;
+
+INSTANCEOF
+ : 'instanceof'
+ ;
+
+INT
+ : 'int'
+ ;
+
+INTERFACE
+ : 'interface'
+ ;
+
+LONG
+ : 'long'
+ ;
+
+NATIVE
+ : 'native'
+ ;
+
+NEW
+ : 'new'
+ ;
+
+PACKAGE
+ : 'package'
+ ;
+
+PRIVATE
+ : 'private'
+ ;
+
+PROTECTED
+ : 'protected'
+ ;
+
+PUBLIC
+ : 'public'
+ ;
+
+RETURN
+ : 'return'
+ ;
+
+SHORT
+ : 'short'
+ ;
+
+STATIC
+ : 'static'
+ ;
+
+STRICTFP
+ : 'strictfp'
+ ;
+
+SUPER
+ : 'super'
+ ;
+
+SWITCH
+ : 'switch'
+ ;
+
+SYNCHRONIZED
+ : 'synchronized'
+ ;
+
+THIS
+ : 'this'
+ ;
+
+THROW
+ : 'throw'
+ ;
+
+THROWS
+ : 'throws'
+ ;
+
+TRANSIENT
+ : 'transient'
+ ;
+
+TRY
+ : 'try'
+ ;
+
+VOID
+ : 'void'
+ ;
+
+VOLATILE
+ : 'volatile'
+ ;
+
+WHILE
+ : 'while'
+ ;
+
+TRUE
+ : 'true'
+ ;
+
+FALSE
+ : 'false'
+ ;
+
+NULL
+ : 'null'
+ ;
+
+LPAREN
+ : '('
+ ;
+
+RPAREN
+ : ')'
+ ;
+
+LBRACE
+ : '{'
+ ;
+
+RBRACE
+ : '}'
+ ;
+
+LBRACKET
+ : '['
+ ;
+
+RBRACKET
+ : ']'
+ ;
+
+SEMI
+ : ';'
+ ;
+
+COMMA
+ : ','
+ ;
+
+DOT
+ : '.'
+ ;
+
+ELLIPSIS
+ : '...'
+ ;
+
+EQ
+ : '='
+ ;
+
+BANG
+ : '!'
+ ;
+
+TILDE
+ : '~'
+ ;
+
+QUES
+ : '?'
+ ;
+
+COLON
+ : ':'
+ ;
+
+EQEQ
+ : '=='
+ ;
+
+AMPAMP
+ : '&&'
+ ;
+
+BARBAR
+ : '||'
+ ;
+
+PLUSPLUS
+ : '++'
+ ;
+
+SUBSUB
+ : '--'
+ ;
+
+PLUS
+ : '+'
+ ;
+
+SUB
+ : '-'
+ ;
+
+STAR
+ : '*'
+ ;
+
+SLASH
+ : '/'
+ ;
+
+AMP
+ : '&'
+ ;
+
+BAR
+ : '|'
+ ;
+
+CARET
+ : '^'
+ ;
+
+PERCENT
+ : '%'
+ ;
+
+PLUSEQ
+ : '+='
+ ;
+
+SUBEQ
+ : '-='
+ ;
+
+STAREQ
+ : '*='
+ ;
+
+SLASHEQ
+ : '/='
+ ;
+
+AMPEQ
+ : '&='
+ ;
+
+BAREQ
+ : '|='
+ ;
+
+CARETEQ
+ : '^='
+ ;
+
+PERCENTEQ
+ : '%='
+ ;
+
+MONKEYS_AT
+ : '@'
+ ;
+
+BANGEQ
+ : '!='
+ ;
+
+GT
+ : '<'
+ ;
+
+LT
+ : '>'
+ ;
+
+IDENTIFIER
+ : IdentifierStart IdentifierPart*
+ ;
+
+fragment
+SurrogateIdentifer
+ : ('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ ;
+
+fragment
+IdentifierStart
+ : '\u0024'
+ | '\u0041'..'\u005a'
+ | '\u005f'
+ | '\u0061'..'\u007a'
+ | '\u00a2'..'\u00a5'
+ | '\u00aa'
+ | '\u00b5'
+ | '\u00ba'
+ | '\u00c0'..'\u00d6'
+ | '\u00d8'..'\u00f6'
+ | '\u00f8'..'\u0236'
+ | '\u0250'..'\u02c1'
+ | '\u02c6'..'\u02d1'
+ | '\u02e0'..'\u02e4'
+ | '\u02ee'
+ | '\u037a'
+ | '\u0386'
+ | '\u0388'..'\u038a'
+ | '\u038c'
+ | '\u038e'..'\u03a1'
+ | '\u03a3'..'\u03ce'
+ | '\u03d0'..'\u03f5'
+ | '\u03f7'..'\u03fb'
+ | '\u0400'..'\u0481'
+ | '\u048a'..'\u04ce'
+ | '\u04d0'..'\u04f5'
+ | '\u04f8'..'\u04f9'
+ | '\u0500'..'\u050f'
+ | '\u0531'..'\u0556'
+ | '\u0559'
+ | '\u0561'..'\u0587'
+ | '\u05d0'..'\u05ea'
+ | '\u05f0'..'\u05f2'
+ | '\u0621'..'\u063a'
+ | '\u0640'..'\u064a'
+ | '\u066e'..'\u066f'
+ | '\u0671'..'\u06d3'
+ | '\u06d5'
+ | '\u06e5'..'\u06e6'
+ | '\u06ee'..'\u06ef'
+ | '\u06fa'..'\u06fc'
+ | '\u06ff'
+ | '\u0710'
+ | '\u0712'..'\u072f'
+ | '\u074d'..'\u074f'
+ | '\u0780'..'\u07a5'
+ | '\u07b1'
+ | '\u0904'..'\u0939'
+ | '\u093d'
+ | '\u0950'
+ | '\u0958'..'\u0961'
+ | '\u0985'..'\u098c'
+ | '\u098f'..'\u0990'
+ | '\u0993'..'\u09a8'
+ | '\u09aa'..'\u09b0'
+ | '\u09b2'
+ | '\u09b6'..'\u09b9'
+ | '\u09bd'
+ | '\u09dc'..'\u09dd'
+ | '\u09df'..'\u09e1'
+ | '\u09f0'..'\u09f3'
+ | '\u0a05'..'\u0a0a'
+ | '\u0a0f'..'\u0a10'
+ | '\u0a13'..'\u0a28'
+ | '\u0a2a'..'\u0a30'
+ | '\u0a32'..'\u0a33'
+ | '\u0a35'..'\u0a36'
+ | '\u0a38'..'\u0a39'
+ | '\u0a59'..'\u0a5c'
+ | '\u0a5e'
+ | '\u0a72'..'\u0a74'
+ | '\u0a85'..'\u0a8d'
+ | '\u0a8f'..'\u0a91'
+ | '\u0a93'..'\u0aa8'
+ | '\u0aaa'..'\u0ab0'
+ | '\u0ab2'..'\u0ab3'
+ | '\u0ab5'..'\u0ab9'
+ | '\u0abd'
+ | '\u0ad0'
+ | '\u0ae0'..'\u0ae1'
+ | '\u0af1'
+ | '\u0b05'..'\u0b0c'
+ | '\u0b0f'..'\u0b10'
+ | '\u0b13'..'\u0b28'
+ | '\u0b2a'..'\u0b30'
+ | '\u0b32'..'\u0b33'
+ | '\u0b35'..'\u0b39'
+ | '\u0b3d'
+ | '\u0b5c'..'\u0b5d'
+ | '\u0b5f'..'\u0b61'
+ | '\u0b71'
+ | '\u0b83'
+ | '\u0b85'..'\u0b8a'
+ | '\u0b8e'..'\u0b90'
+ | '\u0b92'..'\u0b95'
+ | '\u0b99'..'\u0b9a'
+ | '\u0b9c'
+ | '\u0b9e'..'\u0b9f'
+ | '\u0ba3'..'\u0ba4'
+ | '\u0ba8'..'\u0baa'
+ | '\u0bae'..'\u0bb5'
+ | '\u0bb7'..'\u0bb9'
+ | '\u0bf9'
+ | '\u0c05'..'\u0c0c'
+ | '\u0c0e'..'\u0c10'
+ | '\u0c12'..'\u0c28'
+ | '\u0c2a'..'\u0c33'
+ | '\u0c35'..'\u0c39'
+ | '\u0c60'..'\u0c61'
+ | '\u0c85'..'\u0c8c'
+ | '\u0c8e'..'\u0c90'
+ | '\u0c92'..'\u0ca8'
+ | '\u0caa'..'\u0cb3'
+ | '\u0cb5'..'\u0cb9'
+ | '\u0cbd'
+ | '\u0cde'
+ | '\u0ce0'..'\u0ce1'
+ | '\u0d05'..'\u0d0c'
+ | '\u0d0e'..'\u0d10'
+ | '\u0d12'..'\u0d28'
+ | '\u0d2a'..'\u0d39'
+ | '\u0d60'..'\u0d61'
+ | '\u0d85'..'\u0d96'
+ | '\u0d9a'..'\u0db1'
+ | '\u0db3'..'\u0dbb'
+ | '\u0dbd'
+ | '\u0dc0'..'\u0dc6'
+ | '\u0e01'..'\u0e30'
+ | '\u0e32'..'\u0e33'
+ | '\u0e3f'..'\u0e46'
+ | '\u0e81'..'\u0e82'
+ | '\u0e84'
+ | '\u0e87'..'\u0e88'
+ | '\u0e8a'
+ | '\u0e8d'
+ | '\u0e94'..'\u0e97'
+ | '\u0e99'..'\u0e9f'
+ | '\u0ea1'..'\u0ea3'
+ | '\u0ea5'
+ | '\u0ea7'
+ | '\u0eaa'..'\u0eab'
+ | '\u0ead'..'\u0eb0'
+ | '\u0eb2'..'\u0eb3'
+ | '\u0ebd'
+ | '\u0ec0'..'\u0ec4'
+ | '\u0ec6'
+ | '\u0edc'..'\u0edd'
+ | '\u0f00'
+ | '\u0f40'..'\u0f47'
+ | '\u0f49'..'\u0f6a'
+ | '\u0f88'..'\u0f8b'
+ | '\u1000'..'\u1021'
+ | '\u1023'..'\u1027'
+ | '\u1029'..'\u102a'
+ | '\u1050'..'\u1055'
+ | '\u10a0'..'\u10c5'
+ | '\u10d0'..'\u10f8'
+ | '\u1100'..'\u1159'
+ | '\u115f'..'\u11a2'
+ | '\u11a8'..'\u11f9'
+ | '\u1200'..'\u1206'
+ | '\u1208'..'\u1246'
+ | '\u1248'
+ | '\u124a'..'\u124d'
+ | '\u1250'..'\u1256'
+ | '\u1258'
+ | '\u125a'..'\u125d'
+ | '\u1260'..'\u1286'
+ | '\u1288'
+ | '\u128a'..'\u128d'
+ | '\u1290'..'\u12ae'
+ | '\u12b0'
+ | '\u12b2'..'\u12b5'
+ | '\u12b8'..'\u12be'
+ | '\u12c0'
+ | '\u12c2'..'\u12c5'
+ | '\u12c8'..'\u12ce'
+ | '\u12d0'..'\u12d6'
+ | '\u12d8'..'\u12ee'
+ | '\u12f0'..'\u130e'
+ | '\u1310'
+ | '\u1312'..'\u1315'
+ | '\u1318'..'\u131e'
+ | '\u1320'..'\u1346'
+ | '\u1348'..'\u135a'
+ | '\u13a0'..'\u13f4'
+ | '\u1401'..'\u166c'
+ | '\u166f'..'\u1676'
+ | '\u1681'..'\u169a'
+ | '\u16a0'..'\u16ea'
+ | '\u16ee'..'\u16f0'
+ | '\u1700'..'\u170c'
+ | '\u170e'..'\u1711'
+ | '\u1720'..'\u1731'
+ | '\u1740'..'\u1751'
+ | '\u1760'..'\u176c'
+ | '\u176e'..'\u1770'
+ | '\u1780'..'\u17b3'
+ | '\u17d7'
+ | '\u17db'..'\u17dc'
+ | '\u1820'..'\u1877'
+ | '\u1880'..'\u18a8'
+ | '\u1900'..'\u191c'
+ | '\u1950'..'\u196d'
+ | '\u1970'..'\u1974'
+ | '\u1d00'..'\u1d6b'
+ | '\u1e00'..'\u1e9b'
+ | '\u1ea0'..'\u1ef9'
+ | '\u1f00'..'\u1f15'
+ | '\u1f18'..'\u1f1d'
+ | '\u1f20'..'\u1f45'
+ | '\u1f48'..'\u1f4d'
+ | '\u1f50'..'\u1f57'
+ | '\u1f59'
+ | '\u1f5b'
+ | '\u1f5d'
+ | '\u1f5f'..'\u1f7d'
+ | '\u1f80'..'\u1fb4'
+ | '\u1fb6'..'\u1fbc'
+ | '\u1fbe'
+ | '\u1fc2'..'\u1fc4'
+ | '\u1fc6'..'\u1fcc'
+ | '\u1fd0'..'\u1fd3'
+ | '\u1fd6'..'\u1fdb'
+ | '\u1fe0'..'\u1fec'
+ | '\u1ff2'..'\u1ff4'
+ | '\u1ff6'..'\u1ffc'
+ | '\u203f'..'\u2040'
+ | '\u2054'
+ | '\u2071'
+ | '\u207f'
+ | '\u20a0'..'\u20b1'
+ | '\u2102'
+ | '\u2107'
+ | '\u210a'..'\u2113'
+ | '\u2115'
+ | '\u2119'..'\u211d'
+ | '\u2124'
+ | '\u2126'
+ | '\u2128'
+ | '\u212a'..'\u212d'
+ | '\u212f'..'\u2131'
+ | '\u2133'..'\u2139'
+ | '\u213d'..'\u213f'
+ | '\u2145'..'\u2149'
+ | '\u2160'..'\u2183'
+ | '\u3005'..'\u3007'
+ | '\u3021'..'\u3029'
+ | '\u3031'..'\u3035'
+ | '\u3038'..'\u303c'
+ | '\u3041'..'\u3096'
+ | '\u309d'..'\u309f'
+ | '\u30a1'..'\u30ff'
+ | '\u3105'..'\u312c'
+ | '\u3131'..'\u318e'
+ | '\u31a0'..'\u31b7'
+ | '\u31f0'..'\u31ff'
+ | '\u3400'..'\u4db5'
+ | '\u4e00'..'\u9fa5'
+ | '\ua000'..'\ua48c'
+ | '\uac00'..'\ud7a3'
+ | '\uf900'..'\ufa2d'
+ | '\ufa30'..'\ufa6a'
+ | '\ufb00'..'\ufb06'
+ | '\ufb13'..'\ufb17'
+ | '\ufb1d'
+ | '\ufb1f'..'\ufb28'
+ | '\ufb2a'..'\ufb36'
+ | '\ufb38'..'\ufb3c'
+ | '\ufb3e'
+ | '\ufb40'..'\ufb41'
+ | '\ufb43'..'\ufb44'
+ | '\ufb46'..'\ufbb1'
+ | '\ufbd3'..'\ufd3d'
+ | '\ufd50'..'\ufd8f'
+ | '\ufd92'..'\ufdc7'
+ | '\ufdf0'..'\ufdfc'
+ | '\ufe33'..'\ufe34'
+ | '\ufe4d'..'\ufe4f'
+ | '\ufe69'
+ | '\ufe70'..'\ufe74'
+ | '\ufe76'..'\ufefc'
+ | '\uff04'
+ | '\uff21'..'\uff3a'
+ | '\uff3f'
+ | '\uff41'..'\uff5a'
+ | '\uff65'..'\uffbe'
+ | '\uffc2'..'\uffc7'
+ | '\uffca'..'\uffcf'
+ | '\uffd2'..'\uffd7'
+ | '\uffda'..'\uffdc'
+ | '\uffe0'..'\uffe1'
+ | '\uffe5'..'\uffe6'
+ | ('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ ;
+
+fragment
+IdentifierPart
+ : '\u0000'..'\u0008'
+ | '\u000e'..'\u001b'
+ | '\u0024'
+ | '\u0030'..'\u0039'
+ | '\u0041'..'\u005a'
+ | '\u005f'
+ | '\u0061'..'\u007a'
+ | '\u007f'..'\u009f'
+ | '\u00a2'..'\u00a5'
+ | '\u00aa'
+ | '\u00ad'
+ | '\u00b5'
+ | '\u00ba'
+ | '\u00c0'..'\u00d6'
+ | '\u00d8'..'\u00f6'
+ | '\u00f8'..'\u0236'
+ | '\u0250'..'\u02c1'
+ | '\u02c6'..'\u02d1'
+ | '\u02e0'..'\u02e4'
+ | '\u02ee'
+ | '\u0300'..'\u0357'
+ | '\u035d'..'\u036f'
+ | '\u037a'
+ | '\u0386'
+ | '\u0388'..'\u038a'
+ | '\u038c'
+ | '\u038e'..'\u03a1'
+ | '\u03a3'..'\u03ce'
+ | '\u03d0'..'\u03f5'
+ | '\u03f7'..'\u03fb'
+ | '\u0400'..'\u0481'
+ | '\u0483'..'\u0486'
+ | '\u048a'..'\u04ce'
+ | '\u04d0'..'\u04f5'
+ | '\u04f8'..'\u04f9'
+ | '\u0500'..'\u050f'
+ | '\u0531'..'\u0556'
+ | '\u0559'
+ | '\u0561'..'\u0587'
+ | '\u0591'..'\u05a1'
+ | '\u05a3'..'\u05b9'
+ | '\u05bb'..'\u05bd'
+ | '\u05bf'
+ | '\u05c1'..'\u05c2'
+ | '\u05c4'
+ | '\u05d0'..'\u05ea'
+ | '\u05f0'..'\u05f2'
+ | '\u0600'..'\u0603'
+ | '\u0610'..'\u0615'
+ | '\u0621'..'\u063a'
+ | '\u0640'..'\u0658'
+ | '\u0660'..'\u0669'
+ | '\u066e'..'\u06d3'
+ | '\u06d5'..'\u06dd'
+ | '\u06df'..'\u06e8'
+ | '\u06ea'..'\u06fc'
+ | '\u06ff'
+ | '\u070f'..'\u074a'
+ | '\u074d'..'\u074f'
+ | '\u0780'..'\u07b1'
+ | '\u0901'..'\u0939'
+ | '\u093c'..'\u094d'
+ | '\u0950'..'\u0954'
+ | '\u0958'..'\u0963'
+ | '\u0966'..'\u096f'
+ | '\u0981'..'\u0983'
+ | '\u0985'..'\u098c'
+ | '\u098f'..'\u0990'
+ | '\u0993'..'\u09a8'
+ | '\u09aa'..'\u09b0'
+ | '\u09b2'
+ | '\u09b6'..'\u09b9'
+ | '\u09bc'..'\u09c4'
+ | '\u09c7'..'\u09c8'
+ | '\u09cb'..'\u09cd'
+ | '\u09d7'
+ | '\u09dc'..'\u09dd'
+ | '\u09df'..'\u09e3'
+ | '\u09e6'..'\u09f3'
+ | '\u0a01'..'\u0a03'
+ | '\u0a05'..'\u0a0a'
+ | '\u0a0f'..'\u0a10'
+ | '\u0a13'..'\u0a28'
+ | '\u0a2a'..'\u0a30'
+ | '\u0a32'..'\u0a33'
+ | '\u0a35'..'\u0a36'
+ | '\u0a38'..'\u0a39'
+ | '\u0a3c'
+ | '\u0a3e'..'\u0a42'
+ | '\u0a47'..'\u0a48'
+ | '\u0a4b'..'\u0a4d'
+ | '\u0a59'..'\u0a5c'
+ | '\u0a5e'
+ | '\u0a66'..'\u0a74'
+ | '\u0a81'..'\u0a83'
+ | '\u0a85'..'\u0a8d'
+ | '\u0a8f'..'\u0a91'
+ | '\u0a93'..'\u0aa8'
+ | '\u0aaa'..'\u0ab0'
+ | '\u0ab2'..'\u0ab3'
+ | '\u0ab5'..'\u0ab9'
+ | '\u0abc'..'\u0ac5'
+ | '\u0ac7'..'\u0ac9'
+ | '\u0acb'..'\u0acd'
+ | '\u0ad0'
+ | '\u0ae0'..'\u0ae3'
+ | '\u0ae6'..'\u0aef'
+ | '\u0af1'
+ | '\u0b01'..'\u0b03'
+ | '\u0b05'..'\u0b0c'
+ | '\u0b0f'..'\u0b10'
+ | '\u0b13'..'\u0b28'
+ | '\u0b2a'..'\u0b30'
+ | '\u0b32'..'\u0b33'
+ | '\u0b35'..'\u0b39'
+ | '\u0b3c'..'\u0b43'
+ | '\u0b47'..'\u0b48'
+ | '\u0b4b'..'\u0b4d'
+ | '\u0b56'..'\u0b57'
+ | '\u0b5c'..'\u0b5d'
+ | '\u0b5f'..'\u0b61'
+ | '\u0b66'..'\u0b6f'
+ | '\u0b71'
+ | '\u0b82'..'\u0b83'
+ | '\u0b85'..'\u0b8a'
+ | '\u0b8e'..'\u0b90'
+ | '\u0b92'..'\u0b95'
+ | '\u0b99'..'\u0b9a'
+ | '\u0b9c'
+ | '\u0b9e'..'\u0b9f'
+ | '\u0ba3'..'\u0ba4'
+ | '\u0ba8'..'\u0baa'
+ | '\u0bae'..'\u0bb5'
+ | '\u0bb7'..'\u0bb9'
+ | '\u0bbe'..'\u0bc2'
+ | '\u0bc6'..'\u0bc8'
+ | '\u0bca'..'\u0bcd'
+ | '\u0bd7'
+ | '\u0be7'..'\u0bef'
+ | '\u0bf9'
+ | '\u0c01'..'\u0c03'
+ | '\u0c05'..'\u0c0c'
+ | '\u0c0e'..'\u0c10'
+ | '\u0c12'..'\u0c28'
+ | '\u0c2a'..'\u0c33'
+ | '\u0c35'..'\u0c39'
+ | '\u0c3e'..'\u0c44'
+ | '\u0c46'..'\u0c48'
+ | '\u0c4a'..'\u0c4d'
+ | '\u0c55'..'\u0c56'
+ | '\u0c60'..'\u0c61'
+ | '\u0c66'..'\u0c6f'
+ | '\u0c82'..'\u0c83'
+ | '\u0c85'..'\u0c8c'
+ | '\u0c8e'..'\u0c90'
+ | '\u0c92'..'\u0ca8'
+ | '\u0caa'..'\u0cb3'
+ | '\u0cb5'..'\u0cb9'
+ | '\u0cbc'..'\u0cc4'
+ | '\u0cc6'..'\u0cc8'
+ | '\u0cca'..'\u0ccd'
+ | '\u0cd5'..'\u0cd6'
+ | '\u0cde'
+ | '\u0ce0'..'\u0ce1'
+ | '\u0ce6'..'\u0cef'
+ | '\u0d02'..'\u0d03'
+ | '\u0d05'..'\u0d0c'
+ | '\u0d0e'..'\u0d10'
+ | '\u0d12'..'\u0d28'
+ | '\u0d2a'..'\u0d39'
+ | '\u0d3e'..'\u0d43'
+ | '\u0d46'..'\u0d48'
+ | '\u0d4a'..'\u0d4d'
+ | '\u0d57'
+ | '\u0d60'..'\u0d61'
+ | '\u0d66'..'\u0d6f'
+ | '\u0d82'..'\u0d83'
+ | '\u0d85'..'\u0d96'
+ | '\u0d9a'..'\u0db1'
+ | '\u0db3'..'\u0dbb'
+ | '\u0dbd'
+ | '\u0dc0'..'\u0dc6'
+ | '\u0dca'
+ | '\u0dcf'..'\u0dd4'
+ | '\u0dd6'
+ | '\u0dd8'..'\u0ddf'
+ | '\u0df2'..'\u0df3'
+ | '\u0e01'..'\u0e3a'
+ | '\u0e3f'..'\u0e4e'
+ | '\u0e50'..'\u0e59'
+ | '\u0e81'..'\u0e82'
+ | '\u0e84'
+ | '\u0e87'..'\u0e88'
+ | '\u0e8a'
+ | '\u0e8d'
+ | '\u0e94'..'\u0e97'
+ | '\u0e99'..'\u0e9f'
+ | '\u0ea1'..'\u0ea3'
+ | '\u0ea5'
+ | '\u0ea7'
+ | '\u0eaa'..'\u0eab'
+ | '\u0ead'..'\u0eb9'
+ | '\u0ebb'..'\u0ebd'
+ | '\u0ec0'..'\u0ec4'
+ | '\u0ec6'
+ | '\u0ec8'..'\u0ecd'
+ | '\u0ed0'..'\u0ed9'
+ | '\u0edc'..'\u0edd'
+ | '\u0f00'
+ | '\u0f18'..'\u0f19'
+ | '\u0f20'..'\u0f29'
+ | '\u0f35'
+ | '\u0f37'
+ | '\u0f39'
+ | '\u0f3e'..'\u0f47'
+ | '\u0f49'..'\u0f6a'
+ | '\u0f71'..'\u0f84'
+ | '\u0f86'..'\u0f8b'
+ | '\u0f90'..'\u0f97'
+ | '\u0f99'..'\u0fbc'
+ | '\u0fc6'
+ | '\u1000'..'\u1021'
+ | '\u1023'..'\u1027'
+ | '\u1029'..'\u102a'
+ | '\u102c'..'\u1032'
+ | '\u1036'..'\u1039'
+ | '\u1040'..'\u1049'
+ | '\u1050'..'\u1059'
+ | '\u10a0'..'\u10c5'
+ | '\u10d0'..'\u10f8'
+ | '\u1100'..'\u1159'
+ | '\u115f'..'\u11a2'
+ | '\u11a8'..'\u11f9'
+ | '\u1200'..'\u1206'
+ | '\u1208'..'\u1246'
+ | '\u1248'
+ | '\u124a'..'\u124d'
+ | '\u1250'..'\u1256'
+ | '\u1258'
+ | '\u125a'..'\u125d'
+ | '\u1260'..'\u1286'
+ | '\u1288'
+ | '\u128a'..'\u128d'
+ | '\u1290'..'\u12ae'
+ | '\u12b0'
+ | '\u12b2'..'\u12b5'
+ | '\u12b8'..'\u12be'
+ | '\u12c0'
+ | '\u12c2'..'\u12c5'
+ | '\u12c8'..'\u12ce'
+ | '\u12d0'..'\u12d6'
+ | '\u12d8'..'\u12ee'
+ | '\u12f0'..'\u130e'
+ | '\u1310'
+ | '\u1312'..'\u1315'
+ | '\u1318'..'\u131e'
+ | '\u1320'..'\u1346'
+ | '\u1348'..'\u135a'
+ | '\u1369'..'\u1371'
+ | '\u13a0'..'\u13f4'
+ | '\u1401'..'\u166c'
+ | '\u166f'..'\u1676'
+ | '\u1681'..'\u169a'
+ | '\u16a0'..'\u16ea'
+ | '\u16ee'..'\u16f0'
+ | '\u1700'..'\u170c'
+ | '\u170e'..'\u1714'
+ | '\u1720'..'\u1734'
+ | '\u1740'..'\u1753'
+ | '\u1760'..'\u176c'
+ | '\u176e'..'\u1770'
+ | '\u1772'..'\u1773'
+ | '\u1780'..'\u17d3'
+ | '\u17d7'
+ | '\u17db'..'\u17dd'
+ | '\u17e0'..'\u17e9'
+ | '\u180b'..'\u180d'
+ | '\u1810'..'\u1819'
+ | '\u1820'..'\u1877'
+ | '\u1880'..'\u18a9'
+ | '\u1900'..'\u191c'
+ | '\u1920'..'\u192b'
+ | '\u1930'..'\u193b'
+ | '\u1946'..'\u196d'
+ | '\u1970'..'\u1974'
+ | '\u1d00'..'\u1d6b'
+ | '\u1e00'..'\u1e9b'
+ | '\u1ea0'..'\u1ef9'
+ | '\u1f00'..'\u1f15'
+ | '\u1f18'..'\u1f1d'
+ | '\u1f20'..'\u1f45'
+ | '\u1f48'..'\u1f4d'
+ | '\u1f50'..'\u1f57'
+ | '\u1f59'
+ | '\u1f5b'
+ | '\u1f5d'
+ | '\u1f5f'..'\u1f7d'
+ | '\u1f80'..'\u1fb4'
+ | '\u1fb6'..'\u1fbc'
+ | '\u1fbe'
+ | '\u1fc2'..'\u1fc4'
+ | '\u1fc6'..'\u1fcc'
+ | '\u1fd0'..'\u1fd3'
+ | '\u1fd6'..'\u1fdb'
+ | '\u1fe0'..'\u1fec'
+ | '\u1ff2'..'\u1ff4'
+ | '\u1ff6'..'\u1ffc'
+ | '\u200c'..'\u200f'
+ | '\u202a'..'\u202e'
+ | '\u203f'..'\u2040'
+ | '\u2054'
+ | '\u2060'..'\u2063'
+ | '\u206a'..'\u206f'
+ | '\u2071'
+ | '\u207f'
+ | '\u20a0'..'\u20b1'
+ | '\u20d0'..'\u20dc'
+ | '\u20e1'
+ | '\u20e5'..'\u20ea'
+ | '\u2102'
+ | '\u2107'
+ | '\u210a'..'\u2113'
+ | '\u2115'
+ | '\u2119'..'\u211d'
+ | '\u2124'
+ | '\u2126'
+ | '\u2128'
+ | '\u212a'..'\u212d'
+ | '\u212f'..'\u2131'
+ | '\u2133'..'\u2139'
+ | '\u213d'..'\u213f'
+ | '\u2145'..'\u2149'
+ | '\u2160'..'\u2183'
+ | '\u3005'..'\u3007'
+ | '\u3021'..'\u302f'
+ | '\u3031'..'\u3035'
+ | '\u3038'..'\u303c'
+ | '\u3041'..'\u3096'
+ | '\u3099'..'\u309a'
+ | '\u309d'..'\u309f'
+ | '\u30a1'..'\u30ff'
+ | '\u3105'..'\u312c'
+ | '\u3131'..'\u318e'
+ | '\u31a0'..'\u31b7'
+ | '\u31f0'..'\u31ff'
+ | '\u3400'..'\u4db5'
+ | '\u4e00'..'\u9fa5'
+ | '\ua000'..'\ua48c'
+ | '\uac00'..'\ud7a3'
+ | '\uf900'..'\ufa2d'
+ | '\ufa30'..'\ufa6a'
+ | '\ufb00'..'\ufb06'
+ | '\ufb13'..'\ufb17'
+ | '\ufb1d'..'\ufb28'
+ | '\ufb2a'..'\ufb36'
+ | '\ufb38'..'\ufb3c'
+ | '\ufb3e'
+ | '\ufb40'..'\ufb41'
+ | '\ufb43'..'\ufb44'
+ | '\ufb46'..'\ufbb1'
+ | '\ufbd3'..'\ufd3d'
+ | '\ufd50'..'\ufd8f'
+ | '\ufd92'..'\ufdc7'
+ | '\ufdf0'..'\ufdfc'
+ | '\ufe00'..'\ufe0f'
+ | '\ufe20'..'\ufe23'
+ | '\ufe33'..'\ufe34'
+ | '\ufe4d'..'\ufe4f'
+ | '\ufe69'
+ | '\ufe70'..'\ufe74'
+ | '\ufe76'..'\ufefc'
+ | '\ufeff'
+ | '\uff04'
+ | '\uff10'..'\uff19'
+ | '\uff21'..'\uff3a'
+ | '\uff3f'
+ | '\uff41'..'\uff5a'
+ | '\uff65'..'\uffbe'
+ | '\uffc2'..'\uffc7'
+ | '\uffca'..'\uffcf'
+ | '\uffd2'..'\uffd7'
+ | '\uffda'..'\uffdc'
+ | '\uffe0'..'\uffe1'
+ | '\uffe5'..'\uffe6'
+ | '\ufff9'..'\ufffb'
+ | ('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ ;
diff --git a/tool/playground/YangJavaLexer.java b/tool/playground/YangJavaLexer.java
new file mode 100644
index 000000000..1d951e147
--- /dev/null
+++ b/tool/playground/YangJavaLexer.java
@@ -0,0 +1,1414 @@
+// $ANTLR ANTLRVersion> YangJavaLexer.java generatedTimestamp>
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.LexerSharedState;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.runtime.*;
+
+public class YangJavaLexer extends Lexer {
+ public static final int
+ EOR=1, LONGLITERAL=4, INTLITERAL=5, FLOATLITERAL=6, DOUBLELITERAL=7,
+ CHARLITERAL=8, STRINGLITERAL=9, WS=10, COMMENT=11, LINE_COMMENT=12,
+ ABSTRACT=13, ASSERT=14, BOOLEAN=15, BREAK=16, BYTE=17, CASE=18,
+ CATCH=19, CHAR=20, CLASS=21, CONST=22, CONTINUE=23, DEFAULT=24,
+ DO=25, DOUBLE=26, ELSE=27, ENUM=28, EXTENDS=29, FINAL=30, FINALLY=31,
+ FLOAT=32, FOR=33, GOTO=34, IF=35, IMPLEMENTS=36, IMPORT=37, INSTANCEOF=38,
+ INT=39, INTERFACE=40, LONG=41, NATIVE=42, NEW=43, PACKAGE=44, PRIVATE=45,
+ PROTECTED=46, PUBLIC=47, RETURN=48, SHORT=49, STATIC=50, STRICTFP=51,
+ SUPER=52, SWITCH=53, SYNCHRONIZED=54, THIS=55, THROW=56, THROWS=57,
+ TRANSIENT=58, TRY=59, VOID=60, VOLATILE=61, WHILE=62, TRUE=63, FALSE=64,
+ NULL=65, LPAREN=66, RPAREN=67, LBRACE=68, RBRACE=69, LBRACKET=70,
+ RBRACKET=71, SEMI=72, COMMA=73, DOT=74, ELLIPSIS=75, EQ=76, BANG=77,
+ TILDE=78, QUES=79, COLON=80, EQEQ=81, AMPAMP=82, BARBAR=83, PLUSPLUS=84,
+ SUBSUB=85, PLUS=86, SUB=87, STAR=88, SLASH=89, AMP=90, BAR=91, CARET=92,
+ PERCENT=93, PLUSEQ=94, SUBEQ=95, STAREQ=96, SLASHEQ=97, AMPEQ=98,
+ BAREQ=99, CARETEQ=100, PERCENTEQ=101, MONKEYS_AT=102, BANGEQ=103,
+ GT=104, LT=105, IDENTIFIER=106;
+ public static final int DEFAULT_MODE = 0;
+
+ public static final String[] tokenNames = {
+ "", "", "",
+ "EOR", "LONGLITERAL", "INTLITERAL", "FLOATLITERAL", "DOUBLELITERAL",
+ "CHARLITERAL", "STRINGLITERAL", "WS", "COMMENT", "LINE_COMMENT",
+ "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
+ "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'",
+ "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'",
+ "'finally'", "'float'", "'for'", "'goto'", "'if'", "'implements'",
+ "'import'", "'instanceof'", "'int'", "'interface'", "'long'", "'native'",
+ "'new'", "'package'", "'private'", "'protected'", "'public'", "'return'",
+ "'short'", "'static'", "'strictfp'", "'super'", "'switch'", "'synchronized'",
+ "'this'", "'throw'", "'throws'", "'transient'", "'try'", "'void'",
+ "'volatile'", "'while'", "'true'", "'false'", "'null'", "'('", "')'",
+ "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", "'...'", "'='",
+ "'!'", "'~'", "'?'", "':'", "'=='", "'&&'", "'||'", "'++'", "'--'",
+ "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='",
+ "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'@'", "'!='",
+ "'<'", "'>'", "IDENTIFIER"
+ };
+ public static final String[] ruleNames = {
+ "",
+ "LONGLITERAL", "INTLITERAL", "IntegerNumber", "HexPrefix", "HexDigit",
+ "LongSuffix", "NonIntegerNumber", "Exponent", "FloatSuffix", "DoubleSuffix",
+ "FLOATLITERAL", "DOUBLELITERAL", "CHARLITERAL", "STRINGLITERAL",
+ "EscapeSequence", "OctalEscape", "UnicodeEscape", "WS", "COMMENT",
+ "LINE_COMMENT", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE",
+ "CASE", "CATCH", "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT",
+ "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT",
+ "FOR", "GOTO", "IF", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT",
+ "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", "PRIVATE", "PROTECTED",
+ "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH",
+ "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID",
+ "VOLATILE", "WHILE", "TRUE", "FALSE", "NULL", "LPAREN", "RPAREN",
+ "LBRACE", "RBRACE", "LBRACKET", "RBRACKET", "SEMI", "COMMA", "DOT",
+ "ELLIPSIS", "EQ", "BANG", "TILDE", "QUES", "COLON", "EQEQ", "AMPAMP",
+ "BARBAR", "PLUSPLUS", "SUBSUB", "PLUS", "SUB", "STAR", "SLASH",
+ "AMP", "BAR", "CARET", "PERCENT", "PLUSEQ", "SUBEQ", "STAREQ", "SLASHEQ",
+ "AMPEQ", "BAREQ", "CARETEQ", "PERCENTEQ", "MONKEYS_AT", "BANGEQ",
+ "GT", "LT", "IDENTIFIER", "SurrogateIdentifer", "IdentifierStart",
+ "IdentifierPart"
+ };
+
+
+ public YangJavaLexer(CharStream input) {
+ this(input, new LexerSharedState());
+ }
+ public YangJavaLexer(CharStream input, LexerSharedState state) {
+ super(input,state);
+ _interp = new LexerInterpreter(this,_ATN);
+ }
+
+ public String getGrammarFileName() { return "YangJavaLexer.java"; }
+ @Override
+ public String[] getTokenNames() { return tokenNames; }
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+ @Override
+ public ATN getATN() { return _ATN; }
+
+
+ public void action(int ruleIndex, int actionIndex) {
+ switch ( actionIndex ) {
+ case 1 :
+ skip();
+ break;
+ case 2 : skip(); break;
+ case 3 : skip(); break;
+ case 4 : skip(); break;
+ }
+ }
+
+ public static final String _serializedATN =
+ "\030\155\u094d\06\00\02\01\07\01\02\02\07\02\02\03\07\03\02\04\07\04"+
+ "\02\05\07\05\02\06\07\06\02\07\07\07\02\010\07\010\02\011\07\011\02"+
+ "\012\07\012\02\013\07\013\02\014\07\014\02\015\07\015\02\016\07\016"+
+ "\02\017\07\017\02\020\07\020\02\021\07\021\02\022\07\022\02\023\07"+
+ "\023\02\024\07\024\02\025\07\025\02\026\07\026\02\027\07\027\02\030"+
+ "\07\030\02\031\07\031\02\032\07\032\02\033\07\033\02\034\07\034\02"+
+ "\035\07\035\02\036\07\036\02\037\07\037\02\040\07\040\02\041\07\041"+
+ "\02\042\07\042\02\043\07\043\02\044\07\044\02\045\07\045\02\046\07"+
+ "\046\02\047\07\047\02\050\07\050\02\051\07\051\02\052\07\052\02\053"+
+ "\07\053\02\054\07\054\02\055\07\055\02\056\07\056\02\057\07\057\02"+
+ "\060\07\060\02\061\07\061\02\062\07\062\02\063\07\063\02\064\07\064"+
+ "\02\065\07\065\02\066\07\066\02\067\07\067\02\070\07\070\02\071\07"+
+ "\071\02\072\07\072\02\073\07\073\02\074\07\074\02\075\07\075\02\076"+
+ "\07\076\02\077\07\077\02\100\07\100\02\101\07\101\02\102\07\102\02"+
+ "\103\07\103\02\104\07\104\02\105\07\105\02\106\07\106\02\107\07\107"+
+ "\02\110\07\110\02\111\07\111\02\112\07\112\02\113\07\113\02\114\07"+
+ "\114\02\115\07\115\02\116\07\116\02\117\07\117\02\120\07\120\02\121"+
+ "\07\121\02\122\07\122\02\123\07\123\02\124\07\124\02\125\07\125\02"+
+ "\126\07\126\02\127\07\127\02\130\07\130\02\131\07\131\02\132\07\132"+
+ "\02\133\07\133\02\134\07\134\02\135\07\135\02\136\07\136\02\137\07"+
+ "\137\02\140\07\140\02\141\07\141\02\142\07\142\02\143\07\143\02\144"+
+ "\07\144\02\145\07\145\02\146\07\146\02\147\07\147\02\150\07\150\02"+
+ "\151\07\151\02\152\07\152\02\153\07\153\02\154\07\154\02\155\07\155"+
+ "\02\156\07\156\02\157\07\157\02\160\07\160\02\161\07\161\02\162\07"+
+ "\162\02\163\07\163\02\164\07\164\02\165\07\165\01\01\01\01\01\01\01"+
+ "\01\01\02\01\02\01\03\01\03\01\03\01\03\01\03\01\03\05\03\010\03\011"+
+ "\03\01\03\01\03\01\03\01\03\01\03\04\03\010\03\012\03\01\03\01\03"+
+ "\01\03\01\03\01\03\04\03\010\03\012\03\01\03\03\03\010\03\01\04\01"+
+ "\04\01\04\01\04\01\04\01\04\03\04\010\04\01\05\01\05\01\05\01\05\01"+
+ "\05\01\05\03\05\010\05\01\06\01\06\01\06\01\06\03\06\010\06\01\07"+
+ "\01\07\04\07\010\07\012\07\01\07\01\07\01\07\01\07\01\07\05\07\010"+
+ "\07\011\07\01\07\01\07\01\07\03\07\010\07\01\07\01\07\01\07\01\07"+
+ "\04\07\010\07\012\07\01\07\01\07\01\07\03\07\010\07\01\07\01\07\04"+
+ "\07\010\07\012\07\01\07\01\07\01\07\01\07\01\07\04\07\010\07\012\07"+
+ "\01\07\01\07\01\07\01\07\01\07\05\07\010\07\011\07\01\07\01\07\01"+
+ "\07\01\07\01\07\05\07\010\07\011\07\01\07\03\07\010\07\01\07\01\07"+
+ "\01\07\01\07\03\07\010\07\01\07\01\07\01\07\01\07\03\07\010\07\01"+
+ "\07\01\07\04\07\010\07\012\07\01\07\03\07\010\07\01\010\01\010\01"+
+ "\010\01\010\03\010\010\010\01\010\01\010\01\010\01\010\03\010\010"+
+ "\010\01\010\01\010\04\010\010\010\012\010\01\010\01\011\01\011\01"+
+ "\011\01\011\03\011\010\011\01\012\01\012\01\012\01\012\03\012\010"+
+ "\012\01\013\01\013\01\013\01\013\01\014\01\014\01\014\01\014\03\014"+
+ "\010\014\01\015\01\015\01\015\01\015\01\015\01\015\03\015\010\015"+
+ "\01\015\01\015\01\016\01\016\01\016\01\016\01\016\01\016\05\016\010"+
+ "\016\011\016\01\016\01\016\01\016\01\017\01\017\01\017\01\017\01\017"+
+ "\01\017\01\017\01\017\01\017\01\017\01\017\01\017\01\017\01\017\01"+
+ "\017\01\017\01\017\01\017\03\017\010\017\01\017\01\017\01\017\01\017"+
+ "\03\017\010\017\01\020\01\020\01\020\01\020\01\020\01\020\01\020\01"+
+ "\020\01\020\01\020\01\020\01\020\01\020\01\020\01\020\01\020\01\020"+
+ "\01\020\03\020\010\020\01\021\01\021\01\021\01\021\01\021\01\021\01"+
+ "\021\01\021\01\021\01\021\01\021\01\021\01\022\01\022\01\022\01\022"+
+ "\01\022\01\022\01\022\01\022\01\022\01\022\03\022\010\022\01\022\01"+
+ "\023\01\023\01\023\01\023\01\023\05\023\010\023\011\023\01\023\01"+
+ "\023\01\023\01\023\01\023\01\024\01\024\01\024\01\024\01\024\05\024"+
+ "\010\024\011\024\01\024\01\024\01\024\01\024\01\024\01\024\01\024"+
+ "\01\024\03\024\010\024\01\024\01\024\01\024\01\024\01\024\01\024\05"+
+ "\024\010\024\011\024\01\024\01\024\03\024\010\024\01\025\01\025\01"+
+ "\025\01\025\01\025\01\025\01\025\01\025\01\025\01\026\01\026\01\026"+
+ "\01\026\01\026\01\026\01\026\01\027\01\027\01\027\01\027\01\027\01"+
+ "\027\01\027\01\027\01\030\01\030\01\030\01\030\01\030\01\030\01\031"+
+ "\01\031\01\031\01\031\01\031\01\032\01\032\01\032\01\032\01\032\01"+
+ "\033\01\033\01\033\01\033\01\033\01\033\01\034\01\034\01\034\01\034"+
+ "\01\034\01\035\01\035\01\035\01\035\01\035\01\035\01\036\01\036\01"+
+ "\036\01\036\01\036\01\036\01\037\01\037\01\037\01\037\01\037\01\037"+
+ "\01\037\01\037\01\037\01\040\01\040\01\040\01\040\01\040\01\040\01"+
+ "\040\01\040\01\041\01\041\01\041\01\042\01\042\01\042\01\042\01\042"+
+ "\01\042\01\042\01\043\01\043\01\043\01\043\01\043\01\044\01\044\01"+
+ "\044\01\044\01\044\01\045\01\045\01\045\01\045\01\045\01\045\01\045"+
+ "\01\045\01\046\01\046\01\046\01\046\01\046\01\046\01\047\01\047\01"+
+ "\047\01\047\01\047\01\047\01\047\01\047\01\050\01\050\01\050\01\050"+
+ "\01\050\01\050\01\051\01\051\01\051\01\051\01\052\01\052\01\052\01"+
+ "\052\01\052\01\053\01\053\01\053\01\054\01\054\01\054\01\054\01\054"+
+ "\01\054\01\054\01\054\01\054\01\054\01\054\01\055\01\055\01\055\01"+
+ "\055\01\055\01\055\01\055\01\056\01\056\01\056\01\056\01\056\01\056"+
+ "\01\056\01\056\01\056\01\056\01\056\01\057\01\057\01\057\01\057\01"+
+ "\060\01\060\01\060\01\060\01\060\01\060\01\060\01\060\01\060\01\060"+
+ "\01\061\01\061\01\061\01\061\01\061\01\062\01\062\01\062\01\062\01"+
+ "\062\01\062\01\062\01\063\01\063\01\063\01\063\01\064\01\064\01\064"+
+ "\01\064\01\064\01\064\01\064\01\064\01\065\01\065\01\065\01\065\01"+
+ "\065\01\065\01\065\01\065\01\066\01\066\01\066\01\066\01\066\01\066"+
+ "\01\066\01\066\01\066\01\066\01\067\01\067\01\067\01\067\01\067\01"+
+ "\067\01\067\01\070\01\070\01\070\01\070\01\070\01\070\01\070\01\071"+
+ "\01\071\01\071\01\071\01\071\01\071\01\072\01\072\01\072\01\072\01"+
+ "\072\01\072\01\072\01\073\01\073\01\073\01\073\01\073\01\073\01\073"+
+ "\01\073\01\073\01\074\01\074\01\074\01\074\01\074\01\074\01\075\01"+
+ "\075\01\075\01\075\01\075\01\075\01\075\01\076\01\076\01\076\01\076"+
+ "\01\076\01\076\01\076\01\076\01\076\01\076\01\076\01\076\01\076\01"+
+ "\077\01\077\01\077\01\077\01\077\01\100\01\100\01\100\01\100\01\100"+
+ "\01\100\01\101\01\101\01\101\01\101\01\101\01\101\01\101\01\102\01"+
+ "\102\01\102\01\102\01\102\01\102\01\102\01\102\01\102\01\102\01\103"+
+ "\01\103\01\103\01\103\01\104\01\104\01\104\01\104\01\104\01\105\01"+
+ "\105\01\105\01\105\01\105\01\105\01\105\01\105\01\105\01\106\01\106"+
+ "\01\106\01\106\01\106\01\106\01\107\01\107\01\107\01\107\01\107\01"+
+ "\110\01\110\01\110\01\110\01\110\01\110\01\111\01\111\01\111\01\111"+
+ "\01\111\01\112\01\112\01\113\01\113\01\114\01\114\01\115\01\115\01"+
+ "\116\01\116\01\117\01\117\01\120\01\120\01\121\01\121\01\122\01\122"+
+ "\01\123\01\123\01\123\01\123\01\124\01\124\01\125\01\125\01\126\01"+
+ "\126\01\127\01\127\01\130\01\130\01\131\01\131\01\131\01\132\01\132"+
+ "\01\132\01\133\01\133\01\133\01\134\01\134\01\134\01\135\01\135\01"+
+ "\135\01\136\01\136\01\137\01\137\01\140\01\140\01\141\01\141\01\142"+
+ "\01\142\01\143\01\143\01\144\01\144\01\145\01\145\01\146\01\146\01"+
+ "\146\01\147\01\147\01\147\01\150\01\150\01\150\01\151\01\151\01\151"+
+ "\01\152\01\152\01\152\01\153\01\153\01\153\01\154\01\154\01\154\01"+
+ "\155\01\155\01\155\01\156\01\156\01\157\01\157\01\157\01\160\01\160"+
+ "\01\161\01\161\01\162\01\162\01\162\01\162\05\162\010\162\011\162"+
+ "\01\162\01\163\01\163\01\163\01\163\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01"+
+ "\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164\01\164"+
+ "\01\164\01\164\01\164\01\164\01\164\01\164\03\164\010\164\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01"+
+ "\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165\01\165"+
+ "\01\165\01\165\01\165\03\165\010\165\165\01\04\00\03\05\00\05\uffff"+
+ "\00\07\uffff\00\011\uffff\00\013\uffff\00\015\uffff\00\017\uffff\00"+
+ "\021\uffff\00\023\uffff\00\025\06\00\027\07\00\031\010\00\033\011"+
+ "\00\035\uffff\00\037\uffff\00\041\uffff\00\043\012\01\045\013\02\047"+
+ "\014\04\051\015\00\053\016\00\055\017\00\057\020\00\061\021\00\063"+
+ "\022\00\065\023\00\067\024\00\071\025\00\073\026\00\075\027\00\077"+
+ "\030\00\101\031\00\103\032\00\105\033\00\107\034\00\111\035\00\113"+
+ "\036\00\115\037\00\117\040\00\121\041\00\123\042\00\125\043\00\127"+
+ "\044\00\131\045\00\133\046\00\135\047\00\137\050\00\141\051\00\143"+
+ "\052\00\145\053\00\147\054\00\151\055\00\153\056\00\155\057\00\157"+
+ "\060\00\161\061\00\163\062\00\165\063\00\167\064\00\171\065\00\173"+
+ "\066\00\175\067\00\177\070\00\u0081\071\00\u0083\072\00\u0085\073"+
+ "\00\u0087\074\00\u0089\075\00\u008b\076\00\u008d\077\00\u008f\100"+
+ "\00\u0091\101\00\u0093\102\00\u0095\103\00\u0097\104\00\u0099\105"+
+ "\00\u009b\106\00\u009d\107\00\u009f\110\00\u00a1\111\00\u00a3\112"+
+ "\00\u00a5\113\00\u00a7\114\00\u00a9\115\00\u00ab\116\00\u00ad\117"+
+ "\00\u00af\120\00\u00b1\121\00\u00b3\122\00\u00b5\123\00\u00b7\124"+
+ "\00\u00b9\125\00\u00bb\126\00\u00bd\127\00\u00bf\130\00\u00c1\131"+
+ "\00\u00c3\132\00\u00c5\133\00\u00c7\134\00\u00c9\135\00\u00cb\136"+
+ "\00\u00cd\137\00\u00cf\140\00\u00d1\141\00\u00d3\142\00\u00d5\143"+
+ "\00\u00d7\144\00\u00d9\145\00\u00db\146\00\u00dd\147\00\u00df\150"+
+ "\00\u00e1\151\00\u00e3\152\00\u00e5\uffff\00\u00e7\uffff\00\u00e9"+
+ "\uffff\00\01\00\03\04\012\012\015\015\047\047\134\134\04\012\012\015"+
+ "\015\042\042\134\134\02\012\012\015\015\u0c20\00\01\01\00\00\00\03"+
+ "\01\00\00\00\025\01\00\00\00\027\01\00\00\00\031\01\00\00\00\033\01"+
+ "\00\00\00\043\01\00\00\00\045\01\00\00\00\047\01\00\00\00\051\01\00"+
+ "\00\00\053\01\00\00\00\055\01\00\00\00\057\01\00\00\00\061\01\00\00"+
+ "\00\063\01\00\00\00\065\01\00\00\00\067\01\00\00\00\071\01\00\00\00"+
+ "\073\01\00\00\00\075\01\00\00\00\077\01\00\00\00\101\01\00\00\00\103"+
+ "\01\00\00\00\105\01\00\00\00\107\01\00\00\00\111\01\00\00\00\113\01"+
+ "\00\00\00\115\01\00\00\00\117\01\00\00\00\121\01\00\00\00\123\01\00"+
+ "\00\00\125\01\00\00\00\127\01\00\00\00\131\01\00\00\00\133\01\00\00"+
+ "\00\135\01\00\00\00\137\01\00\00\00\141\01\00\00\00\143\01\00\00\00"+
+ "\145\01\00\00\00\147\01\00\00\00\151\01\00\00\00\153\01\00\00\00\155"+
+ "\01\00\00\00\157\01\00\00\00\161\01\00\00\00\163\01\00\00\00\165\01"+
+ "\00\00\00\167\01\00\00\00\171\01\00\00\00\173\01\00\00\00\175\01\00"+
+ "\00\00\177\01\00\00\00\u0081\01\00\00\00\u0083\01\00\00\00\u0085\01"+
+ "\00\00\00\u0087\01\00\00\00\u0089\01\00\00\00\u008b\01\00\00\00\u008d"+
+ "\01\00\00\00\u008f\01\00\00\00\u0091\01\00\00\00\u0093\01\00\00\00"+
+ "\u0095\01\00\00\00\u0097\01\00\00\00\u0099\01\00\00\00\u009b\01\00"+
+ "\00\00\u009d\01\00\00\00\u009f\01\00\00\00\u00a1\01\00\00\00\u00a3"+
+ "\01\00\00\00\u00a5\01\00\00\00\u00a7\01\00\00\00\u00a9\01\00\00\00"+
+ "\u00ab\01\00\00\00\u00ad\01\00\00\00\u00af\01\00\00\00\u00b1\01\00"+
+ "\00\00\u00b3\01\00\00\00\u00b5\01\00\00\00\u00b7\01\00\00\00\u00b9"+
+ "\01\00\00\00\u00bb\01\00\00\00\u00bd\01\00\00\00\u00bf\01\00\00\00"+
+ "\u00c1\01\00\00\00\u00c3\01\00\00\00\u00c5\01\00\00\00\u00c7\01\00"+
+ "\00\00\u00c9\01\00\00\00\u00cb\01\00\00\00\u00cd\01\00\00\00\u00cf"+
+ "\01\00\00\00\u00d1\01\00\00\00\u00d3\01\00\00\00\u00d5\01\00\00\00"+
+ "\u00d7\01\00\00\00\u00d9\01\00\00\00\u00db\01\00\00\00\u00dd\01\00"+
+ "\00\00\u00df\01\00\00\00\u00e1\01\00\00\00\u00e3\01\00\00\01\u00eb"+
+ "\01\00\00\03\u00ef\01\00\00\05\u010b\01\00\00\07\u0113\01\00\00\011"+
+ "\u011b\01\00\00\013\u0121\01\00\00\015\u0173\01\00\00\017\u0179\01"+
+ "\00\00\021\u018b\01\00\00\023\u0191\01\00\00\025\u0193\01\00\00\027"+
+ "\u0197\01\00\00\031\u019d\01\00\00\033\u01a7\01\00\00\035\u01cb\01"+
+ "\00\00\037\u01df\01\00\00\041\u01e1\01\00\00\043\u01f7\01\00\00\045"+
+ "\u01fa\01\00\00\047\u0224\01\00\00\051\u0226\01\00\00\053\u022f\01"+
+ "\00\00\055\u0236\01\00\00\057\u023e\01\00\00\061\u0244\01\00\00\063"+
+ "\u0249\01\00\00\065\u024e\01\00\00\067\u0254\01\00\00\071\u0259\01"+
+ "\00\00\073\u025f\01\00\00\075\u0265\01\00\00\077\u026e\01\00\00\101"+
+ "\u0276\01\00\00\103\u0279\01\00\00\105\u0280\01\00\00\107\u0285\01"+
+ "\00\00\111\u028a\01\00\00\113\u0292\01\00\00\115\u0298\01\00\00\117"+
+ "\u02a0\01\00\00\121\u02a6\01\00\00\123\u02aa\01\00\00\125\u02af\01"+
+ "\00\00\127\u02b2\01\00\00\131\u02bd\01\00\00\133\u02c4\01\00\00\135"+
+ "\u02cf\01\00\00\137\u02d3\01\00\00\141\u02dd\01\00\00\143\u02e2\01"+
+ "\00\00\145\u02e9\01\00\00\147\u02ed\01\00\00\151\u02f5\01\00\00\153"+
+ "\u02fd\01\00\00\155\u0307\01\00\00\157\u030e\01\00\00\161\u0315\01"+
+ "\00\00\163\u031b\01\00\00\165\u0322\01\00\00\167\u032b\01\00\00\171"+
+ "\u0331\01\00\00\173\u0338\01\00\00\175\u0345\01\00\00\177\u034a\01"+
+ "\00\00\u0081\u0350\01\00\00\u0083\u0357\01\00\00\u0085\u0361\01\00"+
+ "\00\u0087\u0365\01\00\00\u0089\u036a\01\00\00\u008b\u0373\01\00\00"+
+ "\u008d\u0379\01\00\00\u008f\u037e\01\00\00\u0091\u0384\01\00\00\u0093"+
+ "\u0389\01\00\00\u0095\u038b\01\00\00\u0097\u038d\01\00\00\u0099\u038f"+
+ "\01\00\00\u009b\u0391\01\00\00\u009d\u0393\01\00\00\u009f\u0395\01"+
+ "\00\00\u00a1\u0397\01\00\00\u00a3\u0399\01\00\00\u00a5\u039b\01\00"+
+ "\00\u00a7\u039f\01\00\00\u00a9\u03a1\01\00\00\u00ab\u03a3\01\00\00"+
+ "\u00ad\u03a5\01\00\00\u00af\u03a7\01\00\00\u00b1\u03a9\01\00\00\u00b3"+
+ "\u03ac\01\00\00\u00b5\u03af\01\00\00\u00b7\u03b2\01\00\00\u00b9\u03b5"+
+ "\01\00\00\u00bb\u03b8\01\00\00\u00bd\u03ba\01\00\00\u00bf\u03bc\01"+
+ "\00\00\u00c1\u03be\01\00\00\u00c3\u03c0\01\00\00\u00c5\u03c2\01\00"+
+ "\00\u00c7\u03c4\01\00\00\u00c9\u03c6\01\00\00\u00cb\u03c8\01\00\00"+
+ "\u00cd\u03cb\01\00\00\u00cf\u03ce\01\00\00\u00d1\u03d1\01\00\00\u00d3"+
+ "\u03d4\01\00\00\u00d5\u03d7\01\00\00\u00d7\u03da\01\00\00\u00d9\u03dd"+
+ "\01\00\00\u00db\u03e0\01\00\00\u00dd\u03e2\01\00\00\u00df\u03e5\01"+
+ "\00\00\u00e1\u03e7\01\00\00\u00e3\u03e9\01\00\00\u00e5\u03f1\01\00"+
+ "\00\u00e7\u0643\01\00\00\u00e9\u094b\01\00\00\u00eb\u00ec\03\05\03"+
+ "\u00ec\u00ed\01\00\00\u00ed\u00ee\03\013\06\u00ee\02\01\00\00\u00ef"+
+ "\u00f0\03\05\03\u00f0\04\01\00\00\u00f1\u00f2\05\060\00\u00f2\u010c"+
+ "\01\00\00\u00f3\u00f4\02\061\071\u00f4\u00f7\01\00\00\u00f5\u00f6"+
+ "\02\060\071\u00f6\u00f8\01\00\00\u00f7\u00f5\01\00\00\u00f7\u00fa"+
+ "\01\00\00\u00f8\u00f9\01\00\00\u00f9\u00f7\01\00\00\u00fa\u010c\01"+
+ "\00\00\u00fb\u00fc\05\060\00\u00fc\u00ff\01\00\00\u00fd\u00fe\02\060"+
+ "\067\u00fe\u0100\01\00\00\u00ff\u00fd\01\00\00\u0100\u0101\01\00\00"+
+ "\u0101\u00fd\01\00\00\u0101\u0102\01\00\00\u0102\u010c\01\00\00\u0103"+
+ "\u0104\03\07\04\u0104\u0107\01\00\00\u0105\u0106\03\011\05\u0106\u0108"+
+ "\01\00\00\u0107\u0105\01\00\00\u0108\u0109\01\00\00\u0109\u0105\01"+
+ "\00\00\u0109\u010a\01\00\00\u010a\u010c\01\00\00\u010b\u00f1\01\00"+
+ "\00\u010b\u00f3\01\00\00\u010b\u00fb\01\00\00\u010b\u0103\01\00\00"+
+ "\u010c\06\01\00\00\u010d\u010e\05\060\00\u010e\u010f\05\170\00\u010f"+
+ "\u0114\01\00\00\u0110\u0111\05\060\00\u0111\u0112\05\130\00\u0112"+
+ "\u0114\01\00\00\u0113\u010d\01\00\00\u0113\u0110\01\00\00\u0114\010"+
+ "\01\00\00\u0115\u0116\02\060\071\u0116\u011c\01\00\00\u0117\u0118"+
+ "\02\141\146\u0118\u011c\01\00\00\u0119\u011a\02\101\106\u011a\u011c"+
+ "\01\00\00\u011b\u0115\01\00\00\u011b\u0117\01\00\00\u011b\u0119\01"+
+ "\00\00\u011c\012\01\00\00\u011d\u011e\05\154\00\u011e\u0122\01\00"+
+ "\00\u011f\u0120\05\114\00\u0120\u0122\01\00\00\u0121\u011d\01\00\00"+
+ "\u0121\u011f\01\00\00\u0122\014\01\00\00\u0123\u0124\02\060\071\u0124"+
+ "\u0126\01\00\00\u0125\u0123\01\00\00\u0126\u0127\01\00\00\u0127\u0123"+
+ "\01\00\00\u0127\u0128\01\00\00\u0128\u0129\01\00\00\u0129\u012a\05"+
+ "\056\00\u012a\u012d\01\00\00\u012b\u012c\02\060\071\u012c\u012e\01"+
+ "\00\00\u012d\u012b\01\00\00\u012d\u0130\01\00\00\u012e\u012f\01\00"+
+ "\00\u012f\u012d\01\00\00\u0130\u0133\01\00\00\u0131\u0132\03\017\010"+
+ "\u0132\u0134\01\00\00\u0133\u0131\01\00\00\u0133\u0134\01\00\00\u0134"+
+ "\u0174\01\00\00\u0135\u0136\05\056\00\u0136\u0139\01\00\00\u0137\u0138"+
+ "\02\060\071\u0138\u013a\01\00\00\u0139\u0137\01\00\00\u013a\u013b"+
+ "\01\00\00\u013b\u0137\01\00\00\u013b\u013c\01\00\00\u013c\u013f\01"+
+ "\00\00\u013d\u013e\03\017\010\u013e\u0140\01\00\00\u013f\u013d\01"+
+ "\00\00\u013f\u0140\01\00\00\u0140\u0174\01\00\00\u0141\u0142\02\060"+
+ "\071\u0142\u0144\01\00\00\u0143\u0141\01\00\00\u0144\u0145\01\00\00"+
+ "\u0145\u0141\01\00\00\u0145\u0146\01\00\00\u0146\u0147\01\00\00\u0147"+
+ "\u0148\03\017\010\u0148\u0174\01\00\00\u0149\u014a\02\060\071\u014a"+
+ "\u014c\01\00\00\u014b\u0149\01\00\00\u014c\u014d\01\00\00\u014d\u0149"+
+ "\01\00\00\u014d\u014e\01\00\00\u014e\u0174\01\00\00\u014f\u0150\03"+
+ "\07\04\u0150\u0153\01\00\00\u0151\u0152\03\011\05\u0152\u0154\01\00"+
+ "\00\u0153\u0151\01\00\00\u0153\u0156\01\00\00\u0154\u0155\01\00\00"+
+ "\u0155\u0153\01\00\00\u0156\u015f\01\00\00\u0157\u0158\05\056\00\u0158"+
+ "\u015b\01\00\00\u0159\u015a\03\011\05\u015a\u015c\01\00\00\u015b\u0159"+
+ "\01\00\00\u015b\u015e\01\00\00\u015c\u015d\01\00\00\u015d\u015b\01"+
+ "\00\00\u015e\u0160\01\00\00\u015f\u0157\01\00\00\u015f\u0160\01\00"+
+ "\00\u0160\u0165\01\00\00\u0161\u0162\05\160\00\u0162\u0166\01\00\00"+
+ "\u0163\u0164\05\120\00\u0164\u0166\01\00\00\u0165\u0161\01\00\00\u0165"+
+ "\u0163\01\00\00\u0166\u016b\01\00\00\u0167\u0168\05\053\00\u0168\u016c"+
+ "\01\00\00\u0169\u016a\05\055\00\u016a\u016c\01\00\00\u016b\u0167\01"+
+ "\00\00\u016b\u0169\01\00\00\u016b\u016c\01\00\00\u016c\u016f\01\00"+
+ "\00\u016d\u016e\02\060\071\u016e\u0170\01\00\00\u016f\u016d\01\00"+
+ "\00\u0170\u0171\01\00\00\u0171\u016d\01\00\00\u0171\u0172\01\00\00"+
+ "\u0172\u0174\01\00\00\u0173\u0125\01\00\00\u0173\u0135\01\00\00\u0173"+
+ "\u0143\01\00\00\u0173\u014b\01\00\00\u0173\u014f\01\00\00\u0174\016"+
+ "\01\00\00\u0175\u0176\05\145\00\u0176\u017a\01\00\00\u0177\u0178\05"+
+ "\105\00\u0178\u017a\01\00\00\u0179\u0175\01\00\00\u0179\u0177\01\00"+
+ "\00\u017a\u017f\01\00\00\u017b\u017c\05\053\00\u017c\u0180\01\00\00"+
+ "\u017d\u017e\05\055\00\u017e\u0180\01\00\00\u017f\u017b\01\00\00\u017f"+
+ "\u017d\01\00\00\u017f\u0180\01\00\00\u0180\u0183\01\00\00\u0181\u0182"+
+ "\02\060\071\u0182\u0184\01\00\00\u0183\u0181\01\00\00\u0184\u0185"+
+ "\01\00\00\u0185\u0181\01\00\00\u0185\u0186\01\00\00\u0186\020\01\00"+
+ "\00\u0187\u0188\05\146\00\u0188\u018c\01\00\00\u0189\u018a\05\106"+
+ "\00\u018a\u018c\01\00\00\u018b\u0187\01\00\00\u018b\u0189\01\00\00"+
+ "\u018c\022\01\00\00\u018d\u018e\05\144\00\u018e\u0192\01\00\00\u018f"+
+ "\u0190\05\104\00\u0190\u0192\01\00\00\u0191\u018d\01\00\00\u0191\u018f"+
+ "\01\00\00\u0192\024\01\00\00\u0193\u0194\03\015\07\u0194\u0195\01"+
+ "\00\00\u0195\u0196\03\021\011\u0196\026\01\00\00\u0197\u0198\03\015"+
+ "\07\u0198\u019b\01\00\00\u0199\u019a\03\023\012\u019a\u019c\01\00"+
+ "\00\u019b\u0199\01\00\00\u019b\u019c\01\00\00\u019c\030\01\00\00\u019d"+
+ "\u019e\05\047\00\u019e\u01a3\01\00\00\u019f\u01a0\03\035\017\u01a0"+
+ "\u01a4\01\00\00\u01a1\u01a2\012\00\00\u01a2\u01a4\01\00\00\u01a3\u019f"+
+ "\01\00\00\u01a3\u01a1\01\00\00\u01a4\u01a5\01\00\00\u01a5\u01a6\05"+
+ "\047\00\u01a6\032\01\00\00\u01a7\u01a8\05\042\00\u01a8\u01ad\01\00"+
+ "\00\u01a9\u01aa\03\035\017\u01aa\u01ae\01\00\00\u01ab\u01ac\012\01"+
+ "\00\u01ac\u01ae\01\00\00\u01ad\u01a9\01\00\00\u01ad\u01ab\01\00\00"+
+ "\u01ad\u01b0\01\00\00\u01ae\u01af\01\00\00\u01af\u01ad\01\00\00\u01b0"+
+ "\u01b1\01\00\00\u01b1\u01b2\05\042\00\u01b2\034\01\00\00\u01b3\u01b4"+
+ "\05\134\00\u01b4\u01c5\01\00\00\u01b5\u01b6\05\142\00\u01b6\u01c6"+
+ "\01\00\00\u01b7\u01b8\05\164\00\u01b8\u01c6\01\00\00\u01b9\u01ba\05"+
+ "\156\00\u01ba\u01c6\01\00\00\u01bb\u01bc\05\146\00\u01bc\u01c6\01"+
+ "\00\00\u01bd\u01be\05\162\00\u01be\u01c6\01\00\00\u01bf\u01c0\05\042"+
+ "\00\u01c0\u01c6\01\00\00\u01c1\u01c2\05\047\00\u01c2\u01c6\01\00\00"+
+ "\u01c3\u01c4\05\134\00\u01c4\u01c6\01\00\00\u01c5\u01b5\01\00\00\u01c5"+
+ "\u01b7\01\00\00\u01c5\u01b9\01\00\00\u01c5\u01bb\01\00\00\u01c5\u01bd"+
+ "\01\00\00\u01c5\u01bf\01\00\00\u01c5\u01c1\01\00\00\u01c5\u01c3\01"+
+ "\00\00\u01c6\u01cc\01\00\00\u01c7\u01c8\03\041\021\u01c8\u01cc\01"+
+ "\00\00\u01c9\u01ca\03\037\020\u01ca\u01cc\01\00\00\u01cb\u01b3\01"+
+ "\00\00\u01cb\u01c7\01\00\00\u01cb\u01c9\01\00\00\u01cc\036\01\00\00"+
+ "\u01cd\u01ce\05\134\00\u01ce\u01cf\01\00\00\u01cf\u01d0\02\060\063"+
+ "\u01d0\u01d1\01\00\00\u01d1\u01d2\02\060\067\u01d2\u01d3\01\00\00"+
+ "\u01d3\u01d4\02\060\067\u01d4\u01e0\01\00\00\u01d5\u01d6\05\134\00"+
+ "\u01d6\u01d7\01\00\00\u01d7\u01d8\02\060\067\u01d8\u01d9\01\00\00"+
+ "\u01d9\u01da\02\060\067\u01da\u01e0\01\00\00\u01db\u01dc\05\134\00"+
+ "\u01dc\u01dd\01\00\00\u01dd\u01de\02\060\067\u01de\u01e0\01\00\00"+
+ "\u01df\u01cd\01\00\00\u01df\u01d5\01\00\00\u01df\u01db\01\00\00\u01e0"+
+ "\040\01\00\00\u01e1\u01e2\05\134\00\u01e2\u01e3\01\00\00\u01e3\u01e4"+
+ "\05\165\00\u01e4\u01e5\01\00\00\u01e5\u01e6\03\011\05\u01e6\u01e7"+
+ "\01\00\00\u01e7\u01e8\03\011\05\u01e8\u01e9\01\00\00\u01e9\u01ea\03"+
+ "\011\05\u01ea\u01eb\01\00\00\u01eb\u01ec\03\011\05\u01ec\042\01\00"+
+ "\00\u01ed\u01ee\05\040\00\u01ee\u01f8\01\00\00\u01ef\u01f0\05\015"+
+ "\00\u01f0\u01f8\01\00\00\u01f1\u01f2\05\011\00\u01f2\u01f8\01\00\00"+
+ "\u01f3\u01f4\05\014\00\u01f4\u01f8\01\00\00\u01f5\u01f6\05\012\00"+
+ "\u01f6\u01f8\01\00\00\u01f7\u01ed\01\00\00\u01f7\u01ef\01\00\00\u01f7"+
+ "\u01f1\01\00\00\u01f7\u01f3\01\00\00\u01f7\u01f5\01\00\00\u01f8\u01f9"+
+ "\01\00\00\u01f9\044\01\00\00\u01fa\u01fb\05\057\00\u01fb\u01fc\05"+
+ "\052\00\u01fc\u01ff\01\00\00\u01fd\u01fe\013\00\00\u01fe\u0200\01"+
+ "\00\00\u01ff\u0202\01\00\00\u01ff\u01fd\01\00\00\u0200\u0201\01\00"+
+ "\00\u0201\u01ff\01\00\00\u0202\u0203\01\00\00\u0203\u0204\05\052\00"+
+ "\u0204\u0205\05\057\00\u0205\u0206\01\00\00\u0206\046\01\00\00\u0207"+
+ "\u0208\05\057\00\u0208\u0209\05\057\00\u0209\u020c\01\00\00\u020a"+
+ "\u020b\013\00\00\u020b\u020d\01\00\00\u020c\u020f\01\00\00\u020c\u020a"+
+ "\01\00\00\u020d\u020e\01\00\00\u020e\u020c\01\00\00\u020f\u0217\01"+
+ "\00\00\u0210\u0211\05\015\00\u0211\u0212\05\012\00\u0212\u0218\01"+
+ "\00\00\u0213\u0214\05\015\00\u0214\u0218\01\00\00\u0215\u0216\05\012"+
+ "\00\u0216\u0218\01\00\00\u0217\u0210\01\00\00\u0217\u0213\01\00\00"+
+ "\u0217\u0215\01\00\00\u0218\u0219\01\00\00\u0219\u0225\01\00\00\u021a"+
+ "\u021b\05\057\00\u021b\u021c\05\057\00\u021c\u021f\01\00\00\u021d"+
+ "\u021e\012\02\00\u021e\u0220\01\00\00\u021f\u021d\01\00\00\u021f\u0222"+
+ "\01\00\00\u0220\u0221\01\00\00\u0221\u021f\01\00\00\u0222\u0223\01"+
+ "\00\00\u0223\u0225\01\00\00\u0224\u0207\01\00\00\u0224\u021a\01\00"+
+ "\00\u0225\050\01\00\00\u0226\u0227\05\141\00\u0227\u0228\05\142\00"+
+ "\u0228\u0229\05\163\00\u0229\u022a\05\164\00\u022a\u022b\05\162\00"+
+ "\u022b\u022c\05\141\00\u022c\u022d\05\143\00\u022d\u022e\05\164\00"+
+ "\u022e\052\01\00\00\u022f\u0230\05\141\00\u0230\u0231\05\163\00\u0231"+
+ "\u0232\05\163\00\u0232\u0233\05\145\00\u0233\u0234\05\162\00\u0234"+
+ "\u0235\05\164\00\u0235\054\01\00\00\u0236\u0237\05\142\00\u0237\u0238"+
+ "\05\157\00\u0238\u0239\05\157\00\u0239\u023a\05\154\00\u023a\u023b"+
+ "\05\145\00\u023b\u023c\05\141\00\u023c\u023d\05\156\00\u023d\056\01"+
+ "\00\00\u023e\u023f\05\142\00\u023f\u0240\05\162\00\u0240\u0241\05"+
+ "\145\00\u0241\u0242\05\141\00\u0242\u0243\05\153\00\u0243\060\01\00"+
+ "\00\u0244\u0245\05\142\00\u0245\u0246\05\171\00\u0246\u0247\05\164"+
+ "\00\u0247\u0248\05\145\00\u0248\062\01\00\00\u0249\u024a\05\143\00"+
+ "\u024a\u024b\05\141\00\u024b\u024c\05\163\00\u024c\u024d\05\145\00"+
+ "\u024d\064\01\00\00\u024e\u024f\05\143\00\u024f\u0250\05\141\00\u0250"+
+ "\u0251\05\164\00\u0251\u0252\05\143\00\u0252\u0253\05\150\00\u0253"+
+ "\066\01\00\00\u0254\u0255\05\143\00\u0255\u0256\05\150\00\u0256\u0257"+
+ "\05\141\00\u0257\u0258\05\162\00\u0258\070\01\00\00\u0259\u025a\05"+
+ "\143\00\u025a\u025b\05\154\00\u025b\u025c\05\141\00\u025c\u025d\05"+
+ "\163\00\u025d\u025e\05\163\00\u025e\072\01\00\00\u025f\u0260\05\143"+
+ "\00\u0260\u0261\05\157\00\u0261\u0262\05\156\00\u0262\u0263\05\163"+
+ "\00\u0263\u0264\05\164\00\u0264\074\01\00\00\u0265\u0266\05\143\00"+
+ "\u0266\u0267\05\157\00\u0267\u0268\05\156\00\u0268\u0269\05\164\00"+
+ "\u0269\u026a\05\151\00\u026a\u026b\05\156\00\u026b\u026c\05\165\00"+
+ "\u026c\u026d\05\145\00\u026d\076\01\00\00\u026e\u026f\05\144\00\u026f"+
+ "\u0270\05\145\00\u0270\u0271\05\146\00\u0271\u0272\05\141\00\u0272"+
+ "\u0273\05\165\00\u0273\u0274\05\154\00\u0274\u0275\05\164\00\u0275"+
+ "\100\01\00\00\u0276\u0277\05\144\00\u0277\u0278\05\157\00\u0278\102"+
+ "\01\00\00\u0279\u027a\05\144\00\u027a\u027b\05\157\00\u027b\u027c"+
+ "\05\165\00\u027c\u027d\05\142\00\u027d\u027e\05\154\00\u027e\u027f"+
+ "\05\145\00\u027f\104\01\00\00\u0280\u0281\05\145\00\u0281\u0282\05"+
+ "\154\00\u0282\u0283\05\163\00\u0283\u0284\05\145\00\u0284\106\01\00"+
+ "\00\u0285\u0286\05\145\00\u0286\u0287\05\156\00\u0287\u0288\05\165"+
+ "\00\u0288\u0289\05\155\00\u0289\110\01\00\00\u028a\u028b\05\145\00"+
+ "\u028b\u028c\05\170\00\u028c\u028d\05\164\00\u028d\u028e\05\145\00"+
+ "\u028e\u028f\05\156\00\u028f\u0290\05\144\00\u0290\u0291\05\163\00"+
+ "\u0291\112\01\00\00\u0292\u0293\05\146\00\u0293\u0294\05\151\00\u0294"+
+ "\u0295\05\156\00\u0295\u0296\05\141\00\u0296\u0297\05\154\00\u0297"+
+ "\114\01\00\00\u0298\u0299\05\146\00\u0299\u029a\05\151\00\u029a\u029b"+
+ "\05\156\00\u029b\u029c\05\141\00\u029c\u029d\05\154\00\u029d\u029e"+
+ "\05\154\00\u029e\u029f\05\171\00\u029f\116\01\00\00\u02a0\u02a1\05"+
+ "\146\00\u02a1\u02a2\05\154\00\u02a2\u02a3\05\157\00\u02a3\u02a4\05"+
+ "\141\00\u02a4\u02a5\05\164\00\u02a5\120\01\00\00\u02a6\u02a7\05\146"+
+ "\00\u02a7\u02a8\05\157\00\u02a8\u02a9\05\162\00\u02a9\122\01\00\00"+
+ "\u02aa\u02ab\05\147\00\u02ab\u02ac\05\157\00\u02ac\u02ad\05\164\00"+
+ "\u02ad\u02ae\05\157\00\u02ae\124\01\00\00\u02af\u02b0\05\151\00\u02b0"+
+ "\u02b1\05\146\00\u02b1\126\01\00\00\u02b2\u02b3\05\151\00\u02b3\u02b4"+
+ "\05\155\00\u02b4\u02b5\05\160\00\u02b5\u02b6\05\154\00\u02b6\u02b7"+
+ "\05\145\00\u02b7\u02b8\05\155\00\u02b8\u02b9\05\145\00\u02b9\u02ba"+
+ "\05\156\00\u02ba\u02bb\05\164\00\u02bb\u02bc\05\163\00\u02bc\130\01"+
+ "\00\00\u02bd\u02be\05\151\00\u02be\u02bf\05\155\00\u02bf\u02c0\05"+
+ "\160\00\u02c0\u02c1\05\157\00\u02c1\u02c2\05\162\00\u02c2\u02c3\05"+
+ "\164\00\u02c3\132\01\00\00\u02c4\u02c5\05\151\00\u02c5\u02c6\05\156"+
+ "\00\u02c6\u02c7\05\163\00\u02c7\u02c8\05\164\00\u02c8\u02c9\05\141"+
+ "\00\u02c9\u02ca\05\156\00\u02ca\u02cb\05\143\00\u02cb\u02cc\05\145"+
+ "\00\u02cc\u02cd\05\157\00\u02cd\u02ce\05\146\00\u02ce\134\01\00\00"+
+ "\u02cf\u02d0\05\151\00\u02d0\u02d1\05\156\00\u02d1\u02d2\05\164\00"+
+ "\u02d2\136\01\00\00\u02d3\u02d4\05\151\00\u02d4\u02d5\05\156\00\u02d5"+
+ "\u02d6\05\164\00\u02d6\u02d7\05\145\00\u02d7\u02d8\05\162\00\u02d8"+
+ "\u02d9\05\146\00\u02d9\u02da\05\141\00\u02da\u02db\05\143\00\u02db"+
+ "\u02dc\05\145\00\u02dc\140\01\00\00\u02dd\u02de\05\154\00\u02de\u02df"+
+ "\05\157\00\u02df\u02e0\05\156\00\u02e0\u02e1\05\147\00\u02e1\142\01"+
+ "\00\00\u02e2\u02e3\05\156\00\u02e3\u02e4\05\141\00\u02e4\u02e5\05"+
+ "\164\00\u02e5\u02e6\05\151\00\u02e6\u02e7\05\166\00\u02e7\u02e8\05"+
+ "\145\00\u02e8\144\01\00\00\u02e9\u02ea\05\156\00\u02ea\u02eb\05\145"+
+ "\00\u02eb\u02ec\05\167\00\u02ec\146\01\00\00\u02ed\u02ee\05\160\00"+
+ "\u02ee\u02ef\05\141\00\u02ef\u02f0\05\143\00\u02f0\u02f1\05\153\00"+
+ "\u02f1\u02f2\05\141\00\u02f2\u02f3\05\147\00\u02f3\u02f4\05\145\00"+
+ "\u02f4\150\01\00\00\u02f5\u02f6\05\160\00\u02f6\u02f7\05\162\00\u02f7"+
+ "\u02f8\05\151\00\u02f8\u02f9\05\166\00\u02f9\u02fa\05\141\00\u02fa"+
+ "\u02fb\05\164\00\u02fb\u02fc\05\145\00\u02fc\152\01\00\00\u02fd\u02fe"+
+ "\05\160\00\u02fe\u02ff\05\162\00\u02ff\u0300\05\157\00\u0300\u0301"+
+ "\05\164\00\u0301\u0302\05\145\00\u0302\u0303\05\143\00\u0303\u0304"+
+ "\05\164\00\u0304\u0305\05\145\00\u0305\u0306\05\144\00\u0306\154\01"+
+ "\00\00\u0307\u0308\05\160\00\u0308\u0309\05\165\00\u0309\u030a\05"+
+ "\142\00\u030a\u030b\05\154\00\u030b\u030c\05\151\00\u030c\u030d\05"+
+ "\143\00\u030d\156\01\00\00\u030e\u030f\05\162\00\u030f\u0310\05\145"+
+ "\00\u0310\u0311\05\164\00\u0311\u0312\05\165\00\u0312\u0313\05\162"+
+ "\00\u0313\u0314\05\156\00\u0314\160\01\00\00\u0315\u0316\05\163\00"+
+ "\u0316\u0317\05\150\00\u0317\u0318\05\157\00\u0318\u0319\05\162\00"+
+ "\u0319\u031a\05\164\00\u031a\162\01\00\00\u031b\u031c\05\163\00\u031c"+
+ "\u031d\05\164\00\u031d\u031e\05\141\00\u031e\u031f\05\164\00\u031f"+
+ "\u0320\05\151\00\u0320\u0321\05\143\00\u0321\164\01\00\00\u0322\u0323"+
+ "\05\163\00\u0323\u0324\05\164\00\u0324\u0325\05\162\00\u0325\u0326"+
+ "\05\151\00\u0326\u0327\05\143\00\u0327\u0328\05\164\00\u0328\u0329"+
+ "\05\146\00\u0329\u032a\05\160\00\u032a\166\01\00\00\u032b\u032c\05"+
+ "\163\00\u032c\u032d\05\165\00\u032d\u032e\05\160\00\u032e\u032f\05"+
+ "\145\00\u032f\u0330\05\162\00\u0330\170\01\00\00\u0331\u0332\05\163"+
+ "\00\u0332\u0333\05\167\00\u0333\u0334\05\151\00\u0334\u0335\05\164"+
+ "\00\u0335\u0336\05\143\00\u0336\u0337\05\150\00\u0337\172\01\00\00"+
+ "\u0338\u0339\05\163\00\u0339\u033a\05\171\00\u033a\u033b\05\156\00"+
+ "\u033b\u033c\05\143\00\u033c\u033d\05\150\00\u033d\u033e\05\162\00"+
+ "\u033e\u033f\05\157\00\u033f\u0340\05\156\00\u0340\u0341\05\151\00"+
+ "\u0341\u0342\05\172\00\u0342\u0343\05\145\00\u0343\u0344\05\144\00"+
+ "\u0344\174\01\00\00\u0345\u0346\05\164\00\u0346\u0347\05\150\00\u0347"+
+ "\u0348\05\151\00\u0348\u0349\05\163\00\u0349\176\01\00\00\u034a\u034b"+
+ "\05\164\00\u034b\u034c\05\150\00\u034c\u034d\05\162\00\u034d\u034e"+
+ "\05\157\00\u034e\u034f\05\167\00\u034f\u0080\01\00\00\u0350\u0351"+
+ "\05\164\00\u0351\u0352\05\150\00\u0352\u0353\05\162\00\u0353\u0354"+
+ "\05\157\00\u0354\u0355\05\167\00\u0355\u0356\05\163\00\u0356\u0082"+
+ "\01\00\00\u0357\u0358\05\164\00\u0358\u0359\05\162\00\u0359\u035a"+
+ "\05\141\00\u035a\u035b\05\156\00\u035b\u035c\05\163\00\u035c\u035d"+
+ "\05\151\00\u035d\u035e\05\145\00\u035e\u035f\05\156\00\u035f\u0360"+
+ "\05\164\00\u0360\u0084\01\00\00\u0361\u0362\05\164\00\u0362\u0363"+
+ "\05\162\00\u0363\u0364\05\171\00\u0364\u0086\01\00\00\u0365\u0366"+
+ "\05\166\00\u0366\u0367\05\157\00\u0367\u0368\05\151\00\u0368\u0369"+
+ "\05\144\00\u0369\u0088\01\00\00\u036a\u036b\05\166\00\u036b\u036c"+
+ "\05\157\00\u036c\u036d\05\154\00\u036d\u036e\05\141\00\u036e\u036f"+
+ "\05\164\00\u036f\u0370\05\151\00\u0370\u0371\05\154\00\u0371\u0372"+
+ "\05\145\00\u0372\u008a\01\00\00\u0373\u0374\05\167\00\u0374\u0375"+
+ "\05\150\00\u0375\u0376\05\151\00\u0376\u0377\05\154\00\u0377\u0378"+
+ "\05\145\00\u0378\u008c\01\00\00\u0379\u037a\05\164\00\u037a\u037b"+
+ "\05\162\00\u037b\u037c\05\165\00\u037c\u037d\05\145\00\u037d\u008e"+
+ "\01\00\00\u037e\u037f\05\146\00\u037f\u0380\05\141\00\u0380\u0381"+
+ "\05\154\00\u0381\u0382\05\163\00\u0382\u0383\05\145\00\u0383\u0090"+
+ "\01\00\00\u0384\u0385\05\156\00\u0385\u0386\05\165\00\u0386\u0387"+
+ "\05\154\00\u0387\u0388\05\154\00\u0388\u0092\01\00\00\u0389\u038a"+
+ "\05\050\00\u038a\u0094\01\00\00\u038b\u038c\05\051\00\u038c\u0096"+
+ "\01\00\00\u038d\u038e\05\173\00\u038e\u0098\01\00\00\u038f\u0390\05"+
+ "\175\00\u0390\u009a\01\00\00\u0391\u0392\05\133\00\u0392\u009c\01"+
+ "\00\00\u0393\u0394\05\135\00\u0394\u009e\01\00\00\u0395\u0396\05\073"+
+ "\00\u0396\u00a0\01\00\00\u0397\u0398\05\054\00\u0398\u00a2\01\00\00"+
+ "\u0399\u039a\05\056\00\u039a\u00a4\01\00\00\u039b\u039c\05\056\00"+
+ "\u039c\u039d\05\056\00\u039d\u039e\05\056\00\u039e\u00a6\01\00\00"+
+ "\u039f\u03a0\05\075\00\u03a0\u00a8\01\00\00\u03a1\u03a2\05\041\00"+
+ "\u03a2\u00aa\01\00\00\u03a3\u03a4\05\176\00\u03a4\u00ac\01\00\00\u03a5"+
+ "\u03a6\05\077\00\u03a6\u00ae\01\00\00\u03a7\u03a8\05\072\00\u03a8"+
+ "\u00b0\01\00\00\u03a9\u03aa\05\075\00\u03aa\u03ab\05\075\00\u03ab"+
+ "\u00b2\01\00\00\u03ac\u03ad\05\046\00\u03ad\u03ae\05\046\00\u03ae"+
+ "\u00b4\01\00\00\u03af\u03b0\05\174\00\u03b0\u03b1\05\174\00\u03b1"+
+ "\u00b6\01\00\00\u03b2\u03b3\05\053\00\u03b3\u03b4\05\053\00\u03b4"+
+ "\u00b8\01\00\00\u03b5\u03b6\05\055\00\u03b6\u03b7\05\055\00\u03b7"+
+ "\u00ba\01\00\00\u03b8\u03b9\05\053\00\u03b9\u00bc\01\00\00\u03ba\u03bb"+
+ "\05\055\00\u03bb\u00be\01\00\00\u03bc\u03bd\05\052\00\u03bd\u00c0"+
+ "\01\00\00\u03be\u03bf\05\057\00\u03bf\u00c2\01\00\00\u03c0\u03c1\05"+
+ "\046\00\u03c1\u00c4\01\00\00\u03c2\u03c3\05\174\00\u03c3\u00c6\01"+
+ "\00\00\u03c4\u03c5\05\136\00\u03c5\u00c8\01\00\00\u03c6\u03c7\05\045"+
+ "\00\u03c7\u00ca\01\00\00\u03c8\u03c9\05\053\00\u03c9\u03ca\05\075"+
+ "\00\u03ca\u00cc\01\00\00\u03cb\u03cc\05\055\00\u03cc\u03cd\05\075"+
+ "\00\u03cd\u00ce\01\00\00\u03ce\u03cf\05\052\00\u03cf\u03d0\05\075"+
+ "\00\u03d0\u00d0\01\00\00\u03d1\u03d2\05\057\00\u03d2\u03d3\05\075"+
+ "\00\u03d3\u00d2\01\00\00\u03d4\u03d5\05\046\00\u03d5\u03d6\05\075"+
+ "\00\u03d6\u00d4\01\00\00\u03d7\u03d8\05\174\00\u03d8\u03d9\05\075"+
+ "\00\u03d9\u00d6\01\00\00\u03da\u03db\05\136\00\u03db\u03dc\05\075"+
+ "\00\u03dc\u00d8\01\00\00\u03dd\u03de\05\045\00\u03de\u03df\05\075"+
+ "\00\u03df\u00da\01\00\00\u03e0\u03e1\05\100\00\u03e1\u00dc\01\00\00"+
+ "\u03e2\u03e3\05\041\00\u03e3\u03e4\05\075\00\u03e4\u00de\01\00\00"+
+ "\u03e5\u03e6\05\074\00\u03e6\u00e0\01\00\00\u03e7\u03e8\05\076\00"+
+ "\u03e8\u00e2\01\00\00\u03e9\u03ea\03\u00e7\164\u03ea\u03ed\01\00\00"+
+ "\u03eb\u03ec\03\u00e9\165\u03ec\u03ee\01\00\00\u03ed\u03eb\01\00\00"+
+ "\u03ed\u03f0\01\00\00\u03ee\u03ef\01\00\00\u03ef\u03ed\01\00\00\u03f0"+
+ "\u00e4\01\00\00\u03f1\u03f2\02\ud800\udbff\u03f2\u03f3\01\00\00\u03f3"+
+ "\u03f4\02\udc00\udfff\u03f4\u00e6\01\00\00\u03f5\u03f6\05\044\00\u03f6"+
+ "\u0644\01\00\00\u03f7\u03f8\02\101\132\u03f8\u0644\01\00\00\u03f9"+
+ "\u03fa\05\137\00\u03fa\u0644\01\00\00\u03fb\u03fc\02\141\172\u03fc"+
+ "\u0644\01\00\00\u03fd\u03fe\02\u00a2\u00a5\u03fe\u0644\01\00\00\u03ff"+
+ "\u0400\05\u00aa\00\u0400\u0644\01\00\00\u0401\u0402\05\u00b5\00\u0402"+
+ "\u0644\01\00\00\u0403\u0404\05\u00ba\00\u0404\u0644\01\00\00\u0405"+
+ "\u0406\02\u00c0\u00d6\u0406\u0644\01\00\00\u0407\u0408\02\u00d8\u00f6"+
+ "\u0408\u0644\01\00\00\u0409\u040a\02\u00f8\u0236\u040a\u0644\01\00"+
+ "\00\u040b\u040c\02\u0250\u02c1\u040c\u0644\01\00\00\u040d\u040e\02"+
+ "\u02c6\u02d1\u040e\u0644\01\00\00\u040f\u0410\02\u02e0\u02e4\u0410"+
+ "\u0644\01\00\00\u0411\u0412\05\u02ee\00\u0412\u0644\01\00\00\u0413"+
+ "\u0414\05\u037a\00\u0414\u0644\01\00\00\u0415\u0416\05\u0386\00\u0416"+
+ "\u0644\01\00\00\u0417\u0418\02\u0388\u038a\u0418\u0644\01\00\00\u0419"+
+ "\u041a\05\u038c\00\u041a\u0644\01\00\00\u041b\u041c\02\u038e\u03a1"+
+ "\u041c\u0644\01\00\00\u041d\u041e\02\u03a3\u03ce\u041e\u0644\01\00"+
+ "\00\u041f\u0420\02\u03d0\u03f5\u0420\u0644\01\00\00\u0421\u0422\02"+
+ "\u03f7\u03fb\u0422\u0644\01\00\00\u0423\u0424\02\u0400\u0481\u0424"+
+ "\u0644\01\00\00\u0425\u0426\02\u048a\u04ce\u0426\u0644\01\00\00\u0427"+
+ "\u0428\02\u04d0\u04f5\u0428\u0644\01\00\00\u0429\u042a\02\u04f8\u04f9"+
+ "\u042a\u0644\01\00\00\u042b\u042c\02\u0500\u050f\u042c\u0644\01\00"+
+ "\00\u042d\u042e\02\u0531\u0556\u042e\u0644\01\00\00\u042f\u0430\05"+
+ "\u0559\00\u0430\u0644\01\00\00\u0431\u0432\02\u0561\u0587\u0432\u0644"+
+ "\01\00\00\u0433\u0434\02\u05d0\u05ea\u0434\u0644\01\00\00\u0435\u0436"+
+ "\02\u05f0\u05f2\u0436\u0644\01\00\00\u0437\u0438\02\u0621\u063a\u0438"+
+ "\u0644\01\00\00\u0439\u043a\02\u0640\u064a\u043a\u0644\01\00\00\u043b"+
+ "\u043c\02\u066e\u066f\u043c\u0644\01\00\00\u043d\u043e\02\u0671\u06d3"+
+ "\u043e\u0644\01\00\00\u043f\u0440\05\u06d5\00\u0440\u0644\01\00\00"+
+ "\u0441\u0442\02\u06e5\u06e6\u0442\u0644\01\00\00\u0443\u0444\02\u06ee"+
+ "\u06ef\u0444\u0644\01\00\00\u0445\u0446\02\u06fa\u06fc\u0446\u0644"+
+ "\01\00\00\u0447\u0448\05\u06ff\00\u0448\u0644\01\00\00\u0449\u044a"+
+ "\05\u0710\00\u044a\u0644\01\00\00\u044b\u044c\02\u0712\u072f\u044c"+
+ "\u0644\01\00\00\u044d\u044e\02\u074d\u074f\u044e\u0644\01\00\00\u044f"+
+ "\u0450\02\u0780\u07a5\u0450\u0644\01\00\00\u0451\u0452\05\u07b1\00"+
+ "\u0452\u0644\01\00\00\u0453\u0454\02\u0904\u0939\u0454\u0644\01\00"+
+ "\00\u0455\u0456\05\u093d\00\u0456\u0644\01\00\00\u0457\u0458\05\u0950"+
+ "\00\u0458\u0644\01\00\00\u0459\u045a\02\u0958\u0961\u045a\u0644\01"+
+ "\00\00\u045b\u045c\02\u0985\u098c\u045c\u0644\01\00\00\u045d\u045e"+
+ "\02\u098f\u0990\u045e\u0644\01\00\00\u045f\u0460\02\u0993\u09a8\u0460"+
+ "\u0644\01\00\00\u0461\u0462\02\u09aa\u09b0\u0462\u0644\01\00\00\u0463"+
+ "\u0464\05\u09b2\00\u0464\u0644\01\00\00\u0465\u0466\02\u09b6\u09b9"+
+ "\u0466\u0644\01\00\00\u0467\u0468\05\u09bd\00\u0468\u0644\01\00\00"+
+ "\u0469\u046a\02\u09dc\u09dd\u046a\u0644\01\00\00\u046b\u046c\02\u09df"+
+ "\u09e1\u046c\u0644\01\00\00\u046d\u046e\02\u09f0\u09f3\u046e\u0644"+
+ "\01\00\00\u046f\u0470\02\u0a05\u0a0a\u0470\u0644\01\00\00\u0471\u0472"+
+ "\02\u0a0f\u0a10\u0472\u0644\01\00\00\u0473\u0474\02\u0a13\u0a28\u0474"+
+ "\u0644\01\00\00\u0475\u0476\02\u0a2a\u0a30\u0476\u0644\01\00\00\u0477"+
+ "\u0478\02\u0a32\u0a33\u0478\u0644\01\00\00\u0479\u047a\02\u0a35\u0a36"+
+ "\u047a\u0644\01\00\00\u047b\u047c\02\u0a38\u0a39\u047c\u0644\01\00"+
+ "\00\u047d\u047e\02\u0a59\u0a5c\u047e\u0644\01\00\00\u047f\u0480\05"+
+ "\u0a5e\00\u0480\u0644\01\00\00\u0481\u0482\02\u0a72\u0a74\u0482\u0644"+
+ "\01\00\00\u0483\u0484\02\u0a85\u0a8d\u0484\u0644\01\00\00\u0485\u0486"+
+ "\02\u0a8f\u0a91\u0486\u0644\01\00\00\u0487\u0488\02\u0a93\u0aa8\u0488"+
+ "\u0644\01\00\00\u0489\u048a\02\u0aaa\u0ab0\u048a\u0644\01\00\00\u048b"+
+ "\u048c\02\u0ab2\u0ab3\u048c\u0644\01\00\00\u048d\u048e\02\u0ab5\u0ab9"+
+ "\u048e\u0644\01\00\00\u048f\u0490\05\u0abd\00\u0490\u0644\01\00\00"+
+ "\u0491\u0492\05\u0ad0\00\u0492\u0644\01\00\00\u0493\u0494\02\u0ae0"+
+ "\u0ae1\u0494\u0644\01\00\00\u0495\u0496\05\u0af1\00\u0496\u0644\01"+
+ "\00\00\u0497\u0498\02\u0b05\u0b0c\u0498\u0644\01\00\00\u0499\u049a"+
+ "\02\u0b0f\u0b10\u049a\u0644\01\00\00\u049b\u049c\02\u0b13\u0b28\u049c"+
+ "\u0644\01\00\00\u049d\u049e\02\u0b2a\u0b30\u049e\u0644\01\00\00\u049f"+
+ "\u04a0\02\u0b32\u0b33\u04a0\u0644\01\00\00\u04a1\u04a2\02\u0b35\u0b39"+
+ "\u04a2\u0644\01\00\00\u04a3\u04a4\05\u0b3d\00\u04a4\u0644\01\00\00"+
+ "\u04a5\u04a6\02\u0b5c\u0b5d\u04a6\u0644\01\00\00\u04a7\u04a8\02\u0b5f"+
+ "\u0b61\u04a8\u0644\01\00\00\u04a9\u04aa\05\u0b71\00\u04aa\u0644\01"+
+ "\00\00\u04ab\u04ac\05\u0b83\00\u04ac\u0644\01\00\00\u04ad\u04ae\02"+
+ "\u0b85\u0b8a\u04ae\u0644\01\00\00\u04af\u04b0\02\u0b8e\u0b90\u04b0"+
+ "\u0644\01\00\00\u04b1\u04b2\02\u0b92\u0b95\u04b2\u0644\01\00\00\u04b3"+
+ "\u04b4\02\u0b99\u0b9a\u04b4\u0644\01\00\00\u04b5\u04b6\05\u0b9c\00"+
+ "\u04b6\u0644\01\00\00\u04b7\u04b8\02\u0b9e\u0b9f\u04b8\u0644\01\00"+
+ "\00\u04b9\u04ba\02\u0ba3\u0ba4\u04ba\u0644\01\00\00\u04bb\u04bc\02"+
+ "\u0ba8\u0baa\u04bc\u0644\01\00\00\u04bd\u04be\02\u0bae\u0bb5\u04be"+
+ "\u0644\01\00\00\u04bf\u04c0\02\u0bb7\u0bb9\u04c0\u0644\01\00\00\u04c1"+
+ "\u04c2\05\u0bf9\00\u04c2\u0644\01\00\00\u04c3\u04c4\02\u0c05\u0c0c"+
+ "\u04c4\u0644\01\00\00\u04c5\u04c6\02\u0c0e\u0c10\u04c6\u0644\01\00"+
+ "\00\u04c7\u04c8\02\u0c12\u0c28\u04c8\u0644\01\00\00\u04c9\u04ca\02"+
+ "\u0c2a\u0c33\u04ca\u0644\01\00\00\u04cb\u04cc\02\u0c35\u0c39\u04cc"+
+ "\u0644\01\00\00\u04cd\u04ce\02\u0c60\u0c61\u04ce\u0644\01\00\00\u04cf"+
+ "\u04d0\02\u0c85\u0c8c\u04d0\u0644\01\00\00\u04d1\u04d2\02\u0c8e\u0c90"+
+ "\u04d2\u0644\01\00\00\u04d3\u04d4\02\u0c92\u0ca8\u04d4\u0644\01\00"+
+ "\00\u04d5\u04d6\02\u0caa\u0cb3\u04d6\u0644\01\00\00\u04d7\u04d8\02"+
+ "\u0cb5\u0cb9\u04d8\u0644\01\00\00\u04d9\u04da\05\u0cbd\00\u04da\u0644"+
+ "\01\00\00\u04db\u04dc\05\u0cde\00\u04dc\u0644\01\00\00\u04dd\u04de"+
+ "\02\u0ce0\u0ce1\u04de\u0644\01\00\00\u04df\u04e0\02\u0d05\u0d0c\u04e0"+
+ "\u0644\01\00\00\u04e1\u04e2\02\u0d0e\u0d10\u04e2\u0644\01\00\00\u04e3"+
+ "\u04e4\02\u0d12\u0d28\u04e4\u0644\01\00\00\u04e5\u04e6\02\u0d2a\u0d39"+
+ "\u04e6\u0644\01\00\00\u04e7\u04e8\02\u0d60\u0d61\u04e8\u0644\01\00"+
+ "\00\u04e9\u04ea\02\u0d85\u0d96\u04ea\u0644\01\00\00\u04eb\u04ec\02"+
+ "\u0d9a\u0db1\u04ec\u0644\01\00\00\u04ed\u04ee\02\u0db3\u0dbb\u04ee"+
+ "\u0644\01\00\00\u04ef\u04f0\05\u0dbd\00\u04f0\u0644\01\00\00\u04f1"+
+ "\u04f2\02\u0dc0\u0dc6\u04f2\u0644\01\00\00\u04f3\u04f4\02\u0e01\u0e30"+
+ "\u04f4\u0644\01\00\00\u04f5\u04f6\02\u0e32\u0e33\u04f6\u0644\01\00"+
+ "\00\u04f7\u04f8\02\u0e3f\u0e46\u04f8\u0644\01\00\00\u04f9\u04fa\02"+
+ "\u0e81\u0e82\u04fa\u0644\01\00\00\u04fb\u04fc\05\u0e84\00\u04fc\u0644"+
+ "\01\00\00\u04fd\u04fe\02\u0e87\u0e88\u04fe\u0644\01\00\00\u04ff\u0500"+
+ "\05\u0e8a\00\u0500\u0644\01\00\00\u0501\u0502\05\u0e8d\00\u0502\u0644"+
+ "\01\00\00\u0503\u0504\02\u0e94\u0e97\u0504\u0644\01\00\00\u0505\u0506"+
+ "\02\u0e99\u0e9f\u0506\u0644\01\00\00\u0507\u0508\02\u0ea1\u0ea3\u0508"+
+ "\u0644\01\00\00\u0509\u050a\05\u0ea5\00\u050a\u0644\01\00\00\u050b"+
+ "\u050c\05\u0ea7\00\u050c\u0644\01\00\00\u050d\u050e\02\u0eaa\u0eab"+
+ "\u050e\u0644\01\00\00\u050f\u0510\02\u0ead\u0eb0\u0510\u0644\01\00"+
+ "\00\u0511\u0512\02\u0eb2\u0eb3\u0512\u0644\01\00\00\u0513\u0514\05"+
+ "\u0ebd\00\u0514\u0644\01\00\00\u0515\u0516\02\u0ec0\u0ec4\u0516\u0644"+
+ "\01\00\00\u0517\u0518\05\u0ec6\00\u0518\u0644\01\00\00\u0519\u051a"+
+ "\02\u0edc\u0edd\u051a\u0644\01\00\00\u051b\u051c\05\u0f00\00\u051c"+
+ "\u0644\01\00\00\u051d\u051e\02\u0f40\u0f47\u051e\u0644\01\00\00\u051f"+
+ "\u0520\02\u0f49\u0f6a\u0520\u0644\01\00\00\u0521\u0522\02\u0f88\u0f8b"+
+ "\u0522\u0644\01\00\00\u0523\u0524\02\u1000\u1021\u0524\u0644\01\00"+
+ "\00\u0525\u0526\02\u1023\u1027\u0526\u0644\01\00\00\u0527\u0528\02"+
+ "\u1029\u102a\u0528\u0644\01\00\00\u0529\u052a\02\u1050\u1055\u052a"+
+ "\u0644\01\00\00\u052b\u052c\02\u10a0\u10c5\u052c\u0644\01\00\00\u052d"+
+ "\u052e\02\u10d0\u10f8\u052e\u0644\01\00\00\u052f\u0530\02\u1100\u1159"+
+ "\u0530\u0644\01\00\00\u0531\u0532\02\u115f\u11a2\u0532\u0644\01\00"+
+ "\00\u0533\u0534\02\u11a8\u11f9\u0534\u0644\01\00\00\u0535\u0536\02"+
+ "\u1200\u1206\u0536\u0644\01\00\00\u0537\u0538\02\u1208\u1246\u0538"+
+ "\u0644\01\00\00\u0539\u053a\05\u1248\00\u053a\u0644\01\00\00\u053b"+
+ "\u053c\02\u124a\u124d\u053c\u0644\01\00\00\u053d\u053e\02\u1250\u1256"+
+ "\u053e\u0644\01\00\00\u053f\u0540\05\u1258\00\u0540\u0644\01\00\00"+
+ "\u0541\u0542\02\u125a\u125d\u0542\u0644\01\00\00\u0543\u0544\02\u1260"+
+ "\u1286\u0544\u0644\01\00\00\u0545\u0546\05\u1288\00\u0546\u0644\01"+
+ "\00\00\u0547\u0548\02\u128a\u128d\u0548\u0644\01\00\00\u0549\u054a"+
+ "\02\u1290\u12ae\u054a\u0644\01\00\00\u054b\u054c\05\u12b0\00\u054c"+
+ "\u0644\01\00\00\u054d\u054e\02\u12b2\u12b5\u054e\u0644\01\00\00\u054f"+
+ "\u0550\02\u12b8\u12be\u0550\u0644\01\00\00\u0551\u0552\05\u12c0\00"+
+ "\u0552\u0644\01\00\00\u0553\u0554\02\u12c2\u12c5\u0554\u0644\01\00"+
+ "\00\u0555\u0556\02\u12c8\u12ce\u0556\u0644\01\00\00\u0557\u0558\02"+
+ "\u12d0\u12d6\u0558\u0644\01\00\00\u0559\u055a\02\u12d8\u12ee\u055a"+
+ "\u0644\01\00\00\u055b\u055c\02\u12f0\u130e\u055c\u0644\01\00\00\u055d"+
+ "\u055e\05\u1310\00\u055e\u0644\01\00\00\u055f\u0560\02\u1312\u1315"+
+ "\u0560\u0644\01\00\00\u0561\u0562\02\u1318\u131e\u0562\u0644\01\00"+
+ "\00\u0563\u0564\02\u1320\u1346\u0564\u0644\01\00\00\u0565\u0566\02"+
+ "\u1348\u135a\u0566\u0644\01\00\00\u0567\u0568\02\u13a0\u13f4\u0568"+
+ "\u0644\01\00\00\u0569\u056a\02\u1401\u166c\u056a\u0644\01\00\00\u056b"+
+ "\u056c\02\u166f\u1676\u056c\u0644\01\00\00\u056d\u056e\02\u1681\u169a"+
+ "\u056e\u0644\01\00\00\u056f\u0570\02\u16a0\u16ea\u0570\u0644\01\00"+
+ "\00\u0571\u0572\02\u16ee\u16f0\u0572\u0644\01\00\00\u0573\u0574\02"+
+ "\u1700\u170c\u0574\u0644\01\00\00\u0575\u0576\02\u170e\u1711\u0576"+
+ "\u0644\01\00\00\u0577\u0578\02\u1720\u1731\u0578\u0644\01\00\00\u0579"+
+ "\u057a\02\u1740\u1751\u057a\u0644\01\00\00\u057b\u057c\02\u1760\u176c"+
+ "\u057c\u0644\01\00\00\u057d\u057e\02\u176e\u1770\u057e\u0644\01\00"+
+ "\00\u057f\u0580\02\u1780\u17b3\u0580\u0644\01\00\00\u0581\u0582\05"+
+ "\u17d7\00\u0582\u0644\01\00\00\u0583\u0584\02\u17db\u17dc\u0584\u0644"+
+ "\01\00\00\u0585\u0586\02\u1820\u1877\u0586\u0644\01\00\00\u0587\u0588"+
+ "\02\u1880\u18a8\u0588\u0644\01\00\00\u0589\u058a\02\u1900\u191c\u058a"+
+ "\u0644\01\00\00\u058b\u058c\02\u1950\u196d\u058c\u0644\01\00\00\u058d"+
+ "\u058e\02\u1970\u1974\u058e\u0644\01\00\00\u058f\u0590\02\u1d00\u1d6b"+
+ "\u0590\u0644\01\00\00\u0591\u0592\02\u1e00\u1e9b\u0592\u0644\01\00"+
+ "\00\u0593\u0594\02\u1ea0\u1ef9\u0594\u0644\01\00\00\u0595\u0596\02"+
+ "\u1f00\u1f15\u0596\u0644\01\00\00\u0597\u0598\02\u1f18\u1f1d\u0598"+
+ "\u0644\01\00\00\u0599\u059a\02\u1f20\u1f45\u059a\u0644\01\00\00\u059b"+
+ "\u059c\02\u1f48\u1f4d\u059c\u0644\01\00\00\u059d\u059e\02\u1f50\u1f57"+
+ "\u059e\u0644\01\00\00\u059f\u05a0\05\u1f59\00\u05a0\u0644\01\00\00"+
+ "\u05a1\u05a2\05\u1f5b\00\u05a2\u0644\01\00\00\u05a3\u05a4\05\u1f5d"+
+ "\00\u05a4\u0644\01\00\00\u05a5\u05a6\02\u1f5f\u1f7d\u05a6\u0644\01"+
+ "\00\00\u05a7\u05a8\02\u1f80\u1fb4\u05a8\u0644\01\00\00\u05a9\u05aa"+
+ "\02\u1fb6\u1fbc\u05aa\u0644\01\00\00\u05ab\u05ac\05\u1fbe\00\u05ac"+
+ "\u0644\01\00\00\u05ad\u05ae\02\u1fc2\u1fc4\u05ae\u0644\01\00\00\u05af"+
+ "\u05b0\02\u1fc6\u1fcc\u05b0\u0644\01\00\00\u05b1\u05b2\02\u1fd0\u1fd3"+
+ "\u05b2\u0644\01\00\00\u05b3\u05b4\02\u1fd6\u1fdb\u05b4\u0644\01\00"+
+ "\00\u05b5\u05b6\02\u1fe0\u1fec\u05b6\u0644\01\00\00\u05b7\u05b8\02"+
+ "\u1ff2\u1ff4\u05b8\u0644\01\00\00\u05b9\u05ba\02\u1ff6\u1ffc\u05ba"+
+ "\u0644\01\00\00\u05bb\u05bc\02\u203f\u2040\u05bc\u0644\01\00\00\u05bd"+
+ "\u05be\05\u2054\00\u05be\u0644\01\00\00\u05bf\u05c0\05\u2071\00\u05c0"+
+ "\u0644\01\00\00\u05c1\u05c2\05\u207f\00\u05c2\u0644\01\00\00\u05c3"+
+ "\u05c4\02\u20a0\u20b1\u05c4\u0644\01\00\00\u05c5\u05c6\05\u2102\00"+
+ "\u05c6\u0644\01\00\00\u05c7\u05c8\05\u2107\00\u05c8\u0644\01\00\00"+
+ "\u05c9\u05ca\02\u210a\u2113\u05ca\u0644\01\00\00\u05cb\u05cc\05\u2115"+
+ "\00\u05cc\u0644\01\00\00\u05cd\u05ce\02\u2119\u211d\u05ce\u0644\01"+
+ "\00\00\u05cf\u05d0\05\u2124\00\u05d0\u0644\01\00\00\u05d1\u05d2\05"+
+ "\u2126\00\u05d2\u0644\01\00\00\u05d3\u05d4\05\u2128\00\u05d4\u0644"+
+ "\01\00\00\u05d5\u05d6\02\u212a\u212d\u05d6\u0644\01\00\00\u05d7\u05d8"+
+ "\02\u212f\u2131\u05d8\u0644\01\00\00\u05d9\u05da\02\u2133\u2139\u05da"+
+ "\u0644\01\00\00\u05db\u05dc\02\u213d\u213f\u05dc\u0644\01\00\00\u05dd"+
+ "\u05de\02\u2145\u2149\u05de\u0644\01\00\00\u05df\u05e0\02\u2160\u2183"+
+ "\u05e0\u0644\01\00\00\u05e1\u05e2\02\u3005\u3007\u05e2\u0644\01\00"+
+ "\00\u05e3\u05e4\02\u3021\u3029\u05e4\u0644\01\00\00\u05e5\u05e6\02"+
+ "\u3031\u3035\u05e6\u0644\01\00\00\u05e7\u05e8\02\u3038\u303c\u05e8"+
+ "\u0644\01\00\00\u05e9\u05ea\02\u3041\u3096\u05ea\u0644\01\00\00\u05eb"+
+ "\u05ec\02\u309d\u309f\u05ec\u0644\01\00\00\u05ed\u05ee\02\u30a1\u30ff"+
+ "\u05ee\u0644\01\00\00\u05ef\u05f0\02\u3105\u312c\u05f0\u0644\01\00"+
+ "\00\u05f1\u05f2\02\u3131\u318e\u05f2\u0644\01\00\00\u05f3\u05f4\02"+
+ "\u31a0\u31b7\u05f4\u0644\01\00\00\u05f5\u05f6\02\u31f0\u31ff\u05f6"+
+ "\u0644\01\00\00\u05f7\u05f8\02\u3400\u4db5\u05f8\u0644\01\00\00\u05f9"+
+ "\u05fa\02\u4e00\u9fa5\u05fa\u0644\01\00\00\u05fb\u05fc\02\ua000\ua48c"+
+ "\u05fc\u0644\01\00\00\u05fd\u05fe\02\uac00\ud7a3\u05fe\u0644\01\00"+
+ "\00\u05ff\u0600\02\uf900\ufa2d\u0600\u0644\01\00\00\u0601\u0602\02"+
+ "\ufa30\ufa6a\u0602\u0644\01\00\00\u0603\u0604\02\ufb00\ufb06\u0604"+
+ "\u0644\01\00\00\u0605\u0606\02\ufb13\ufb17\u0606\u0644\01\00\00\u0607"+
+ "\u0608\05\ufb1d\00\u0608\u0644\01\00\00\u0609\u060a\02\ufb1f\ufb28"+
+ "\u060a\u0644\01\00\00\u060b\u060c\02\ufb2a\ufb36\u060c\u0644\01\00"+
+ "\00\u060d\u060e\02\ufb38\ufb3c\u060e\u0644\01\00\00\u060f\u0610\05"+
+ "\ufb3e\00\u0610\u0644\01\00\00\u0611\u0612\02\ufb40\ufb41\u0612\u0644"+
+ "\01\00\00\u0613\u0614\02\ufb43\ufb44\u0614\u0644\01\00\00\u0615\u0616"+
+ "\02\ufb46\ufbb1\u0616\u0644\01\00\00\u0617\u0618\02\ufbd3\ufd3d\u0618"+
+ "\u0644\01\00\00\u0619\u061a\02\ufd50\ufd8f\u061a\u0644\01\00\00\u061b"+
+ "\u061c\02\ufd92\ufdc7\u061c\u0644\01\00\00\u061d\u061e\02\ufdf0\ufdfc"+
+ "\u061e\u0644\01\00\00\u061f\u0620\02\ufe33\ufe34\u0620\u0644\01\00"+
+ "\00\u0621\u0622\02\ufe4d\ufe4f\u0622\u0644\01\00\00\u0623\u0624\05"+
+ "\ufe69\00\u0624\u0644\01\00\00\u0625\u0626\02\ufe70\ufe74\u0626\u0644"+
+ "\01\00\00\u0627\u0628\02\ufe76\ufefc\u0628\u0644\01\00\00\u0629\u062a"+
+ "\05\uff04\00\u062a\u0644\01\00\00\u062b\u062c\02\uff21\uff3a\u062c"+
+ "\u0644\01\00\00\u062d\u062e\05\uff3f\00\u062e\u0644\01\00\00\u062f"+
+ "\u0630\02\uff41\uff5a\u0630\u0644\01\00\00\u0631\u0632\02\uff65\uffbe"+
+ "\u0632\u0644\01\00\00\u0633\u0634\02\uffc2\uffc7\u0634\u0644\01\00"+
+ "\00\u0635\u0636\02\uffca\uffcf\u0636\u0644\01\00\00\u0637\u0638\02"+
+ "\uffd2\uffd7\u0638\u0644\01\00\00\u0639\u063a\02\uffda\uffdc\u063a"+
+ "\u0644\01\00\00\u063b\u063c\02\uffe0\uffe1\u063c\u0644\01\00\00\u063d"+
+ "\u063e\02\uffe5\uffe6\u063e\u0644\01\00\00\u063f\u0640\02\ud800\udbff"+
+ "\u0640\u0641\01\00\00\u0641\u0642\02\udc00\udfff\u0642\u0644\01\00"+
+ "\00\u0643\u03f5\01\00\00\u0643\u03f7\01\00\00\u0643\u03f9\01\00\00"+
+ "\u0643\u03fb\01\00\00\u0643\u03fd\01\00\00\u0643\u03ff\01\00\00\u0643"+
+ "\u0401\01\00\00\u0643\u0403\01\00\00\u0643\u0405\01\00\00\u0643\u0407"+
+ "\01\00\00\u0643\u0409\01\00\00\u0643\u040b\01\00\00\u0643\u040d\01"+
+ "\00\00\u0643\u040f\01\00\00\u0643\u0411\01\00\00\u0643\u0413\01\00"+
+ "\00\u0643\u0415\01\00\00\u0643\u0417\01\00\00\u0643\u0419\01\00\00"+
+ "\u0643\u041b\01\00\00\u0643\u041d\01\00\00\u0643\u041f\01\00\00\u0643"+
+ "\u0421\01\00\00\u0643\u0423\01\00\00\u0643\u0425\01\00\00\u0643\u0427"+
+ "\01\00\00\u0643\u0429\01\00\00\u0643\u042b\01\00\00\u0643\u042d\01"+
+ "\00\00\u0643\u042f\01\00\00\u0643\u0431\01\00\00\u0643\u0433\01\00"+
+ "\00\u0643\u0435\01\00\00\u0643\u0437\01\00\00\u0643\u0439\01\00\00"+
+ "\u0643\u043b\01\00\00\u0643\u043d\01\00\00\u0643\u043f\01\00\00\u0643"+
+ "\u0441\01\00\00\u0643\u0443\01\00\00\u0643\u0445\01\00\00\u0643\u0447"+
+ "\01\00\00\u0643\u0449\01\00\00\u0643\u044b\01\00\00\u0643\u044d\01"+
+ "\00\00\u0643\u044f\01\00\00\u0643\u0451\01\00\00\u0643\u0453\01\00"+
+ "\00\u0643\u0455\01\00\00\u0643\u0457\01\00\00\u0643\u0459\01\00\00"+
+ "\u0643\u045b\01\00\00\u0643\u045d\01\00\00\u0643\u045f\01\00\00\u0643"+
+ "\u0461\01\00\00\u0643\u0463\01\00\00\u0643\u0465\01\00\00\u0643\u0467"+
+ "\01\00\00\u0643\u0469\01\00\00\u0643\u046b\01\00\00\u0643\u046d\01"+
+ "\00\00\u0643\u046f\01\00\00\u0643\u0471\01\00\00\u0643\u0473\01\00"+
+ "\00\u0643\u0475\01\00\00\u0643\u0477\01\00\00\u0643\u0479\01\00\00"+
+ "\u0643\u047b\01\00\00\u0643\u047d\01\00\00\u0643\u047f\01\00\00\u0643"+
+ "\u0481\01\00\00\u0643\u0483\01\00\00\u0643\u0485\01\00\00\u0643\u0487"+
+ "\01\00\00\u0643\u0489\01\00\00\u0643\u048b\01\00\00\u0643\u048d\01"+
+ "\00\00\u0643\u048f\01\00\00\u0643\u0491\01\00\00\u0643\u0493\01\00"+
+ "\00\u0643\u0495\01\00\00\u0643\u0497\01\00\00\u0643\u0499\01\00\00"+
+ "\u0643\u049b\01\00\00\u0643\u049d\01\00\00\u0643\u049f\01\00\00\u0643"+
+ "\u04a1\01\00\00\u0643\u04a3\01\00\00\u0643\u04a5\01\00\00\u0643\u04a7"+
+ "\01\00\00\u0643\u04a9\01\00\00\u0643\u04ab\01\00\00\u0643\u04ad\01"+
+ "\00\00\u0643\u04af\01\00\00\u0643\u04b1\01\00\00\u0643\u04b3\01\00"+
+ "\00\u0643\u04b5\01\00\00\u0643\u04b7\01\00\00\u0643\u04b9\01\00\00"+
+ "\u0643\u04bb\01\00\00\u0643\u04bd\01\00\00\u0643\u04bf\01\00\00\u0643"+
+ "\u04c1\01\00\00\u0643\u04c3\01\00\00\u0643\u04c5\01\00\00\u0643\u04c7"+
+ "\01\00\00\u0643\u04c9\01\00\00\u0643\u04cb\01\00\00\u0643\u04cd\01"+
+ "\00\00\u0643\u04cf\01\00\00\u0643\u04d1\01\00\00\u0643\u04d3\01\00"+
+ "\00\u0643\u04d5\01\00\00\u0643\u04d7\01\00\00\u0643\u04d9\01\00\00"+
+ "\u0643\u04db\01\00\00\u0643\u04dd\01\00\00\u0643\u04df\01\00\00\u0643"+
+ "\u04e1\01\00\00\u0643\u04e3\01\00\00\u0643\u04e5\01\00\00\u0643\u04e7"+
+ "\01\00\00\u0643\u04e9\01\00\00\u0643\u04eb\01\00\00\u0643\u04ed\01"+
+ "\00\00\u0643\u04ef\01\00\00\u0643\u04f1\01\00\00\u0643\u04f3\01\00"+
+ "\00\u0643\u04f5\01\00\00\u0643\u04f7\01\00\00\u0643\u04f9\01\00\00"+
+ "\u0643\u04fb\01\00\00\u0643\u04fd\01\00\00\u0643\u04ff\01\00\00\u0643"+
+ "\u0501\01\00\00\u0643\u0503\01\00\00\u0643\u0505\01\00\00\u0643\u0507"+
+ "\01\00\00\u0643\u0509\01\00\00\u0643\u050b\01\00\00\u0643\u050d\01"+
+ "\00\00\u0643\u050f\01\00\00\u0643\u0511\01\00\00\u0643\u0513\01\00"+
+ "\00\u0643\u0515\01\00\00\u0643\u0517\01\00\00\u0643\u0519\01\00\00"+
+ "\u0643\u051b\01\00\00\u0643\u051d\01\00\00\u0643\u051f\01\00\00\u0643"+
+ "\u0521\01\00\00\u0643\u0523\01\00\00\u0643\u0525\01\00\00\u0643\u0527"+
+ "\01\00\00\u0643\u0529\01\00\00\u0643\u052b\01\00\00\u0643\u052d\01"+
+ "\00\00\u0643\u052f\01\00\00\u0643\u0531\01\00\00\u0643\u0533\01\00"+
+ "\00\u0643\u0535\01\00\00\u0643\u0537\01\00\00\u0643\u0539\01\00\00"+
+ "\u0643\u053b\01\00\00\u0643\u053d\01\00\00\u0643\u053f\01\00\00\u0643"+
+ "\u0541\01\00\00\u0643\u0543\01\00\00\u0643\u0545\01\00\00\u0643\u0547"+
+ "\01\00\00\u0643\u0549\01\00\00\u0643\u054b\01\00\00\u0643\u054d\01"+
+ "\00\00\u0643\u054f\01\00\00\u0643\u0551\01\00\00\u0643\u0553\01\00"+
+ "\00\u0643\u0555\01\00\00\u0643\u0557\01\00\00\u0643\u0559\01\00\00"+
+ "\u0643\u055b\01\00\00\u0643\u055d\01\00\00\u0643\u055f\01\00\00\u0643"+
+ "\u0561\01\00\00\u0643\u0563\01\00\00\u0643\u0565\01\00\00\u0643\u0567"+
+ "\01\00\00\u0643\u0569\01\00\00\u0643\u056b\01\00\00\u0643\u056d\01"+
+ "\00\00\u0643\u056f\01\00\00\u0643\u0571\01\00\00\u0643\u0573\01\00"+
+ "\00\u0643\u0575\01\00\00\u0643\u0577\01\00\00\u0643\u0579\01\00\00"+
+ "\u0643\u057b\01\00\00\u0643\u057d\01\00\00\u0643\u057f\01\00\00\u0643"+
+ "\u0581\01\00\00\u0643\u0583\01\00\00\u0643\u0585\01\00\00\u0643\u0587"+
+ "\01\00\00\u0643\u0589\01\00\00\u0643\u058b\01\00\00\u0643\u058d\01"+
+ "\00\00\u0643\u058f\01\00\00\u0643\u0591\01\00\00\u0643\u0593\01\00"+
+ "\00\u0643\u0595\01\00\00\u0643\u0597\01\00\00\u0643\u0599\01\00\00"+
+ "\u0643\u059b\01\00\00\u0643\u059d\01\00\00\u0643\u059f\01\00\00\u0643"+
+ "\u05a1\01\00\00\u0643\u05a3\01\00\00\u0643\u05a5\01\00\00\u0643\u05a7"+
+ "\01\00\00\u0643\u05a9\01\00\00\u0643\u05ab\01\00\00\u0643\u05ad\01"+
+ "\00\00\u0643\u05af\01\00\00\u0643\u05b1\01\00\00\u0643\u05b3\01\00"+
+ "\00\u0643\u05b5\01\00\00\u0643\u05b7\01\00\00\u0643\u05b9\01\00\00"+
+ "\u0643\u05bb\01\00\00\u0643\u05bd\01\00\00\u0643\u05bf\01\00\00\u0643"+
+ "\u05c1\01\00\00\u0643\u05c3\01\00\00\u0643\u05c5\01\00\00\u0643\u05c7"+
+ "\01\00\00\u0643\u05c9\01\00\00\u0643\u05cb\01\00\00\u0643\u05cd\01"+
+ "\00\00\u0643\u05cf\01\00\00\u0643\u05d1\01\00\00\u0643\u05d3\01\00"+
+ "\00\u0643\u05d5\01\00\00\u0643\u05d7\01\00\00\u0643\u05d9\01\00\00"+
+ "\u0643\u05db\01\00\00\u0643\u05dd\01\00\00\u0643\u05df\01\00\00\u0643"+
+ "\u05e1\01\00\00\u0643\u05e3\01\00\00\u0643\u05e5\01\00\00\u0643\u05e7"+
+ "\01\00\00\u0643\u05e9\01\00\00\u0643\u05eb\01\00\00\u0643\u05ed\01"+
+ "\00\00\u0643\u05ef\01\00\00\u0643\u05f1\01\00\00\u0643\u05f3\01\00"+
+ "\00\u0643\u05f5\01\00\00\u0643\u05f7\01\00\00\u0643\u05f9\01\00\00"+
+ "\u0643\u05fb\01\00\00\u0643\u05fd\01\00\00\u0643\u05ff\01\00\00\u0643"+
+ "\u0601\01\00\00\u0643\u0603\01\00\00\u0643\u0605\01\00\00\u0643\u0607"+
+ "\01\00\00\u0643\u0609\01\00\00\u0643\u060b\01\00\00\u0643\u060d\01"+
+ "\00\00\u0643\u060f\01\00\00\u0643\u0611\01\00\00\u0643\u0613\01\00"+
+ "\00\u0643\u0615\01\00\00\u0643\u0617\01\00\00\u0643\u0619\01\00\00"+
+ "\u0643\u061b\01\00\00\u0643\u061d\01\00\00\u0643\u061f\01\00\00\u0643"+
+ "\u0621\01\00\00\u0643\u0623\01\00\00\u0643\u0625\01\00\00\u0643\u0627"+
+ "\01\00\00\u0643\u0629\01\00\00\u0643\u062b\01\00\00\u0643\u062d\01"+
+ "\00\00\u0643\u062f\01\00\00\u0643\u0631\01\00\00\u0643\u0633\01\00"+
+ "\00\u0643\u0635\01\00\00\u0643\u0637\01\00\00\u0643\u0639\01\00\00"+
+ "\u0643\u063b\01\00\00\u0643\u063d\01\00\00\u0643\u063f\01\00\00\u0644"+
+ "\u00e8\01\00\00\u0645\u0646\02\00\010\u0646\u094c\01\00\00\u0647\u0648"+
+ "\02\016\033\u0648\u094c\01\00\00\u0649\u064a\05\044\00\u064a\u094c"+
+ "\01\00\00\u064b\u064c\02\060\071\u064c\u094c\01\00\00\u064d\u064e"+
+ "\02\101\132\u064e\u094c\01\00\00\u064f\u0650\05\137\00\u0650\u094c"+
+ "\01\00\00\u0651\u0652\02\141\172\u0652\u094c\01\00\00\u0653\u0654"+
+ "\02\177\u009f\u0654\u094c\01\00\00\u0655\u0656\02\u00a2\u00a5\u0656"+
+ "\u094c\01\00\00\u0657\u0658\05\u00aa\00\u0658\u094c\01\00\00\u0659"+
+ "\u065a\05\u00ad\00\u065a\u094c\01\00\00\u065b\u065c\05\u00b5\00\u065c"+
+ "\u094c\01\00\00\u065d\u065e\05\u00ba\00\u065e\u094c\01\00\00\u065f"+
+ "\u0660\02\u00c0\u00d6\u0660\u094c\01\00\00\u0661\u0662\02\u00d8\u00f6"+
+ "\u0662\u094c\01\00\00\u0663\u0664\02\u00f8\u0236\u0664\u094c\01\00"+
+ "\00\u0665\u0666\02\u0250\u02c1\u0666\u094c\01\00\00\u0667\u0668\02"+
+ "\u02c6\u02d1\u0668\u094c\01\00\00\u0669\u066a\02\u02e0\u02e4\u066a"+
+ "\u094c\01\00\00\u066b\u066c\05\u02ee\00\u066c\u094c\01\00\00\u066d"+
+ "\u066e\02\u0300\u0357\u066e\u094c\01\00\00\u066f\u0670\02\u035d\u036f"+
+ "\u0670\u094c\01\00\00\u0671\u0672\05\u037a\00\u0672\u094c\01\00\00"+
+ "\u0673\u0674\05\u0386\00\u0674\u094c\01\00\00\u0675\u0676\02\u0388"+
+ "\u038a\u0676\u094c\01\00\00\u0677\u0678\05\u038c\00\u0678\u094c\01"+
+ "\00\00\u0679\u067a\02\u038e\u03a1\u067a\u094c\01\00\00\u067b\u067c"+
+ "\02\u03a3\u03ce\u067c\u094c\01\00\00\u067d\u067e\02\u03d0\u03f5\u067e"+
+ "\u094c\01\00\00\u067f\u0680\02\u03f7\u03fb\u0680\u094c\01\00\00\u0681"+
+ "\u0682\02\u0400\u0481\u0682\u094c\01\00\00\u0683\u0684\02\u0483\u0486"+
+ "\u0684\u094c\01\00\00\u0685\u0686\02\u048a\u04ce\u0686\u094c\01\00"+
+ "\00\u0687\u0688\02\u04d0\u04f5\u0688\u094c\01\00\00\u0689\u068a\02"+
+ "\u04f8\u04f9\u068a\u094c\01\00\00\u068b\u068c\02\u0500\u050f\u068c"+
+ "\u094c\01\00\00\u068d\u068e\02\u0531\u0556\u068e\u094c\01\00\00\u068f"+
+ "\u0690\05\u0559\00\u0690\u094c\01\00\00\u0691\u0692\02\u0561\u0587"+
+ "\u0692\u094c\01\00\00\u0693\u0694\02\u0591\u05a1\u0694\u094c\01\00"+
+ "\00\u0695\u0696\02\u05a3\u05b9\u0696\u094c\01\00\00\u0697\u0698\02"+
+ "\u05bb\u05bd\u0698\u094c\01\00\00\u0699\u069a\05\u05bf\00\u069a\u094c"+
+ "\01\00\00\u069b\u069c\02\u05c1\u05c2\u069c\u094c\01\00\00\u069d\u069e"+
+ "\05\u05c4\00\u069e\u094c\01\00\00\u069f\u06a0\02\u05d0\u05ea\u06a0"+
+ "\u094c\01\00\00\u06a1\u06a2\02\u05f0\u05f2\u06a2\u094c\01\00\00\u06a3"+
+ "\u06a4\02\u0600\u0603\u06a4\u094c\01\00\00\u06a5\u06a6\02\u0610\u0615"+
+ "\u06a6\u094c\01\00\00\u06a7\u06a8\02\u0621\u063a\u06a8\u094c\01\00"+
+ "\00\u06a9\u06aa\02\u0640\u0658\u06aa\u094c\01\00\00\u06ab\u06ac\02"+
+ "\u0660\u0669\u06ac\u094c\01\00\00\u06ad\u06ae\02\u066e\u06d3\u06ae"+
+ "\u094c\01\00\00\u06af\u06b0\02\u06d5\u06dd\u06b0\u094c\01\00\00\u06b1"+
+ "\u06b2\02\u06df\u06e8\u06b2\u094c\01\00\00\u06b3\u06b4\02\u06ea\u06fc"+
+ "\u06b4\u094c\01\00\00\u06b5\u06b6\05\u06ff\00\u06b6\u094c\01\00\00"+
+ "\u06b7\u06b8\02\u070f\u074a\u06b8\u094c\01\00\00\u06b9\u06ba\02\u074d"+
+ "\u074f\u06ba\u094c\01\00\00\u06bb\u06bc\02\u0780\u07b1\u06bc\u094c"+
+ "\01\00\00\u06bd\u06be\02\u0901\u0939\u06be\u094c\01\00\00\u06bf\u06c0"+
+ "\02\u093c\u094d\u06c0\u094c\01\00\00\u06c1\u06c2\02\u0950\u0954\u06c2"+
+ "\u094c\01\00\00\u06c3\u06c4\02\u0958\u0963\u06c4\u094c\01\00\00\u06c5"+
+ "\u06c6\02\u0966\u096f\u06c6\u094c\01\00\00\u06c7\u06c8\02\u0981\u0983"+
+ "\u06c8\u094c\01\00\00\u06c9\u06ca\02\u0985\u098c\u06ca\u094c\01\00"+
+ "\00\u06cb\u06cc\02\u098f\u0990\u06cc\u094c\01\00\00\u06cd\u06ce\02"+
+ "\u0993\u09a8\u06ce\u094c\01\00\00\u06cf\u06d0\02\u09aa\u09b0\u06d0"+
+ "\u094c\01\00\00\u06d1\u06d2\05\u09b2\00\u06d2\u094c\01\00\00\u06d3"+
+ "\u06d4\02\u09b6\u09b9\u06d4\u094c\01\00\00\u06d5\u06d6\02\u09bc\u09c4"+
+ "\u06d6\u094c\01\00\00\u06d7\u06d8\02\u09c7\u09c8\u06d8\u094c\01\00"+
+ "\00\u06d9\u06da\02\u09cb\u09cd\u06da\u094c\01\00\00\u06db\u06dc\05"+
+ "\u09d7\00\u06dc\u094c\01\00\00\u06dd\u06de\02\u09dc\u09dd\u06de\u094c"+
+ "\01\00\00\u06df\u06e0\02\u09df\u09e3\u06e0\u094c\01\00\00\u06e1\u06e2"+
+ "\02\u09e6\u09f3\u06e2\u094c\01\00\00\u06e3\u06e4\02\u0a01\u0a03\u06e4"+
+ "\u094c\01\00\00\u06e5\u06e6\02\u0a05\u0a0a\u06e6\u094c\01\00\00\u06e7"+
+ "\u06e8\02\u0a0f\u0a10\u06e8\u094c\01\00\00\u06e9\u06ea\02\u0a13\u0a28"+
+ "\u06ea\u094c\01\00\00\u06eb\u06ec\02\u0a2a\u0a30\u06ec\u094c\01\00"+
+ "\00\u06ed\u06ee\02\u0a32\u0a33\u06ee\u094c\01\00\00\u06ef\u06f0\02"+
+ "\u0a35\u0a36\u06f0\u094c\01\00\00\u06f1\u06f2\02\u0a38\u0a39\u06f2"+
+ "\u094c\01\00\00\u06f3\u06f4\05\u0a3c\00\u06f4\u094c\01\00\00\u06f5"+
+ "\u06f6\02\u0a3e\u0a42\u06f6\u094c\01\00\00\u06f7\u06f8\02\u0a47\u0a48"+
+ "\u06f8\u094c\01\00\00\u06f9\u06fa\02\u0a4b\u0a4d\u06fa\u094c\01\00"+
+ "\00\u06fb\u06fc\02\u0a59\u0a5c\u06fc\u094c\01\00\00\u06fd\u06fe\05"+
+ "\u0a5e\00\u06fe\u094c\01\00\00\u06ff\u0700\02\u0a66\u0a74\u0700\u094c"+
+ "\01\00\00\u0701\u0702\02\u0a81\u0a83\u0702\u094c\01\00\00\u0703\u0704"+
+ "\02\u0a85\u0a8d\u0704\u094c\01\00\00\u0705\u0706\02\u0a8f\u0a91\u0706"+
+ "\u094c\01\00\00\u0707\u0708\02\u0a93\u0aa8\u0708\u094c\01\00\00\u0709"+
+ "\u070a\02\u0aaa\u0ab0\u070a\u094c\01\00\00\u070b\u070c\02\u0ab2\u0ab3"+
+ "\u070c\u094c\01\00\00\u070d\u070e\02\u0ab5\u0ab9\u070e\u094c\01\00"+
+ "\00\u070f\u0710\02\u0abc\u0ac5\u0710\u094c\01\00\00\u0711\u0712\02"+
+ "\u0ac7\u0ac9\u0712\u094c\01\00\00\u0713\u0714\02\u0acb\u0acd\u0714"+
+ "\u094c\01\00\00\u0715\u0716\05\u0ad0\00\u0716\u094c\01\00\00\u0717"+
+ "\u0718\02\u0ae0\u0ae3\u0718\u094c\01\00\00\u0719\u071a\02\u0ae6\u0aef"+
+ "\u071a\u094c\01\00\00\u071b\u071c\05\u0af1\00\u071c\u094c\01\00\00"+
+ "\u071d\u071e\02\u0b01\u0b03\u071e\u094c\01\00\00\u071f\u0720\02\u0b05"+
+ "\u0b0c\u0720\u094c\01\00\00\u0721\u0722\02\u0b0f\u0b10\u0722\u094c"+
+ "\01\00\00\u0723\u0724\02\u0b13\u0b28\u0724\u094c\01\00\00\u0725\u0726"+
+ "\02\u0b2a\u0b30\u0726\u094c\01\00\00\u0727\u0728\02\u0b32\u0b33\u0728"+
+ "\u094c\01\00\00\u0729\u072a\02\u0b35\u0b39\u072a\u094c\01\00\00\u072b"+
+ "\u072c\02\u0b3c\u0b43\u072c\u094c\01\00\00\u072d\u072e\02\u0b47\u0b48"+
+ "\u072e\u094c\01\00\00\u072f\u0730\02\u0b4b\u0b4d\u0730\u094c\01\00"+
+ "\00\u0731\u0732\02\u0b56\u0b57\u0732\u094c\01\00\00\u0733\u0734\02"+
+ "\u0b5c\u0b5d\u0734\u094c\01\00\00\u0735\u0736\02\u0b5f\u0b61\u0736"+
+ "\u094c\01\00\00\u0737\u0738\02\u0b66\u0b6f\u0738\u094c\01\00\00\u0739"+
+ "\u073a\05\u0b71\00\u073a\u094c\01\00\00\u073b\u073c\02\u0b82\u0b83"+
+ "\u073c\u094c\01\00\00\u073d\u073e\02\u0b85\u0b8a\u073e\u094c\01\00"+
+ "\00\u073f\u0740\02\u0b8e\u0b90\u0740\u094c\01\00\00\u0741\u0742\02"+
+ "\u0b92\u0b95\u0742\u094c\01\00\00\u0743\u0744\02\u0b99\u0b9a\u0744"+
+ "\u094c\01\00\00\u0745\u0746\05\u0b9c\00\u0746\u094c\01\00\00\u0747"+
+ "\u0748\02\u0b9e\u0b9f\u0748\u094c\01\00\00\u0749\u074a\02\u0ba3\u0ba4"+
+ "\u074a\u094c\01\00\00\u074b\u074c\02\u0ba8\u0baa\u074c\u094c\01\00"+
+ "\00\u074d\u074e\02\u0bae\u0bb5\u074e\u094c\01\00\00\u074f\u0750\02"+
+ "\u0bb7\u0bb9\u0750\u094c\01\00\00\u0751\u0752\02\u0bbe\u0bc2\u0752"+
+ "\u094c\01\00\00\u0753\u0754\02\u0bc6\u0bc8\u0754\u094c\01\00\00\u0755"+
+ "\u0756\02\u0bca\u0bcd\u0756\u094c\01\00\00\u0757\u0758\05\u0bd7\00"+
+ "\u0758\u094c\01\00\00\u0759\u075a\02\u0be7\u0bef\u075a\u094c\01\00"+
+ "\00\u075b\u075c\05\u0bf9\00\u075c\u094c\01\00\00\u075d\u075e\02\u0c01"+
+ "\u0c03\u075e\u094c\01\00\00\u075f\u0760\02\u0c05\u0c0c\u0760\u094c"+
+ "\01\00\00\u0761\u0762\02\u0c0e\u0c10\u0762\u094c\01\00\00\u0763\u0764"+
+ "\02\u0c12\u0c28\u0764\u094c\01\00\00\u0765\u0766\02\u0c2a\u0c33\u0766"+
+ "\u094c\01\00\00\u0767\u0768\02\u0c35\u0c39\u0768\u094c\01\00\00\u0769"+
+ "\u076a\02\u0c3e\u0c44\u076a\u094c\01\00\00\u076b\u076c\02\u0c46\u0c48"+
+ "\u076c\u094c\01\00\00\u076d\u076e\02\u0c4a\u0c4d\u076e\u094c\01\00"+
+ "\00\u076f\u0770\02\u0c55\u0c56\u0770\u094c\01\00\00\u0771\u0772\02"+
+ "\u0c60\u0c61\u0772\u094c\01\00\00\u0773\u0774\02\u0c66\u0c6f\u0774"+
+ "\u094c\01\00\00\u0775\u0776\02\u0c82\u0c83\u0776\u094c\01\00\00\u0777"+
+ "\u0778\02\u0c85\u0c8c\u0778\u094c\01\00\00\u0779\u077a\02\u0c8e\u0c90"+
+ "\u077a\u094c\01\00\00\u077b\u077c\02\u0c92\u0ca8\u077c\u094c\01\00"+
+ "\00\u077d\u077e\02\u0caa\u0cb3\u077e\u094c\01\00\00\u077f\u0780\02"+
+ "\u0cb5\u0cb9\u0780\u094c\01\00\00\u0781\u0782\02\u0cbc\u0cc4\u0782"+
+ "\u094c\01\00\00\u0783\u0784\02\u0cc6\u0cc8\u0784\u094c\01\00\00\u0785"+
+ "\u0786\02\u0cca\u0ccd\u0786\u094c\01\00\00\u0787\u0788\02\u0cd5\u0cd6"+
+ "\u0788\u094c\01\00\00\u0789\u078a\05\u0cde\00\u078a\u094c\01\00\00"+
+ "\u078b\u078c\02\u0ce0\u0ce1\u078c\u094c\01\00\00\u078d\u078e\02\u0ce6"+
+ "\u0cef\u078e\u094c\01\00\00\u078f\u0790\02\u0d02\u0d03\u0790\u094c"+
+ "\01\00\00\u0791\u0792\02\u0d05\u0d0c\u0792\u094c\01\00\00\u0793\u0794"+
+ "\02\u0d0e\u0d10\u0794\u094c\01\00\00\u0795\u0796\02\u0d12\u0d28\u0796"+
+ "\u094c\01\00\00\u0797\u0798\02\u0d2a\u0d39\u0798\u094c\01\00\00\u0799"+
+ "\u079a\02\u0d3e\u0d43\u079a\u094c\01\00\00\u079b\u079c\02\u0d46\u0d48"+
+ "\u079c\u094c\01\00\00\u079d\u079e\02\u0d4a\u0d4d\u079e\u094c\01\00"+
+ "\00\u079f\u07a0\05\u0d57\00\u07a0\u094c\01\00\00\u07a1\u07a2\02\u0d60"+
+ "\u0d61\u07a2\u094c\01\00\00\u07a3\u07a4\02\u0d66\u0d6f\u07a4\u094c"+
+ "\01\00\00\u07a5\u07a6\02\u0d82\u0d83\u07a6\u094c\01\00\00\u07a7\u07a8"+
+ "\02\u0d85\u0d96\u07a8\u094c\01\00\00\u07a9\u07aa\02\u0d9a\u0db1\u07aa"+
+ "\u094c\01\00\00\u07ab\u07ac\02\u0db3\u0dbb\u07ac\u094c\01\00\00\u07ad"+
+ "\u07ae\05\u0dbd\00\u07ae\u094c\01\00\00\u07af\u07b0\02\u0dc0\u0dc6"+
+ "\u07b0\u094c\01\00\00\u07b1\u07b2\05\u0dca\00\u07b2\u094c\01\00\00"+
+ "\u07b3\u07b4\02\u0dcf\u0dd4\u07b4\u094c\01\00\00\u07b5\u07b6\05\u0dd6"+
+ "\00\u07b6\u094c\01\00\00\u07b7\u07b8\02\u0dd8\u0ddf\u07b8\u094c\01"+
+ "\00\00\u07b9\u07ba\02\u0df2\u0df3\u07ba\u094c\01\00\00\u07bb\u07bc"+
+ "\02\u0e01\u0e3a\u07bc\u094c\01\00\00\u07bd\u07be\02\u0e3f\u0e4e\u07be"+
+ "\u094c\01\00\00\u07bf\u07c0\02\u0e50\u0e59\u07c0\u094c\01\00\00\u07c1"+
+ "\u07c2\02\u0e81\u0e82\u07c2\u094c\01\00\00\u07c3\u07c4\05\u0e84\00"+
+ "\u07c4\u094c\01\00\00\u07c5\u07c6\02\u0e87\u0e88\u07c6\u094c\01\00"+
+ "\00\u07c7\u07c8\05\u0e8a\00\u07c8\u094c\01\00\00\u07c9\u07ca\05\u0e8d"+
+ "\00\u07ca\u094c\01\00\00\u07cb\u07cc\02\u0e94\u0e97\u07cc\u094c\01"+
+ "\00\00\u07cd\u07ce\02\u0e99\u0e9f\u07ce\u094c\01\00\00\u07cf\u07d0"+
+ "\02\u0ea1\u0ea3\u07d0\u094c\01\00\00\u07d1\u07d2\05\u0ea5\00\u07d2"+
+ "\u094c\01\00\00\u07d3\u07d4\05\u0ea7\00\u07d4\u094c\01\00\00\u07d5"+
+ "\u07d6\02\u0eaa\u0eab\u07d6\u094c\01\00\00\u07d7\u07d8\02\u0ead\u0eb9"+
+ "\u07d8\u094c\01\00\00\u07d9\u07da\02\u0ebb\u0ebd\u07da\u094c\01\00"+
+ "\00\u07db\u07dc\02\u0ec0\u0ec4\u07dc\u094c\01\00\00\u07dd\u07de\05"+
+ "\u0ec6\00\u07de\u094c\01\00\00\u07df\u07e0\02\u0ec8\u0ecd\u07e0\u094c"+
+ "\01\00\00\u07e1\u07e2\02\u0ed0\u0ed9\u07e2\u094c\01\00\00\u07e3\u07e4"+
+ "\02\u0edc\u0edd\u07e4\u094c\01\00\00\u07e5\u07e6\05\u0f00\00\u07e6"+
+ "\u094c\01\00\00\u07e7\u07e8\02\u0f18\u0f19\u07e8\u094c\01\00\00\u07e9"+
+ "\u07ea\02\u0f20\u0f29\u07ea\u094c\01\00\00\u07eb\u07ec\05\u0f35\00"+
+ "\u07ec\u094c\01\00\00\u07ed\u07ee\05\u0f37\00\u07ee\u094c\01\00\00"+
+ "\u07ef\u07f0\05\u0f39\00\u07f0\u094c\01\00\00\u07f1\u07f2\02\u0f3e"+
+ "\u0f47\u07f2\u094c\01\00\00\u07f3\u07f4\02\u0f49\u0f6a\u07f4\u094c"+
+ "\01\00\00\u07f5\u07f6\02\u0f71\u0f84\u07f6\u094c\01\00\00\u07f7\u07f8"+
+ "\02\u0f86\u0f8b\u07f8\u094c\01\00\00\u07f9\u07fa\02\u0f90\u0f97\u07fa"+
+ "\u094c\01\00\00\u07fb\u07fc\02\u0f99\u0fbc\u07fc\u094c\01\00\00\u07fd"+
+ "\u07fe\05\u0fc6\00\u07fe\u094c\01\00\00\u07ff\u0800\02\u1000\u1021"+
+ "\u0800\u094c\01\00\00\u0801\u0802\02\u1023\u1027\u0802\u094c\01\00"+
+ "\00\u0803\u0804\02\u1029\u102a\u0804\u094c\01\00\00\u0805\u0806\02"+
+ "\u102c\u1032\u0806\u094c\01\00\00\u0807\u0808\02\u1036\u1039\u0808"+
+ "\u094c\01\00\00\u0809\u080a\02\u1040\u1049\u080a\u094c\01\00\00\u080b"+
+ "\u080c\02\u1050\u1059\u080c\u094c\01\00\00\u080d\u080e\02\u10a0\u10c5"+
+ "\u080e\u094c\01\00\00\u080f\u0810\02\u10d0\u10f8\u0810\u094c\01\00"+
+ "\00\u0811\u0812\02\u1100\u1159\u0812\u094c\01\00\00\u0813\u0814\02"+
+ "\u115f\u11a2\u0814\u094c\01\00\00\u0815\u0816\02\u11a8\u11f9\u0816"+
+ "\u094c\01\00\00\u0817\u0818\02\u1200\u1206\u0818\u094c\01\00\00\u0819"+
+ "\u081a\02\u1208\u1246\u081a\u094c\01\00\00\u081b\u081c\05\u1248\00"+
+ "\u081c\u094c\01\00\00\u081d\u081e\02\u124a\u124d\u081e\u094c\01\00"+
+ "\00\u081f\u0820\02\u1250\u1256\u0820\u094c\01\00\00\u0821\u0822\05"+
+ "\u1258\00\u0822\u094c\01\00\00\u0823\u0824\02\u125a\u125d\u0824\u094c"+
+ "\01\00\00\u0825\u0826\02\u1260\u1286\u0826\u094c\01\00\00\u0827\u0828"+
+ "\05\u1288\00\u0828\u094c\01\00\00\u0829\u082a\02\u128a\u128d\u082a"+
+ "\u094c\01\00\00\u082b\u082c\02\u1290\u12ae\u082c\u094c\01\00\00\u082d"+
+ "\u082e\05\u12b0\00\u082e\u094c\01\00\00\u082f\u0830\02\u12b2\u12b5"+
+ "\u0830\u094c\01\00\00\u0831\u0832\02\u12b8\u12be\u0832\u094c\01\00"+
+ "\00\u0833\u0834\05\u12c0\00\u0834\u094c\01\00\00\u0835\u0836\02\u12c2"+
+ "\u12c5\u0836\u094c\01\00\00\u0837\u0838\02\u12c8\u12ce\u0838\u094c"+
+ "\01\00\00\u0839\u083a\02\u12d0\u12d6\u083a\u094c\01\00\00\u083b\u083c"+
+ "\02\u12d8\u12ee\u083c\u094c\01\00\00\u083d\u083e\02\u12f0\u130e\u083e"+
+ "\u094c\01\00\00\u083f\u0840\05\u1310\00\u0840\u094c\01\00\00\u0841"+
+ "\u0842\02\u1312\u1315\u0842\u094c\01\00\00\u0843\u0844\02\u1318\u131e"+
+ "\u0844\u094c\01\00\00\u0845\u0846\02\u1320\u1346\u0846\u094c\01\00"+
+ "\00\u0847\u0848\02\u1348\u135a\u0848\u094c\01\00\00\u0849\u084a\02"+
+ "\u1369\u1371\u084a\u094c\01\00\00\u084b\u084c\02\u13a0\u13f4\u084c"+
+ "\u094c\01\00\00\u084d\u084e\02\u1401\u166c\u084e\u094c\01\00\00\u084f"+
+ "\u0850\02\u166f\u1676\u0850\u094c\01\00\00\u0851\u0852\02\u1681\u169a"+
+ "\u0852\u094c\01\00\00\u0853\u0854\02\u16a0\u16ea\u0854\u094c\01\00"+
+ "\00\u0855\u0856\02\u16ee\u16f0\u0856\u094c\01\00\00\u0857\u0858\02"+
+ "\u1700\u170c\u0858\u094c\01\00\00\u0859\u085a\02\u170e\u1714\u085a"+
+ "\u094c\01\00\00\u085b\u085c\02\u1720\u1734\u085c\u094c\01\00\00\u085d"+
+ "\u085e\02\u1740\u1753\u085e\u094c\01\00\00\u085f\u0860\02\u1760\u176c"+
+ "\u0860\u094c\01\00\00\u0861\u0862\02\u176e\u1770\u0862\u094c\01\00"+
+ "\00\u0863\u0864\02\u1772\u1773\u0864\u094c\01\00\00\u0865\u0866\02"+
+ "\u1780\u17d3\u0866\u094c\01\00\00\u0867\u0868\05\u17d7\00\u0868\u094c"+
+ "\01\00\00\u0869\u086a\02\u17db\u17dd\u086a\u094c\01\00\00\u086b\u086c"+
+ "\02\u17e0\u17e9\u086c\u094c\01\00\00\u086d\u086e\02\u180b\u180d\u086e"+
+ "\u094c\01\00\00\u086f\u0870\02\u1810\u1819\u0870\u094c\01\00\00\u0871"+
+ "\u0872\02\u1820\u1877\u0872\u094c\01\00\00\u0873\u0874\02\u1880\u18a9"+
+ "\u0874\u094c\01\00\00\u0875\u0876\02\u1900\u191c\u0876\u094c\01\00"+
+ "\00\u0877\u0878\02\u1920\u192b\u0878\u094c\01\00\00\u0879\u087a\02"+
+ "\u1930\u193b\u087a\u094c\01\00\00\u087b\u087c\02\u1946\u196d\u087c"+
+ "\u094c\01\00\00\u087d\u087e\02\u1970\u1974\u087e\u094c\01\00\00\u087f"+
+ "\u0880\02\u1d00\u1d6b\u0880\u094c\01\00\00\u0881\u0882\02\u1e00\u1e9b"+
+ "\u0882\u094c\01\00\00\u0883\u0884\02\u1ea0\u1ef9\u0884\u094c\01\00"+
+ "\00\u0885\u0886\02\u1f00\u1f15\u0886\u094c\01\00\00\u0887\u0888\02"+
+ "\u1f18\u1f1d\u0888\u094c\01\00\00\u0889\u088a\02\u1f20\u1f45\u088a"+
+ "\u094c\01\00\00\u088b\u088c\02\u1f48\u1f4d\u088c\u094c\01\00\00\u088d"+
+ "\u088e\02\u1f50\u1f57\u088e\u094c\01\00\00\u088f\u0890\05\u1f59\00"+
+ "\u0890\u094c\01\00\00\u0891\u0892\05\u1f5b\00\u0892\u094c\01\00\00"+
+ "\u0893\u0894\05\u1f5d\00\u0894\u094c\01\00\00\u0895\u0896\02\u1f5f"+
+ "\u1f7d\u0896\u094c\01\00\00\u0897\u0898\02\u1f80\u1fb4\u0898\u094c"+
+ "\01\00\00\u0899\u089a\02\u1fb6\u1fbc\u089a\u094c\01\00\00\u089b\u089c"+
+ "\05\u1fbe\00\u089c\u094c\01\00\00\u089d\u089e\02\u1fc2\u1fc4\u089e"+
+ "\u094c\01\00\00\u089f\u08a0\02\u1fc6\u1fcc\u08a0\u094c\01\00\00\u08a1"+
+ "\u08a2\02\u1fd0\u1fd3\u08a2\u094c\01\00\00\u08a3\u08a4\02\u1fd6\u1fdb"+
+ "\u08a4\u094c\01\00\00\u08a5\u08a6\02\u1fe0\u1fec\u08a6\u094c\01\00"+
+ "\00\u08a7\u08a8\02\u1ff2\u1ff4\u08a8\u094c\01\00\00\u08a9\u08aa\02"+
+ "\u1ff6\u1ffc\u08aa\u094c\01\00\00\u08ab\u08ac\02\u200c\u200f\u08ac"+
+ "\u094c\01\00\00\u08ad\u08ae\02\u202a\u202e\u08ae\u094c\01\00\00\u08af"+
+ "\u08b0\02\u203f\u2040\u08b0\u094c\01\00\00\u08b1\u08b2\05\u2054\00"+
+ "\u08b2\u094c\01\00\00\u08b3\u08b4\02\u2060\u2063\u08b4\u094c\01\00"+
+ "\00\u08b5\u08b6\02\u206a\u206f\u08b6\u094c\01\00\00\u08b7\u08b8\05"+
+ "\u2071\00\u08b8\u094c\01\00\00\u08b9\u08ba\05\u207f\00\u08ba\u094c"+
+ "\01\00\00\u08bb\u08bc\02\u20a0\u20b1\u08bc\u094c\01\00\00\u08bd\u08be"+
+ "\02\u20d0\u20dc\u08be\u094c\01\00\00\u08bf\u08c0\05\u20e1\00\u08c0"+
+ "\u094c\01\00\00\u08c1\u08c2\02\u20e5\u20ea\u08c2\u094c\01\00\00\u08c3"+
+ "\u08c4\05\u2102\00\u08c4\u094c\01\00\00\u08c5\u08c6\05\u2107\00\u08c6"+
+ "\u094c\01\00\00\u08c7\u08c8\02\u210a\u2113\u08c8\u094c\01\00\00\u08c9"+
+ "\u08ca\05\u2115\00\u08ca\u094c\01\00\00\u08cb\u08cc\02\u2119\u211d"+
+ "\u08cc\u094c\01\00\00\u08cd\u08ce\05\u2124\00\u08ce\u094c\01\00\00"+
+ "\u08cf\u08d0\05\u2126\00\u08d0\u094c\01\00\00\u08d1\u08d2\05\u2128"+
+ "\00\u08d2\u094c\01\00\00\u08d3\u08d4\02\u212a\u212d\u08d4\u094c\01"+
+ "\00\00\u08d5\u08d6\02\u212f\u2131\u08d6\u094c\01\00\00\u08d7\u08d8"+
+ "\02\u2133\u2139\u08d8\u094c\01\00\00\u08d9\u08da\02\u213d\u213f\u08da"+
+ "\u094c\01\00\00\u08db\u08dc\02\u2145\u2149\u08dc\u094c\01\00\00\u08dd"+
+ "\u08de\02\u2160\u2183\u08de\u094c\01\00\00\u08df\u08e0\02\u3005\u3007"+
+ "\u08e0\u094c\01\00\00\u08e1\u08e2\02\u3021\u302f\u08e2\u094c\01\00"+
+ "\00\u08e3\u08e4\02\u3031\u3035\u08e4\u094c\01\00\00\u08e5\u08e6\02"+
+ "\u3038\u303c\u08e6\u094c\01\00\00\u08e7\u08e8\02\u3041\u3096\u08e8"+
+ "\u094c\01\00\00\u08e9\u08ea\02\u3099\u309a\u08ea\u094c\01\00\00\u08eb"+
+ "\u08ec\02\u309d\u309f\u08ec\u094c\01\00\00\u08ed\u08ee\02\u30a1\u30ff"+
+ "\u08ee\u094c\01\00\00\u08ef\u08f0\02\u3105\u312c\u08f0\u094c\01\00"+
+ "\00\u08f1\u08f2\02\u3131\u318e\u08f2\u094c\01\00\00\u08f3\u08f4\02"+
+ "\u31a0\u31b7\u08f4\u094c\01\00\00\u08f5\u08f6\02\u31f0\u31ff\u08f6"+
+ "\u094c\01\00\00\u08f7\u08f8\02\u3400\u4db5\u08f8\u094c\01\00\00\u08f9"+
+ "\u08fa\02\u4e00\u9fa5\u08fa\u094c\01\00\00\u08fb\u08fc\02\ua000\ua48c"+
+ "\u08fc\u094c\01\00\00\u08fd\u08fe\02\uac00\ud7a3\u08fe\u094c\01\00"+
+ "\00\u08ff\u0900\02\uf900\ufa2d\u0900\u094c\01\00\00\u0901\u0902\02"+
+ "\ufa30\ufa6a\u0902\u094c\01\00\00\u0903\u0904\02\ufb00\ufb06\u0904"+
+ "\u094c\01\00\00\u0905\u0906\02\ufb13\ufb17\u0906\u094c\01\00\00\u0907"+
+ "\u0908\02\ufb1d\ufb28\u0908\u094c\01\00\00\u0909\u090a\02\ufb2a\ufb36"+
+ "\u090a\u094c\01\00\00\u090b\u090c\02\ufb38\ufb3c\u090c\u094c\01\00"+
+ "\00\u090d\u090e\05\ufb3e\00\u090e\u094c\01\00\00\u090f\u0910\02\ufb40"+
+ "\ufb41\u0910\u094c\01\00\00\u0911\u0912\02\ufb43\ufb44\u0912\u094c"+
+ "\01\00\00\u0913\u0914\02\ufb46\ufbb1\u0914\u094c\01\00\00\u0915\u0916"+
+ "\02\ufbd3\ufd3d\u0916\u094c\01\00\00\u0917\u0918\02\ufd50\ufd8f\u0918"+
+ "\u094c\01\00\00\u0919\u091a\02\ufd92\ufdc7\u091a\u094c\01\00\00\u091b"+
+ "\u091c\02\ufdf0\ufdfc\u091c\u094c\01\00\00\u091d\u091e\02\ufe00\ufe0f"+
+ "\u091e\u094c\01\00\00\u091f\u0920\02\ufe20\ufe23\u0920\u094c\01\00"+
+ "\00\u0921\u0922\02\ufe33\ufe34\u0922\u094c\01\00\00\u0923\u0924\02"+
+ "\ufe4d\ufe4f\u0924\u094c\01\00\00\u0925\u0926\05\ufe69\00\u0926\u094c"+
+ "\01\00\00\u0927\u0928\02\ufe70\ufe74\u0928\u094c\01\00\00\u0929\u092a"+
+ "\02\ufe76\ufefc\u092a\u094c\01\00\00\u092b\u092c\05\ufeff\00\u092c"+
+ "\u094c\01\00\00\u092d\u092e\05\uff04\00\u092e\u094c\01\00\00\u092f"+
+ "\u0930\02\uff10\uff19\u0930\u094c\01\00\00\u0931\u0932\02\uff21\uff3a"+
+ "\u0932\u094c\01\00\00\u0933\u0934\05\uff3f\00\u0934\u094c\01\00\00"+
+ "\u0935\u0936\02\uff41\uff5a\u0936\u094c\01\00\00\u0937\u0938\02\uff65"+
+ "\uffbe\u0938\u094c\01\00\00\u0939\u093a\02\uffc2\uffc7\u093a\u094c"+
+ "\01\00\00\u093b\u093c\02\uffca\uffcf\u093c\u094c\01\00\00\u093d\u093e"+
+ "\02\uffd2\uffd7\u093e\u094c\01\00\00\u093f\u0940\02\uffda\uffdc\u0940"+
+ "\u094c\01\00\00\u0941\u0942\02\uffe0\uffe1\u0942\u094c\01\00\00\u0943"+
+ "\u0944\02\uffe5\uffe6\u0944\u094c\01\00\00\u0945\u0946\02\ufff9\ufffb"+
+ "\u0946\u094c\01\00\00\u0947\u0948\02\ud800\udbff\u0948\u0949\01\00"+
+ "\00\u0949\u094a\02\udc00\udfff\u094a\u094c\01\00\00\u094b\u0645\01"+
+ "\00\00\u094b\u0647\01\00\00\u094b\u0649\01\00\00\u094b\u064b\01\00"+
+ "\00\u094b\u064d\01\00\00\u094b\u064f\01\00\00\u094b\u0651\01\00\00"+
+ "\u094b\u0653\01\00\00\u094b\u0655\01\00\00\u094b\u0657\01\00\00\u094b"+
+ "\u0659\01\00\00\u094b\u065b\01\00\00\u094b\u065d\01\00\00\u094b\u065f"+
+ "\01\00\00\u094b\u0661\01\00\00\u094b\u0663\01\00\00\u094b\u0665\01"+
+ "\00\00\u094b\u0667\01\00\00\u094b\u0669\01\00\00\u094b\u066b\01\00"+
+ "\00\u094b\u066d\01\00\00\u094b\u066f\01\00\00\u094b\u0671\01\00\00"+
+ "\u094b\u0673\01\00\00\u094b\u0675\01\00\00\u094b\u0677\01\00\00\u094b"+
+ "\u0679\01\00\00\u094b\u067b\01\00\00\u094b\u067d\01\00\00\u094b\u067f"+
+ "\01\00\00\u094b\u0681\01\00\00\u094b\u0683\01\00\00\u094b\u0685\01"+
+ "\00\00\u094b\u0687\01\00\00\u094b\u0689\01\00\00\u094b\u068b\01\00"+
+ "\00\u094b\u068d\01\00\00\u094b\u068f\01\00\00\u094b\u0691\01\00\00"+
+ "\u094b\u0693\01\00\00\u094b\u0695\01\00\00\u094b\u0697\01\00\00\u094b"+
+ "\u0699\01\00\00\u094b\u069b\01\00\00\u094b\u069d\01\00\00\u094b\u069f"+
+ "\01\00\00\u094b\u06a1\01\00\00\u094b\u06a3\01\00\00\u094b\u06a5\01"+
+ "\00\00\u094b\u06a7\01\00\00\u094b\u06a9\01\00\00\u094b\u06ab\01\00"+
+ "\00\u094b\u06ad\01\00\00\u094b\u06af\01\00\00\u094b\u06b1\01\00\00"+
+ "\u094b\u06b3\01\00\00\u094b\u06b5\01\00\00\u094b\u06b7\01\00\00\u094b"+
+ "\u06b9\01\00\00\u094b\u06bb\01\00\00\u094b\u06bd\01\00\00\u094b\u06bf"+
+ "\01\00\00\u094b\u06c1\01\00\00\u094b\u06c3\01\00\00\u094b\u06c5\01"+
+ "\00\00\u094b\u06c7\01\00\00\u094b\u06c9\01\00\00\u094b\u06cb\01\00"+
+ "\00\u094b\u06cd\01\00\00\u094b\u06cf\01\00\00\u094b\u06d1\01\00\00"+
+ "\u094b\u06d3\01\00\00\u094b\u06d5\01\00\00\u094b\u06d7\01\00\00\u094b"+
+ "\u06d9\01\00\00\u094b\u06db\01\00\00\u094b\u06dd\01\00\00\u094b\u06df"+
+ "\01\00\00\u094b\u06e1\01\00\00\u094b\u06e3\01\00\00\u094b\u06e5\01"+
+ "\00\00\u094b\u06e7\01\00\00\u094b\u06e9\01\00\00\u094b\u06eb\01\00"+
+ "\00\u094b\u06ed\01\00\00\u094b\u06ef\01\00\00\u094b\u06f1\01\00\00"+
+ "\u094b\u06f3\01\00\00\u094b\u06f5\01\00\00\u094b\u06f7\01\00\00\u094b"+
+ "\u06f9\01\00\00\u094b\u06fb\01\00\00\u094b\u06fd\01\00\00\u094b\u06ff"+
+ "\01\00\00\u094b\u0701\01\00\00\u094b\u0703\01\00\00\u094b\u0705\01"+
+ "\00\00\u094b\u0707\01\00\00\u094b\u0709\01\00\00\u094b\u070b\01\00"+
+ "\00\u094b\u070d\01\00\00\u094b\u070f\01\00\00\u094b\u0711\01\00\00"+
+ "\u094b\u0713\01\00\00\u094b\u0715\01\00\00\u094b\u0717\01\00\00\u094b"+
+ "\u0719\01\00\00\u094b\u071b\01\00\00\u094b\u071d\01\00\00\u094b\u071f"+
+ "\01\00\00\u094b\u0721\01\00\00\u094b\u0723\01\00\00\u094b\u0725\01"+
+ "\00\00\u094b\u0727\01\00\00\u094b\u0729\01\00\00\u094b\u072b\01\00"+
+ "\00\u094b\u072d\01\00\00\u094b\u072f\01\00\00\u094b\u0731\01\00\00"+
+ "\u094b\u0733\01\00\00\u094b\u0735\01\00\00\u094b\u0737\01\00\00\u094b"+
+ "\u0739\01\00\00\u094b\u073b\01\00\00\u094b\u073d\01\00\00\u094b\u073f"+
+ "\01\00\00\u094b\u0741\01\00\00\u094b\u0743\01\00\00\u094b\u0745\01"+
+ "\00\00\u094b\u0747\01\00\00\u094b\u0749\01\00\00\u094b\u074b\01\00"+
+ "\00\u094b\u074d\01\00\00\u094b\u074f\01\00\00\u094b\u0751\01\00\00"+
+ "\u094b\u0753\01\00\00\u094b\u0755\01\00\00\u094b\u0757\01\00\00\u094b"+
+ "\u0759\01\00\00\u094b\u075b\01\00\00\u094b\u075d\01\00\00\u094b\u075f"+
+ "\01\00\00\u094b\u0761\01\00\00\u094b\u0763\01\00\00\u094b\u0765\01"+
+ "\00\00\u094b\u0767\01\00\00\u094b\u0769\01\00\00\u094b\u076b\01\00"+
+ "\00\u094b\u076d\01\00\00\u094b\u076f\01\00\00\u094b\u0771\01\00\00"+
+ "\u094b\u0773\01\00\00\u094b\u0775\01\00\00\u094b\u0777\01\00\00\u094b"+
+ "\u0779\01\00\00\u094b\u077b\01\00\00\u094b\u077d\01\00\00\u094b\u077f"+
+ "\01\00\00\u094b\u0781\01\00\00\u094b\u0783\01\00\00\u094b\u0785\01"+
+ "\00\00\u094b\u0787\01\00\00\u094b\u0789\01\00\00\u094b\u078b\01\00"+
+ "\00\u094b\u078d\01\00\00\u094b\u078f\01\00\00\u094b\u0791\01\00\00"+
+ "\u094b\u0793\01\00\00\u094b\u0795\01\00\00\u094b\u0797\01\00\00\u094b"+
+ "\u0799\01\00\00\u094b\u079b\01\00\00\u094b\u079d\01\00\00\u094b\u079f"+
+ "\01\00\00\u094b\u07a1\01\00\00\u094b\u07a3\01\00\00\u094b\u07a5\01"+
+ "\00\00\u094b\u07a7\01\00\00\u094b\u07a9\01\00\00\u094b\u07ab\01\00"+
+ "\00\u094b\u07ad\01\00\00\u094b\u07af\01\00\00\u094b\u07b1\01\00\00"+
+ "\u094b\u07b3\01\00\00\u094b\u07b5\01\00\00\u094b\u07b7\01\00\00\u094b"+
+ "\u07b9\01\00\00\u094b\u07bb\01\00\00\u094b\u07bd\01\00\00\u094b\u07bf"+
+ "\01\00\00\u094b\u07c1\01\00\00\u094b\u07c3\01\00\00\u094b\u07c5\01"+
+ "\00\00\u094b\u07c7\01\00\00\u094b\u07c9\01\00\00\u094b\u07cb\01\00"+
+ "\00\u094b\u07cd\01\00\00\u094b\u07cf\01\00\00\u094b\u07d1\01\00\00"+
+ "\u094b\u07d3\01\00\00\u094b\u07d5\01\00\00\u094b\u07d7\01\00\00\u094b"+
+ "\u07d9\01\00\00\u094b\u07db\01\00\00\u094b\u07dd\01\00\00\u094b\u07df"+
+ "\01\00\00\u094b\u07e1\01\00\00\u094b\u07e3\01\00\00\u094b\u07e5\01"+
+ "\00\00\u094b\u07e7\01\00\00\u094b\u07e9\01\00\00\u094b\u07eb\01\00"+
+ "\00\u094b\u07ed\01\00\00\u094b\u07ef\01\00\00\u094b\u07f1\01\00\00"+
+ "\u094b\u07f3\01\00\00\u094b\u07f5\01\00\00\u094b\u07f7\01\00\00\u094b"+
+ "\u07f9\01\00\00\u094b\u07fb\01\00\00\u094b\u07fd\01\00\00\u094b\u07ff"+
+ "\01\00\00\u094b\u0801\01\00\00\u094b\u0803\01\00\00\u094b\u0805\01"+
+ "\00\00\u094b\u0807\01\00\00\u094b\u0809\01\00\00\u094b\u080b\01\00"+
+ "\00\u094b\u080d\01\00\00\u094b\u080f\01\00\00\u094b\u0811\01\00\00"+
+ "\u094b\u0813\01\00\00\u094b\u0815\01\00\00\u094b\u0817\01\00\00\u094b"+
+ "\u0819\01\00\00\u094b\u081b\01\00\00\u094b\u081d\01\00\00\u094b\u081f"+
+ "\01\00\00\u094b\u0821\01\00\00\u094b\u0823\01\00\00\u094b\u0825\01"+
+ "\00\00\u094b\u0827\01\00\00\u094b\u0829\01\00\00\u094b\u082b\01\00"+
+ "\00\u094b\u082d\01\00\00\u094b\u082f\01\00\00\u094b\u0831\01\00\00"+
+ "\u094b\u0833\01\00\00\u094b\u0835\01\00\00\u094b\u0837\01\00\00\u094b"+
+ "\u0839\01\00\00\u094b\u083b\01\00\00\u094b\u083d\01\00\00\u094b\u083f"+
+ "\01\00\00\u094b\u0841\01\00\00\u094b\u0843\01\00\00\u094b\u0845\01"+
+ "\00\00\u094b\u0847\01\00\00\u094b\u0849\01\00\00\u094b\u084b\01\00"+
+ "\00\u094b\u084d\01\00\00\u094b\u084f\01\00\00\u094b\u0851\01\00\00"+
+ "\u094b\u0853\01\00\00\u094b\u0855\01\00\00\u094b\u0857\01\00\00\u094b"+
+ "\u0859\01\00\00\u094b\u085b\01\00\00\u094b\u085d\01\00\00\u094b\u085f"+
+ "\01\00\00\u094b\u0861\01\00\00\u094b\u0863\01\00\00\u094b\u0865\01"+
+ "\00\00\u094b\u0867\01\00\00\u094b\u0869\01\00\00\u094b\u086b\01\00"+
+ "\00\u094b\u086d\01\00\00\u094b\u086f\01\00\00\u094b\u0871\01\00\00"+
+ "\u094b\u0873\01\00\00\u094b\u0875\01\00\00\u094b\u0877\01\00\00\u094b"+
+ "\u0879\01\00\00\u094b\u087b\01\00\00\u094b\u087d\01\00\00\u094b\u087f"+
+ "\01\00\00\u094b\u0881\01\00\00\u094b\u0883\01\00\00\u094b\u0885\01"+
+ "\00\00\u094b\u0887\01\00\00\u094b\u0889\01\00\00\u094b\u088b\01\00"+
+ "\00\u094b\u088d\01\00\00\u094b\u088f\01\00\00\u094b\u0891\01\00\00"+
+ "\u094b\u0893\01\00\00\u094b\u0895\01\00\00\u094b\u0897\01\00\00\u094b"+
+ "\u0899\01\00\00\u094b\u089b\01\00\00\u094b\u089d\01\00\00\u094b\u089f"+
+ "\01\00\00\u094b\u08a1\01\00\00\u094b\u08a3\01\00\00\u094b\u08a5\01"+
+ "\00\00\u094b\u08a7\01\00\00\u094b\u08a9\01\00\00\u094b\u08ab\01\00"+
+ "\00\u094b\u08ad\01\00\00\u094b\u08af\01\00\00\u094b\u08b1\01\00\00"+
+ "\u094b\u08b3\01\00\00\u094b\u08b5\01\00\00\u094b\u08b7\01\00\00\u094b"+
+ "\u08b9\01\00\00\u094b\u08bb\01\00\00\u094b\u08bd\01\00\00\u094b\u08bf"+
+ "\01\00\00\u094b\u08c1\01\00\00\u094b\u08c3\01\00\00\u094b\u08c5\01"+
+ "\00\00\u094b\u08c7\01\00\00\u094b\u08c9\01\00\00\u094b\u08cb\01\00"+
+ "\00\u094b\u08cd\01\00\00\u094b\u08cf\01\00\00\u094b\u08d1\01\00\00"+
+ "\u094b\u08d3\01\00\00\u094b\u08d5\01\00\00\u094b\u08d7\01\00\00\u094b"+
+ "\u08d9\01\00\00\u094b\u08db\01\00\00\u094b\u08dd\01\00\00\u094b\u08df"+
+ "\01\00\00\u094b\u08e1\01\00\00\u094b\u08e3\01\00\00\u094b\u08e5\01"+
+ "\00\00\u094b\u08e7\01\00\00\u094b\u08e9\01\00\00\u094b\u08eb\01\00"+
+ "\00\u094b\u08ed\01\00\00\u094b\u08ef\01\00\00\u094b\u08f1\01\00\00"+
+ "\u094b\u08f3\01\00\00\u094b\u08f5\01\00\00\u094b\u08f7\01\00\00\u094b"+
+ "\u08f9\01\00\00\u094b\u08fb\01\00\00\u094b\u08fd\01\00\00\u094b\u08ff"+
+ "\01\00\00\u094b\u0901\01\00\00\u094b\u0903\01\00\00\u094b\u0905\01"+
+ "\00\00\u094b\u0907\01\00\00\u094b\u0909\01\00\00\u094b\u090b\01\00"+
+ "\00\u094b\u090d\01\00\00\u094b\u090f\01\00\00\u094b\u0911\01\00\00"+
+ "\u094b\u0913\01\00\00\u094b\u0915\01\00\00\u094b\u0917\01\00\00\u094b"+
+ "\u0919\01\00\00\u094b\u091b\01\00\00\u094b\u091d\01\00\00\u094b\u091f"+
+ "\01\00\00\u094b\u0921\01\00\00\u094b\u0923\01\00\00\u094b\u0925\01"+
+ "\00\00\u094b\u0927\01\00\00\u094b\u0929\01\00\00\u094b\u092b\01\00"+
+ "\00\u094b\u092d\01\00\00\u094b\u092f\01\00\00\u094b\u0931\01\00\00"+
+ "\u094b\u0933\01\00\00\u094b\u0935\01\00\00\u094b\u0937\01\00\00\u094b"+
+ "\u0939\01\00\00\u094b\u093b\01\00\00\u094b\u093d\01\00\00\u094b\u093f"+
+ "\01\00\00\u094b\u0941\01\00\00\u094b\u0943\01\00\00\u094b\u0945\01"+
+ "\00\00\u094b\u0947\01\00\00\u094c\u00ea\01\00\00\072\00\u00f7\u00ff"+
+ "\u00ff\u0101\u0107\u0107\u0109\u010b\u0113\u011b\u0121\u0125\u0125"+
+ "\u0127\u012d\u0133\u0139\u0139\u013b\u013f\u0143\u0143\u0145\u014b"+
+ "\u014b\u014d\u0153\u015b\u015f\u0165\u016b\u016f\u016f\u0171\u0173"+
+ "\u0179\u017f\u0183\u0183\u0185\u018b\u0191\u019b\u01a3\u01ad\u01c5"+
+ "\u01cb\u01df\u01f7\u01ff\u020c\u0217\u021f\u0224\u03ed\u0643\u094b";
+ public static final ATN _ATN =
+ ATNInterpreter.deserialize(_serializedATN.toCharArray());
+ static {
+ org.antlr.v4.tool.DOTGenerator dot = new org.antlr.v4.tool.DOTGenerator(null);
+ //System.out.println(dot.getDOT(_ATN.decisionToATNState.get(0)));
+ }
+}
\ No newline at end of file
diff --git a/tool/playground/YangJavaParser.g b/tool/playground/YangJavaParser.g
new file mode 100644
index 000000000..3e3bba2cc
--- /dev/null
+++ b/tool/playground/YangJavaParser.g
@@ -0,0 +1,1238 @@
+/*
+ [The "BSD licence"]
+ Copyright (c) 2007-2008 Terence Parr
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * This file is modified by Yang Jiang (yang.jiang.z@gmail.com), taken from the original
+ * java grammar in www.antlr.org, with the goal to provide a standard ANTLR grammar
+ * for java, as well as an implementation to construct the same AST trees as javac does.
+ *
+ * The major changes of this version as compared to the original version include:
+ * 1) Top level rules are changed to include all of their sub-components.
+ * For example, the rule
+ *
+ * classOrInterfaceDeclaration
+ * : classOrInterfaceModifiers (classDeclaration | interfaceDeclaration)
+ * ;
+ *
+ * is changed to
+ *
+ * classOrInterfaceDeclaration
+ * : classDeclaration | interfaceDeclaration
+ * ;
+ *
+ * with classOrInterfaceModifiers been moved inside classDeclaration and
+ * interfaceDeclaration.
+ *
+ * 2) The original version is not quite clear on certain rules like memberDecl,
+ * where it mixed the styles of listing of top level rules and listing of sub rules.
+ *
+ * memberDecl
+ * : genericMethodOrConstructorDecl
+ * | memberDeclaration
+ * | 'void' Identifier voidMethodDeclaratorRest
+ * | Identifier constructorDeclaratorRest
+ * | interfaceDeclaration
+ * | classDeclaration
+ * ;
+ *
+ * This is changed to a
+ *
+ * memberDecl
+ * : fieldDeclaration
+ * | methodDeclaration
+ * | classDeclaration
+ * | interfaceDeclaration
+ * ;
+ * by folding similar rules into single rule.
+ *
+ * 3) Some syntactical predicates are added for efficiency, although this is not necessary
+ * for correctness.
+ *
+ * 4) Lexer part is rewritten completely to construct tokens needed for the parser.
+ *
+ * 5) This grammar adds more source level support
+ *
+ *
+ * This grammar also adds bug fixes.
+ *
+ * 1) Adding typeArguments to superSuffix to alHexSignificandlow input like
+ * super.method()
+ *
+ * 2) Adding typeArguments to innerCreator to allow input like
+ * new Type1().new Type2()
+ *
+ * 3) conditionalExpression is changed to
+ * conditionalExpression
+ * : conditionalOrExpression ( '?' expression ':' conditionalExpression )?
+ * ;
+ * to accept input like
+ * true?1:2=3
+ *
+ * Note: note this is by no means a valid input, by the grammar should be able to parse
+ * this as
+ * (true?1:2)=3
+ * rather than
+ * true?1:(2=3)
+ *
+ *
+ * Know problems:
+ * Won't pass input containing unicode sequence like this
+ * char c = '\uffff'
+ * String s = "\uffff";
+ * Because Antlr does not treat '\uffff' as an valid char. This will be fixed in the next Antlr
+ * release. [Fixed in Antlr-3.1.1]
+ *
+ * Things to do:
+ * More effort to make this grammar faster.
+ * Error reporting/recovering.
+ *
+ *
+ * NOTE: If you try to compile this file from command line and Antlr gives an exception
+ * like error message while compiling, add option
+ * -Xconversiontimeout 100000
+ * to the command line.
+ * If it still doesn't work or the compilation process
+ * takes too long, try to comment out the following two lines:
+ * | {isValidSurrogateIdentifierStart((char)input.LT(1), (char)input.LT(2))}?=>('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ * | {isValidSurrogateIdentifierPart((char)input.LT(1), (char)input.LT(2))}?=>('\ud800'..'\udbff') ('\udc00'..'\udfff')
+ *
+ *
+ * Below are comments found in the original version.
+ */
+
+
+/** A Java 1.5 grammar for ANTLR v3 derived from the spec
+ *
+ * This is a very close representation of the spec; the changes
+ * are comestic (remove left recursion) and also fixes (the spec
+ * isn't exactly perfect). I have run this on the 1.4.2 source
+ * and some nasty looking enums from 1.5, but have not really
+ * tested for 1.5 compatibility.
+ *
+ * I built this with: java -Xmx100M org.antlr.Tool java.g
+ * and got two errors that are ok (for now):
+ * java.g:691:9: Decision can match input such as
+ * "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
+ * using multiple alternatives: 3, 4
+ * As a result, alternative(s) 4 were disabled for that input
+ * java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
+ * '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
+ * '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
+ * '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
+ * using multiple alternatives: 1, 2
+ * As a result, alternative(s) 2 were disabled for that input
+ *
+ * You can turn enum on/off as a keyword :)
+ *
+ * Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
+ *
+ * Primary author: Terence Parr, July 2006
+ *
+ * Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
+ * October 25, 2006;
+ * fixed normalInterfaceDeclaration: now uses typeParameters instead
+ * of typeParameter (according to JLS, 3rd edition)
+ * fixed castExpression: no longer allows expression next to type
+ * (according to semantics in JLS, in contrast with syntax in JLS)
+ *
+ * Version 1.0.2 -- Terence Parr, Nov 27, 2006
+ * java spec I built this from had some bizarre for-loop control.
+ * Looked weird and so I looked elsewhere...Yep, it's messed up.
+ * simplified.
+ *
+ * Version 1.0.3 -- Chris Hogue, Feb 26, 2007
+ * Factored out an annotationName rule and used it in the annotation rule.
+ * Not sure why, but typeName wasn't recognizing references to inner
+ * annotations (e.g. @InterfaceName.InnerAnnotation())
+ * Factored out the elementValue section of an annotation reference. Created
+ * elementValuePair and elementValuePairs rules, then used them in the
+ * annotation rule. Allows it to recognize annotation references with
+ * multiple, comma separated attributes.
+ * Updated elementValueArrayInitializer so that it allows multiple elements.
+ * (It was only allowing 0 or 1 element).
+ * Updated localVariableDeclaration to allow annotations. Interestingly the JLS
+ * doesn't appear to indicate this is legal, but it does work as of at least
+ * JDK 1.5.0_06.
+ * Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
+ * Because annotationConstantRest already references variableDeclarator which
+ * has the Identifier portion in it, the parser would fail on constants in
+ * annotation definitions because it expected two identifiers.
+ * Added optional trailing ';' to the alternatives in annotationTypeElementRest.
+ * Wouldn't handle an inner interface that has a trailing ';'.
+ * Swapped the expression and type rule reference order in castExpression to
+ * make it check for genericized casts first. It was failing to recognize a
+ * statement like "Class TYPE = (Class)...;" because it was seeing
+ * 'Class'.
+ * Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
+ *
+ * Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
+ * just 'arguments'. The case it couldn't handle was a call to an explicit
+ * generic method invocation (e.g. this.doSomething()). Using identifierSuffix
+ * may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
+ *
+ * Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
+ *
+ * Fixed formalParameterDecls, localVariableDeclaration, forInit,
+ * and forVarControl to use variableModifier* not 'final'? (annotation)?
+ *
+ * Version 1.0.5 -- Terence, June 21, 2007
+ * --a[i].foo didn't work. Fixed unaryExpression
+ *
+ * Version 1.0.6 -- John Ridgway, March 17, 2008
+ * Made "assert" a switchable keyword like "enum".
+ * Fixed compilationUnit to disallow "annotation importDeclaration ...".
+ * Changed "Identifier ('.' Identifier)*" to "qualifiedName" in more
+ * places.
+ * Changed modifier* and/or variableModifier* to classOrInterfaceModifiers,
+ * modifiers or variableModifiers, as appropriate.
+ * Renamed "bound" to "typeBound" to better match language in the JLS.
+ * Added "memberDeclaration" which rewrites to methodDeclaration or
+ * fieldDeclaration and pulled type into memberDeclaration. So we parse
+ * type and then move on to decide whether we're dealing with a field
+ * or a method.
+ * Modified "constructorDeclaration" to use "constructorBody" instead of
+ * "methodBody". constructorBody starts with explicitConstructorInvocation,
+ * then goes on to blockStatement*. Pulling explicitConstructorInvocation
+ * out of expressions allowed me to simplify "primary".
+ * Changed variableDeclarator to simplify it.
+ * Changed type to use classOrInterfaceType, thus simplifying it; of course
+ * I then had to add classOrInterfaceType, but it is used in several
+ * places.
+ * Fixed annotations, old version allowed "@X(y,z)", which is illegal.
+ * Added optional comma to end of "elementValueArrayInitializer"; as per JLS.
+ * Changed annotationTypeElementRest to use normalClassDeclaration and
+ * normalInterfaceDeclaration rather than classDeclaration and
+ * interfaceDeclaration, thus getting rid of a couple of grammar ambiguities.
+ * Split localVariableDeclaration into localVariableDeclarationStatement
+ * (includes the terminating semi-colon) and localVariableDeclaration.
+ * This allowed me to use localVariableDeclaration in "forInit" clauses,
+ * simplifying them.
+ * Changed switchBlockStatementGroup to use multiple labels. This adds an
+ * ambiguity, but if one uses appropriately greedy parsing it yields the
+ * parse that is closest to the meaning of the switch statement.
+ * Renamed "forVarControl" to "enhancedForControl" -- JLS language.
+ * Added semantic predicates to test for shift operations rather than other
+ * things. Thus, for instance, the string "< <" will never be treated
+ * as a left-shift operator.
+ * In "creator" we rule out "nonWildcardTypeArguments" on arrayCreation,
+ * which are illegal.
+ * Moved "nonWildcardTypeArguments into innerCreator.
+ * Removed 'super' superSuffix from explicitGenericInvocation, since that
+ * is only used in explicitConstructorInvocation at the beginning of a
+ * constructorBody. (This is part of the simplification of expressions
+ * mentioned earlier.)
+ * Simplified primary (got rid of those things that are only used in
+ * explicitConstructorInvocation).
+ * Lexer -- removed "Exponent?" from FloatingPointLiteral choice 4, since it
+ * led to an ambiguity.
+ *
+ * This grammar successfully parses every .java file in the JDK 1.5 source
+ * tree (excluding those whose file names include '-', which are not
+ * valid Java compilation units).
+ *
+ * Known remaining problems:
+ * "Letter" and "JavaIDDigit" are wrong. The actual specification of
+ * "Letter" should be "a character for which the method
+ * Character.isJavaIdentifierStart(int) returns true." A "Java
+ * letter-or-digit is a character for which the method
+ * Character.isJavaIdentifierPart(int) returns true."
+ */
+
+
+ /*
+ This is a merged file, containing two versions of the Java.g grammar.
+ To extract a version from the file, run the ver.jar with the command provided below.
+
+ Version 1 - tree building version, with all source level support, error recovery etc.
+ This is the version for compiler grammar workspace.
+ This version can be extracted by invoking:
+ java -cp ver.jar Main 1 true true true true true Java.g
+
+ Version 2 - clean version, with no source leve support, no error recovery, no predicts,
+ assumes 1.6 level, works in Antlrworks.
+ This is the version for Alex.
+ This version can be extracted by invoking:
+ java -cp ver.jar Main 2 false false false false false Java.g
+*/
+
+parser grammar YangJavaParser;
+
+options {
+ tokenVocab = YangJavaLexer;
+}
+
+/********************************************************************************************
+ Parser section
+*********************************************************************************************/
+
+compilationUnit
+ : ( (annotations
+ )?
+ packageDeclaration
+ )?
+ (importDeclaration
+ )*
+ (typeDeclaration
+ )*
+ ;
+
+packageDeclaration
+ : 'package' qualifiedName
+ ';'
+ ;
+
+importDeclaration
+ : 'import'
+ ('static'
+ )?
+ IDENTIFIER '.' '*'
+ ';'
+ | 'import'
+ ('static'
+ )?
+ IDENTIFIER
+ ('.' IDENTIFIER
+ )+
+ ('.' '*'
+ )?
+ ';'
+ ;
+
+qualifiedImportName
+ : IDENTIFIER
+ ('.' IDENTIFIER
+ )*
+ ;
+
+typeDeclaration
+ : classOrInterfaceDeclaration
+ | ';'
+ ;
+
+classOrInterfaceDeclaration
+ : classDeclaration
+ | interfaceDeclaration
+ ;
+
+
+modifiers
+ :
+ ( annotation
+ | 'public'
+ | 'protected'
+ | 'private'
+ | 'static'
+ | 'abstract'
+ | 'final'
+ | 'native'
+ | 'synchronized'
+ | 'transient'
+ | 'volatile'
+ | 'strictfp'
+ )*
+ ;
+
+
+variableModifiers
+ : ( 'final'
+ | annotation
+ )*
+ ;
+
+
+classDeclaration
+ : normalClassDeclaration
+ | enumDeclaration
+ ;
+
+normalClassDeclaration
+ : modifiers 'class' IDENTIFIER
+ (typeParameters
+ )?
+ ('extends' type
+ )?
+ ('implements' typeList
+ )?
+ classBody
+ ;
+
+
+typeParameters
+ : '<'
+ typeParameter
+ (',' typeParameter
+ )*
+ '>'
+ ;
+
+typeParameter
+ : IDENTIFIER
+ ('extends' typeBound
+ )?
+ ;
+
+
+typeBound
+ : type
+ ('&' type
+ )*
+ ;
+
+
+enumDeclaration
+ : modifiers
+ ('enum'
+ )
+ IDENTIFIER
+ ('implements' typeList
+ )?
+ enumBody
+ ;
+
+
+enumBody
+ : '{'
+ (enumConstants
+ )?
+ ','?
+ (enumBodyDeclarations
+ )?
+ '}'
+ ;
+
+enumConstants
+ : enumConstant
+ (',' enumConstant
+ )*
+ ;
+
+/**
+ * NOTE: here differs from the javac grammar, missing TypeArguments.
+ * EnumeratorDeclaration = AnnotationsOpt [TypeArguments] IDENTIFIER [ Arguments ] [ "{" ClassBody "}" ]
+ */
+enumConstant
+ : (annotations
+ )?
+ IDENTIFIER
+ (arguments
+ )?
+ (classBody
+ )?
+ /* TODO: $GScope::name = names.empty. enum constant body is actually
+ an anonymous class, where constructor isn't allowed, have to add this check*/
+ ;
+
+enumBodyDeclarations
+ : ';'
+ (classBodyDeclaration
+ )*
+ ;
+
+interfaceDeclaration
+ : normalInterfaceDeclaration
+ | annotationTypeDeclaration
+ ;
+
+normalInterfaceDeclaration
+ : modifiers 'interface' IDENTIFIER
+ (typeParameters
+ )?
+ ('extends' typeList
+ )?
+ interfaceBody
+ ;
+
+typeList
+ : type
+ (',' type
+ )*
+ ;
+
+classBody
+ : '{'
+ (classBodyDeclaration
+ )*
+ '}'
+ ;
+
+interfaceBody
+ : '{'
+ interfaceBodyDeclaration*
+ '}'
+ ;
+
+classBodyDeclaration
+ : ';'
+ | ('static'
+ )?
+ block
+ | memberDecl
+ ;
+
+memberDecl
+ : fieldDeclaration
+ | methodDeclaration
+ | classDeclaration
+ | interfaceDeclaration
+ ;
+
+
+methodDeclaration
+ :
+ /* For constructor, return type is null, name is 'init' */
+ modifiers
+ (typeParameters
+ )?
+ IDENTIFIER
+ formalParameters
+ ('throws' qualifiedNameList
+ )?
+ '{'
+ (explicitConstructorInvocation
+ )?
+ (blockStatement
+ )*
+ '}'
+ | modifiers
+ (typeParameters
+ )?
+ (type
+ | 'void'
+ )
+ IDENTIFIER
+ formalParameters
+ ('[' ']'
+ )*
+ ('throws' qualifiedNameList
+ )?
+ (
+ block
+ | ';'
+ )
+ ;
+
+
+fieldDeclaration
+ : modifiers
+ type
+ variableDeclarator
+ (',' variableDeclarator
+ )*
+ ';'
+ ;
+
+variableDeclarator
+ : IDENTIFIER
+ ('[' ']'
+ )*
+ ('=' variableInitializer
+ )?
+ ;
+
+/**
+ *TODO: add predicates
+ */
+interfaceBodyDeclaration
+ :
+ interfaceFieldDeclaration
+ | interfaceMethodDeclaration
+ | interfaceDeclaration
+ | classDeclaration
+ | ';'
+ ;
+
+interfaceMethodDeclaration
+ : modifiers
+ (typeParameters
+ )?
+ (type
+ |'void'
+ )
+ IDENTIFIER
+ formalParameters
+ ('[' ']'
+ )*
+ ('throws' qualifiedNameList
+ )? ';'
+ ;
+
+/**
+ * NOTE, should not use variableDeclarator here, as it doesn't necessary require
+ * an initializer, while an interface field does, or judge by the returned value.
+ * But this gives better diagnostic message, or antlr won't predict this rule.
+ */
+interfaceFieldDeclaration
+ : modifiers type variableDeclarator
+ (',' variableDeclarator
+ )*
+ ';'
+ ;
+
+
+type
+ : classOrInterfaceType
+ ('[' ']'
+ )*
+ | primitiveType
+ ('[' ']'
+ )*
+ ;
+
+
+classOrInterfaceType
+ : IDENTIFIER
+ (typeArguments
+ )?
+ ('.' IDENTIFIER
+ (typeArguments
+ )?
+ )*
+ ;
+
+primitiveType
+ : 'boolean'
+ | 'char'
+ | 'byte'
+ | 'short'
+ | 'int'
+ | 'long'
+ | 'float'
+ | 'double'
+ ;
+
+typeArguments
+ : '<' typeArgument
+ (',' typeArgument
+ )*
+ '>'
+ ;
+
+typeArgument
+ : type
+ | '?'
+ (
+ ('extends'
+ |'super'
+ )
+ type
+ )?
+ ;
+
+qualifiedNameList
+ : qualifiedName
+ (',' qualifiedName
+ )*
+ ;
+
+formalParameters
+ : '('
+ (formalParameterDecls
+ )?
+ ')'
+ ;
+
+formalParameterDecls
+ : ellipsisParameterDecl
+ | normalParameterDecl
+ (',' normalParameterDecl
+ )*
+ | (normalParameterDecl
+ ','
+ )+
+ ellipsisParameterDecl
+ ;
+
+normalParameterDecl
+ : variableModifiers type IDENTIFIER
+ ('[' ']'
+ )*
+ ;
+
+ellipsisParameterDecl
+ : variableModifiers
+ type '...'
+ IDENTIFIER
+ ;
+
+
+explicitConstructorInvocation
+ : (nonWildcardTypeArguments
+ )? //NOTE: the position of Identifier 'super' is set to the type args position here
+ ('this'
+ |'super'
+ )
+ arguments ';'
+
+ | primary
+ '.'
+ (nonWildcardTypeArguments
+ )?
+ 'super'
+ arguments ';'
+ ;
+
+qualifiedName
+ : IDENTIFIER
+ ('.' IDENTIFIER
+ )*
+ ;
+
+annotations
+ : (annotation
+ )+
+ ;
+
+/**
+ * Using an annotation.
+ * '@' is flaged in modifier
+ */
+annotation
+ : '@' qualifiedName
+ ( '('
+ ( elementValuePairs
+ | elementValue
+ )?
+ ')'
+ )?
+ ;
+
+elementValuePairs
+ : elementValuePair
+ (',' elementValuePair
+ )*
+ ;
+
+elementValuePair
+ : IDENTIFIER '=' elementValue
+ ;
+
+elementValue
+ : conditionalExpression
+ | annotation
+ | elementValueArrayInitializer
+ ;
+
+elementValueArrayInitializer
+ : '{'
+ (elementValue
+ (',' elementValue
+ )*
+ )? (',')? '}'
+ ;
+
+
+/**
+ * Annotation declaration.
+ */
+annotationTypeDeclaration
+ : modifiers '@'
+ 'interface'
+ IDENTIFIER
+ annotationTypeBody
+ ;
+
+
+annotationTypeBody
+ : '{'
+ (annotationTypeElementDeclaration
+ )*
+ '}'
+ ;
+
+/**
+ * NOTE: here use interfaceFieldDeclaration for field declared inside annotation. they are sytactically the same.
+ */
+annotationTypeElementDeclaration
+ : annotationMethodDeclaration
+ | interfaceFieldDeclaration
+ | normalClassDeclaration
+ | normalInterfaceDeclaration
+ | enumDeclaration
+ | annotationTypeDeclaration
+ | ';'
+ ;
+
+annotationMethodDeclaration
+ : modifiers type IDENTIFIER
+ '(' ')' ('default' elementValue
+ )?
+ ';'
+ ;
+
+block
+ : '{'
+ (blockStatement
+ )*
+ '}'
+ ;
+
+/*
+staticBlock returns [JCBlock tree]
+ @init {
+ ListBuffer stats = new ListBuffer();
+ int pos = ((AntlrJavacToken) $start).getStartIndex();
+ }
+ @after {
+ $tree = T.at(pos).Block(Flags.STATIC, stats.toList());
+ pu.storeEnd($tree, $stop);
+ // construct a dummy static modifiers for end position
+ pu.storeEnd(T.at(pos).Modifiers(Flags.STATIC, com.sun.tools.javac.util.List.nil()),$st);
+ }
+ : st_1='static' '{'
+ (blockStatement
+ {
+ if ($blockStatement.tree == null) {
+ stats.appendList($blockStatement.list);
+ } else {
+ stats.append($blockStatement.tree);
+ }
+ }
+ )* '}'
+ ;
+*/
+blockStatement
+ : localVariableDeclarationStatement
+ | classOrInterfaceDeclaration
+ | statement
+ ;
+
+
+localVariableDeclarationStatement
+ : localVariableDeclaration
+ ';'
+ ;
+
+localVariableDeclaration
+ : variableModifiers type
+ variableDeclarator
+ (',' variableDeclarator
+ )*
+ ;
+
+statement
+ : block
+
+ | ('assert'
+ )
+ expression (':' expression)? ';'
+ | 'assert' expression (':' expression)? ';'
+ | 'if' parExpression statement ('else' statement)?
+ | forstatement
+ | 'while' parExpression statement
+ | 'do' statement 'while' parExpression ';'
+ | trystatement
+ | 'switch' parExpression '{' switchBlockStatementGroups '}'
+ | 'synchronized' parExpression block
+ | 'return' (expression )? ';'
+ | 'throw' expression ';'
+ | 'break'
+ (IDENTIFIER
+ )? ';'
+ | 'continue'
+ (IDENTIFIER
+ )? ';'
+ | expression ';'
+ | IDENTIFIER ':' statement
+ | ';'
+
+ ;
+
+switchBlockStatementGroups
+ : (switchBlockStatementGroup )*
+ ;
+
+switchBlockStatementGroup
+ :
+ switchLabel
+ (blockStatement
+ )*
+ ;
+
+switchLabel
+ : 'case' expression ':'
+ | 'default' ':'
+ ;
+
+
+trystatement
+ : 'try' block
+ ( catches 'finally' block
+ | catches
+ | 'finally' block
+ )
+ ;
+
+catches
+ : catchClause
+ (catchClause
+ )*
+ ;
+
+catchClause
+ : 'catch' '(' formalParameter
+ ')' block
+ ;
+
+formalParameter
+ : variableModifiers type IDENTIFIER
+ ('[' ']'
+ )*
+ ;
+
+forstatement
+ :
+ // enhanced for loop
+ 'for' '(' variableModifiers type IDENTIFIER ':'
+ expression ')' statement
+
+ // normal for loop
+ | 'for' '('
+ (forInit
+ )? ';'
+ (expression
+ )? ';'
+ (expressionList
+ )? ')' statement
+ ;
+
+forInit
+ : localVariableDeclaration
+ | expressionList
+ ;
+
+parExpression
+ : '(' expression ')'
+ ;
+
+expressionList
+ : expression
+ (',' expression
+ )*
+ ;
+
+
+expression
+ : conditionalExpression
+ (assignmentOperator expression
+ )?
+ ;
+
+
+assignmentOperator
+ : '='
+ | '+='
+ | '-='
+ | '*='
+ | '/='
+ | '&='
+ | '|='
+ | '^='
+ | '%='
+ | '<' '<' '='
+ | '>' '>' '>' '='
+ | '>' '>' '='
+ ;
+
+
+conditionalExpression
+ : conditionalOrExpression
+ ('?' expression ':' conditionalExpression
+ )?
+ ;
+
+conditionalOrExpression
+ : conditionalAndExpression
+ ('||' conditionalAndExpression
+ )*
+ ;
+
+conditionalAndExpression
+ : inclusiveOrExpression
+ ('&&' inclusiveOrExpression
+ )*
+ ;
+
+inclusiveOrExpression
+ : exclusiveOrExpression
+ ('|' exclusiveOrExpression
+ )*
+ ;
+
+exclusiveOrExpression
+ : andExpression
+ ('^' andExpression
+ )*
+ ;
+
+andExpression
+ : equalityExpression
+ ('&' equalityExpression
+ )*
+ ;
+
+equalityExpression
+ : instanceOfExpression
+ (
+ ( '=='
+ | '!='
+ )
+ instanceOfExpression
+ )*
+ ;
+
+instanceOfExpression
+ : relationalExpression
+ ('instanceof' type
+ )?
+ ;
+
+relationalExpression
+ : shiftExpression
+ (relationalOp shiftExpression
+ )*
+ ;
+
+relationalOp
+ : '<' '='
+ | '>' '='
+ | '<'
+ | '>'
+ ;
+
+shiftExpression
+ : additiveExpression
+ (shiftOp additiveExpression
+ )*
+ ;
+
+
+shiftOp
+ : '<' '<'
+ | '>' '>' '>'
+ | '>' '>'
+ ;
+
+
+additiveExpression
+ : multiplicativeExpression
+ (
+ ( '+'
+ | '-'
+ )
+ multiplicativeExpression
+ )*
+ ;
+
+multiplicativeExpression
+ :
+ unaryExpression
+ (
+ ( '*'
+ | '/'
+ | '%'
+ )
+ unaryExpression
+ )*
+ ;
+
+/**
+ * NOTE: for '+' and '-', if the next token is int or long interal, then it's not a unary expression.
+ * it's a literal with signed value. INTLTERAL AND LONG LITERAL are added here for this.
+ */
+unaryExpression
+ : '+' unaryExpression
+ | '-' unaryExpression
+ | '++' unaryExpression
+ | '--' unaryExpression
+ | unaryExpressionNotPlusMinus
+ ;
+
+unaryExpressionNotPlusMinus
+ : '~' unaryExpression
+ | '!' unaryExpression
+ | castExpression
+ | primary
+ (selector
+ )*
+ ( '++'
+ | '--'
+ )?
+ ;
+
+castExpression
+ : '(' primitiveType ')' unaryExpression
+ | '(' type ')' unaryExpressionNotPlusMinus
+ ;
+
+/**
+ * have to use scope here, parameter passing isn't well supported in antlr.
+ */
+primary
+ : parExpression
+ | 'this'
+ ('.' IDENTIFIER
+ )*
+ (identifierSuffix
+ )?
+ | IDENTIFIER
+ ('.' IDENTIFIER
+ )*
+ (identifierSuffix
+ )?
+ | 'super'
+ superSuffix
+ | literal
+ | creator
+ | primitiveType
+ ('[' ']'
+ )*
+ '.' 'class'
+ | 'void' '.' 'class'
+ ;
+
+
+superSuffix
+ : arguments
+ | '.' (typeArguments
+ )?
+ IDENTIFIER
+ (arguments
+ )?
+ ;
+
+
+identifierSuffix
+ : ('[' ']'
+ )+
+ '.' 'class'
+ | ('[' expression ']'
+ )+
+ | arguments
+ | '.' 'class'
+ | '.' nonWildcardTypeArguments IDENTIFIER arguments
+ | '.' 'this'
+ | '.' 'super' arguments
+ | innerCreator
+ ;
+
+
+selector
+ : '.' IDENTIFIER
+ (arguments
+ )?
+ | '.' 'this'
+ | '.' 'super'
+ superSuffix
+ | innerCreator
+ | '[' expression ']'
+ ;
+
+creator
+ : 'new' nonWildcardTypeArguments classOrInterfaceType classCreatorRest
+ | 'new' classOrInterfaceType classCreatorRest
+ | arrayCreator
+ ;
+
+arrayCreator
+ : 'new' createdName
+ '[' ']'
+ ('[' ']'
+ )*
+ arrayInitializer
+
+ | 'new' createdName
+ '[' expression
+ ']'
+ ( '[' expression
+ ']'
+ )*
+ ('[' ']'
+ )*
+ ;
+
+variableInitializer
+ : arrayInitializer
+ | expression
+ ;
+
+arrayInitializer
+ : '{'
+ (variableInitializer
+ (',' variableInitializer
+ )*
+ )?
+ (',')?
+ '}' //Yang's fix, position change.
+ ;
+
+
+createdName
+ : classOrInterfaceType
+ | primitiveType
+ ;
+
+innerCreator
+ : '.' 'new'
+ (nonWildcardTypeArguments
+ )?
+ IDENTIFIER
+ (typeArguments
+ )?
+ classCreatorRest
+ ;
+
+
+classCreatorRest
+ : arguments
+ (classBody
+ )?
+ ;
+
+
+nonWildcardTypeArguments
+ : '<' typeList
+ '>'
+ ;
+
+arguments
+ : '(' (expressionList
+ )? ')'
+ ;
+
+literal
+ : INTLITERAL
+ | LONGLITERAL
+ | FLOATLITERAL
+ | DOUBLELITERAL
+ | CHARLITERAL
+ | STRINGLITERAL
+ | TRUE
+ | FALSE
+ | NULL
+ ;
+
diff --git a/tool/playground/YangJavaParser.java b/tool/playground/YangJavaParser.java
new file mode 100644
index 000000000..009921892
--- /dev/null
+++ b/tool/playground/YangJavaParser.java
@@ -0,0 +1,5530 @@
+// $ANTLR ANTLRVersion> YangJavaParser.java generatedTimestamp>
+import org.antlr.v4.runtime.NoViableAltException;
+import org.antlr.v4.runtime.Parser;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.EarlyExitException;
+import org.antlr.v4.runtime.ParserSharedState;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.FailedPredicateException;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.runtime.*;
+
+public class YangJavaParser extends Parser {
+ public static final int
+ EOR=1, PACKAGE=44, LT=105, STAR=88, WHILE=62, CONST=22, CASE=18,
+ NEW=43, CHAR=20, DO=25, BREAK=16, LBRACKET=70, FINAL=30, RPAREN=67,
+ IMPORT=37, SUBSUB=85, STAREQ=96, CARET=92, RETURN=48, THIS=55, DOUBLE=26,
+ MONKEYS_AT=102, BARBAR=83, VOID=60, SUPER=52, GOTO=34, EQ=76, COMMENT=11,
+ AMPAMP=82, QUES=79, EQEQ=81, RBRACE=69, LINE_COMMENT=12, STATIC=50,
+ PRIVATE=45, SWITCH=53, NULL=65, STRICTFP=51, ELSE=27, DOUBLELITERAL=7,
+ NATIVE=42, ELLIPSIS=75, THROWS=57, INT=39, SLASHEQ=97, INTLITERAL=5,
+ ASSERT=14, TRY=59, LONGLITERAL=4, WS=10, CHARLITERAL=8, GT=104,
+ CATCH=19, FALSE=64, THROW=56, PROTECTED=46, CLASS=21, BAREQ=99,
+ AMP=90, PLUSPLUS=84, LBRACE=68, SUBEQ=95, FOR=33, SUB=87, FLOAT=32,
+ ABSTRACT=13, PLUSEQ=94, LPAREN=66, IF=35, BOOLEAN=15, SYNCHRONIZED=54,
+ SLASH=89, IMPLEMENTS=36, CONTINUE=23, COMMA=73, AMPEQ=98, IDENTIFIER=106,
+ TRANSIENT=58, TILDE=78, BANGEQ=103, PLUS=86, RBRACKET=71, DOT=74,
+ BYTE=17, PERCENT=93, VOLATILE=61, DEFAULT=24, SHORT=49, BANG=77,
+ INSTANCEOF=38, TRUE=63, SEMI=72, COLON=80, ENUM=28, PERCENTEQ=101,
+ FINALLY=31, STRINGLITERAL=9, CARETEQ=100, INTERFACE=40, LONG=41,
+ PUBLIC=47, EXTENDS=29, FLOATLITERAL=6, BAR=91;
+ public static final String[] tokenNames = {
+ "", "", "",
+ "EOR", "LONGLITERAL", "INTLITERAL", "FLOATLITERAL", "DOUBLELITERAL",
+ "CHARLITERAL", "STRINGLITERAL", "WS", "COMMENT", "LINE_COMMENT",
+ "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
+ "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'",
+ "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'",
+ "'finally'", "'float'", "'for'", "'goto'", "'if'", "'implements'",
+ "'import'", "'instanceof'", "'int'", "'interface'", "'long'", "'native'",
+ "'new'", "'package'", "'private'", "'protected'", "'public'", "'return'",
+ "'short'", "'static'", "'strictfp'", "'super'", "'switch'", "'synchronized'",
+ "'this'", "'throw'", "'throws'", "'transient'", "'try'", "'void'",
+ "'volatile'", "'while'", "'true'", "'false'", "'null'", "'('", "')'",
+ "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", "'...'", "'='",
+ "'!'", "'~'", "'?'", "':'", "'=='", "'&&'", "'||'", "'++'", "'--'",
+ "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='",
+ "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'@'", "'!='",
+ "'<'", "'>'", "IDENTIFIER"
+ };
+ public static final String[] ruleNames = {
+ "",
+ "compilationUnit", "packageDeclaration", "importDeclaration", "qualifiedImportName",
+ "typeDeclaration", "classOrInterfaceDeclaration", "modifiers", "variableModifiers",
+ "classDeclaration", "normalClassDeclaration", "typeParameters",
+ "typeParameter", "typeBound", "enumDeclaration", "enumBody", "enumConstants",
+ "enumConstant", "enumBodyDeclarations", "interfaceDeclaration",
+ "normalInterfaceDeclaration", "typeList", "classBody", "interfaceBody",
+ "classBodyDeclaration", "memberDecl", "methodDeclaration", "fieldDeclaration",
+ "variableDeclarator", "interfaceBodyDeclaration", "interfaceMethodDeclaration",
+ "interfaceFieldDeclaration", "type", "classOrInterfaceType", "primitiveType",
+ "typeArguments", "typeArgument", "qualifiedNameList", "formalParameters",
+ "formalParameterDecls", "normalParameterDecl", "ellipsisParameterDecl",
+ "explicitConstructorInvocation", "qualifiedName", "annotations",
+ "annotation", "elementValuePairs", "elementValuePair", "elementValue",
+ "elementValueArrayInitializer", "annotationTypeDeclaration", "annotationTypeBody",
+ "annotationTypeElementDeclaration", "annotationMethodDeclaration",
+ "block", "blockStatement", "localVariableDeclarationStatement",
+ "localVariableDeclaration", "statement", "switchBlockStatementGroups",
+ "switchBlockStatementGroup", "switchLabel", "trystatement", "catches",
+ "catchClause", "formalParameter", "forstatement", "forInit", "parExpression",
+ "expressionList", "expression", "assignmentOperator", "conditionalExpression",
+ "conditionalOrExpression", "conditionalAndExpression", "inclusiveOrExpression",
+ "exclusiveOrExpression", "andExpression", "equalityExpression",
+ "instanceOfExpression", "relationalExpression", "relationalOp",
+ "shiftExpression", "shiftOp", "additiveExpression", "multiplicativeExpression",
+ "unaryExpression", "unaryExpressionNotPlusMinus", "castExpression",
+ "primary", "superSuffix", "identifierSuffix", "selector", "creator",
+ "arrayCreator", "variableInitializer", "arrayInitializer", "createdName",
+ "innerCreator", "classCreatorRest", "nonWildcardTypeArguments",
+ "arguments", "literal"
+ };
+ public YangJavaParser(TokenStream input) {
+ this(input, new ParserSharedState());
+ }
+ public YangJavaParser(TokenStream input, ParserSharedState state) {
+ super(input, state);
+ _interp = new ParserInterpreter(this,_ATN);
+ }
+
+ public final ParserRuleContext compilationUnit(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 0);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[1]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,1,_ctx) ) {
+ case 1:
+ _la = state.input.LA(1);
+ if ( _la==MONKEYS_AT ) {
+ _ctx.s = 204;
+ annotations(_ctx);
+ }
+
+ _ctx.s = 208;
+ packageDeclaration(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ while ( _la==IMPORT ) {
+ _ctx.s = 212;
+ importDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_2);
+ }
+ _la = state.input.LA(1);
+ while ( _la==ABSTRACT || _la==CLASS || _la==ENUM || _la==FINAL || _la==INTERFACE || _la==NATIVE || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==STATIC || _la==STRICTFP || _la==SYNCHRONIZED || _la==TRANSIENT || _la==VOLATILE || _la==SEMI || _la==MONKEYS_AT ) {
+ _ctx.s = 218;
+ typeDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_compilationUnit_iter_3);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[1]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext packageDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 2);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[2]);
+ try {
+ _ctx.s = 224;
+ match(PACKAGE);
+ _ctx.s = 226;
+ qualifiedName(_ctx);
+ _ctx.s = 228;
+ match(SEMI);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[2]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext importDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 4);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[3]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,10,_ctx) ) {
+ case 1:
+ _ctx.s = 230;
+ match(IMPORT);
+ _la = state.input.LA(1);
+ if ( _la==STATIC ) {
+ _ctx.s = 232;
+ match(STATIC);
+ }
+
+ _ctx.s = 236;
+ match(IDENTIFIER);
+ _ctx.s = 238;
+ match(DOT);
+ _ctx.s = 240;
+ match(STAR);
+ _ctx.s = 242;
+ match(SEMI);
+ break;
+ case 2:
+ _ctx.s = 244;
+ match(IMPORT);
+ _la = state.input.LA(1);
+ if ( _la==STATIC ) {
+ _ctx.s = 246;
+ match(STATIC);
+ }
+
+ _ctx.s = 250;
+ match(IDENTIFIER);
+ int _alt109 = _interp.adaptivePredict(state.input,8,_ctx);
+ do {
+ switch ( _alt109 ) {
+ case 1:
+ _ctx.s = 252;
+ match(DOT);
+ _ctx.s = 254;
+ match(IDENTIFIER);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _alt109 = _interp.adaptivePredict(state.input,8,_ctx);
+ } while ( _alt109!=2 );
+ _la = state.input.LA(1);
+ if ( _la==DOT ) {
+ _ctx.s = 260;
+ match(DOT);
+ _ctx.s = 262;
+ match(STAR);
+ }
+
+ _ctx.s = 266;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[3]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext qualifiedImportName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 6);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[4]);
+ int _la;
+ try {
+ _ctx.s = 270;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ while ( _la==DOT ) {
+ _ctx.s = 272;
+ match(DOT);
+ _ctx.s = 274;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_qualifiedImportName_iter_11);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[4]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 8);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[5]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case ABSTRACT:
+ case CLASS:
+ case ENUM:
+ case FINAL:
+ case INTERFACE:
+ case NATIVE:
+ case PRIVATE:
+ case PROTECTED:
+ case PUBLIC:
+ case STATIC:
+ case STRICTFP:
+ case SYNCHRONIZED:
+ case TRANSIENT:
+ case VOLATILE:
+ case MONKEYS_AT:
+ _ctx.s = 280;
+ classOrInterfaceDeclaration(_ctx);
+ break;
+ case SEMI:
+ _ctx.s = 282;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[5]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classOrInterfaceDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 10);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[6]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,13,_ctx) ) {
+ case 1:
+ _ctx.s = 286;
+ classDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 288;
+ interfaceDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[6]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext modifiers(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 12);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[7]);
+ try {
+ int _alt216 = _interp.adaptivePredict(state.input,14,_ctx);
+ while ( _alt216!=13 ) {
+ switch ( _alt216 ) {
+ case 1:
+ _ctx.s = 292;
+ annotation(_ctx);
+ break;
+ case 2:
+ _ctx.s = 294;
+ match(PUBLIC);
+ break;
+ case 3:
+ _ctx.s = 296;
+ match(PROTECTED);
+ break;
+ case 4:
+ _ctx.s = 298;
+ match(PRIVATE);
+ break;
+ case 5:
+ _ctx.s = 300;
+ match(STATIC);
+ break;
+ case 6:
+ _ctx.s = 302;
+ match(ABSTRACT);
+ break;
+ case 7:
+ _ctx.s = 304;
+ match(FINAL);
+ break;
+ case 8:
+ _ctx.s = 306;
+ match(NATIVE);
+ break;
+ case 9:
+ _ctx.s = 308;
+ match(SYNCHRONIZED);
+ break;
+ case 10:
+ _ctx.s = 310;
+ match(TRANSIENT);
+ break;
+ case 11:
+ _ctx.s = 312;
+ match(VOLATILE);
+ break;
+ case 12:
+ _ctx.s = 314;
+ match(STRICTFP);
+ break;
+ }
+ _alt216 = _interp.adaptivePredict(state.input,14,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[7]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableModifiers(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 14);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[8]);
+ try {
+ loop233:
+ while (true) {
+ switch ( state.input.LA(1) ) {
+ case FINAL:
+ _ctx.s = 320;
+ match(FINAL);
+ break;
+ case MONKEYS_AT:
+ _ctx.s = 322;
+ annotation(_ctx);
+ break;
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case IDENTIFIER:
+ break loop233;
+ }
+ //
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[8]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 16);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[9]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,16,_ctx) ) {
+ case 1:
+ _ctx.s = 328;
+ normalClassDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 330;
+ enumDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[9]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext normalClassDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 18);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[10]);
+ int _la;
+ try {
+ _ctx.s = 334;
+ modifiers(_ctx);
+ _ctx.s = 336;
+ match(CLASS);
+ _ctx.s = 338;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 340;
+ typeParameters(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==EXTENDS ) {
+ _ctx.s = 344;
+ match(EXTENDS);
+ _ctx.s = 346;
+ type(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==IMPLEMENTS ) {
+ _ctx.s = 350;
+ match(IMPLEMENTS);
+ _ctx.s = 352;
+ typeList(_ctx);
+ }
+
+ _ctx.s = 356;
+ classBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[10]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeParameters(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 20);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[11]);
+ int _la;
+ try {
+ _ctx.s = 358;
+ match(GT);
+ _ctx.s = 360;
+ typeParameter(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 362;
+ match(COMMA);
+ _ctx.s = 364;
+ typeParameter(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeParameters_iter_20);
+ }
+ _ctx.s = 370;
+ match(LT);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[11]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeParameter(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 22);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[12]);
+ int _la;
+ try {
+ _ctx.s = 372;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==EXTENDS ) {
+ _ctx.s = 374;
+ match(EXTENDS);
+ _ctx.s = 376;
+ typeBound(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[12]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeBound(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 24);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[13]);
+ int _la;
+ try {
+ _ctx.s = 380;
+ type(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==AMP ) {
+ _ctx.s = 382;
+ match(AMP);
+ _ctx.s = 384;
+ type(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeBound_iter_22);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[13]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 26);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[14]);
+ int _la;
+ try {
+ _ctx.s = 390;
+ modifiers(_ctx);
+ _ctx.s = 392;
+ match(ENUM);
+ _ctx.s = 394;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==IMPLEMENTS ) {
+ _ctx.s = 396;
+ match(IMPLEMENTS);
+ _ctx.s = 398;
+ typeList(_ctx);
+ }
+
+ _ctx.s = 402;
+ enumBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[14]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 28);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[15]);
+ int _la;
+ try {
+ _ctx.s = 404;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ if ( _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 406;
+ enumConstants(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==COMMA ) {
+ _ctx.s = 410;
+ match(COMMA);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==SEMI ) {
+ _ctx.s = 414;
+ enumBodyDeclarations(_ctx);
+ }
+
+ _ctx.s = 418;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[15]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumConstants(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 30);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[16]);
+ try {
+ _ctx.s = 420;
+ enumConstant(_ctx);
+ int _alt399 = _interp.adaptivePredict(state.input,27,_ctx);
+ while ( _alt399!=2 ) {
+ switch ( _alt399 ) {
+ case 1:
+ _ctx.s = 422;
+ match(COMMA);
+ _ctx.s = 424;
+ enumConstant(_ctx);
+ break;
+ }
+ _alt399 = _interp.adaptivePredict(state.input,27,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[16]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumConstant(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 32);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[17]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ if ( _la==MONKEYS_AT ) {
+ _ctx.s = 430;
+ annotations(_ctx);
+ }
+
+ _ctx.s = 434;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==LPAREN ) {
+ _ctx.s = 436;
+ arguments(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==LBRACE ) {
+ _ctx.s = 440;
+ classBody(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[17]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext enumBodyDeclarations(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 34);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[18]);
+ int _la;
+ try {
+ _ctx.s = 444;
+ match(SEMI);
+ _la = state.input.LA(1);
+ while ( _la==ABSTRACT || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==CLASS || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SYNCHRONIZED || _la==TRANSIENT || _la==VOID || _la==VOLATILE || _la==LBRACE || _la==SEMI || _la==MONKEYS_AT || _la==GT || _la==IDENTIFIER ) {
+ _ctx.s = 446;
+ classBodyDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_enumBodyDeclarations_iter_31);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[18]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 36);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[19]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,32,_ctx) ) {
+ case 1:
+ _ctx.s = 452;
+ normalInterfaceDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 454;
+ annotationTypeDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[19]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext normalInterfaceDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 38);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[20]);
+ int _la;
+ try {
+ _ctx.s = 458;
+ modifiers(_ctx);
+ _ctx.s = 460;
+ match(INTERFACE);
+ _ctx.s = 462;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 464;
+ typeParameters(_ctx);
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==EXTENDS ) {
+ _ctx.s = 468;
+ match(EXTENDS);
+ _ctx.s = 470;
+ typeList(_ctx);
+ }
+
+ _ctx.s = 474;
+ interfaceBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[20]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeList(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 40);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[21]);
+ int _la;
+ try {
+ _ctx.s = 476;
+ type(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 478;
+ match(COMMA);
+ _ctx.s = 480;
+ type(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeList_iter_35);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[21]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 42);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[22]);
+ int _la;
+ try {
+ _ctx.s = 486;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ while ( _la==ABSTRACT || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==CLASS || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SYNCHRONIZED || _la==TRANSIENT || _la==VOID || _la==VOLATILE || _la==LBRACE || _la==SEMI || _la==MONKEYS_AT || _la==GT || _la==IDENTIFIER ) {
+ _ctx.s = 488;
+ classBodyDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_classBody_iter_36);
+ }
+ _ctx.s = 494;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[22]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 44);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[23]);
+ int _la;
+ try {
+ _ctx.s = 496;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ while ( _la==ABSTRACT || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==CLASS || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SYNCHRONIZED || _la==TRANSIENT || _la==VOID || _la==VOLATILE || _la==SEMI || _la==MONKEYS_AT || _la==GT || _la==IDENTIFIER ) {
+ _ctx.s = 498;
+ interfaceBodyDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_interfaceBody_iter_37);
+ }
+ _ctx.s = 504;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[23]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classBodyDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 46);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[24]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,39,_ctx) ) {
+ case 1:
+ _ctx.s = 506;
+ match(SEMI);
+ break;
+ case 2:
+ _la = state.input.LA(1);
+ if ( _la==STATIC ) {
+ _ctx.s = 508;
+ match(STATIC);
+ }
+
+ _ctx.s = 512;
+ block(_ctx);
+ break;
+ case 3:
+ _ctx.s = 514;
+ memberDecl(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[24]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext memberDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 48);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[25]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,40,_ctx) ) {
+ case 1:
+ _ctx.s = 518;
+ fieldDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 520;
+ methodDeclaration(_ctx);
+ break;
+ case 3:
+ _ctx.s = 522;
+ classDeclaration(_ctx);
+ break;
+ case 4:
+ _ctx.s = 524;
+ interfaceDeclaration(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[25]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext methodDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 50);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[26]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,50,_ctx) ) {
+ case 1:
+ _ctx.s = 528;
+ modifiers(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 530;
+ typeParameters(_ctx);
+ }
+
+ _ctx.s = 534;
+ match(IDENTIFIER);
+ _ctx.s = 536;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==THROWS ) {
+ _ctx.s = 538;
+ match(THROWS);
+ _ctx.s = 540;
+ qualifiedNameList(_ctx);
+ }
+
+ _ctx.s = 544;
+ match(LBRACE);
+ switch ( _interp.adaptivePredict(state.input,43,_ctx) ) {
+ case 1:
+ _ctx.s = 546;
+ explicitConstructorInvocation(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ while ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==ABSTRACT || _la==ASSERT || _la==BOOLEAN || _la==BREAK || _la==BYTE || _la==CHAR || _la==CLASS || _la==CONTINUE || _la==DO || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==FOR || _la==IF || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==NEW || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==RETURN || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SUPER || _la==SWITCH || _la==SYNCHRONIZED || _la==THIS || _la==THROW || _la==TRANSIENT || _la==TRY || _la==VOID || _la==VOLATILE || _la==WHILE || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==LBRACE || _la==SEMI || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 550;
+ blockStatement(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_methodDeclaration_iter_44);
+ }
+ _ctx.s = 556;
+ match(RBRACE);
+ break;
+ case 2:
+ _ctx.s = 558;
+ modifiers(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 560;
+ typeParameters(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case IDENTIFIER:
+ _ctx.s = 564;
+ type(_ctx);
+ break;
+ case VOID:
+ _ctx.s = 566;
+ match(VOID);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 570;
+ match(IDENTIFIER);
+ _ctx.s = 572;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 574;
+ match(LBRACKET);
+ _ctx.s = 576;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_methodDeclaration_iter_47);
+ }
+ _la = state.input.LA(1);
+ if ( _la==THROWS ) {
+ _ctx.s = 582;
+ match(THROWS);
+ _ctx.s = 584;
+ qualifiedNameList(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case LBRACE:
+ _ctx.s = 588;
+ block(_ctx);
+ break;
+ case SEMI:
+ _ctx.s = 590;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[26]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext fieldDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 52);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[27]);
+ int _la;
+ try {
+ _ctx.s = 596;
+ modifiers(_ctx);
+ _ctx.s = 598;
+ type(_ctx);
+ _ctx.s = 600;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 602;
+ match(COMMA);
+ _ctx.s = 604;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_fieldDeclaration_iter_51);
+ }
+ _ctx.s = 610;
+ match(SEMI);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[27]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableDeclarator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 54);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[28]);
+ int _la;
+ try {
+ _ctx.s = 612;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 614;
+ match(LBRACKET);
+ _ctx.s = 616;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_variableDeclarator_iter_52);
+ }
+ _la = state.input.LA(1);
+ if ( _la==EQ ) {
+ _ctx.s = 622;
+ match(EQ);
+ _ctx.s = 624;
+ variableInitializer(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[28]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceBodyDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 56);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[29]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,54,_ctx) ) {
+ case 1:
+ _ctx.s = 628;
+ interfaceFieldDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 630;
+ interfaceMethodDeclaration(_ctx);
+ break;
+ case 3:
+ _ctx.s = 632;
+ interfaceDeclaration(_ctx);
+ break;
+ case 4:
+ _ctx.s = 634;
+ classDeclaration(_ctx);
+ break;
+ case 5:
+ _ctx.s = 636;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[29]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceMethodDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 58);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[30]);
+ int _la;
+ try {
+ _ctx.s = 640;
+ modifiers(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 642;
+ typeParameters(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case IDENTIFIER:
+ _ctx.s = 646;
+ type(_ctx);
+ break;
+ case VOID:
+ _ctx.s = 648;
+ match(VOID);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 652;
+ match(IDENTIFIER);
+ _ctx.s = 654;
+ formalParameters(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 656;
+ match(LBRACKET);
+ _ctx.s = 658;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_interfaceMethodDeclaration_iter_57);
+ }
+ _la = state.input.LA(1);
+ if ( _la==THROWS ) {
+ _ctx.s = 664;
+ match(THROWS);
+ _ctx.s = 666;
+ qualifiedNameList(_ctx);
+ }
+
+ _ctx.s = 670;
+ match(SEMI);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[30]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext interfaceFieldDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 60);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[31]);
+ int _la;
+ try {
+ _ctx.s = 672;
+ modifiers(_ctx);
+ _ctx.s = 674;
+ type(_ctx);
+ _ctx.s = 676;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 678;
+ match(COMMA);
+ _ctx.s = 680;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_interfaceFieldDeclaration_iter_59);
+ }
+ _ctx.s = 686;
+ match(SEMI);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[31]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext type(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 62);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[32]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case IDENTIFIER:
+ _ctx.s = 688;
+ classOrInterfaceType(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 690;
+ match(LBRACKET);
+ _ctx.s = 692;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_type_iter_60);
+ }
+ break;
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ _ctx.s = 698;
+ primitiveType(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 700;
+ match(LBRACKET);
+ _ctx.s = 702;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_type_iter_61);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[32]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classOrInterfaceType(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 64);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[33]);
+ int _la;
+ try {
+ _ctx.s = 710;
+ match(IDENTIFIER);
+ switch ( _interp.adaptivePredict(state.input,63,_ctx) ) {
+ case 1:
+ _ctx.s = 712;
+ typeArguments(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ while ( _la==DOT ) {
+ _ctx.s = 716;
+ match(DOT);
+ _ctx.s = 718;
+ match(IDENTIFIER);
+ switch ( _interp.adaptivePredict(state.input,64,_ctx) ) {
+ case 1:
+ _ctx.s = 720;
+ typeArguments(_ctx);
+ break;
+ }
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_classOrInterfaceType_iter_65);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[33]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext primitiveType(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 66);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[34]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case BOOLEAN:
+ _ctx.s = 728;
+ match(BOOLEAN);
+ break;
+ case CHAR:
+ _ctx.s = 730;
+ match(CHAR);
+ break;
+ case BYTE:
+ _ctx.s = 732;
+ match(BYTE);
+ break;
+ case SHORT:
+ _ctx.s = 734;
+ match(SHORT);
+ break;
+ case INT:
+ _ctx.s = 736;
+ match(INT);
+ break;
+ case LONG:
+ _ctx.s = 738;
+ match(LONG);
+ break;
+ case FLOAT:
+ _ctx.s = 740;
+ match(FLOAT);
+ break;
+ case DOUBLE:
+ _ctx.s = 742;
+ match(DOUBLE);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[34]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeArguments(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 68);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[35]);
+ int _la;
+ try {
+ _ctx.s = 746;
+ match(GT);
+ _ctx.s = 748;
+ typeArgument(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 750;
+ match(COMMA);
+ _ctx.s = 752;
+ typeArgument(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_typeArguments_iter_67);
+ }
+ _ctx.s = 758;
+ match(LT);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[35]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext typeArgument(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 70);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[36]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case IDENTIFIER:
+ _ctx.s = 760;
+ type(_ctx);
+ break;
+ case QUES:
+ _ctx.s = 762;
+ match(QUES);
+ _la = state.input.LA(1);
+ if ( _la==EXTENDS || _la==SUPER ) {
+ switch ( state.input.LA(1) ) {
+ case EXTENDS:
+ _ctx.s = 764;
+ match(EXTENDS);
+ break;
+ case SUPER:
+ _ctx.s = 766;
+ match(SUPER);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 770;
+ type(_ctx);
+ }
+
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[36]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext qualifiedNameList(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 72);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[37]);
+ int _la;
+ try {
+ _ctx.s = 776;
+ qualifiedName(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 778;
+ match(COMMA);
+ _ctx.s = 780;
+ qualifiedName(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_qualifiedNameList_iter_71);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[37]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameters(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 74);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[38]);
+ int _la;
+ try {
+ _ctx.s = 786;
+ match(LPAREN);
+ _la = state.input.LA(1);
+ if ( _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FINAL || _la==FLOAT || _la==INT || _la==LONG || _la==SHORT || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 788;
+ formalParameterDecls(_ctx);
+ }
+
+ _ctx.s = 792;
+ match(RPAREN);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[38]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameterDecls(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 76);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[39]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,77,_ctx) ) {
+ case 1:
+ _ctx.s = 794;
+ ellipsisParameterDecl(_ctx);
+ break;
+ case 2:
+ _ctx.s = 796;
+ normalParameterDecl(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 798;
+ match(COMMA);
+ _ctx.s = 800;
+ normalParameterDecl(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_formalParameterDecls_iter_73);
+ }
+ break;
+ case 3:
+ int _alt1004 = _interp.adaptivePredict(state.input,76,_ctx);
+ do {
+ switch ( _alt1004 ) {
+ case 1:
+ _ctx.s = 806;
+ normalParameterDecl(_ctx);
+ _ctx.s = 808;
+ match(COMMA);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _alt1004 = _interp.adaptivePredict(state.input,76,_ctx);
+ } while ( _alt1004!=2 );
+ _ctx.s = 814;
+ ellipsisParameterDecl(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[39]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext normalParameterDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 78);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[40]);
+ int _la;
+ try {
+ _ctx.s = 818;
+ variableModifiers(_ctx);
+ _ctx.s = 820;
+ type(_ctx);
+ _ctx.s = 822;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 824;
+ match(LBRACKET);
+ _ctx.s = 826;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_normalParameterDecl_iter_78);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[40]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext ellipsisParameterDecl(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 80);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[41]);
+ try {
+ _ctx.s = 832;
+ variableModifiers(_ctx);
+ _ctx.s = 834;
+ type(_ctx);
+ _ctx.s = 836;
+ match(ELLIPSIS);
+ _ctx.s = 838;
+ match(IDENTIFIER);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[41]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext explicitConstructorInvocation(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 82);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[42]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,82,_ctx) ) {
+ case 1:
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 840;
+ nonWildcardTypeArguments(_ctx);
+ }
+
+ switch ( state.input.LA(1) ) {
+ case THIS:
+ _ctx.s = 844;
+ match(THIS);
+ break;
+ case SUPER:
+ _ctx.s = 846;
+ match(SUPER);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 850;
+ arguments(_ctx);
+ _ctx.s = 852;
+ match(SEMI);
+ break;
+ case 2:
+ _ctx.s = 854;
+ primary(_ctx);
+ _ctx.s = 856;
+ match(DOT);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 858;
+ nonWildcardTypeArguments(_ctx);
+ }
+
+ _ctx.s = 862;
+ match(SUPER);
+ _ctx.s = 864;
+ arguments(_ctx);
+ _ctx.s = 866;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[42]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext qualifiedName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 84);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[43]);
+ int _la;
+ try {
+ _ctx.s = 870;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ while ( _la==DOT ) {
+ _ctx.s = 872;
+ match(DOT);
+ _ctx.s = 874;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_qualifiedName_iter_83);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[43]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotations(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 86);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[44]);
+ int _la;
+ try {
+ //sync(EXPECTING_in_annotations_enter_86);
+ _la = state.input.LA(1);
+ do {
+ _ctx.s = 880;
+ annotation(_ctx);
+ _la = state.input.LA(1);
+ // sync(EXPECTING_in_annotations_iter_86);
+ } while ( _la==MONKEYS_AT );
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[44]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotation(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 88);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[45]);
+ int _la;
+ try {
+ _ctx.s = 886;
+ match(MONKEYS_AT);
+ _ctx.s = 888;
+ qualifiedName(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==LPAREN ) {
+ _ctx.s = 890;
+ match(LPAREN);
+ switch ( _interp.adaptivePredict(state.input,87,_ctx) ) {
+ case 1:
+ _ctx.s = 892;
+ elementValuePairs(_ctx);
+ break;
+ case 2:
+ _ctx.s = 894;
+ elementValue(_ctx);
+ break;
+ }
+ _ctx.s = 898;
+ match(RPAREN);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[45]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValuePairs(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 90);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[46]);
+ int _la;
+ try {
+ _ctx.s = 902;
+ elementValuePair(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 904;
+ match(COMMA);
+ _ctx.s = 906;
+ elementValuePair(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_elementValuePairs_iter_89);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[46]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValuePair(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 92);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[47]);
+ try {
+ _ctx.s = 912;
+ match(IDENTIFIER);
+ _ctx.s = 914;
+ match(EQ);
+ _ctx.s = 916;
+ elementValue(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[47]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValue(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 94);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[48]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case LONGLITERAL:
+ case INTLITERAL:
+ case FLOATLITERAL:
+ case DOUBLELITERAL:
+ case CHARLITERAL:
+ case STRINGLITERAL:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case TRUE:
+ case FALSE:
+ case NULL:
+ case LPAREN:
+ case BANG:
+ case TILDE:
+ case PLUSPLUS:
+ case SUBSUB:
+ case PLUS:
+ case SUB:
+ case IDENTIFIER:
+ _ctx.s = 918;
+ conditionalExpression(_ctx);
+ break;
+ case MONKEYS_AT:
+ _ctx.s = 920;
+ annotation(_ctx);
+ break;
+ case LBRACE:
+ _ctx.s = 922;
+ elementValueArrayInitializer(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[48]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext elementValueArrayInitializer(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 96);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[49]);
+ int _la;
+ try {
+ _ctx.s = 926;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==LBRACE || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 928;
+ elementValue(_ctx);
+ int _alt1207 = _interp.adaptivePredict(state.input,91,_ctx);
+ while ( _alt1207!=2 ) {
+ switch ( _alt1207 ) {
+ case 1:
+ _ctx.s = 930;
+ match(COMMA);
+ _ctx.s = 932;
+ elementValue(_ctx);
+ break;
+ }
+ _alt1207 = _interp.adaptivePredict(state.input,91,_ctx);
+ }
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==COMMA ) {
+ _ctx.s = 940;
+ match(COMMA);
+ }
+
+ _ctx.s = 944;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[49]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 98);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[50]);
+ try {
+ _ctx.s = 946;
+ modifiers(_ctx);
+ _ctx.s = 948;
+ match(MONKEYS_AT);
+ _ctx.s = 950;
+ match(INTERFACE);
+ _ctx.s = 952;
+ match(IDENTIFIER);
+ _ctx.s = 954;
+ annotationTypeBody(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[50]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeBody(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 100);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[51]);
+ int _la;
+ try {
+ _ctx.s = 956;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ while ( _la==ABSTRACT || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==CLASS || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SYNCHRONIZED || _la==TRANSIENT || _la==VOLATILE || _la==SEMI || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 958;
+ annotationTypeElementDeclaration(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_annotationTypeBody_iter_94);
+ }
+ _ctx.s = 964;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[51]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationTypeElementDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 102);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[52]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,95,_ctx) ) {
+ case 1:
+ _ctx.s = 966;
+ annotationMethodDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 968;
+ interfaceFieldDeclaration(_ctx);
+ break;
+ case 3:
+ _ctx.s = 970;
+ normalClassDeclaration(_ctx);
+ break;
+ case 4:
+ _ctx.s = 972;
+ normalInterfaceDeclaration(_ctx);
+ break;
+ case 5:
+ _ctx.s = 974;
+ enumDeclaration(_ctx);
+ break;
+ case 6:
+ _ctx.s = 976;
+ annotationTypeDeclaration(_ctx);
+ break;
+ case 7:
+ _ctx.s = 978;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[52]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext annotationMethodDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 104);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[53]);
+ int _la;
+ try {
+ _ctx.s = 982;
+ modifiers(_ctx);
+ _ctx.s = 984;
+ type(_ctx);
+ _ctx.s = 986;
+ match(IDENTIFIER);
+ _ctx.s = 988;
+ match(LPAREN);
+ _ctx.s = 990;
+ match(RPAREN);
+ _la = state.input.LA(1);
+ if ( _la==DEFAULT ) {
+ _ctx.s = 992;
+ match(DEFAULT);
+ _ctx.s = 994;
+ elementValue(_ctx);
+ }
+
+ _ctx.s = 998;
+ match(SEMI);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[53]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext block(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 106);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[54]);
+ int _la;
+ try {
+ _ctx.s = 1000;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ while ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==ABSTRACT || _la==ASSERT || _la==BOOLEAN || _la==BREAK || _la==BYTE || _la==CHAR || _la==CLASS || _la==CONTINUE || _la==DO || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==FOR || _la==IF || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==NEW || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==RETURN || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SUPER || _la==SWITCH || _la==SYNCHRONIZED || _la==THIS || _la==THROW || _la==TRANSIENT || _la==TRY || _la==VOID || _la==VOLATILE || _la==WHILE || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==LBRACE || _la==SEMI || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 1002;
+ blockStatement(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_block_iter_97);
+ }
+ _ctx.s = 1008;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[54]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext blockStatement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 108);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[55]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,98,_ctx) ) {
+ case 1:
+ _ctx.s = 1010;
+ localVariableDeclarationStatement(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1012;
+ classOrInterfaceDeclaration(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1014;
+ statement(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[55]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext localVariableDeclarationStatement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 110);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[56]);
+ try {
+ _ctx.s = 1018;
+ localVariableDeclaration(_ctx);
+ _ctx.s = 1020;
+ match(SEMI);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[56]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext localVariableDeclaration(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 112);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[57]);
+ int _la;
+ try {
+ _ctx.s = 1022;
+ variableModifiers(_ctx);
+ _ctx.s = 1024;
+ type(_ctx);
+ _ctx.s = 1026;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 1028;
+ match(COMMA);
+ _ctx.s = 1030;
+ variableDeclarator(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_localVariableDeclaration_iter_99);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[57]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext statement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 114);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[58]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,106,_ctx) ) {
+ case 1:
+ _ctx.s = 1036;
+ block(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1038;
+ match(ASSERT);
+ _ctx.s = 1040;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==COLON ) {
+ _ctx.s = 1042;
+ match(COLON);
+ _ctx.s = 1044;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1048;
+ match(SEMI);
+ break;
+ case 3:
+ _ctx.s = 1050;
+ match(ASSERT);
+ _ctx.s = 1052;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==COLON ) {
+ _ctx.s = 1054;
+ match(COLON);
+ _ctx.s = 1056;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1060;
+ match(SEMI);
+ break;
+ case 4:
+ _ctx.s = 1062;
+ match(IF);
+ _ctx.s = 1064;
+ parExpression(_ctx);
+ _ctx.s = 1066;
+ statement(_ctx);
+ switch ( _interp.adaptivePredict(state.input,102,_ctx) ) {
+ case 1:
+ _ctx.s = 1068;
+ match(ELSE);
+ _ctx.s = 1070;
+ statement(_ctx);
+ break;
+ }
+ break;
+ case 5:
+ _ctx.s = 1074;
+ forstatement(_ctx);
+ break;
+ case 6:
+ _ctx.s = 1076;
+ match(WHILE);
+ _ctx.s = 1078;
+ parExpression(_ctx);
+ _ctx.s = 1080;
+ statement(_ctx);
+ break;
+ case 7:
+ _ctx.s = 1082;
+ match(DO);
+ _ctx.s = 1084;
+ statement(_ctx);
+ _ctx.s = 1086;
+ match(WHILE);
+ _ctx.s = 1088;
+ parExpression(_ctx);
+ _ctx.s = 1090;
+ match(SEMI);
+ break;
+ case 8:
+ _ctx.s = 1092;
+ trystatement(_ctx);
+ break;
+ case 9:
+ _ctx.s = 1094;
+ match(SWITCH);
+ _ctx.s = 1096;
+ parExpression(_ctx);
+ _ctx.s = 1098;
+ match(LBRACE);
+ _ctx.s = 1100;
+ switchBlockStatementGroups(_ctx);
+ _ctx.s = 1102;
+ match(RBRACE);
+ break;
+ case 10:
+ _ctx.s = 1104;
+ match(SYNCHRONIZED);
+ _ctx.s = 1106;
+ parExpression(_ctx);
+ _ctx.s = 1108;
+ block(_ctx);
+ break;
+ case 11:
+ _ctx.s = 1110;
+ match(RETURN);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==IDENTIFIER ) {
+ _ctx.s = 1112;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1116;
+ match(SEMI);
+ break;
+ case 12:
+ _ctx.s = 1118;
+ match(THROW);
+ _ctx.s = 1120;
+ expression(_ctx);
+ _ctx.s = 1122;
+ match(SEMI);
+ break;
+ case 13:
+ _ctx.s = 1124;
+ match(BREAK);
+ _la = state.input.LA(1);
+ if ( _la==IDENTIFIER ) {
+ _ctx.s = 1126;
+ match(IDENTIFIER);
+ }
+
+ _ctx.s = 1130;
+ match(SEMI);
+ break;
+ case 14:
+ _ctx.s = 1132;
+ match(CONTINUE);
+ _la = state.input.LA(1);
+ if ( _la==IDENTIFIER ) {
+ _ctx.s = 1134;
+ match(IDENTIFIER);
+ }
+
+ _ctx.s = 1138;
+ match(SEMI);
+ break;
+ case 15:
+ _ctx.s = 1140;
+ expression(_ctx);
+ _ctx.s = 1142;
+ match(SEMI);
+ break;
+ case 16:
+ _ctx.s = 1144;
+ match(IDENTIFIER);
+ _ctx.s = 1146;
+ match(COLON);
+ _ctx.s = 1148;
+ statement(_ctx);
+ break;
+ case 17:
+ _ctx.s = 1150;
+ match(SEMI);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[58]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext switchBlockStatementGroups(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 116);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[59]);
+ int _la;
+ try {
+ _la = state.input.LA(1);
+ while ( _la==CASE || _la==DEFAULT ) {
+ _ctx.s = 1154;
+ switchBlockStatementGroup(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_switchBlockStatementGroups_iter_107);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[59]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext switchBlockStatementGroup(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 118);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[60]);
+ int _la;
+ try {
+ _ctx.s = 1160;
+ switchLabel(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==ABSTRACT || _la==ASSERT || _la==BOOLEAN || _la==BREAK || _la==BYTE || _la==CHAR || _la==CLASS || _la==CONTINUE || _la==DO || _la==DOUBLE || _la==ENUM || _la==FINAL || _la==FLOAT || _la==FOR || _la==IF || _la==INT || _la==INTERFACE || _la==LONG || _la==NATIVE || _la==NEW || _la==PRIVATE || _la==PROTECTED || _la==PUBLIC || _la==RETURN || _la==SHORT || _la==STATIC || _la==STRICTFP || _la==SUPER || _la==SWITCH || _la==SYNCHRONIZED || _la==THIS || _la==THROW || _la==TRANSIENT || _la==TRY || _la==VOID || _la==VOLATILE || _la==WHILE || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==LBRACE || _la==SEMI || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 1162;
+ blockStatement(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_switchBlockStatementGroup_iter_108);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[60]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext switchLabel(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 120);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[61]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case CASE:
+ _ctx.s = 1168;
+ match(CASE);
+ _ctx.s = 1170;
+ expression(_ctx);
+ _ctx.s = 1172;
+ match(COLON);
+ break;
+ case DEFAULT:
+ _ctx.s = 1174;
+ match(DEFAULT);
+ _ctx.s = 1176;
+ match(COLON);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[61]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext trystatement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 122);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[62]);
+ try {
+ _ctx.s = 1180;
+ match(TRY);
+ _ctx.s = 1182;
+ block(_ctx);
+ switch ( _interp.adaptivePredict(state.input,110,_ctx) ) {
+ case 1:
+ _ctx.s = 1184;
+ catches(_ctx);
+ _ctx.s = 1186;
+ match(FINALLY);
+ _ctx.s = 1188;
+ block(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1190;
+ catches(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1192;
+ match(FINALLY);
+ _ctx.s = 1194;
+ block(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[62]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext catches(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 124);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[63]);
+ int _la;
+ try {
+ _ctx.s = 1198;
+ catchClause(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==CATCH ) {
+ _ctx.s = 1200;
+ catchClause(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_catches_iter_111);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[63]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext catchClause(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 126);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[64]);
+ try {
+ _ctx.s = 1206;
+ match(CATCH);
+ _ctx.s = 1208;
+ match(LPAREN);
+ _ctx.s = 1210;
+ formalParameter(_ctx);
+ _ctx.s = 1212;
+ match(RPAREN);
+ _ctx.s = 1214;
+ block(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[64]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext formalParameter(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 128);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[65]);
+ int _la;
+ try {
+ _ctx.s = 1216;
+ variableModifiers(_ctx);
+ _ctx.s = 1218;
+ type(_ctx);
+ _ctx.s = 1220;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 1222;
+ match(LBRACKET);
+ _ctx.s = 1224;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_formalParameter_iter_112);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[65]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext forstatement(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 130);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[66]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,116,_ctx) ) {
+ case 1:
+ _ctx.s = 1230;
+ match(FOR);
+ _ctx.s = 1232;
+ match(LPAREN);
+ _ctx.s = 1234;
+ variableModifiers(_ctx);
+ _ctx.s = 1236;
+ type(_ctx);
+ _ctx.s = 1238;
+ match(IDENTIFIER);
+ _ctx.s = 1240;
+ match(COLON);
+ _ctx.s = 1242;
+ expression(_ctx);
+ _ctx.s = 1244;
+ match(RPAREN);
+ _ctx.s = 1246;
+ statement(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1248;
+ match(FOR);
+ _ctx.s = 1250;
+ match(LPAREN);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FINAL || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==MONKEYS_AT || _la==IDENTIFIER ) {
+ _ctx.s = 1252;
+ forInit(_ctx);
+ }
+
+ _ctx.s = 1256;
+ match(SEMI);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==IDENTIFIER ) {
+ _ctx.s = 1258;
+ expression(_ctx);
+ }
+
+ _ctx.s = 1262;
+ match(SEMI);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==IDENTIFIER ) {
+ _ctx.s = 1264;
+ expressionList(_ctx);
+ }
+
+ _ctx.s = 1268;
+ match(RPAREN);
+ _ctx.s = 1270;
+ statement(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[66]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext forInit(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 132);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[67]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,117,_ctx) ) {
+ case 1:
+ _ctx.s = 1274;
+ localVariableDeclaration(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1276;
+ expressionList(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[67]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext parExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 134);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[68]);
+ try {
+ _ctx.s = 1280;
+ match(LPAREN);
+ _ctx.s = 1282;
+ expression(_ctx);
+ _ctx.s = 1284;
+ match(RPAREN);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[68]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext expressionList(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 136);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[69]);
+ int _la;
+ try {
+ _ctx.s = 1286;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==COMMA ) {
+ _ctx.s = 1288;
+ match(COMMA);
+ _ctx.s = 1290;
+ expression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_expressionList_iter_118);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[69]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext expression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 138);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[70]);
+ int _la;
+ try {
+ _ctx.s = 1296;
+ conditionalExpression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==EQ || _la==PLUSEQ || _la==SUBEQ || _la==STAREQ || _la==SLASHEQ || _la==AMPEQ || _la==BAREQ || _la==CARETEQ || _la==PERCENTEQ || _la==GT || _la==LT ) {
+ _ctx.s = 1298;
+ assignmentOperator(_ctx);
+ _ctx.s = 1300;
+ expression(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[70]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext assignmentOperator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 140);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[71]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,120,_ctx) ) {
+ case 1:
+ _ctx.s = 1304;
+ match(EQ);
+ break;
+ case 2:
+ _ctx.s = 1306;
+ match(PLUSEQ);
+ break;
+ case 3:
+ _ctx.s = 1308;
+ match(SUBEQ);
+ break;
+ case 4:
+ _ctx.s = 1310;
+ match(STAREQ);
+ break;
+ case 5:
+ _ctx.s = 1312;
+ match(SLASHEQ);
+ break;
+ case 6:
+ _ctx.s = 1314;
+ match(AMPEQ);
+ break;
+ case 7:
+ _ctx.s = 1316;
+ match(BAREQ);
+ break;
+ case 8:
+ _ctx.s = 1318;
+ match(CARETEQ);
+ break;
+ case 9:
+ _ctx.s = 1320;
+ match(PERCENTEQ);
+ break;
+ case 10:
+ _ctx.s = 1322;
+ match(GT);
+ _ctx.s = 1324;
+ match(GT);
+ _ctx.s = 1326;
+ match(EQ);
+ break;
+ case 11:
+ _ctx.s = 1328;
+ match(LT);
+ _ctx.s = 1330;
+ match(LT);
+ _ctx.s = 1332;
+ match(LT);
+ _ctx.s = 1334;
+ match(EQ);
+ break;
+ case 12:
+ _ctx.s = 1336;
+ match(LT);
+ _ctx.s = 1338;
+ match(LT);
+ _ctx.s = 1340;
+ match(EQ);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[71]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext conditionalExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 142);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[72]);
+ int _la;
+ try {
+ _ctx.s = 1344;
+ conditionalOrExpression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==QUES ) {
+ _ctx.s = 1346;
+ match(QUES);
+ _ctx.s = 1348;
+ expression(_ctx);
+ _ctx.s = 1350;
+ match(COLON);
+ _ctx.s = 1352;
+ conditionalExpression(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[72]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext conditionalOrExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 144);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[73]);
+ int _la;
+ try {
+ _ctx.s = 1356;
+ conditionalAndExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==BARBAR ) {
+ _ctx.s = 1358;
+ match(BARBAR);
+ _ctx.s = 1360;
+ conditionalAndExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_conditionalOrExpression_iter_122);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[73]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext conditionalAndExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 146);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[74]);
+ int _la;
+ try {
+ _ctx.s = 1366;
+ inclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==AMPAMP ) {
+ _ctx.s = 1368;
+ match(AMPAMP);
+ _ctx.s = 1370;
+ inclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_conditionalAndExpression_iter_123);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[74]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext inclusiveOrExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 148);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[75]);
+ int _la;
+ try {
+ _ctx.s = 1376;
+ exclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==BAR ) {
+ _ctx.s = 1378;
+ match(BAR);
+ _ctx.s = 1380;
+ exclusiveOrExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_inclusiveOrExpression_iter_124);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[75]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext exclusiveOrExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 150);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[76]);
+ int _la;
+ try {
+ _ctx.s = 1386;
+ andExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==CARET ) {
+ _ctx.s = 1388;
+ match(CARET);
+ _ctx.s = 1390;
+ andExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_exclusiveOrExpression_iter_125);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[76]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext andExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 152);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[77]);
+ int _la;
+ try {
+ _ctx.s = 1396;
+ equalityExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==AMP ) {
+ _ctx.s = 1398;
+ match(AMP);
+ _ctx.s = 1400;
+ equalityExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_andExpression_iter_126);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[77]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext equalityExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 154);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[78]);
+ int _la;
+ try {
+ _ctx.s = 1406;
+ instanceOfExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==EQEQ || _la==BANGEQ ) {
+ switch ( state.input.LA(1) ) {
+ case EQEQ:
+ _ctx.s = 1408;
+ match(EQEQ);
+ break;
+ case BANGEQ:
+ _ctx.s = 1410;
+ match(BANGEQ);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 1414;
+ instanceOfExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_equalityExpression_iter_128);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[78]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext instanceOfExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 156);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[79]);
+ int _la;
+ try {
+ _ctx.s = 1420;
+ relationalExpression(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==INSTANCEOF ) {
+ _ctx.s = 1422;
+ match(INSTANCEOF);
+ _ctx.s = 1424;
+ type(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[79]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext relationalExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 158);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[80]);
+ try {
+ _ctx.s = 1428;
+ shiftExpression(_ctx);
+ int _alt2004 = _interp.adaptivePredict(state.input,130,_ctx);
+ while ( _alt2004!=2 ) {
+ switch ( _alt2004 ) {
+ case 1:
+ _ctx.s = 1430;
+ relationalOp(_ctx);
+ _ctx.s = 1432;
+ shiftExpression(_ctx);
+ break;
+ }
+ _alt2004 = _interp.adaptivePredict(state.input,130,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[80]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext relationalOp(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 160);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[81]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,131,_ctx) ) {
+ case 1:
+ _ctx.s = 1438;
+ match(GT);
+ _ctx.s = 1440;
+ match(EQ);
+ break;
+ case 2:
+ _ctx.s = 1442;
+ match(LT);
+ _ctx.s = 1444;
+ match(EQ);
+ break;
+ case 3:
+ _ctx.s = 1446;
+ match(GT);
+ break;
+ case 4:
+ _ctx.s = 1448;
+ match(LT);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[81]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext shiftExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 162);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[82]);
+ try {
+ _ctx.s = 1452;
+ additiveExpression(_ctx);
+ int _alt2044 = _interp.adaptivePredict(state.input,132,_ctx);
+ while ( _alt2044!=2 ) {
+ switch ( _alt2044 ) {
+ case 1:
+ _ctx.s = 1454;
+ shiftOp(_ctx);
+ _ctx.s = 1456;
+ additiveExpression(_ctx);
+ break;
+ }
+ _alt2044 = _interp.adaptivePredict(state.input,132,_ctx);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[82]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext shiftOp(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 164);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[83]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,133,_ctx) ) {
+ case 1:
+ _ctx.s = 1462;
+ match(GT);
+ _ctx.s = 1464;
+ match(GT);
+ break;
+ case 2:
+ _ctx.s = 1466;
+ match(LT);
+ _ctx.s = 1468;
+ match(LT);
+ _ctx.s = 1470;
+ match(LT);
+ break;
+ case 3:
+ _ctx.s = 1472;
+ match(LT);
+ _ctx.s = 1474;
+ match(LT);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[83]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext additiveExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 166);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[84]);
+ int _la;
+ try {
+ _ctx.s = 1478;
+ multiplicativeExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==PLUS || _la==SUB ) {
+ switch ( state.input.LA(1) ) {
+ case PLUS:
+ _ctx.s = 1480;
+ match(PLUS);
+ break;
+ case SUB:
+ _ctx.s = 1482;
+ match(SUB);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 1486;
+ multiplicativeExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_additiveExpression_iter_135);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[84]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext multiplicativeExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 168);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[85]);
+ int _la;
+ try {
+ _ctx.s = 1492;
+ unaryExpression(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==STAR || _la==SLASH || _la==PERCENT ) {
+ switch ( state.input.LA(1) ) {
+ case STAR:
+ _ctx.s = 1494;
+ match(STAR);
+ break;
+ case SLASH:
+ _ctx.s = 1496;
+ match(SLASH);
+ break;
+ case PERCENT:
+ _ctx.s = 1498;
+ match(PERCENT);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _ctx.s = 1502;
+ unaryExpression(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_multiplicativeExpression_iter_137);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[85]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext unaryExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 170);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[86]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case PLUS:
+ _ctx.s = 1508;
+ match(PLUS);
+ _ctx.s = 1510;
+ unaryExpression(_ctx);
+ break;
+ case SUB:
+ _ctx.s = 1512;
+ match(SUB);
+ _ctx.s = 1514;
+ unaryExpression(_ctx);
+ break;
+ case PLUSPLUS:
+ _ctx.s = 1516;
+ match(PLUSPLUS);
+ _ctx.s = 1518;
+ unaryExpression(_ctx);
+ break;
+ case SUBSUB:
+ _ctx.s = 1520;
+ match(SUBSUB);
+ _ctx.s = 1522;
+ unaryExpression(_ctx);
+ break;
+ case LONGLITERAL:
+ case INTLITERAL:
+ case FLOATLITERAL:
+ case DOUBLELITERAL:
+ case CHARLITERAL:
+ case STRINGLITERAL:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case TRUE:
+ case FALSE:
+ case NULL:
+ case LPAREN:
+ case BANG:
+ case TILDE:
+ case IDENTIFIER:
+ _ctx.s = 1524;
+ unaryExpressionNotPlusMinus(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[86]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext unaryExpressionNotPlusMinus(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 172);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[87]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,141,_ctx) ) {
+ case 1:
+ _ctx.s = 1528;
+ match(TILDE);
+ _ctx.s = 1530;
+ unaryExpression(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1532;
+ match(BANG);
+ _ctx.s = 1534;
+ unaryExpression(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1536;
+ castExpression(_ctx);
+ break;
+ case 4:
+ _ctx.s = 1538;
+ primary(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET || _la==DOT ) {
+ _ctx.s = 1540;
+ selector(_ctx);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_unaryExpressionNotPlusMinus_iter_139);
+ }
+ switch ( state.input.LA(1) ) {
+ case PLUSPLUS:
+ _ctx.s = 1546;
+ match(PLUSPLUS);
+ break;
+ case SUBSUB:
+ _ctx.s = 1548;
+ match(SUBSUB);
+ break;
+ case INSTANCEOF:
+ case RPAREN:
+ case RBRACE:
+ case RBRACKET:
+ case SEMI:
+ case COMMA:
+ case EQ:
+ case QUES:
+ case COLON:
+ case EQEQ:
+ case AMPAMP:
+ case BARBAR:
+ case PLUS:
+ case SUB:
+ case STAR:
+ case SLASH:
+ case AMP:
+ case BAR:
+ case CARET:
+ case PERCENT:
+ case PLUSEQ:
+ case SUBEQ:
+ case STAREQ:
+ case SLASHEQ:
+ case AMPEQ:
+ case BAREQ:
+ case CARETEQ:
+ case PERCENTEQ:
+ case BANGEQ:
+ case GT:
+ case LT:
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[87]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext castExpression(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 174);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[88]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,142,_ctx) ) {
+ case 1:
+ _ctx.s = 1554;
+ match(LPAREN);
+ _ctx.s = 1556;
+ primitiveType(_ctx);
+ _ctx.s = 1558;
+ match(RPAREN);
+ _ctx.s = 1560;
+ unaryExpression(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1562;
+ match(LPAREN);
+ _ctx.s = 1564;
+ type(_ctx);
+ _ctx.s = 1566;
+ match(RPAREN);
+ _ctx.s = 1568;
+ unaryExpressionNotPlusMinus(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[88]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext primary(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 176);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[89]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case LPAREN:
+ _ctx.s = 1572;
+ parExpression(_ctx);
+ break;
+ case THIS:
+ _ctx.s = 1574;
+ match(THIS);
+ int _alt2243 = _interp.adaptivePredict(state.input,143,_ctx);
+ while ( _alt2243!=2 ) {
+ switch ( _alt2243 ) {
+ case 1:
+ _ctx.s = 1576;
+ match(DOT);
+ _ctx.s = 1578;
+ match(IDENTIFIER);
+ break;
+ }
+ _alt2243 = _interp.adaptivePredict(state.input,143,_ctx);
+ }
+ switch ( _interp.adaptivePredict(state.input,144,_ctx) ) {
+ case 1:
+ _ctx.s = 1584;
+ identifierSuffix(_ctx);
+ break;
+ }
+ break;
+ case IDENTIFIER:
+ _ctx.s = 1588;
+ match(IDENTIFIER);
+ int _alt2261 = _interp.adaptivePredict(state.input,145,_ctx);
+ while ( _alt2261!=2 ) {
+ switch ( _alt2261 ) {
+ case 1:
+ _ctx.s = 1590;
+ match(DOT);
+ _ctx.s = 1592;
+ match(IDENTIFIER);
+ break;
+ }
+ _alt2261 = _interp.adaptivePredict(state.input,145,_ctx);
+ }
+ switch ( _interp.adaptivePredict(state.input,146,_ctx) ) {
+ case 1:
+ _ctx.s = 1598;
+ identifierSuffix(_ctx);
+ break;
+ }
+ break;
+ case SUPER:
+ _ctx.s = 1602;
+ match(SUPER);
+ _ctx.s = 1604;
+ superSuffix(_ctx);
+ break;
+ case LONGLITERAL:
+ case INTLITERAL:
+ case FLOATLITERAL:
+ case DOUBLELITERAL:
+ case CHARLITERAL:
+ case STRINGLITERAL:
+ case TRUE:
+ case FALSE:
+ case NULL:
+ _ctx.s = 1606;
+ literal(_ctx);
+ break;
+ case NEW:
+ _ctx.s = 1608;
+ creator(_ctx);
+ break;
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ _ctx.s = 1610;
+ primitiveType(_ctx);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 1612;
+ match(LBRACKET);
+ _ctx.s = 1614;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_primary_iter_147);
+ }
+ _ctx.s = 1620;
+ match(DOT);
+ _ctx.s = 1622;
+ match(CLASS);
+ break;
+ case VOID:
+ _ctx.s = 1624;
+ match(VOID);
+ _ctx.s = 1626;
+ match(DOT);
+ _ctx.s = 1628;
+ match(CLASS);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[89]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext superSuffix(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 178);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[90]);
+ int _la;
+ try {
+ switch ( state.input.LA(1) ) {
+ case LPAREN:
+ _ctx.s = 1632;
+ arguments(_ctx);
+ break;
+ case DOT:
+ _ctx.s = 1634;
+ match(DOT);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 1636;
+ typeArguments(_ctx);
+ }
+
+ _ctx.s = 1640;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==LPAREN ) {
+ _ctx.s = 1642;
+ arguments(_ctx);
+ }
+
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[90]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext identifierSuffix(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 180);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[91]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,158,_ctx) ) {
+ case 1:
+ //sync(EXPECTING_in_identifierSuffix_enter_154);
+ _la = state.input.LA(1);
+ do {
+ _ctx.s = 1648;
+ match(LBRACKET);
+ _ctx.s = 1650;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ // sync(EXPECTING_in_identifierSuffix_iter_154);
+ } while ( _la==LBRACKET );
+ _ctx.s = 1656;
+ match(DOT);
+ _ctx.s = 1658;
+ match(CLASS);
+ break;
+ case 2:
+ int _alt2361 = _interp.adaptivePredict(state.input,157,_ctx);
+ do {
+ switch ( _alt2361 ) {
+ case 1:
+ _ctx.s = 1660;
+ match(LBRACKET);
+ _ctx.s = 1662;
+ expression(_ctx);
+ _ctx.s = 1664;
+ match(RBRACKET);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ _alt2361 = _interp.adaptivePredict(state.input,157,_ctx);
+ } while ( _alt2361!=2 );
+ break;
+ case 3:
+ _ctx.s = 1670;
+ arguments(_ctx);
+ break;
+ case 4:
+ _ctx.s = 1672;
+ match(DOT);
+ _ctx.s = 1674;
+ match(CLASS);
+ break;
+ case 5:
+ _ctx.s = 1676;
+ match(DOT);
+ _ctx.s = 1678;
+ nonWildcardTypeArguments(_ctx);
+ _ctx.s = 1680;
+ match(IDENTIFIER);
+ _ctx.s = 1682;
+ arguments(_ctx);
+ break;
+ case 6:
+ _ctx.s = 1684;
+ match(DOT);
+ _ctx.s = 1686;
+ match(THIS);
+ break;
+ case 7:
+ _ctx.s = 1688;
+ match(DOT);
+ _ctx.s = 1690;
+ match(SUPER);
+ _ctx.s = 1692;
+ arguments(_ctx);
+ break;
+ case 8:
+ _ctx.s = 1694;
+ innerCreator(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[91]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext selector(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 182);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[92]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,160,_ctx) ) {
+ case 1:
+ _ctx.s = 1698;
+ match(DOT);
+ _ctx.s = 1700;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==LPAREN ) {
+ _ctx.s = 1702;
+ arguments(_ctx);
+ }
+
+ break;
+ case 2:
+ _ctx.s = 1706;
+ match(DOT);
+ _ctx.s = 1708;
+ match(THIS);
+ break;
+ case 3:
+ _ctx.s = 1710;
+ match(DOT);
+ _ctx.s = 1712;
+ match(SUPER);
+ _ctx.s = 1714;
+ superSuffix(_ctx);
+ break;
+ case 4:
+ _ctx.s = 1716;
+ innerCreator(_ctx);
+ break;
+ case 5:
+ _ctx.s = 1718;
+ match(LBRACKET);
+ _ctx.s = 1720;
+ expression(_ctx);
+ _ctx.s = 1722;
+ match(RBRACKET);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[92]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext creator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 184);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[93]);
+ try {
+ switch ( _interp.adaptivePredict(state.input,161,_ctx) ) {
+ case 1:
+ _ctx.s = 1726;
+ match(NEW);
+ _ctx.s = 1728;
+ nonWildcardTypeArguments(_ctx);
+ _ctx.s = 1730;
+ classOrInterfaceType(_ctx);
+ _ctx.s = 1732;
+ classCreatorRest(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1734;
+ match(NEW);
+ _ctx.s = 1736;
+ classOrInterfaceType(_ctx);
+ _ctx.s = 1738;
+ classCreatorRest(_ctx);
+ break;
+ case 3:
+ _ctx.s = 1740;
+ arrayCreator(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[93]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext arrayCreator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 186);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[94]);
+ int _la;
+ try {
+ switch ( _interp.adaptivePredict(state.input,165,_ctx) ) {
+ case 1:
+ _ctx.s = 1744;
+ match(NEW);
+ _ctx.s = 1746;
+ createdName(_ctx);
+ _ctx.s = 1748;
+ match(LBRACKET);
+ _ctx.s = 1750;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ while ( _la==LBRACKET ) {
+ _ctx.s = 1752;
+ match(LBRACKET);
+ _ctx.s = 1754;
+ match(RBRACKET);
+ _la = state.input.LA(1);
+ //sync(EXPECTING_in_arrayCreator_iter_162);
+ }
+ _ctx.s = 1760;
+ arrayInitializer(_ctx);
+ break;
+ case 2:
+ _ctx.s = 1762;
+ match(NEW);
+ _ctx.s = 1764;
+ createdName(_ctx);
+ _ctx.s = 1766;
+ match(LBRACKET);
+ _ctx.s = 1768;
+ expression(_ctx);
+ _ctx.s = 1770;
+ match(RBRACKET);
+ int _alt2514 = _interp.adaptivePredict(state.input,163,_ctx);
+ while ( _alt2514!=2 ) {
+ switch ( _alt2514 ) {
+ case 1:
+ _ctx.s = 1772;
+ match(LBRACKET);
+ _ctx.s = 1774;
+ expression(_ctx);
+ _ctx.s = 1776;
+ match(RBRACKET);
+ break;
+ }
+ _alt2514 = _interp.adaptivePredict(state.input,163,_ctx);
+ }
+ int _alt2522 = _interp.adaptivePredict(state.input,164,_ctx);
+ while ( _alt2522!=2 ) {
+ switch ( _alt2522 ) {
+ case 1:
+ _ctx.s = 1782;
+ match(LBRACKET);
+ _ctx.s = 1784;
+ match(RBRACKET);
+ break;
+ }
+ _alt2522 = _interp.adaptivePredict(state.input,164,_ctx);
+ }
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[94]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext variableInitializer(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 188);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[95]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case LBRACE:
+ _ctx.s = 1792;
+ arrayInitializer(_ctx);
+ break;
+ case LONGLITERAL:
+ case INTLITERAL:
+ case FLOATLITERAL:
+ case DOUBLELITERAL:
+ case CHARLITERAL:
+ case STRINGLITERAL:
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case TRUE:
+ case FALSE:
+ case NULL:
+ case LPAREN:
+ case BANG:
+ case TILDE:
+ case PLUSPLUS:
+ case SUBSUB:
+ case PLUS:
+ case SUB:
+ case IDENTIFIER:
+ _ctx.s = 1794;
+ expression(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[95]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext arrayInitializer(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 190);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[96]);
+ int _la;
+ try {
+ _ctx.s = 1798;
+ match(LBRACE);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==LBRACE || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==IDENTIFIER ) {
+ _ctx.s = 1800;
+ variableInitializer(_ctx);
+ int _alt2553 = _interp.adaptivePredict(state.input,167,_ctx);
+ while ( _alt2553!=2 ) {
+ switch ( _alt2553 ) {
+ case 1:
+ _ctx.s = 1802;
+ match(COMMA);
+ _ctx.s = 1804;
+ variableInitializer(_ctx);
+ break;
+ }
+ _alt2553 = _interp.adaptivePredict(state.input,167,_ctx);
+ }
+ }
+
+ _la = state.input.LA(1);
+ if ( _la==COMMA ) {
+ _ctx.s = 1812;
+ match(COMMA);
+ }
+
+ _ctx.s = 1816;
+ match(RBRACE);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[96]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext createdName(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 192);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[97]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case IDENTIFIER:
+ _ctx.s = 1818;
+ classOrInterfaceType(_ctx);
+ break;
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ _ctx.s = 1820;
+ primitiveType(_ctx);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[97]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext innerCreator(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 194);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[98]);
+ int _la;
+ try {
+ _ctx.s = 1824;
+ match(DOT);
+ _ctx.s = 1826;
+ match(NEW);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 1828;
+ nonWildcardTypeArguments(_ctx);
+ }
+
+ _ctx.s = 1832;
+ match(IDENTIFIER);
+ _la = state.input.LA(1);
+ if ( _la==GT ) {
+ _ctx.s = 1834;
+ typeArguments(_ctx);
+ }
+
+ _ctx.s = 1838;
+ classCreatorRest(_ctx);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[98]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext classCreatorRest(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 196);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[99]);
+ int _la;
+ try {
+ _ctx.s = 1840;
+ arguments(_ctx);
+ _la = state.input.LA(1);
+ if ( _la==LBRACE ) {
+ _ctx.s = 1842;
+ classBody(_ctx);
+ }
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[99]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext nonWildcardTypeArguments(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 198);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[100]);
+ try {
+ _ctx.s = 1846;
+ match(GT);
+ _ctx.s = 1848;
+ typeList(_ctx);
+ _ctx.s = 1850;
+ match(LT);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[100]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext arguments(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 200);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[101]);
+ int _la;
+ try {
+ _ctx.s = 1852;
+ match(LPAREN);
+ _la = state.input.LA(1);
+ if ( _la==LONGLITERAL || _la==INTLITERAL || _la==FLOATLITERAL || _la==DOUBLELITERAL || _la==CHARLITERAL || _la==STRINGLITERAL || _la==BOOLEAN || _la==BYTE || _la==CHAR || _la==DOUBLE || _la==FLOAT || _la==INT || _la==LONG || _la==NEW || _la==SHORT || _la==SUPER || _la==THIS || _la==VOID || _la==TRUE || _la==FALSE || _la==NULL || _la==LPAREN || _la==BANG || _la==TILDE || _la==PLUSPLUS || _la==SUBSUB || _la==PLUS || _la==SUB || _la==IDENTIFIER ) {
+ _ctx.s = 1854;
+ expressionList(_ctx);
+ }
+
+ _ctx.s = 1858;
+ match(RPAREN);
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[101]);
+ }
+ return _ctx;
+ }
+
+
+ public final ParserRuleContext literal(ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, 202);
+ state.ctx = _ctx;
+ //System.out.println("enter "+ruleNames[102]);
+ try {
+ switch ( state.input.LA(1) ) {
+ case INTLITERAL:
+ _ctx.s = 1860;
+ match(INTLITERAL);
+ break;
+ case LONGLITERAL:
+ _ctx.s = 1862;
+ match(LONGLITERAL);
+ break;
+ case FLOATLITERAL:
+ _ctx.s = 1864;
+ match(FLOATLITERAL);
+ break;
+ case DOUBLELITERAL:
+ _ctx.s = 1866;
+ match(DOUBLELITERAL);
+ break;
+ case CHARLITERAL:
+ _ctx.s = 1868;
+ match(CHARLITERAL);
+ break;
+ case STRINGLITERAL:
+ _ctx.s = 1870;
+ match(STRINGLITERAL);
+ break;
+ case TRUE:
+ _ctx.s = 1872;
+ match(TRUE);
+ break;
+ case FALSE:
+ _ctx.s = 1874;
+ match(FALSE);
+ break;
+ case NULL:
+ _ctx.s = 1876;
+ match(NULL);
+ break;
+ default :
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[102]);
+ }
+ return _ctx;
+ }
+
+ @Override
+ public String[] getTokenNames() { return tokenNames; }
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\031\155\u0759\02\01\07\01\02\02\07\02\02\03\07\03\02\04\07\04\02\05"+
+ "\07\05\02\06\07\06\02\07\07\07\02\010\07\010\02\011\07\011\02\012"+
+ "\07\012\02\013\07\013\02\014\07\014\02\015\07\015\02\016\07\016\02"+
+ "\017\07\017\02\020\07\020\02\021\07\021\02\022\07\022\02\023\07\023"+
+ "\02\024\07\024\02\025\07\025\02\026\07\026\02\027\07\027\02\030\07"+
+ "\030\02\031\07\031\02\032\07\032\02\033\07\033\02\034\07\034\02\035"+
+ "\07\035\02\036\07\036\02\037\07\037\02\040\07\040\02\041\07\041\02"+
+ "\042\07\042\02\043\07\043\02\044\07\044\02\045\07\045\02\046\07\046"+
+ "\02\047\07\047\02\050\07\050\02\051\07\051\02\052\07\052\02\053\07"+
+ "\053\02\054\07\054\02\055\07\055\02\056\07\056\02\057\07\057\02\060"+
+ "\07\060\02\061\07\061\02\062\07\062\02\063\07\063\02\064\07\064\02"+
+ "\065\07\065\02\066\07\066\02\067\07\067\02\070\07\070\02\071\07\071"+
+ "\02\072\07\072\02\073\07\073\02\074\07\074\02\075\07\075\02\076\07"+
+ "\076\02\077\07\077\02\100\07\100\02\101\07\101\02\102\07\102\02\103"+
+ "\07\103\02\104\07\104\02\105\07\105\02\106\07\106\02\107\07\107\02"+
+ "\110\07\110\02\111\07\111\02\112\07\112\02\113\07\113\02\114\07\114"+
+ "\02\115\07\115\02\116\07\116\02\117\07\117\02\120\07\120\02\121\07"+
+ "\121\02\122\07\122\02\123\07\123\02\124\07\124\02\125\07\125\02\126"+
+ "\07\126\02\127\07\127\02\130\07\130\02\131\07\131\02\132\07\132\02"+
+ "\133\07\133\02\134\07\134\02\135\07\135\02\136\07\136\02\137\07\137"+
+ "\02\140\07\140\02\141\07\141\02\142\07\142\02\143\07\143\02\144\07"+
+ "\144\02\145\07\145\02\146\07\146\01\01\01\01\03\01\010\01\01\01\01"+
+ "\01\03\01\010\01\01\01\01\01\05\01\010\01\011\01\01\01\01\01\01\01"+
+ "\05\01\010\01\011\01\01\01\01\02\01\02\01\02\01\02\01\02\01\02\01"+
+ "\03\01\03\01\03\01\03\03\03\010\03\01\03\01\03\01\03\01\03\01\03\01"+
+ "\03\01\03\01\03\01\03\01\03\01\03\01\03\03\03\010\03\01\03\01\03\01"+
+ "\03\01\03\01\03\01\03\04\03\010\03\012\03\01\03\01\03\01\03\01\03"+
+ "\01\03\03\03\010\03\01\03\01\03\03\03\010\03\01\04\01\04\01\04\01"+
+ "\04\01\04\01\04\05\04\010\04\011\04\01\04\01\05\01\05\01\05\01\05"+
+ "\03\05\010\05\01\06\01\06\01\06\01\06\03\06\010\06\01\07\01\07\01"+
+ "\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01"+
+ "\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\01\07\05"+
+ "\07\010\07\011\07\01\07\01\010\01\010\01\010\01\010\05\010\010\010"+
+ "\011\010\01\010\01\011\01\011\01\011\01\011\03\011\010\011\01\012"+
+ "\01\012\01\012\01\012\01\012\01\012\01\012\01\012\03\012\010\012\01"+
+ "\012\01\012\01\012\01\012\03\012\010\012\01\012\01\012\01\012\01\012"+
+ "\03\012\010\012\01\012\01\012\01\013\01\013\01\013\01\013\01\013\01"+
+ "\013\01\013\01\013\05\013\010\013\011\013\01\013\01\013\01\013\01"+
+ "\014\01\014\01\014\01\014\01\014\01\014\03\014\010\014\01\015\01\015"+
+ "\01\015\01\015\01\015\01\015\05\015\010\015\011\015\01\015\01\016"+
+ "\01\016\01\016\01\016\01\016\01\016\01\016\01\016\01\016\01\016\03"+
+ "\016\010\016\01\016\01\016\01\017\01\017\01\017\01\017\03\017\010"+
+ "\017\01\017\01\017\03\017\010\017\01\017\01\017\03\017\010\017\01"+
+ "\017\01\017\01\020\01\020\01\020\01\020\01\020\01\020\05\020\010\020"+
+ "\011\020\01\020\01\021\01\021\03\021\010\021\01\021\01\021\01\021"+
+ "\01\021\03\021\010\021\01\021\01\021\03\021\010\021\01\022\01\022"+
+ "\01\022\01\022\05\022\010\022\011\022\01\022\01\023\01\023\01\023"+
+ "\01\023\03\023\010\023\01\024\01\024\01\024\01\024\01\024\01\024\01"+
+ "\024\01\024\03\024\010\024\01\024\01\024\01\024\01\024\03\024\010"+
+ "\024\01\024\01\024\01\025\01\025\01\025\01\025\01\025\01\025\05\025"+
+ "\010\025\011\025\01\025\01\026\01\026\01\026\01\026\05\026\010\026"+
+ "\011\026\01\026\01\026\01\026\01\027\01\027\01\027\01\027\05\027\010"+
+ "\027\011\027\01\027\01\027\01\027\01\030\01\030\01\030\01\030\03\030"+
+ "\010\030\01\030\01\030\01\030\01\030\03\030\010\030\01\031\01\031"+
+ "\01\031\01\031\01\031\01\031\01\031\01\031\03\031\010\031\01\032\01"+
+ "\032\01\032\01\032\03\032\010\032\01\032\01\032\01\032\01\032\01\032"+
+ "\01\032\01\032\01\032\03\032\010\032\01\032\01\032\01\032\01\032\03"+
+ "\032\010\032\01\032\01\032\05\032\010\032\011\032\01\032\01\032\01"+
+ "\032\01\032\01\032\01\032\01\032\03\032\010\032\01\032\01\032\01\032"+
+ "\01\032\03\032\010\032\01\032\01\032\01\032\01\032\01\032\01\032\01"+
+ "\032\01\032\05\032\010\032\011\032\01\032\01\032\01\032\01\032\01"+
+ "\032\03\032\010\032\01\032\01\032\01\032\01\032\03\032\010\032\03"+
+ "\032\010\032\01\033\01\033\01\033\01\033\01\033\01\033\01\033\01\033"+
+ "\01\033\01\033\05\033\010\033\011\033\01\033\01\033\01\033\01\034"+
+ "\01\034\01\034\01\034\01\034\01\034\05\034\010\034\011\034\01\034"+
+ "\01\034\01\034\01\034\01\034\03\034\010\034\01\035\01\035\01\035\01"+
+ "\035\01\035\01\035\01\035\01\035\01\035\01\035\03\035\010\035\01\036"+
+ "\01\036\01\036\01\036\03\036\010\036\01\036\01\036\01\036\01\036\03"+
+ "\036\010\036\01\036\01\036\01\036\01\036\01\036\01\036\01\036\01\036"+
+ "\05\036\010\036\011\036\01\036\01\036\01\036\01\036\01\036\03\036"+
+ "\010\036\01\036\01\036\01\037\01\037\01\037\01\037\01\037\01\037\01"+
+ "\037\01\037\01\037\01\037\05\037\010\037\011\037\01\037\01\037\01"+
+ "\037\01\040\01\040\01\040\01\040\01\040\01\040\05\040\010\040\011"+
+ "\040\01\040\01\040\01\040\01\040\01\040\01\040\01\040\05\040\010\040"+
+ "\011\040\01\040\03\040\010\040\01\041\01\041\01\041\01\041\03\041"+
+ "\010\041\01\041\01\041\01\041\01\041\01\041\01\041\03\041\010\041"+
+ "\05\041\010\041\011\041\01\041\01\042\01\042\01\042\01\042\01\042"+
+ "\01\042\01\042\01\042\01\042\01\042\01\042\01\042\01\042\01\042\01"+
+ "\042\01\042\03\042\010\042\01\043\01\043\01\043\01\043\01\043\01\043"+
+ "\01\043\01\043\05\043\010\043\011\043\01\043\01\043\01\043\01\044"+
+ "\01\044\01\044\01\044\01\044\01\044\01\044\01\044\03\044\010\044\01"+
+ "\044\01\044\03\044\010\044\03\044\010\044\01\045\01\045\01\045\01"+
+ "\045\01\045\01\045\05\045\010\045\011\045\01\045\01\046\01\046\01"+
+ "\046\01\046\03\046\010\046\01\046\01\046\01\047\01\047\01\047\01\047"+
+ "\01\047\01\047\01\047\01\047\05\047\010\047\011\047\01\047\01\047"+
+ "\01\047\01\047\01\047\04\047\010\047\012\047\01\047\01\047\01\047"+
+ "\03\047\010\047\01\050\01\050\01\050\01\050\01\050\01\050\01\050\01"+
+ "\050\01\050\01\050\05\050\010\050\011\050\01\050\01\051\01\051\01"+
+ "\051\01\051\01\051\01\051\01\051\01\051\01\052\01\052\03\052\010\052"+
+ "\01\052\01\052\01\052\01\052\03\052\010\052\01\052\01\052\01\052\01"+
+ "\052\01\052\01\052\01\052\01\052\01\052\01\052\03\052\010\052\01\052"+
+ "\01\052\01\052\01\052\01\052\01\052\03\052\010\052\01\053\01\053\01"+
+ "\053\01\053\01\053\01\053\05\053\010\053\011\053\01\053\01\054\01"+
+ "\054\04\054\010\054\012\054\01\054\01\055\01\055\01\055\01\055\01"+
+ "\055\01\055\01\055\01\055\01\055\01\055\03\055\010\055\01\055\01\055"+
+ "\03\055\010\055\01\056\01\056\01\056\01\056\01\056\01\056\05\056\010"+
+ "\056\011\056\01\056\01\057\01\057\01\057\01\057\01\057\01\057\01\060"+
+ "\01\060\01\060\01\060\01\060\01\060\03\060\010\060\01\061\01\061\01"+
+ "\061\01\061\01\061\01\061\01\061\01\061\05\061\010\061\011\061\01"+
+ "\061\03\061\010\061\01\061\01\061\03\061\010\061\01\061\01\061\01"+
+ "\062\01\062\01\062\01\062\01\062\01\062\01\062\01\062\01\062\01\062"+
+ "\01\063\01\063\01\063\01\063\05\063\010\063\011\063\01\063\01\063"+
+ "\01\063\01\064\01\064\01\064\01\064\01\064\01\064\01\064\01\064\01"+
+ "\064\01\064\01\064\01\064\01\064\01\064\03\064\010\064\01\065\01\065"+
+ "\01\065\01\065\01\065\01\065\01\065\01\065\01\065\01\065\01\065\01"+
+ "\065\01\065\01\065\03\065\010\065\01\065\01\065\01\066\01\066\01\066"+
+ "\01\066\05\066\010\066\011\066\01\066\01\066\01\066\01\067\01\067"+
+ "\01\067\01\067\01\067\01\067\03\067\010\067\01\070\01\070\01\070\01"+
+ "\070\01\071\01\071\01\071\01\071\01\071\01\071\01\071\01\071\01\071"+
+ "\01\071\05\071\010\071\011\071\01\071\01\072\01\072\01\072\01\072"+
+ "\01\072\01\072\01\072\01\072\01\072\01\072\03\072\010\072\01\072\01"+
+ "\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\03\072"+
+ "\010\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01"+
+ "\072\01\072\01\072\01\072\03\072\010\072\01\072\01\072\01\072\01\072"+
+ "\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01"+
+ "\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072"+
+ "\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01"+
+ "\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\03\072\010\072"+
+ "\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\01"+
+ "\072\01\072\01\072\03\072\010\072\01\072\01\072\01\072\01\072\01\072"+
+ "\01\072\03\072\010\072\01\072\01\072\01\072\01\072\01\072\01\072\01"+
+ "\072\01\072\01\072\01\072\01\072\01\072\01\072\01\072\03\072\010\072"+
+ "\01\073\01\073\05\073\010\073\011\073\01\073\01\074\01\074\01\074"+
+ "\01\074\05\074\010\074\011\074\01\074\01\075\01\075\01\075\01\075"+
+ "\01\075\01\075\01\075\01\075\01\075\01\075\03\075\010\075\01\076\01"+
+ "\076\01\076\01\076\01\076\01\076\01\076\01\076\01\076\01\076\01\076"+
+ "\01\076\01\076\01\076\01\076\01\076\03\076\010\076\01\077\01\077\01"+
+ "\077\01\077\05\077\010\077\011\077\01\077\01\100\01\100\01\100\01"+
+ "\100\01\100\01\100\01\100\01\100\01\100\01\100\01\101\01\101\01\101"+
+ "\01\101\01\101\01\101\01\101\01\101\01\101\01\101\05\101\010\101\011"+
+ "\101\01\101\01\102\01\102\01\102\01\102\01\102\01\102\01\102\01\102"+
+ "\01\102\01\102\01\102\01\102\01\102\01\102\01\102\01\102\01\102\01"+
+ "\102\01\102\01\102\01\102\01\102\01\102\01\102\03\102\010\102\01\102"+
+ "\01\102\01\102\01\102\03\102\010\102\01\102\01\102\01\102\01\102\03"+
+ "\102\010\102\01\102\01\102\01\102\01\102\03\102\010\102\01\103\01"+
+ "\103\01\103\01\103\03\103\010\103\01\104\01\104\01\104\01\104\01\104"+
+ "\01\104\01\105\01\105\01\105\01\105\01\105\01\105\05\105\010\105\011"+
+ "\105\01\105\01\106\01\106\01\106\01\106\01\106\01\106\03\106\010\106"+
+ "\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01"+
+ "\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107"+
+ "\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01"+
+ "\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107\01\107"+
+ "\03\107\010\107\01\110\01\110\01\110\01\110\01\110\01\110\01\110\01"+
+ "\110\01\110\01\110\03\110\010\110\01\111\01\111\01\111\01\111\01\111"+
+ "\01\111\05\111\010\111\011\111\01\111\01\112\01\112\01\112\01\112"+
+ "\01\112\01\112\05\112\010\112\011\112\01\112\01\113\01\113\01\113"+
+ "\01\113\01\113\01\113\05\113\010\113\011\113\01\113\01\114\01\114"+
+ "\01\114\01\114\01\114\01\114\05\114\010\114\011\114\01\114\01\115"+
+ "\01\115\01\115\01\115\01\115\01\115\05\115\010\115\011\115\01\115"+
+ "\01\116\01\116\01\116\01\116\01\116\01\116\03\116\010\116\01\116\01"+
+ "\116\05\116\010\116\011\116\01\116\01\117\01\117\01\117\01\117\01"+
+ "\117\01\117\03\117\010\117\01\120\01\120\01\120\01\120\01\120\01\120"+
+ "\05\120\010\120\011\120\01\120\01\121\01\121\01\121\01\121\01\121"+
+ "\01\121\01\121\01\121\01\121\01\121\01\121\01\121\03\121\010\121\01"+
+ "\122\01\122\01\122\01\122\01\122\01\122\05\122\010\122\011\122\01"+
+ "\122\01\123\01\123\01\123\01\123\01\123\01\123\01\123\01\123\01\123"+
+ "\01\123\01\123\01\123\01\123\01\123\03\123\010\123\01\124\01\124\01"+
+ "\124\01\124\01\124\01\124\03\124\010\124\01\124\01\124\05\124\010"+
+ "\124\011\124\01\124\01\125\01\125\01\125\01\125\01\125\01\125\01\125"+
+ "\01\125\03\125\010\125\01\125\01\125\05\125\010\125\011\125\01\125"+
+ "\01\126\01\126\01\126\01\126\01\126\01\126\01\126\01\126\01\126\01"+
+ "\126\01\126\01\126\01\126\01\126\01\126\01\126\01\126\01\126\03\126"+
+ "\010\126\01\127\01\127\01\127\01\127\01\127\01\127\01\127\01\127\01"+
+ "\127\01\127\01\127\01\127\01\127\01\127\05\127\010\127\011\127\01"+
+ "\127\01\127\01\127\01\127\01\127\03\127\010\127\03\127\010\127\01"+
+ "\130\01\130\01\130\01\130\01\130\01\130\01\130\01\130\01\130\01\130"+
+ "\01\130\01\130\01\130\01\130\01\130\01\130\03\130\010\130\01\131\01"+
+ "\131\01\131\01\131\01\131\01\131\01\131\01\131\05\131\010\131\011"+
+ "\131\01\131\01\131\01\131\03\131\010\131\01\131\01\131\01\131\01\131"+
+ "\01\131\01\131\05\131\010\131\011\131\01\131\01\131\01\131\03\131"+
+ "\010\131\01\131\01\131\01\131\01\131\01\131\01\131\01\131\01\131\01"+
+ "\131\01\131\01\131\01\131\01\131\01\131\05\131\010\131\011\131\01"+
+ "\131\01\131\01\131\01\131\01\131\01\131\01\131\01\131\01\131\01\131"+
+ "\01\131\03\131\010\131\01\132\01\132\01\132\01\132\01\132\01\132\03"+
+ "\132\010\132\01\132\01\132\01\132\01\132\03\132\010\132\03\132\010"+
+ "\132\01\133\01\133\01\133\01\133\04\133\010\133\012\133\01\133\01"+
+ "\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133"+
+ "\04\133\010\133\012\133\01\133\01\133\01\133\01\133\01\133\01\133"+
+ "\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01"+
+ "\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133\01\133"+
+ "\01\133\01\133\03\133\010\133\01\134\01\134\01\134\01\134\01\134\01"+
+ "\134\03\134\010\134\01\134\01\134\01\134\01\134\01\134\01\134\01\134"+
+ "\01\134\01\134\01\134\01\134\01\134\01\134\01\134\01\134\01\134\01"+
+ "\134\01\134\03\134\010\134\01\135\01\135\01\135\01\135\01\135\01\135"+
+ "\01\135\01\135\01\135\01\135\01\135\01\135\01\135\01\135\01\135\01"+
+ "\135\03\135\010\135\01\136\01\136\01\136\01\136\01\136\01\136\01\136"+
+ "\01\136\01\136\01\136\01\136\01\136\05\136\010\136\011\136\01\136"+
+ "\01\136\01\136\01\136\01\136\01\136\01\136\01\136\01\136\01\136\01"+
+ "\136\01\136\01\136\01\136\01\136\01\136\01\136\01\136\01\136\05\136"+
+ "\010\136\011\136\01\136\01\136\01\136\01\136\01\136\05\136\010\136"+
+ "\011\136\01\136\03\136\010\136\01\137\01\137\01\137\01\137\03\137"+
+ "\010\137\01\140\01\140\01\140\01\140\01\140\01\140\01\140\01\140\05"+
+ "\140\010\140\011\140\01\140\03\140\010\140\01\140\01\140\03\140\010"+
+ "\140\01\140\01\140\01\141\01\141\01\141\01\141\03\141\010\141\01\142"+
+ "\01\142\01\142\01\142\01\142\01\142\03\142\010\142\01\142\01\142\01"+
+ "\142\01\142\03\142\010\142\01\142\01\142\01\143\01\143\01\143\01\143"+
+ "\03\143\010\143\01\144\01\144\01\144\01\144\01\144\01\144\01\145\01"+
+ "\145\01\145\01\145\03\145\010\145\01\145\01\145\01\146\01\146\01\146"+
+ "\01\146\01\146\01\146\01\146\01\146\01\146\01\146\01\146\01\146\01"+
+ "\146\01\146\01\146\01\146\01\146\01\146\03\146\010\146\01\146\146"+
+ "\00\00\00\02\00\00\04\00\00\06\00\00\010\00\00\012\00\00\014\00\00"+
+ "\016\00\00\020\00\00\022\00\00\024\00\00\026\00\00\030\00\00\032\00"+
+ "\00\034\00\00\036\00\00\040\00\00\042\00\00\044\00\00\046\00\00\050"+
+ "\00\00\052\00\00\054\00\00\056\00\00\060\00\00\062\00\00\064\00\00"+
+ "\066\00\00\070\00\00\072\00\00\074\00\00\076\00\00\100\00\00\102\00"+
+ "\00\104\00\00\106\00\00\110\00\00\112\00\00\114\00\00\116\00\00\120"+
+ "\00\00\122\00\00\124\00\00\126\00\00\130\00\00\132\00\00\134\00\00"+
+ "\136\00\00\140\00\00\142\00\00\144\00\00\146\00\00\150\00\00\152\00"+
+ "\00\154\00\00\156\00\00\160\00\00\162\00\00\164\00\00\166\00\00\170"+
+ "\00\00\172\00\00\174\00\00\176\00\00\u0080\00\00\u0082\00\00\u0084"+
+ "\00\00\u0086\00\00\u0088\00\00\u008a\00\00\u008c\00\00\u008e\00\00"+
+ "\u0090\00\00\u0092\00\00\u0094\00\00\u0096\00\00\u0098\00\00\u009a"+
+ "\00\00\u009c\00\00\u009e\00\00\u00a0\00\00\u00a2\00\00\u00a4\00\00"+
+ "\u00a6\00\00\u00a8\00\00\u00aa\00\00\u00ac\00\00\u00ae\00\00\u00b0"+
+ "\00\00\u00b2\00\00\u00b4\00\00\u00b6\00\00\u00b8\00\00\u00ba\00\00"+
+ "\u00bc\00\00\u00be\00\00\u00c0\00\00\u00c2\00\00\u00c4\00\00\u00c6"+
+ "\00\00\u00c8\00\00\u00ca\00\00\00\00\u0909\00\u00d2\01\00\00\01\u0758"+
+ "\05\uffff\00\02\u00e0\01\00\00\03\u00d1\01\00\00\04\u010c\01\00\00"+
+ "\05\u00d5\01\00\00\06\u010e\01\00\00\07\u0758\05\uffff\00\010\u011c"+
+ "\01\00\00\011\u00db\01\00\00\012\u0122\01\00\00\013\u0119\01\00\00"+
+ "\013\u03f5\01\00\00\014\u013c\01\00\00\015\u014f\01\00\00\015\u0187"+
+ "\01\00\00\015\u01cb\01\00\00\015\u0211\01\00\00\015\u022f\01\00\00"+
+ "\015\u0255\01\00\00\015\u0281\01\00\00\015\u02a1\01\00\00\015\u03b3"+
+ "\01\00\00\015\u03d7\01\00\00\016\u0144\01\00\00\017\u0333\01\00\00"+
+ "\017\u0341\01\00\00\017\u03ff\01\00\00\017\u04c1\01\00\00\017\u04d3"+
+ "\01\00\00\020\u014c\01\00\00\021\u011f\01\00\00\021\u020b\01\00\00"+
+ "\021\u027b\01\00\00\022\u014e\01\00\00\023\u0149\01\00\00\023\u03cb"+
+ "\01\00\00\024\u0166\01\00\00\025\u0155\01\00\00\025\u01d1\01\00\00"+
+ "\025\u0213\01\00\00\025\u0231\01\00\00\025\u0283\01\00\00\026\u0174"+
+ "\01\00\00\027\u0169\01\00\00\027\u016d\01\00\00\030\u017c\01\00\00"+
+ "\031\u0179\01\00\00\032\u0186\01\00\00\033\u014b\01\00\00\033\u03cf"+
+ "\01\00\00\034\u0194\01\00\00\035\u0193\01\00\00\036\u01a4\01\00\00"+
+ "\037\u0197\01\00\00\040\u01b0\01\00\00\041\u01a5\01\00\00\041\u01a9"+
+ "\01\00\00\042\u01bc\01\00\00\043\u019f\01\00\00\044\u01c8\01\00\00"+
+ "\045\u0121\01\00\00\045\u020d\01\00\00\045\u0279\01\00\00\046\u01ca"+
+ "\01\00\00\047\u01c5\01\00\00\047\u03cd\01\00\00\050\u01dc\01\00\00"+
+ "\051\u0161\01\00\00\051\u018f\01\00\00\051\u01d7\01\00\00\051\u0739"+
+ "\01\00\00\052\u01e6\01\00\00\053\u0165\01\00\00\053\u01b9\01\00\00"+
+ "\053\u0733\01\00\00\054\u01f0\01\00\00\055\u01db\01\00\00\056\u0204"+
+ "\01\00\00\057\u01bf\01\00\00\057\u01e9\01\00\00\060\u020e\01\00\00"+
+ "\061\u0203\01\00\00\062\u0252\01\00\00\063\u0209\01\00\00\064\u0254"+
+ "\01\00\00\065\u0207\01\00\00\066\u0264\01\00\00\067\u0259\01\00\00"+
+ "\067\u025d\01\00\00\067\u02a5\01\00\00\067\u02a9\01\00\00\067\u0403"+
+ "\01\00\00\067\u0407\01\00\00\070\u027e\01\00\00\071\u01f3\01\00\00"+
+ "\072\u0280\01\00\00\073\u0277\01\00\00\074\u02a0\01\00\00\075\u0275"+
+ "\01\00\00\075\u03c9\01\00\00\076\u02c4\01\00\00\077\u015b\01\00\00"+
+ "\077\u017d\01\00\00\077\u0181\01\00\00\077\u01dd\01\00\00\077\u01e1"+
+ "\01\00\00\077\u0235\01\00\00\077\u0257\01\00\00\077\u0287\01\00\00"+
+ "\077\u02a3\01\00\00\077\u02f9\01\00\00\077\u0303\01\00\00\077\u0335"+
+ "\01\00\00\077\u0343\01\00\00\077\u03d9\01\00\00\077\u0401\01\00\00"+
+ "\077\u04c3\01\00\00\077\u04d5\01\00\00\077\u0591\01\00\00\077\u061d"+
+ "\01\00\00\100\u02c6\01\00\00\101\u02b1\01\00\00\101\u06c3\01\00\00"+
+ "\101\u06c9\01\00\00\101\u071b\01\00\00\102\u02e8\01\00\00\103\u02bb"+
+ "\01\00\00\103\u0615\01\00\00\103\u064b\01\00\00\103\u071d\01\00\00"+
+ "\104\u02ea\01\00\00\105\u02c9\01\00\00\105\u02d1\01\00\00\105\u0665"+
+ "\01\00\00\105\u072b\01\00\00\106\u0306\01\00\00\107\u02ed\01\00\00"+
+ "\107\u02f1\01\00\00\110\u0308\01\00\00\111\u021d\01\00\00\111\u0249"+
+ "\01\00\00\111\u029b\01\00\00\112\u0312\01\00\00\113\u0219\01\00\00"+
+ "\113\u023d\01\00\00\113\u028f\01\00\00\114\u0330\01\00\00\115\u0315"+
+ "\01\00\00\116\u0332\01\00\00\117\u031d\01\00\00\117\u0321\01\00\00"+
+ "\117\u0327\01\00\00\120\u0340\01\00\00\121\u031b\01\00\00\121\u032f"+
+ "\01\00\00\122\u0364\01\00\00\123\u0223\01\00\00\124\u0366\01\00\00"+
+ "\125\u00e3\01\00\00\125\u0309\01\00\00\125\u030d\01\00\00\125\u0379"+
+ "\01\00\00\126\u0372\01\00\00\127\u00cd\01\00\00\127\u01af\01\00\00"+
+ "\130\u0376\01\00\00\131\u0125\01\00\00\131\u0143\01\00\00\131\u0371"+
+ "\01\00\00\131\u0399\01\00\00\132\u0386\01\00\00\133\u037d\01\00\00"+
+ "\134\u0390\01\00\00\135\u0387\01\00\00\135\u038b\01\00\00\136\u039c"+
+ "\01\00\00\137\u037f\01\00\00\137\u0395\01\00\00\137\u03a1\01\00\00"+
+ "\137\u03a5\01\00\00\137\u03e3\01\00\00\140\u039e\01\00\00\141\u039b"+
+ "\01\00\00\142\u03b2\01\00\00\143\u01c7\01\00\00\143\u03d1\01\00\00"+
+ "\144\u03bc\01\00\00\145\u03bb\01\00\00\146\u03d4\01\00\00\147\u03bf"+
+ "\01\00\00\150\u03d6\01\00\00\151\u03c7\01\00\00\152\u03e8\01\00\00"+
+ "\153\u0201\01\00\00\153\u024d\01\00\00\153\u040d\01\00\00\153\u0455"+
+ "\01\00\00\153\u049f\01\00\00\153\u04a5\01\00\00\153\u04ab\01\00\00"+
+ "\153\u04bf\01\00\00\154\u03f8\01\00\00\155\u0227\01\00\00\155\u03eb"+
+ "\01\00\00\155\u048b\01\00\00\156\u03fa\01\00\00\157\u03f3\01\00\00"+
+ "\160\u03fe\01\00\00\161\u03fb\01\00\00\161\u04fb\01\00\00\162\u0480"+
+ "\01\00\00\163\u03f7\01\00\00\163\u042b\01\00\00\163\u042f\01\00\00"+
+ "\163\u0439\01\00\00\163\u043d\01\00\00\163\u047d\01\00\00\163\u04df"+
+ "\01\00\00\163\u04f7\01\00\00\164\u0484\01\00\00\165\u044d\01\00\00"+
+ "\166\u0488\01\00\00\167\u0483\01\00\00\170\u049a\01\00\00\171\u0489"+
+ "\01\00\00\172\u049c\01\00\00\173\u0445\01\00\00\174\u04ae\01\00\00"+
+ "\175\u04a1\01\00\00\175\u04a7\01\00\00\176\u04b6\01\00\00\177\u04af"+
+ "\01\00\00\177\u04b1\01\00\00\u0080\u04c0\01\00\00\u0081\u04bb\01\00"+
+ "\00\u0082\u04f8\01\00\00\u0083\u0433\01\00\00\u0084\u04fe\01\00\00"+
+ "\u0085\u04e5\01\00\00\u0086\u0500\01\00\00\u0087\u0429\01\00\00\u0087"+
+ "\u0437\01\00\00\u0087\u0441\01\00\00\u0087\u0449\01\00\00\u0087\u0453"+
+ "\01\00\00\u0087\u0625\01\00\00\u0088\u0506\01\00\00\u0089\u04f1\01"+
+ "\00\00\u0089\u04fd\01\00\00\u0089\u073f\01\00\00\u008a\u0510\01\00"+
+ "\00\u008b\u0411\01\00\00\u008b\u0415\01\00\00\u008b\u041d\01\00\00"+
+ "\u008b\u0421\01\00\00\u008b\u0459\01\00\00\u008b\u0461\01\00\00\u008b"+
+ "\u0475\01\00\00\u008b\u0493\01\00\00\u008b\u04db\01\00\00\u008b\u04eb"+
+ "\01\00\00\u008b\u0503\01\00\00\u008b\u0507\01\00\00\u008b\u050b\01"+
+ "\00\00\u008b\u0515\01\00\00\u008b\u0545\01\00\00\u008b\u067f\01\00"+
+ "\00\u008b\u06b9\01\00\00\u008b\u06e9\01\00\00\u008b\u06ef\01\00\00"+
+ "\u008b\u0703\01\00\00\u008c\u053e\01\00\00\u008d\u0513\01\00\00\u008e"+
+ "\u0540\01\00\00\u008f\u0397\01\00\00\u008f\u0511\01\00\00\u008f\u0549"+
+ "\01\00\00\u0090\u054c\01\00\00\u0091\u0541\01\00\00\u0092\u0556\01"+
+ "\00\00\u0093\u054d\01\00\00\u0093\u0551\01\00\00\u0094\u0560\01\00"+
+ "\00\u0095\u0557\01\00\00\u0095\u055b\01\00\00\u0096\u056a\01\00\00"+
+ "\u0097\u0561\01\00\00\u0097\u0565\01\00\00\u0098\u0574\01\00\00\u0099"+
+ "\u056b\01\00\00\u0099\u056f\01\00\00\u009a\u057e\01\00\00\u009b\u0575"+
+ "\01\00\00\u009b\u0579\01\00\00\u009c\u058c\01\00\00\u009d\u057f\01"+
+ "\00\00\u009d\u0587\01\00\00\u009e\u0594\01\00\00\u009f\u058d\01\00"+
+ "\00\u00a0\u05aa\01\00\00\u00a1\u0597\01\00\00\u00a2\u05ac\01\00\00"+
+ "\u00a3\u0595\01\00\00\u00a3\u0599\01\00\00\u00a4\u05c4\01\00\00\u00a5"+
+ "\u05af\01\00\00\u00a6\u05c6\01\00\00\u00a7\u05ad\01\00\00\u00a7\u05b1"+
+ "\01\00\00\u00a8\u05d4\01\00\00\u00a9\u05c7\01\00\00\u00a9\u05cf\01"+
+ "\00\00\u00aa\u05f6\01\00\00\u00ab\u05d5\01\00\00\u00ab\u05df\01\00"+
+ "\00\u00ab\u05e7\01\00\00\u00ab\u05eb\01\00\00\u00ab\u05ef\01\00\00"+
+ "\u00ab\u05f3\01\00\00\u00ab\u05fb\01\00\00\u00ab\u05ff\01\00\00\u00ab"+
+ "\u0619\01\00\00\u00ac\u0610\01\00\00\u00ad\u05f5\01\00\00\u00ad\u0621"+
+ "\01\00\00\u00ae\u0622\01\00\00\u00af\u0601\01\00\00\u00b0\u065e\01"+
+ "\00\00\u00b1\u0357\01\00\00\u00b1\u0603\01\00\00\u00b2\u066e\01\00"+
+ "\00\u00b3\u0645\01\00\00\u00b3\u06b3\01\00\00\u00b4\u06a0\01\00\00"+
+ "\u00b5\u0631\01\00\00\u00b5\u063f\01\00\00\u00b6\u06bc\01\00\00\u00b7"+
+ "\u0605\01\00\00\u00b8\u06ce\01\00\00\u00b9\u0649\01\00\00\u00ba\u06fe"+
+ "\01\00\00\u00bb\u06cd\01\00\00\u00bc\u0704\01\00\00\u00bd\u0271\01"+
+ "\00\00\u00bd\u0709\01\00\00\u00bd\u070d\01\00\00\u00be\u0706\01\00"+
+ "\00\u00bf\u06e1\01\00\00\u00bf\u0701\01\00\00\u00c0\u071e\01\00\00"+
+ "\u00c1\u06d3\01\00\00\u00c1\u06e5\01\00\00\u00c2\u0720\01\00\00\u00c3"+
+ "\u069f\01\00\00\u00c3\u06b5\01\00\00\u00c4\u0730\01\00\00\u00c5\u06c5"+
+ "\01\00\00\u00c5\u06cb\01\00\00\u00c5\u072f\01\00\00\u00c6\u0736\01"+
+ "\00\00\u00c7\u0349\01\00\00\u00c7\u035b\01\00\00\u00c7\u068f\01\00"+
+ "\00\u00c7\u06c1\01\00\00\u00c7\u0725\01\00\00\u00c8\u073c\01\00\00"+
+ "\u00c9\u01b5\01\00\00\u00c9\u0353\01\00\00\u00c9\u0361\01\00\00\u00c9"+
+ "\u0661\01\00\00\u00c9\u066b\01\00\00\u00c9\u0687\01\00\00\u00c9\u0693"+
+ "\01\00\00\u00c9\u069d\01\00\00\u00c9\u06a7\01\00\00\u00c9\u0731\01"+
+ "\00\00\u00ca\u0756\01\00\00\u00cb\u0647\01\00\00\u00cc\u00cd\03\126"+
+ "\054\u00cd\u00cf\01\00\00\u00ce\u00cc\01\00\00\u00ce\u00cf\01\00\00"+
+ "\u00cf\u00d0\01\00\00\u00d0\u00d1\03\02\02\u00d1\u00d3\01\00\00\u00d2"+
+ "\u00ce\01\00\00\u00d2\u00d3\01\00\00\u00d3\u00d6\01\00\00\u00d4\u00d5"+
+ "\03\04\03\u00d5\u00d7\01\00\00\u00d6\u00d4\01\00\00\u00d6\u00d9\01"+
+ "\00\00\u00d7\u00d8\01\00\00\u00d8\u00d6\01\00\00\u00d9\u00dc\01\00"+
+ "\00\u00da\u00db\03\010\05\u00db\u00dd\01\00\00\u00dc\u00da\01\00\00"+
+ "\u00dc\u00df\01\00\00\u00dd\u00de\01\00\00\u00de\u00dc\01\00\00\u00df"+
+ "\01\01\00\00\u00e0\u00e1\05\054\00\u00e1\u00e2\01\00\00\u00e2\u00e3"+
+ "\03\124\053\u00e3\u00e4\01\00\00\u00e4\u00e5\05\110\00\u00e5\03\01"+
+ "\00\00\u00e6\u00e7\05\045\00\u00e7\u00ea\01\00\00\u00e8\u00e9\05\062"+
+ "\00\u00e9\u00eb\01\00\00\u00ea\u00e8\01\00\00\u00ea\u00eb\01\00\00"+
+ "\u00eb\u00ec\01\00\00\u00ec\u00ed\05\152\00\u00ed\u00ee\01\00\00\u00ee"+
+ "\u00ef\05\112\00\u00ef\u00f0\01\00\00\u00f0\u00f1\05\130\00\u00f1"+
+ "\u00f2\01\00\00\u00f2\u00f3\05\110\00\u00f3\u010d\01\00\00\u00f4\u00f5"+
+ "\05\045\00\u00f5\u00f8\01\00\00\u00f6\u00f7\05\062\00\u00f7\u00f9"+
+ "\01\00\00\u00f8\u00f6\01\00\00\u00f8\u00f9\01\00\00\u00f9\u00fa\01"+
+ "\00\00\u00fa\u00fb\05\152\00\u00fb\u0100\01\00\00\u00fc\u00fd\05\112"+
+ "\00\u00fd\u00fe\01\00\00\u00fe\u00ff\05\152\00\u00ff\u0101\01\00\00"+
+ "\u0100\u00fc\01\00\00\u0101\u0102\01\00\00\u0102\u00fc\01\00\00\u0102"+
+ "\u0103\01\00\00\u0103\u0108\01\00\00\u0104\u0105\05\112\00\u0105\u0106"+
+ "\01\00\00\u0106\u0107\05\130\00\u0107\u0109\01\00\00\u0108\u0104\01"+
+ "\00\00\u0108\u0109\01\00\00\u0109\u010a\01\00\00\u010a\u010b\05\110"+
+ "\00\u010b\u010d\01\00\00\u010c\u00e6\01\00\00\u010c\u00f4\01\00\00"+
+ "\u010d\05\01\00\00\u010e\u010f\05\152\00\u010f\u0114\01\00\00\u0110"+
+ "\u0111\05\112\00\u0111\u0112\01\00\00\u0112\u0113\05\152\00\u0113"+
+ "\u0115\01\00\00\u0114\u0110\01\00\00\u0114\u0117\01\00\00\u0115\u0116"+
+ "\01\00\00\u0116\u0114\01\00\00\u0117\07\01\00\00\u0118\u0119\03\012"+
+ "\06\u0119\u011d\01\00\00\u011a\u011b\05\110\00\u011b\u011d\01\00\00"+
+ "\u011c\u0118\01\00\00\u011c\u011a\01\00\00\u011d\011\01\00\00\u011e"+
+ "\u011f\03\020\011\u011f\u0123\01\00\00\u0120\u0121\03\044\023\u0121"+
+ "\u0123\01\00\00\u0122\u011e\01\00\00\u0122\u0120\01\00\00\u0123\013"+
+ "\01\00\00\u0124\u0125\03\130\055\u0125\u013d\01\00\00\u0126\u0127"+
+ "\05\057\00\u0127\u013d\01\00\00\u0128\u0129\05\056\00\u0129\u013d"+
+ "\01\00\00\u012a\u012b\05\055\00\u012b\u013d\01\00\00\u012c\u012d\05"+
+ "\062\00\u012d\u013d\01\00\00\u012e\u012f\05\015\00\u012f\u013d\01"+
+ "\00\00\u0130\u0131\05\036\00\u0131\u013d\01\00\00\u0132\u0133\05\052"+
+ "\00\u0133\u013d\01\00\00\u0134\u0135\05\066\00\u0135\u013d\01\00\00"+
+ "\u0136\u0137\05\072\00\u0137\u013d\01\00\00\u0138\u0139\05\075\00"+
+ "\u0139\u013d\01\00\00\u013a\u013b\05\063\00\u013b\u013d\01\00\00\u013c"+
+ "\u0124\01\00\00\u013c\u0126\01\00\00\u013c\u0128\01\00\00\u013c\u012a"+
+ "\01\00\00\u013c\u012c\01\00\00\u013c\u012e\01\00\00\u013c\u0130\01"+
+ "\00\00\u013c\u0132\01\00\00\u013c\u0134\01\00\00\u013c\u0136\01\00"+
+ "\00\u013c\u0138\01\00\00\u013c\u013a\01\00\00\u013c\u013f\01\00\00"+
+ "\u013d\u013e\01\00\00\u013e\u013c\01\00\00\u013f\015\01\00\00\u0140"+
+ "\u0141\05\036\00\u0141\u0145\01\00\00\u0142\u0143\03\130\055\u0143"+
+ "\u0145\01\00\00\u0144\u0140\01\00\00\u0144\u0142\01\00\00\u0144\u0147"+
+ "\01\00\00\u0145\u0146\01\00\00\u0146\u0144\01\00\00\u0147\017\01\00"+
+ "\00\u0148\u0149\03\022\012\u0149\u014d\01\00\00\u014a\u014b\03\032"+
+ "\016\u014b\u014d\01\00\00\u014c\u0148\01\00\00\u014c\u014a\01\00\00"+
+ "\u014d\021\01\00\00\u014e\u014f\03\014\07\u014f\u0150\01\00\00\u0150"+
+ "\u0151\05\025\00\u0151\u0152\01\00\00\u0152\u0153\05\152\00\u0153"+
+ "\u0156\01\00\00\u0154\u0155\03\024\013\u0155\u0157\01\00\00\u0156"+
+ "\u0154\01\00\00\u0156\u0157\01\00\00\u0157\u015c\01\00\00\u0158\u0159"+
+ "\05\035\00\u0159\u015a\01\00\00\u015a\u015b\03\076\040\u015b\u015d"+
+ "\01\00\00\u015c\u0158\01\00\00\u015c\u015d\01\00\00\u015d\u0162\01"+
+ "\00\00\u015e\u015f\05\044\00\u015f\u0160\01\00\00\u0160\u0161\03\050"+
+ "\025\u0161\u0163\01\00\00\u0162\u015e\01\00\00\u0162\u0163\01\00\00"+
+ "\u0163\u0164\01\00\00\u0164\u0165\03\052\026\u0165\023\01\00\00\u0166"+
+ "\u0167\05\150\00\u0167\u0168\01\00\00\u0168\u0169\03\026\014\u0169"+
+ "\u016e\01\00\00\u016a\u016b\05\111\00\u016b\u016c\01\00\00\u016c\u016d"+
+ "\03\026\014\u016d\u016f\01\00\00\u016e\u016a\01\00\00\u016e\u0171"+
+ "\01\00\00\u016f\u0170\01\00\00\u0170\u016e\01\00\00\u0171\u0172\01"+
+ "\00\00\u0172\u0173\05\151\00\u0173\025\01\00\00\u0174\u0175\05\152"+
+ "\00\u0175\u017a\01\00\00\u0176\u0177\05\035\00\u0177\u0178\01\00\00"+
+ "\u0178\u0179\03\030\015\u0179\u017b\01\00\00\u017a\u0176\01\00\00"+
+ "\u017a\u017b\01\00\00\u017b\027\01\00\00\u017c\u017d\03\076\040\u017d"+
+ "\u0182\01\00\00\u017e\u017f\05\132\00\u017f\u0180\01\00\00\u0180\u0181"+
+ "\03\076\040\u0181\u0183\01\00\00\u0182\u017e\01\00\00\u0182\u0185"+
+ "\01\00\00\u0183\u0184\01\00\00\u0184\u0182\01\00\00\u0185\031\01\00"+
+ "\00\u0186\u0187\03\014\07\u0187\u0188\01\00\00\u0188\u0189\05\034"+
+ "\00\u0189\u018a\01\00\00\u018a\u018b\05\152\00\u018b\u0190\01\00\00"+
+ "\u018c\u018d\05\044\00\u018d\u018e\01\00\00\u018e\u018f\03\050\025"+
+ "\u018f\u0191\01\00\00\u0190\u018c\01\00\00\u0190\u0191\01\00\00\u0191"+
+ "\u0192\01\00\00\u0192\u0193\03\034\017\u0193\033\01\00\00\u0194\u0195"+
+ "\05\104\00\u0195\u0198\01\00\00\u0196\u0197\03\036\020\u0197\u0199"+
+ "\01\00\00\u0198\u0196\01\00\00\u0198\u0199\01\00\00\u0199\u019c\01"+
+ "\00\00\u019a\u019b\05\111\00\u019b\u019d\01\00\00\u019c\u019a\01\00"+
+ "\00\u019c\u019d\01\00\00\u019d\u01a0\01\00\00\u019e\u019f\03\042\022"+
+ "\u019f\u01a1\01\00\00\u01a0\u019e\01\00\00\u01a0\u01a1\01\00\00\u01a1"+
+ "\u01a2\01\00\00\u01a2\u01a3\05\105\00\u01a3\035\01\00\00\u01a4\u01a5"+
+ "\03\040\021\u01a5\u01aa\01\00\00\u01a6\u01a7\05\111\00\u01a7\u01a8"+
+ "\01\00\00\u01a8\u01a9\03\040\021\u01a9\u01ab\01\00\00\u01aa\u01a6"+
+ "\01\00\00\u01aa\u01ad\01\00\00\u01ab\u01ac\01\00\00\u01ac\u01aa\01"+
+ "\00\00\u01ad\037\01\00\00\u01ae\u01af\03\126\054\u01af\u01b1\01\00"+
+ "\00\u01b0\u01ae\01\00\00\u01b0\u01b1\01\00\00\u01b1\u01b2\01\00\00"+
+ "\u01b2\u01b3\05\152\00\u01b3\u01b6\01\00\00\u01b4\u01b5\03\u00c8\145"+
+ "\u01b5\u01b7\01\00\00\u01b6\u01b4\01\00\00\u01b6\u01b7\01\00\00\u01b7"+
+ "\u01ba\01\00\00\u01b8\u01b9\03\052\026\u01b9\u01bb\01\00\00\u01ba"+
+ "\u01b8\01\00\00\u01ba\u01bb\01\00\00\u01bb\041\01\00\00\u01bc\u01bd"+
+ "\05\110\00\u01bd\u01c0\01\00\00\u01be\u01bf\03\056\030\u01bf\u01c1"+
+ "\01\00\00\u01c0\u01be\01\00\00\u01c0\u01c3\01\00\00\u01c1\u01c2\01"+
+ "\00\00\u01c2\u01c0\01\00\00\u01c3\043\01\00\00\u01c4\u01c5\03\046"+
+ "\024\u01c5\u01c9\01\00\00\u01c6\u01c7\03\142\062\u01c7\u01c9\01\00"+
+ "\00\u01c8\u01c4\01\00\00\u01c8\u01c6\01\00\00\u01c9\045\01\00\00\u01ca"+
+ "\u01cb\03\014\07\u01cb\u01cc\01\00\00\u01cc\u01cd\05\050\00\u01cd"+
+ "\u01ce\01\00\00\u01ce\u01cf\05\152\00\u01cf\u01d2\01\00\00\u01d0\u01d1"+
+ "\03\024\013\u01d1\u01d3\01\00\00\u01d2\u01d0\01\00\00\u01d2\u01d3"+
+ "\01\00\00\u01d3\u01d8\01\00\00\u01d4\u01d5\05\035\00\u01d5\u01d6\01"+
+ "\00\00\u01d6\u01d7\03\050\025\u01d7\u01d9\01\00\00\u01d8\u01d4\01"+
+ "\00\00\u01d8\u01d9\01\00\00\u01d9\u01da\01\00\00\u01da\u01db\03\054"+
+ "\027\u01db\047\01\00\00\u01dc\u01dd\03\076\040\u01dd\u01e2\01\00\00"+
+ "\u01de\u01df\05\111\00\u01df\u01e0\01\00\00\u01e0\u01e1\03\076\040"+
+ "\u01e1\u01e3\01\00\00\u01e2\u01de\01\00\00\u01e2\u01e5\01\00\00\u01e3"+
+ "\u01e4\01\00\00\u01e4\u01e2\01\00\00\u01e5\051\01\00\00\u01e6\u01e7"+
+ "\05\104\00\u01e7\u01ea\01\00\00\u01e8\u01e9\03\056\030\u01e9\u01eb"+
+ "\01\00\00\u01ea\u01e8\01\00\00\u01ea\u01ed\01\00\00\u01eb\u01ec\01"+
+ "\00\00\u01ec\u01ea\01\00\00\u01ed\u01ee\01\00\00\u01ee\u01ef\05\105"+
+ "\00\u01ef\053\01\00\00\u01f0\u01f1\05\104\00\u01f1\u01f4\01\00\00"+
+ "\u01f2\u01f3\03\070\035\u01f3\u01f5\01\00\00\u01f4\u01f2\01\00\00"+
+ "\u01f4\u01f7\01\00\00\u01f5\u01f6\01\00\00\u01f6\u01f4\01\00\00\u01f7"+
+ "\u01f8\01\00\00\u01f8\u01f9\05\105\00\u01f9\055\01\00\00\u01fa\u01fb"+
+ "\05\110\00\u01fb\u0205\01\00\00\u01fc\u01fd\05\062\00\u01fd\u01ff"+
+ "\01\00\00\u01fe\u01fc\01\00\00\u01fe\u01ff\01\00\00\u01ff\u0200\01"+
+ "\00\00\u0200\u0201\03\152\066\u0201\u0205\01\00\00\u0202\u0203\03"+
+ "\060\031\u0203\u0205\01\00\00\u0204\u01fa\01\00\00\u0204\u01fe\01"+
+ "\00\00\u0204\u0202\01\00\00\u0205\057\01\00\00\u0206\u0207\03\064"+
+ "\033\u0207\u020f\01\00\00\u0208\u0209\03\062\032\u0209\u020f\01\00"+
+ "\00\u020a\u020b\03\020\011\u020b\u020f\01\00\00\u020c\u020d\03\044"+
+ "\023\u020d\u020f\01\00\00\u020e\u0206\01\00\00\u020e\u0208\01\00\00"+
+ "\u020e\u020a\01\00\00\u020e\u020c\01\00\00\u020f\061\01\00\00\u0210"+
+ "\u0211\03\014\07\u0211\u0214\01\00\00\u0212\u0213\03\024\013\u0213"+
+ "\u0215\01\00\00\u0214\u0212\01\00\00\u0214\u0215\01\00\00\u0215\u0216"+
+ "\01\00\00\u0216\u0217\05\152\00\u0217\u0218\01\00\00\u0218\u0219\03"+
+ "\112\046\u0219\u021e\01\00\00\u021a\u021b\05\071\00\u021b\u021c\01"+
+ "\00\00\u021c\u021d\03\110\045\u021d\u021f\01\00\00\u021e\u021a\01"+
+ "\00\00\u021e\u021f\01\00\00\u021f\u0220\01\00\00\u0220\u0221\05\104"+
+ "\00\u0221\u0224\01\00\00\u0222\u0223\03\122\052\u0223\u0225\01\00"+
+ "\00\u0224\u0222\01\00\00\u0224\u0225\01\00\00\u0225\u0228\01\00\00"+
+ "\u0226\u0227\03\154\067\u0227\u0229\01\00\00\u0228\u0226\01\00\00"+
+ "\u0228\u022b\01\00\00\u0229\u022a\01\00\00\u022a\u0228\01\00\00\u022b"+
+ "\u022c\01\00\00\u022c\u022d\05\105\00\u022d\u0253\01\00\00\u022e\u022f"+
+ "\03\014\07\u022f\u0232\01\00\00\u0230\u0231\03\024\013\u0231\u0233"+
+ "\01\00\00\u0232\u0230\01\00\00\u0232\u0233\01\00\00\u0233\u0238\01"+
+ "\00\00\u0234\u0235\03\076\040\u0235\u0239\01\00\00\u0236\u0237\05"+
+ "\074\00\u0237\u0239\01\00\00\u0238\u0234\01\00\00\u0238\u0236\01\00"+
+ "\00\u0239\u023a\01\00\00\u023a\u023b\05\152\00\u023b\u023c\01\00\00"+
+ "\u023c\u023d\03\112\046\u023d\u0242\01\00\00\u023e\u023f\05\106\00"+
+ "\u023f\u0240\01\00\00\u0240\u0241\05\107\00\u0241\u0243\01\00\00\u0242"+
+ "\u023e\01\00\00\u0242\u0245\01\00\00\u0243\u0244\01\00\00\u0244\u0242"+
+ "\01\00\00\u0245\u024a\01\00\00\u0246\u0247\05\071\00\u0247\u0248\01"+
+ "\00\00\u0248\u0249\03\110\045\u0249\u024b\01\00\00\u024a\u0246\01"+
+ "\00\00\u024a\u024b\01\00\00\u024b\u0250\01\00\00\u024c\u024d\03\152"+
+ "\066\u024d\u0251\01\00\00\u024e\u024f\05\110\00\u024f\u0251\01\00"+
+ "\00\u0250\u024c\01\00\00\u0250\u024e\01\00\00\u0251\u0253\01\00\00"+
+ "\u0252\u0210\01\00\00\u0252\u022e\01\00\00\u0253\063\01\00\00\u0254"+
+ "\u0255\03\014\07\u0255\u0256\01\00\00\u0256\u0257\03\076\040\u0257"+
+ "\u0258\01\00\00\u0258\u0259\03\066\034\u0259\u025e\01\00\00\u025a"+
+ "\u025b\05\111\00\u025b\u025c\01\00\00\u025c\u025d\03\066\034\u025d"+
+ "\u025f\01\00\00\u025e\u025a\01\00\00\u025e\u0261\01\00\00\u025f\u0260"+
+ "\01\00\00\u0260\u025e\01\00\00\u0261\u0262\01\00\00\u0262\u0263\05"+
+ "\110\00\u0263\065\01\00\00\u0264\u0265\05\152\00\u0265\u026a\01\00"+
+ "\00\u0266\u0267\05\106\00\u0267\u0268\01\00\00\u0268\u0269\05\107"+
+ "\00\u0269\u026b\01\00\00\u026a\u0266\01\00\00\u026a\u026d\01\00\00"+
+ "\u026b\u026c\01\00\00\u026c\u026a\01\00\00\u026d\u0272\01\00\00\u026e"+
+ "\u026f\05\114\00\u026f\u0270\01\00\00\u0270\u0271\03\u00bc\137\u0271"+
+ "\u0273\01\00\00\u0272\u026e\01\00\00\u0272\u0273\01\00\00\u0273\067"+
+ "\01\00\00\u0274\u0275\03\074\037\u0275\u027f\01\00\00\u0276\u0277"+
+ "\03\072\036\u0277\u027f\01\00\00\u0278\u0279\03\044\023\u0279\u027f"+
+ "\01\00\00\u027a\u027b\03\020\011\u027b\u027f\01\00\00\u027c\u027d"+
+ "\05\110\00\u027d\u027f\01\00\00\u027e\u0274\01\00\00\u027e\u0276\01"+
+ "\00\00\u027e\u0278\01\00\00\u027e\u027a\01\00\00\u027e\u027c\01\00"+
+ "\00\u027f\071\01\00\00\u0280\u0281\03\014\07\u0281\u0284\01\00\00"+
+ "\u0282\u0283\03\024\013\u0283\u0285\01\00\00\u0284\u0282\01\00\00"+
+ "\u0284\u0285\01\00\00\u0285\u028a\01\00\00\u0286\u0287\03\076\040"+
+ "\u0287\u028b\01\00\00\u0288\u0289\05\074\00\u0289\u028b\01\00\00\u028a"+
+ "\u0286\01\00\00\u028a\u0288\01\00\00\u028b\u028c\01\00\00\u028c\u028d"+
+ "\05\152\00\u028d\u028e\01\00\00\u028e\u028f\03\112\046\u028f\u0294"+
+ "\01\00\00\u0290\u0291\05\106\00\u0291\u0292\01\00\00\u0292\u0293\05"+
+ "\107\00\u0293\u0295\01\00\00\u0294\u0290\01\00\00\u0294\u0297\01\00"+
+ "\00\u0295\u0296\01\00\00\u0296\u0294\01\00\00\u0297\u029c\01\00\00"+
+ "\u0298\u0299\05\071\00\u0299\u029a\01\00\00\u029a\u029b\03\110\045"+
+ "\u029b\u029d\01\00\00\u029c\u0298\01\00\00\u029c\u029d\01\00\00\u029d"+
+ "\u029e\01\00\00\u029e\u029f\05\110\00\u029f\073\01\00\00\u02a0\u02a1"+
+ "\03\014\07\u02a1\u02a2\01\00\00\u02a2\u02a3\03\076\040\u02a3\u02a4"+
+ "\01\00\00\u02a4\u02a5\03\066\034\u02a5\u02aa\01\00\00\u02a6\u02a7"+
+ "\05\111\00\u02a7\u02a8\01\00\00\u02a8\u02a9\03\066\034\u02a9\u02ab"+
+ "\01\00\00\u02aa\u02a6\01\00\00\u02aa\u02ad\01\00\00\u02ab\u02ac\01"+
+ "\00\00\u02ac\u02aa\01\00\00\u02ad\u02ae\01\00\00\u02ae\u02af\05\110"+
+ "\00\u02af\075\01\00\00\u02b0\u02b1\03\100\041\u02b1\u02b6\01\00\00"+
+ "\u02b2\u02b3\05\106\00\u02b3\u02b4\01\00\00\u02b4\u02b5\05\107\00"+
+ "\u02b5\u02b7\01\00\00\u02b6\u02b2\01\00\00\u02b6\u02b9\01\00\00\u02b7"+
+ "\u02b8\01\00\00\u02b8\u02b6\01\00\00\u02b9\u02c5\01\00\00\u02ba\u02bb"+
+ "\03\102\042\u02bb\u02c0\01\00\00\u02bc\u02bd\05\106\00\u02bd\u02be"+
+ "\01\00\00\u02be\u02bf\05\107\00\u02bf\u02c1\01\00\00\u02c0\u02bc\01"+
+ "\00\00\u02c0\u02c3\01\00\00\u02c1\u02c2\01\00\00\u02c2\u02c0\01\00"+
+ "\00\u02c3\u02c5\01\00\00\u02c4\u02b0\01\00\00\u02c4\u02ba\01\00\00"+
+ "\u02c5\077\01\00\00\u02c6\u02c7\05\152\00\u02c7\u02ca\01\00\00\u02c8"+
+ "\u02c9\03\104\043\u02c9\u02cb\01\00\00\u02ca\u02c8\01\00\00\u02ca"+
+ "\u02cb\01\00\00\u02cb\u02d4\01\00\00\u02cc\u02cd\05\112\00\u02cd\u02ce"+
+ "\01\00\00\u02ce\u02cf\05\152\00\u02cf\u02d2\01\00\00\u02d0\u02d1\03"+
+ "\104\043\u02d1\u02d3\01\00\00\u02d2\u02d0\01\00\00\u02d2\u02d3\01"+
+ "\00\00\u02d3\u02d5\01\00\00\u02d4\u02cc\01\00\00\u02d4\u02d7\01\00"+
+ "\00\u02d5\u02d6\01\00\00\u02d6\u02d4\01\00\00\u02d7\101\01\00\00\u02d8"+
+ "\u02d9\05\017\00\u02d9\u02e9\01\00\00\u02da\u02db\05\024\00\u02db"+
+ "\u02e9\01\00\00\u02dc\u02dd\05\021\00\u02dd\u02e9\01\00\00\u02de\u02df"+
+ "\05\061\00\u02df\u02e9\01\00\00\u02e0\u02e1\05\047\00\u02e1\u02e9"+
+ "\01\00\00\u02e2\u02e3\05\051\00\u02e3\u02e9\01\00\00\u02e4\u02e5\05"+
+ "\040\00\u02e5\u02e9\01\00\00\u02e6\u02e7\05\032\00\u02e7\u02e9\01"+
+ "\00\00\u02e8\u02d8\01\00\00\u02e8\u02da\01\00\00\u02e8\u02dc\01\00"+
+ "\00\u02e8\u02de\01\00\00\u02e8\u02e0\01\00\00\u02e8\u02e2\01\00\00"+
+ "\u02e8\u02e4\01\00\00\u02e8\u02e6\01\00\00\u02e9\103\01\00\00\u02ea"+
+ "\u02eb\05\150\00\u02eb\u02ec\01\00\00\u02ec\u02ed\03\106\044\u02ed"+
+ "\u02f2\01\00\00\u02ee\u02ef\05\111\00\u02ef\u02f0\01\00\00\u02f0\u02f1"+
+ "\03\106\044\u02f1\u02f3\01\00\00\u02f2\u02ee\01\00\00\u02f2\u02f5"+
+ "\01\00\00\u02f3\u02f4\01\00\00\u02f4\u02f2\01\00\00\u02f5\u02f6\01"+
+ "\00\00\u02f6\u02f7\05\151\00\u02f7\105\01\00\00\u02f8\u02f9\03\076"+
+ "\040\u02f9\u0307\01\00\00\u02fa\u02fb\05\117\00\u02fb\u0304\01\00"+
+ "\00\u02fc\u02fd\05\035\00\u02fd\u0301\01\00\00\u02fe\u02ff\05\064"+
+ "\00\u02ff\u0301\01\00\00\u0300\u02fc\01\00\00\u0300\u02fe\01\00\00"+
+ "\u0301\u0302\01\00\00\u0302\u0303\03\076\040\u0303\u0305\01\00\00"+
+ "\u0304\u0300\01\00\00\u0304\u0305\01\00\00\u0305\u0307\01\00\00\u0306"+
+ "\u02f8\01\00\00\u0306\u02fa\01\00\00\u0307\107\01\00\00\u0308\u0309"+
+ "\03\124\053\u0309\u030e\01\00\00\u030a\u030b\05\111\00\u030b\u030c"+
+ "\01\00\00\u030c\u030d\03\124\053\u030d\u030f\01\00\00\u030e\u030a"+
+ "\01\00\00\u030e\u0311\01\00\00\u030f\u0310\01\00\00\u0310\u030e\01"+
+ "\00\00\u0311\111\01\00\00\u0312\u0313\05\102\00\u0313\u0316\01\00"+
+ "\00\u0314\u0315\03\114\047\u0315\u0317\01\00\00\u0316\u0314\01\00"+
+ "\00\u0316\u0317\01\00\00\u0317\u0318\01\00\00\u0318\u0319\05\103\00"+
+ "\u0319\113\01\00\00\u031a\u031b\03\120\051\u031b\u0331\01\00\00\u031c"+
+ "\u031d\03\116\050\u031d\u0322\01\00\00\u031e\u031f\05\111\00\u031f"+
+ "\u0320\01\00\00\u0320\u0321\03\116\050\u0321\u0323\01\00\00\u0322"+
+ "\u031e\01\00\00\u0322\u0325\01\00\00\u0323\u0324\01\00\00\u0324\u0322"+
+ "\01\00\00\u0325\u0331\01\00\00\u0326\u0327\03\116\050\u0327\u0328"+
+ "\01\00\00\u0328\u0329\05\111\00\u0329\u032b\01\00\00\u032a\u0326\01"+
+ "\00\00\u032b\u032c\01\00\00\u032c\u0326\01\00\00\u032c\u032d\01\00"+
+ "\00\u032d\u032e\01\00\00\u032e\u032f\03\120\051\u032f\u0331\01\00"+
+ "\00\u0330\u031a\01\00\00\u0330\u031c\01\00\00\u0330\u032a\01\00\00"+
+ "\u0331\115\01\00\00\u0332\u0333\03\016\010\u0333\u0334\01\00\00\u0334"+
+ "\u0335\03\076\040\u0335\u0336\01\00\00\u0336\u0337\05\152\00\u0337"+
+ "\u033c\01\00\00\u0338\u0339\05\106\00\u0339\u033a\01\00\00\u033a\u033b"+
+ "\05\107\00\u033b\u033d\01\00\00\u033c\u0338\01\00\00\u033c\u033f\01"+
+ "\00\00\u033d\u033e\01\00\00\u033e\u033c\01\00\00\u033f\117\01\00\00"+
+ "\u0340\u0341\03\016\010\u0341\u0342\01\00\00\u0342\u0343\03\076\040"+
+ "\u0343\u0344\01\00\00\u0344\u0345\05\113\00\u0345\u0346\01\00\00\u0346"+
+ "\u0347\05\152\00\u0347\121\01\00\00\u0348\u0349\03\u00c6\144\u0349"+
+ "\u034b\01\00\00\u034a\u0348\01\00\00\u034a\u034b\01\00\00\u034b\u0350"+
+ "\01\00\00\u034c\u034d\05\067\00\u034d\u0351\01\00\00\u034e\u034f\05"+
+ "\064\00\u034f\u0351\01\00\00\u0350\u034c\01\00\00\u0350\u034e\01\00"+
+ "\00\u0351\u0352\01\00\00\u0352\u0353\03\u00c8\145\u0353\u0354\01\00"+
+ "\00\u0354\u0355\05\110\00\u0355\u0365\01\00\00\u0356\u0357\03\u00b0"+
+ "\131\u0357\u0358\01\00\00\u0358\u0359\05\112\00\u0359\u035c\01\00"+
+ "\00\u035a\u035b\03\u00c6\144\u035b\u035d\01\00\00\u035c\u035a\01\00"+
+ "\00\u035c\u035d\01\00\00\u035d\u035e\01\00\00\u035e\u035f\05\064\00"+
+ "\u035f\u0360\01\00\00\u0360\u0361\03\u00c8\145\u0361\u0362\01\00\00"+
+ "\u0362\u0363\05\110\00\u0363\u0365\01\00\00\u0364\u034a\01\00\00\u0364"+
+ "\u0356\01\00\00\u0365\123\01\00\00\u0366\u0367\05\152\00\u0367\u036c"+
+ "\01\00\00\u0368\u0369\05\112\00\u0369\u036a\01\00\00\u036a\u036b\05"+
+ "\152\00\u036b\u036d\01\00\00\u036c\u0368\01\00\00\u036c\u036f\01\00"+
+ "\00\u036d\u036e\01\00\00\u036e\u036c\01\00\00\u036f\125\01\00\00\u0370"+
+ "\u0371\03\130\055\u0371\u0373\01\00\00\u0372\u0370\01\00\00\u0373"+
+ "\u0374\01\00\00\u0374\u0370\01\00\00\u0374\u0375\01\00\00\u0375\127"+
+ "\01\00\00\u0376\u0377\05\146\00\u0377\u0378\01\00\00\u0378\u0379\03"+
+ "\124\053\u0379\u0384\01\00\00\u037a\u037b\05\102\00\u037b\u0380\01"+
+ "\00\00\u037c\u037d\03\132\056\u037d\u0381\01\00\00\u037e\u037f\03"+
+ "\136\060\u037f\u0381\01\00\00\u0380\u037c\01\00\00\u0380\u037e\01"+
+ "\00\00\u0380\u0381\01\00\00\u0381\u0382\01\00\00\u0382\u0383\05\103"+
+ "\00\u0383\u0385\01\00\00\u0384\u037a\01\00\00\u0384\u0385\01\00\00"+
+ "\u0385\131\01\00\00\u0386\u0387\03\134\057\u0387\u038c\01\00\00\u0388"+
+ "\u0389\05\111\00\u0389\u038a\01\00\00\u038a\u038b\03\134\057\u038b"+
+ "\u038d\01\00\00\u038c\u0388\01\00\00\u038c\u038f\01\00\00\u038d\u038e"+
+ "\01\00\00\u038e\u038c\01\00\00\u038f\133\01\00\00\u0390\u0391\05\152"+
+ "\00\u0391\u0392\01\00\00\u0392\u0393\05\114\00\u0393\u0394\01\00\00"+
+ "\u0394\u0395\03\136\060\u0395\135\01\00\00\u0396\u0397\03\u008e\110"+
+ "\u0397\u039d\01\00\00\u0398\u0399\03\130\055\u0399\u039d\01\00\00"+
+ "\u039a\u039b\03\140\061\u039b\u039d\01\00\00\u039c\u0396\01\00\00"+
+ "\u039c\u0398\01\00\00\u039c\u039a\01\00\00\u039d\137\01\00\00\u039e"+
+ "\u039f\05\104\00\u039f\u03aa\01\00\00\u03a0\u03a1\03\136\060\u03a1"+
+ "\u03a6\01\00\00\u03a2\u03a3\05\111\00\u03a3\u03a4\01\00\00\u03a4\u03a5"+
+ "\03\136\060\u03a5\u03a7\01\00\00\u03a6\u03a2\01\00\00\u03a6\u03a9"+
+ "\01\00\00\u03a7\u03a8\01\00\00\u03a8\u03a6\01\00\00\u03a9\u03ab\01"+
+ "\00\00\u03aa\u03a0\01\00\00\u03aa\u03ab\01\00\00\u03ab\u03ae\01\00"+
+ "\00\u03ac\u03ad\05\111\00\u03ad\u03af\01\00\00\u03ae\u03ac\01\00\00"+
+ "\u03ae\u03af\01\00\00\u03af\u03b0\01\00\00\u03b0\u03b1\05\105\00\u03b1"+
+ "\141\01\00\00\u03b2\u03b3\03\014\07\u03b3\u03b4\01\00\00\u03b4\u03b5"+
+ "\05\146\00\u03b5\u03b6\01\00\00\u03b6\u03b7\05\050\00\u03b7\u03b8"+
+ "\01\00\00\u03b8\u03b9\05\152\00\u03b9\u03ba\01\00\00\u03ba\u03bb\03"+
+ "\144\063\u03bb\143\01\00\00\u03bc\u03bd\05\104\00\u03bd\u03c0\01\00"+
+ "\00\u03be\u03bf\03\146\064\u03bf\u03c1\01\00\00\u03c0\u03be\01\00"+
+ "\00\u03c0\u03c3\01\00\00\u03c1\u03c2\01\00\00\u03c2\u03c0\01\00\00"+
+ "\u03c3\u03c4\01\00\00\u03c4\u03c5\05\105\00\u03c5\145\01\00\00\u03c6"+
+ "\u03c7\03\150\065\u03c7\u03d5\01\00\00\u03c8\u03c9\03\074\037\u03c9"+
+ "\u03d5\01\00\00\u03ca\u03cb\03\022\012\u03cb\u03d5\01\00\00\u03cc"+
+ "\u03cd\03\046\024\u03cd\u03d5\01\00\00\u03ce\u03cf\03\032\016\u03cf"+
+ "\u03d5\01\00\00\u03d0\u03d1\03\142\062\u03d1\u03d5\01\00\00\u03d2"+
+ "\u03d3\05\110\00\u03d3\u03d5\01\00\00\u03d4\u03c6\01\00\00\u03d4\u03c8"+
+ "\01\00\00\u03d4\u03ca\01\00\00\u03d4\u03cc\01\00\00\u03d4\u03ce\01"+
+ "\00\00\u03d4\u03d0\01\00\00\u03d4\u03d2\01\00\00\u03d5\147\01\00\00"+
+ "\u03d6\u03d7\03\014\07\u03d7\u03d8\01\00\00\u03d8\u03d9\03\076\040"+
+ "\u03d9\u03da\01\00\00\u03da\u03db\05\152\00\u03db\u03dc\01\00\00\u03dc"+
+ "\u03dd\05\102\00\u03dd\u03de\01\00\00\u03de\u03df\05\103\00\u03df"+
+ "\u03e4\01\00\00\u03e0\u03e1\05\030\00\u03e1\u03e2\01\00\00\u03e2\u03e3"+
+ "\03\136\060\u03e3\u03e5\01\00\00\u03e4\u03e0\01\00\00\u03e4\u03e5"+
+ "\01\00\00\u03e5\u03e6\01\00\00\u03e6\u03e7\05\110\00\u03e7\151\01"+
+ "\00\00\u03e8\u03e9\05\104\00\u03e9\u03ec\01\00\00\u03ea\u03eb\03\154"+
+ "\067\u03eb\u03ed\01\00\00\u03ec\u03ea\01\00\00\u03ec\u03ef\01\00\00"+
+ "\u03ed\u03ee\01\00\00\u03ee\u03ec\01\00\00\u03ef\u03f0\01\00\00\u03f0"+
+ "\u03f1\05\105\00\u03f1\153\01\00\00\u03f2\u03f3\03\156\070\u03f3\u03f9"+
+ "\01\00\00\u03f4\u03f5\03\012\06\u03f5\u03f9\01\00\00\u03f6\u03f7\03"+
+ "\162\072\u03f7\u03f9\01\00\00\u03f8\u03f2\01\00\00\u03f8\u03f4\01"+
+ "\00\00\u03f8\u03f6\01\00\00\u03f9\155\01\00\00\u03fa\u03fb\03\160"+
+ "\071\u03fb\u03fc\01\00\00\u03fc\u03fd\05\110\00\u03fd\157\01\00\00"+
+ "\u03fe\u03ff\03\016\010\u03ff\u0400\01\00\00\u0400\u0401\03\076\040"+
+ "\u0401\u0402\01\00\00\u0402\u0403\03\066\034\u0403\u0408\01\00\00"+
+ "\u0404\u0405\05\111\00\u0405\u0406\01\00\00\u0406\u0407\03\066\034"+
+ "\u0407\u0409\01\00\00\u0408\u0404\01\00\00\u0408\u040b\01\00\00\u0409"+
+ "\u040a\01\00\00\u040a\u0408\01\00\00\u040b\161\01\00\00\u040c\u040d"+
+ "\03\152\066\u040d\u0481\01\00\00\u040e\u040f\05\016\00\u040f\u0410"+
+ "\01\00\00\u0410\u0411\03\u008a\106\u0411\u0416\01\00\00\u0412\u0413"+
+ "\05\120\00\u0413\u0414\01\00\00\u0414\u0415\03\u008a\106\u0415\u0417"+
+ "\01\00\00\u0416\u0412\01\00\00\u0416\u0417\01\00\00\u0417\u0418\01"+
+ "\00\00\u0418\u0419\05\110\00\u0419\u0481\01\00\00\u041a\u041b\05\016"+
+ "\00\u041b\u041c\01\00\00\u041c\u041d\03\u008a\106\u041d\u0422\01\00"+
+ "\00\u041e\u041f\05\120\00\u041f\u0420\01\00\00\u0420\u0421\03\u008a"+
+ "\106\u0421\u0423\01\00\00\u0422\u041e\01\00\00\u0422\u0423\01\00\00"+
+ "\u0423\u0424\01\00\00\u0424\u0425\05\110\00\u0425\u0481\01\00\00\u0426"+
+ "\u0427\05\043\00\u0427\u0428\01\00\00\u0428\u0429\03\u0086\104\u0429"+
+ "\u042a\01\00\00\u042a\u042b\03\162\072\u042b\u0430\01\00\00\u042c"+
+ "\u042d\05\033\00\u042d\u042e\01\00\00\u042e\u042f\03\162\072\u042f"+
+ "\u0431\01\00\00\u0430\u042c\01\00\00\u0430\u0431\01\00\00\u0431\u0481"+
+ "\01\00\00\u0432\u0433\03\u0082\102\u0433\u0481\01\00\00\u0434\u0435"+
+ "\05\076\00\u0435\u0436\01\00\00\u0436\u0437\03\u0086\104\u0437\u0438"+
+ "\01\00\00\u0438\u0439\03\162\072\u0439\u0481\01\00\00\u043a\u043b"+
+ "\05\031\00\u043b\u043c\01\00\00\u043c\u043d\03\162\072\u043d\u043e"+
+ "\01\00\00\u043e\u043f\05\076\00\u043f\u0440\01\00\00\u0440\u0441\03"+
+ "\u0086\104\u0441\u0442\01\00\00\u0442\u0443\05\110\00\u0443\u0481"+
+ "\01\00\00\u0444\u0445\03\172\076\u0445\u0481\01\00\00\u0446\u0447"+
+ "\05\065\00\u0447\u0448\01\00\00\u0448\u0449\03\u0086\104\u0449\u044a"+
+ "\01\00\00\u044a\u044b\05\104\00\u044b\u044c\01\00\00\u044c\u044d\03"+
+ "\164\073\u044d\u044e\01\00\00\u044e\u044f\05\105\00\u044f\u0481\01"+
+ "\00\00\u0450\u0451\05\066\00\u0451\u0452\01\00\00\u0452\u0453\03\u0086"+
+ "\104\u0453\u0454\01\00\00\u0454\u0455\03\152\066\u0455\u0481\01\00"+
+ "\00\u0456\u0457\05\060\00\u0457\u045a\01\00\00\u0458\u0459\03\u008a"+
+ "\106\u0459\u045b\01\00\00\u045a\u0458\01\00\00\u045a\u045b\01\00\00"+
+ "\u045b\u045c\01\00\00\u045c\u045d\05\110\00\u045d\u0481\01\00\00\u045e"+
+ "\u045f\05\070\00\u045f\u0460\01\00\00\u0460\u0461\03\u008a\106\u0461"+
+ "\u0462\01\00\00\u0462\u0463\05\110\00\u0463\u0481\01\00\00\u0464\u0465"+
+ "\05\020\00\u0465\u0468\01\00\00\u0466\u0467\05\152\00\u0467\u0469"+
+ "\01\00\00\u0468\u0466\01\00\00\u0468\u0469\01\00\00\u0469\u046a\01"+
+ "\00\00\u046a\u046b\05\110\00\u046b\u0481\01\00\00\u046c\u046d\05\027"+
+ "\00\u046d\u0470\01\00\00\u046e\u046f\05\152\00\u046f\u0471\01\00\00"+
+ "\u0470\u046e\01\00\00\u0470\u0471\01\00\00\u0471\u0472\01\00\00\u0472"+
+ "\u0473\05\110\00\u0473\u0481\01\00\00\u0474\u0475\03\u008a\106\u0475"+
+ "\u0476\01\00\00\u0476\u0477\05\110\00\u0477\u0481\01\00\00\u0478\u0479"+
+ "\05\152\00\u0479\u047a\01\00\00\u047a\u047b\05\120\00\u047b\u047c"+
+ "\01\00\00\u047c\u047d\03\162\072\u047d\u0481\01\00\00\u047e\u047f"+
+ "\05\110\00\u047f\u0481\01\00\00\u0480\u040c\01\00\00\u0480\u040e\01"+
+ "\00\00\u0480\u041a\01\00\00\u0480\u0426\01\00\00\u0480\u0432\01\00"+
+ "\00\u0480\u0434\01\00\00\u0480\u043a\01\00\00\u0480\u0444\01\00\00"+
+ "\u0480\u0446\01\00\00\u0480\u0450\01\00\00\u0480\u0456\01\00\00\u0480"+
+ "\u045e\01\00\00\u0480\u0464\01\00\00\u0480\u046c\01\00\00\u0480\u0474"+
+ "\01\00\00\u0480\u0478\01\00\00\u0480\u047e\01\00\00\u0481\163\01\00"+
+ "\00\u0482\u0483\03\166\074\u0483\u0485\01\00\00\u0484\u0482\01\00"+
+ "\00\u0484\u0487\01\00\00\u0485\u0486\01\00\00\u0486\u0484\01\00\00"+
+ "\u0487\165\01\00\00\u0488\u0489\03\170\075\u0489\u048c\01\00\00\u048a"+
+ "\u048b\03\154\067\u048b\u048d\01\00\00\u048c\u048a\01\00\00\u048c"+
+ "\u048f\01\00\00\u048d\u048e\01\00\00\u048e\u048c\01\00\00\u048f\167"+
+ "\01\00\00\u0490\u0491\05\022\00\u0491\u0492\01\00\00\u0492\u0493\03"+
+ "\u008a\106\u0493\u0494\01\00\00\u0494\u0495\05\120\00\u0495\u049b"+
+ "\01\00\00\u0496\u0497\05\030\00\u0497\u0498\01\00\00\u0498\u0499\05"+
+ "\120\00\u0499\u049b\01\00\00\u049a\u0490\01\00\00\u049a\u0496\01\00"+
+ "\00\u049b\171\01\00\00\u049c\u049d\05\073\00\u049d\u049e\01\00\00"+
+ "\u049e\u049f\03\152\066\u049f\u04ac\01\00\00\u04a0\u04a1\03\174\077"+
+ "\u04a1\u04a2\01\00\00\u04a2\u04a3\05\037\00\u04a3\u04a4\01\00\00\u04a4"+
+ "\u04a5\03\152\066\u04a5\u04ad\01\00\00\u04a6\u04a7\03\174\077\u04a7"+
+ "\u04ad\01\00\00\u04a8\u04a9\05\037\00\u04a9\u04aa\01\00\00\u04aa\u04ab"+
+ "\03\152\066\u04ab\u04ad\01\00\00\u04ac\u04a0\01\00\00\u04ac\u04a6"+
+ "\01\00\00\u04ac\u04a8\01\00\00\u04ad\173\01\00\00\u04ae\u04af\03\176"+
+ "\100\u04af\u04b2\01\00\00\u04b0\u04b1\03\176\100\u04b1\u04b3\01\00"+
+ "\00\u04b2\u04b0\01\00\00\u04b2\u04b5\01\00\00\u04b3\u04b4\01\00\00"+
+ "\u04b4\u04b2\01\00\00\u04b5\175\01\00\00\u04b6\u04b7\05\023\00\u04b7"+
+ "\u04b8\01\00\00\u04b8\u04b9\05\102\00\u04b9\u04ba\01\00\00\u04ba\u04bb"+
+ "\03\u0080\101\u04bb\u04bc\01\00\00\u04bc\u04bd\05\103\00\u04bd\u04be"+
+ "\01\00\00\u04be\u04bf\03\152\066\u04bf\177\01\00\00\u04c0\u04c1\03"+
+ "\016\010\u04c1\u04c2\01\00\00\u04c2\u04c3\03\076\040\u04c3\u04c4\01"+
+ "\00\00\u04c4\u04c5\05\152\00\u04c5\u04ca\01\00\00\u04c6\u04c7\05\106"+
+ "\00\u04c7\u04c8\01\00\00\u04c8\u04c9\05\107\00\u04c9\u04cb\01\00\00"+
+ "\u04ca\u04c6\01\00\00\u04ca\u04cd\01\00\00\u04cb\u04cc\01\00\00\u04cc"+
+ "\u04ca\01\00\00\u04cd\u0081\01\00\00\u04ce\u04cf\05\041\00\u04cf\u04d0"+
+ "\01\00\00\u04d0\u04d1\05\102\00\u04d1\u04d2\01\00\00\u04d2\u04d3\03"+
+ "\016\010\u04d3\u04d4\01\00\00\u04d4\u04d5\03\076\040\u04d5\u04d6\01"+
+ "\00\00\u04d6\u04d7\05\152\00\u04d7\u04d8\01\00\00\u04d8\u04d9\05\120"+
+ "\00\u04d9\u04da\01\00\00\u04da\u04db\03\u008a\106\u04db\u04dc\01\00"+
+ "\00\u04dc\u04dd\05\103\00\u04dd\u04de\01\00\00\u04de\u04df\03\162"+
+ "\072\u04df\u04f9\01\00\00\u04e0\u04e1\05\041\00\u04e1\u04e2\01\00"+
+ "\00\u04e2\u04e3\05\102\00\u04e3\u04e6\01\00\00\u04e4\u04e5\03\u0084"+
+ "\103\u04e5\u04e7\01\00\00\u04e6\u04e4\01\00\00\u04e6\u04e7\01\00\00"+
+ "\u04e7\u04e8\01\00\00\u04e8\u04e9\05\110\00\u04e9\u04ec\01\00\00\u04ea"+
+ "\u04eb\03\u008a\106\u04eb\u04ed\01\00\00\u04ec\u04ea\01\00\00\u04ec"+
+ "\u04ed\01\00\00\u04ed\u04ee\01\00\00\u04ee\u04ef\05\110\00\u04ef\u04f2"+
+ "\01\00\00\u04f0\u04f1\03\u0088\105\u04f1\u04f3\01\00\00\u04f2\u04f0"+
+ "\01\00\00\u04f2\u04f3\01\00\00\u04f3\u04f4\01\00\00\u04f4\u04f5\05"+
+ "\103\00\u04f5\u04f6\01\00\00\u04f6\u04f7\03\162\072\u04f7\u04f9\01"+
+ "\00\00\u04f8\u04ce\01\00\00\u04f8\u04e0\01\00\00\u04f9\u0083\01\00"+
+ "\00\u04fa\u04fb\03\160\071\u04fb\u04ff\01\00\00\u04fc\u04fd\03\u0088"+
+ "\105\u04fd\u04ff\01\00\00\u04fe\u04fa\01\00\00\u04fe\u04fc\01\00\00"+
+ "\u04ff\u0085\01\00\00\u0500\u0501\05\102\00\u0501\u0502\01\00\00\u0502"+
+ "\u0503\03\u008a\106\u0503\u0504\01\00\00\u0504\u0505\05\103\00\u0505"+
+ "\u0087\01\00\00\u0506\u0507\03\u008a\106\u0507\u050c\01\00\00\u0508"+
+ "\u0509\05\111\00\u0509\u050a\01\00\00\u050a\u050b\03\u008a\106\u050b"+
+ "\u050d\01\00\00\u050c\u0508\01\00\00\u050c\u050f\01\00\00\u050d\u050e"+
+ "\01\00\00\u050e\u050c\01\00\00\u050f\u0089\01\00\00\u0510\u0511\03"+
+ "\u008e\110\u0511\u0516\01\00\00\u0512\u0513\03\u008c\107\u0513\u0514"+
+ "\01\00\00\u0514\u0515\03\u008a\106\u0515\u0517\01\00\00\u0516\u0512"+
+ "\01\00\00\u0516\u0517\01\00\00\u0517\u008b\01\00\00\u0518\u0519\05"+
+ "\114\00\u0519\u053f\01\00\00\u051a\u051b\05\136\00\u051b\u053f\01"+
+ "\00\00\u051c\u051d\05\137\00\u051d\u053f\01\00\00\u051e\u051f\05\140"+
+ "\00\u051f\u053f\01\00\00\u0520\u0521\05\141\00\u0521\u053f\01\00\00"+
+ "\u0522\u0523\05\142\00\u0523\u053f\01\00\00\u0524\u0525\05\143\00"+
+ "\u0525\u053f\01\00\00\u0526\u0527\05\144\00\u0527\u053f\01\00\00\u0528"+
+ "\u0529\05\145\00\u0529\u053f\01\00\00\u052a\u052b\05\150\00\u052b"+
+ "\u052c\01\00\00\u052c\u052d\05\150\00\u052d\u052e\01\00\00\u052e\u052f"+
+ "\05\114\00\u052f\u053f\01\00\00\u0530\u0531\05\151\00\u0531\u0532"+
+ "\01\00\00\u0532\u0533\05\151\00\u0533\u0534\01\00\00\u0534\u0535\05"+
+ "\151\00\u0535\u0536\01\00\00\u0536\u0537\05\114\00\u0537\u053f\01"+
+ "\00\00\u0538\u0539\05\151\00\u0539\u053a\01\00\00\u053a\u053b\05\151"+
+ "\00\u053b\u053c\01\00\00\u053c\u053d\05\114\00\u053d\u053f\01\00\00"+
+ "\u053e\u0518\01\00\00\u053e\u051a\01\00\00\u053e\u051c\01\00\00\u053e"+
+ "\u051e\01\00\00\u053e\u0520\01\00\00\u053e\u0522\01\00\00\u053e\u0524"+
+ "\01\00\00\u053e\u0526\01\00\00\u053e\u0528\01\00\00\u053e\u052a\01"+
+ "\00\00\u053e\u0530\01\00\00\u053e\u0538\01\00\00\u053f\u008d\01\00"+
+ "\00\u0540\u0541\03\u0090\111\u0541\u054a\01\00\00\u0542\u0543\05\117"+
+ "\00\u0543\u0544\01\00\00\u0544\u0545\03\u008a\106\u0545\u0546\01\00"+
+ "\00\u0546\u0547\05\120\00\u0547\u0548\01\00\00\u0548\u0549\03\u008e"+
+ "\110\u0549\u054b\01\00\00\u054a\u0542\01\00\00\u054a\u054b\01\00\00"+
+ "\u054b\u008f\01\00\00\u054c\u054d\03\u0092\112\u054d\u0552\01\00\00"+
+ "\u054e\u054f\05\123\00\u054f\u0550\01\00\00\u0550\u0551\03\u0092\112"+
+ "\u0551\u0553\01\00\00\u0552\u054e\01\00\00\u0552\u0555\01\00\00\u0553"+
+ "\u0554\01\00\00\u0554\u0552\01\00\00\u0555\u0091\01\00\00\u0556\u0557"+
+ "\03\u0094\113\u0557\u055c\01\00\00\u0558\u0559\05\122\00\u0559\u055a"+
+ "\01\00\00\u055a\u055b\03\u0094\113\u055b\u055d\01\00\00\u055c\u0558"+
+ "\01\00\00\u055c\u055f\01\00\00\u055d\u055e\01\00\00\u055e\u055c\01"+
+ "\00\00\u055f\u0093\01\00\00\u0560\u0561\03\u0096\114\u0561\u0566\01"+
+ "\00\00\u0562\u0563\05\133\00\u0563\u0564\01\00\00\u0564\u0565\03\u0096"+
+ "\114\u0565\u0567\01\00\00\u0566\u0562\01\00\00\u0566\u0569\01\00\00"+
+ "\u0567\u0568\01\00\00\u0568\u0566\01\00\00\u0569\u0095\01\00\00\u056a"+
+ "\u056b\03\u0098\115\u056b\u0570\01\00\00\u056c\u056d\05\134\00\u056d"+
+ "\u056e\01\00\00\u056e\u056f\03\u0098\115\u056f\u0571\01\00\00\u0570"+
+ "\u056c\01\00\00\u0570\u0573\01\00\00\u0571\u0572\01\00\00\u0572\u0570"+
+ "\01\00\00\u0573\u0097\01\00\00\u0574\u0575\03\u009a\116\u0575\u057a"+
+ "\01\00\00\u0576\u0577\05\132\00\u0577\u0578\01\00\00\u0578\u0579\03"+
+ "\u009a\116\u0579\u057b\01\00\00\u057a\u0576\01\00\00\u057a\u057d\01"+
+ "\00\00\u057b\u057c\01\00\00\u057c\u057a\01\00\00\u057d\u0099\01\00"+
+ "\00\u057e\u057f\03\u009c\117\u057f\u0588\01\00\00\u0580\u0581\05\121"+
+ "\00\u0581\u0585\01\00\00\u0582\u0583\05\147\00\u0583\u0585\01\00\00"+
+ "\u0584\u0580\01\00\00\u0584\u0582\01\00\00\u0585\u0586\01\00\00\u0586"+
+ "\u0587\03\u009c\117\u0587\u0589\01\00\00\u0588\u0584\01\00\00\u0588"+
+ "\u058b\01\00\00\u0589\u058a\01\00\00\u058a\u0588\01\00\00\u058b\u009b"+
+ "\01\00\00\u058c\u058d\03\u009e\120\u058d\u0592\01\00\00\u058e\u058f"+
+ "\05\046\00\u058f\u0590\01\00\00\u0590\u0591\03\076\040\u0591\u0593"+
+ "\01\00\00\u0592\u058e\01\00\00\u0592\u0593\01\00\00\u0593\u009d\01"+
+ "\00\00\u0594\u0595\03\u00a2\122\u0595\u059a\01\00\00\u0596\u0597\03"+
+ "\u00a0\121\u0597\u0598\01\00\00\u0598\u0599\03\u00a2\122\u0599\u059b"+
+ "\01\00\00\u059a\u0596\01\00\00\u059a\u059d\01\00\00\u059b\u059c\01"+
+ "\00\00\u059c\u059a\01\00\00\u059d\u009f\01\00\00\u059e\u059f\05\150"+
+ "\00\u059f\u05a0\01\00\00\u05a0\u05a1\05\114\00\u05a1\u05ab\01\00\00"+
+ "\u05a2\u05a3\05\151\00\u05a3\u05a4\01\00\00\u05a4\u05a5\05\114\00"+
+ "\u05a5\u05ab\01\00\00\u05a6\u05a7\05\150\00\u05a7\u05ab\01\00\00\u05a8"+
+ "\u05a9\05\151\00\u05a9\u05ab\01\00\00\u05aa\u059e\01\00\00\u05aa\u05a2"+
+ "\01\00\00\u05aa\u05a6\01\00\00\u05aa\u05a8\01\00\00\u05ab\u00a1\01"+
+ "\00\00\u05ac\u05ad\03\u00a6\124\u05ad\u05b2\01\00\00\u05ae\u05af\03"+
+ "\u00a4\123\u05af\u05b0\01\00\00\u05b0\u05b1\03\u00a6\124\u05b1\u05b3"+
+ "\01\00\00\u05b2\u05ae\01\00\00\u05b2\u05b5\01\00\00\u05b3\u05b4\01"+
+ "\00\00\u05b4\u05b2\01\00\00\u05b5\u00a3\01\00\00\u05b6\u05b7\05\150"+
+ "\00\u05b7\u05b8\01\00\00\u05b8\u05b9\05\150\00\u05b9\u05c5\01\00\00"+
+ "\u05ba\u05bb\05\151\00\u05bb\u05bc\01\00\00\u05bc\u05bd\05\151\00"+
+ "\u05bd\u05be\01\00\00\u05be\u05bf\05\151\00\u05bf\u05c5\01\00\00\u05c0"+
+ "\u05c1\05\151\00\u05c1\u05c2\01\00\00\u05c2\u05c3\05\151\00\u05c3"+
+ "\u05c5\01\00\00\u05c4\u05b6\01\00\00\u05c4\u05ba\01\00\00\u05c4\u05c0"+
+ "\01\00\00\u05c5\u00a5\01\00\00\u05c6\u05c7\03\u00a8\125\u05c7\u05d0"+
+ "\01\00\00\u05c8\u05c9\05\126\00\u05c9\u05cd\01\00\00\u05ca\u05cb\05"+
+ "\127\00\u05cb\u05cd\01\00\00\u05cc\u05c8\01\00\00\u05cc\u05ca\01\00"+
+ "\00\u05cd\u05ce\01\00\00\u05ce\u05cf\03\u00a8\125\u05cf\u05d1\01\00"+
+ "\00\u05d0\u05cc\01\00\00\u05d0\u05d3\01\00\00\u05d1\u05d2\01\00\00"+
+ "\u05d2\u05d0\01\00\00\u05d3\u00a7\01\00\00\u05d4\u05d5\03\u00aa\126"+
+ "\u05d5\u05e0\01\00\00\u05d6\u05d7\05\130\00\u05d7\u05dd\01\00\00\u05d8"+
+ "\u05d9\05\131\00\u05d9\u05dd\01\00\00\u05da\u05db\05\135\00\u05db"+
+ "\u05dd\01\00\00\u05dc\u05d6\01\00\00\u05dc\u05d8\01\00\00\u05dc\u05da"+
+ "\01\00\00\u05dd\u05de\01\00\00\u05de\u05df\03\u00aa\126\u05df\u05e1"+
+ "\01\00\00\u05e0\u05dc\01\00\00\u05e0\u05e3\01\00\00\u05e1\u05e2\01"+
+ "\00\00\u05e2\u05e0\01\00\00\u05e3\u00a9\01\00\00\u05e4\u05e5\05\126"+
+ "\00\u05e5\u05e6\01\00\00\u05e6\u05e7\03\u00aa\126\u05e7\u05f7\01\00"+
+ "\00\u05e8\u05e9\05\127\00\u05e9\u05ea\01\00\00\u05ea\u05eb\03\u00aa"+
+ "\126\u05eb\u05f7\01\00\00\u05ec\u05ed\05\124\00\u05ed\u05ee\01\00"+
+ "\00\u05ee\u05ef\03\u00aa\126\u05ef\u05f7\01\00\00\u05f0\u05f1\05\125"+
+ "\00\u05f1\u05f2\01\00\00\u05f2\u05f3\03\u00aa\126\u05f3\u05f7\01\00"+
+ "\00\u05f4\u05f5\03\u00ac\127\u05f5\u05f7\01\00\00\u05f6\u05e4\01\00"+
+ "\00\u05f6\u05e8\01\00\00\u05f6\u05ec\01\00\00\u05f6\u05f0\01\00\00"+
+ "\u05f6\u05f4\01\00\00\u05f7\u00ab\01\00\00\u05f8\u05f9\05\116\00\u05f9"+
+ "\u05fa\01\00\00\u05fa\u05fb\03\u00aa\126\u05fb\u0611\01\00\00\u05fc"+
+ "\u05fd\05\115\00\u05fd\u05fe\01\00\00\u05fe\u05ff\03\u00aa\126\u05ff"+
+ "\u0611\01\00\00\u0600\u0601\03\u00ae\130\u0601\u0611\01\00\00\u0602"+
+ "\u0603\03\u00b0\131\u0603\u0606\01\00\00\u0604\u0605\03\u00b6\134"+
+ "\u0605\u0607\01\00\00\u0606\u0604\01\00\00\u0606\u0609\01\00\00\u0607"+
+ "\u0608\01\00\00\u0608\u0606\01\00\00\u0609\u060e\01\00\00\u060a\u060b"+
+ "\05\124\00\u060b\u060f\01\00\00\u060c\u060d\05\125\00\u060d\u060f"+
+ "\01\00\00\u060e\u060a\01\00\00\u060e\u060c\01\00\00\u060e\u060f\01"+
+ "\00\00\u060f\u0611\01\00\00\u0610\u05f8\01\00\00\u0610\u05fc\01\00"+
+ "\00\u0610\u0600\01\00\00\u0610\u0602\01\00\00\u0611\u00ad\01\00\00"+
+ "\u0612\u0613\05\102\00\u0613\u0614\01\00\00\u0614\u0615\03\102\042"+
+ "\u0615\u0616\01\00\00\u0616\u0617\05\103\00\u0617\u0618\01\00\00\u0618"+
+ "\u0619\03\u00aa\126\u0619\u0623\01\00\00\u061a\u061b\05\102\00\u061b"+
+ "\u061c\01\00\00\u061c\u061d\03\076\040\u061d\u061e\01\00\00\u061e"+
+ "\u061f\05\103\00\u061f\u0620\01\00\00\u0620\u0621\03\u00ac\127\u0621"+
+ "\u0623\01\00\00\u0622\u0612\01\00\00\u0622\u061a\01\00\00\u0623\u00af"+
+ "\01\00\00\u0624\u0625\03\u0086\104\u0625\u065f\01\00\00\u0626\u0627"+
+ "\05\067\00\u0627\u062c\01\00\00\u0628\u0629\05\112\00\u0629\u062a"+
+ "\01\00\00\u062a\u062b\05\152\00\u062b\u062d\01\00\00\u062c\u0628\01"+
+ "\00\00\u062c\u062f\01\00\00\u062d\u062e\01\00\00\u062e\u062c\01\00"+
+ "\00\u062f\u0632\01\00\00\u0630\u0631\03\u00b4\133\u0631\u0633\01\00"+
+ "\00\u0632\u0630\01\00\00\u0632\u0633\01\00\00\u0633\u065f\01\00\00"+
+ "\u0634\u0635\05\152\00\u0635\u063a\01\00\00\u0636\u0637\05\112\00"+
+ "\u0637\u0638\01\00\00\u0638\u0639\05\152\00\u0639\u063b\01\00\00\u063a"+
+ "\u0636\01\00\00\u063a\u063d\01\00\00\u063b\u063c\01\00\00\u063c\u063a"+
+ "\01\00\00\u063d\u0640\01\00\00\u063e\u063f\03\u00b4\133\u063f\u0641"+
+ "\01\00\00\u0640\u063e\01\00\00\u0640\u0641\01\00\00\u0641\u065f\01"+
+ "\00\00\u0642\u0643\05\064\00\u0643\u0644\01\00\00\u0644\u0645\03\u00b2"+
+ "\132\u0645\u065f\01\00\00\u0646\u0647\03\u00ca\146\u0647\u065f\01"+
+ "\00\00\u0648\u0649\03\u00b8\135\u0649\u065f\01\00\00\u064a\u064b\03"+
+ "\102\042\u064b\u0650\01\00\00\u064c\u064d\05\106\00\u064d\u064e\01"+
+ "\00\00\u064e\u064f\05\107\00\u064f\u0651\01\00\00\u0650\u064c\01\00"+
+ "\00\u0650\u0653\01\00\00\u0651\u0652\01\00\00\u0652\u0650\01\00\00"+
+ "\u0653\u0654\01\00\00\u0654\u0655\05\112\00\u0655\u0656\01\00\00\u0656"+
+ "\u0657\05\025\00\u0657\u065f\01\00\00\u0658\u0659\05\074\00\u0659"+
+ "\u065a\01\00\00\u065a\u065b\05\112\00\u065b\u065c\01\00\00\u065c\u065d"+
+ "\05\025\00\u065d\u065f\01\00\00\u065e\u0624\01\00\00\u065e\u0626\01"+
+ "\00\00\u065e\u0634\01\00\00\u065e\u0642\01\00\00\u065e\u0646\01\00"+
+ "\00\u065e\u0648\01\00\00\u065e\u064a\01\00\00\u065e\u0658\01\00\00"+
+ "\u065f\u00b1\01\00\00\u0660\u0661\03\u00c8\145\u0661\u066f\01\00\00"+
+ "\u0662\u0663\05\112\00\u0663\u0666\01\00\00\u0664\u0665\03\104\043"+
+ "\u0665\u0667\01\00\00\u0666\u0664\01\00\00\u0666\u0667\01\00\00\u0667"+
+ "\u0668\01\00\00\u0668\u0669\05\152\00\u0669\u066c\01\00\00\u066a\u066b"+
+ "\03\u00c8\145\u066b\u066d\01\00\00\u066c\u066a\01\00\00\u066c\u066d"+
+ "\01\00\00\u066d\u066f\01\00\00\u066e\u0660\01\00\00\u066e\u0662\01"+
+ "\00\00\u066f\u00b3\01\00\00\u0670\u0671\05\106\00\u0671\u0672\01\00"+
+ "\00\u0672\u0673\05\107\00\u0673\u0675\01\00\00\u0674\u0670\01\00\00"+
+ "\u0675\u0676\01\00\00\u0676\u0670\01\00\00\u0676\u0677\01\00\00\u0677"+
+ "\u0678\01\00\00\u0678\u0679\05\112\00\u0679\u067a\01\00\00\u067a\u067b"+
+ "\05\025\00\u067b\u06a1\01\00\00\u067c\u067d\05\106\00\u067d\u067e"+
+ "\01\00\00\u067e\u067f\03\u008a\106\u067f\u0680\01\00\00\u0680\u0681"+
+ "\05\107\00\u0681\u0683\01\00\00\u0682\u067c\01\00\00\u0683\u0684\01"+
+ "\00\00\u0684\u067c\01\00\00\u0684\u0685\01\00\00\u0685\u06a1\01\00"+
+ "\00\u0686\u0687\03\u00c8\145\u0687\u06a1\01\00\00\u0688\u0689\05\112"+
+ "\00\u0689\u068a\01\00\00\u068a\u068b\05\025\00\u068b\u06a1\01\00\00"+
+ "\u068c\u068d\05\112\00\u068d\u068e\01\00\00\u068e\u068f\03\u00c6\144"+
+ "\u068f\u0690\01\00\00\u0690\u0691\05\152\00\u0691\u0692\01\00\00\u0692"+
+ "\u0693\03\u00c8\145\u0693\u06a1\01\00\00\u0694\u0695\05\112\00\u0695"+
+ "\u0696\01\00\00\u0696\u0697\05\067\00\u0697\u06a1\01\00\00\u0698\u0699"+
+ "\05\112\00\u0699\u069a\01\00\00\u069a\u069b\05\064\00\u069b\u069c"+
+ "\01\00\00\u069c\u069d\03\u00c8\145\u069d\u06a1\01\00\00\u069e\u069f"+
+ "\03\u00c2\142\u069f\u06a1\01\00\00\u06a0\u0674\01\00\00\u06a0\u0682"+
+ "\01\00\00\u06a0\u0686\01\00\00\u06a0\u0688\01\00\00\u06a0\u068c\01"+
+ "\00\00\u06a0\u0694\01\00\00\u06a0\u0698\01\00\00\u06a0\u069e\01\00"+
+ "\00\u06a1\u00b5\01\00\00\u06a2\u06a3\05\112\00\u06a3\u06a4\01\00\00"+
+ "\u06a4\u06a5\05\152\00\u06a5\u06a8\01\00\00\u06a6\u06a7\03\u00c8\145"+
+ "\u06a7\u06a9\01\00\00\u06a8\u06a6\01\00\00\u06a8\u06a9\01\00\00\u06a9"+
+ "\u06bd\01\00\00\u06aa\u06ab\05\112\00\u06ab\u06ac\01\00\00\u06ac\u06ad"+
+ "\05\067\00\u06ad\u06bd\01\00\00\u06ae\u06af\05\112\00\u06af\u06b0"+
+ "\01\00\00\u06b0\u06b1\05\064\00\u06b1\u06b2\01\00\00\u06b2\u06b3\03"+
+ "\u00b2\132\u06b3\u06bd\01\00\00\u06b4\u06b5\03\u00c2\142\u06b5\u06bd"+
+ "\01\00\00\u06b6\u06b7\05\106\00\u06b7\u06b8\01\00\00\u06b8\u06b9\03"+
+ "\u008a\106\u06b9\u06ba\01\00\00\u06ba\u06bb\05\107\00\u06bb\u06bd"+
+ "\01\00\00\u06bc\u06a2\01\00\00\u06bc\u06aa\01\00\00\u06bc\u06ae\01"+
+ "\00\00\u06bc\u06b4\01\00\00\u06bc\u06b6\01\00\00\u06bd\u00b7\01\00"+
+ "\00\u06be\u06bf\05\053\00\u06bf\u06c0\01\00\00\u06c0\u06c1\03\u00c6"+
+ "\144\u06c1\u06c2\01\00\00\u06c2\u06c3\03\100\041\u06c3\u06c4\01\00"+
+ "\00\u06c4\u06c5\03\u00c4\143\u06c5\u06cf\01\00\00\u06c6\u06c7\05\053"+
+ "\00\u06c7\u06c8\01\00\00\u06c8\u06c9\03\100\041\u06c9\u06ca\01\00"+
+ "\00\u06ca\u06cb\03\u00c4\143\u06cb\u06cf\01\00\00\u06cc\u06cd\03\u00ba"+
+ "\136\u06cd\u06cf\01\00\00\u06ce\u06be\01\00\00\u06ce\u06c6\01\00\00"+
+ "\u06ce\u06cc\01\00\00\u06cf\u00b9\01\00\00\u06d0\u06d1\05\053\00\u06d1"+
+ "\u06d2\01\00\00\u06d2\u06d3\03\u00c0\141\u06d3\u06d4\01\00\00\u06d4"+
+ "\u06d5\05\106\00\u06d5\u06d6\01\00\00\u06d6\u06d7\05\107\00\u06d7"+
+ "\u06dc\01\00\00\u06d8\u06d9\05\106\00\u06d9\u06da\01\00\00\u06da\u06db"+
+ "\05\107\00\u06db\u06dd\01\00\00\u06dc\u06d8\01\00\00\u06dc\u06df\01"+
+ "\00\00\u06dd\u06de\01\00\00\u06de\u06dc\01\00\00\u06df\u06e0\01\00"+
+ "\00\u06e0\u06e1\03\u00be\140\u06e1\u06ff\01\00\00\u06e2\u06e3\05\053"+
+ "\00\u06e3\u06e4\01\00\00\u06e4\u06e5\03\u00c0\141\u06e5\u06e6\01\00"+
+ "\00\u06e6\u06e7\05\106\00\u06e7\u06e8\01\00\00\u06e8\u06e9\03\u008a"+
+ "\106\u06e9\u06ea\01\00\00\u06ea\u06eb\05\107\00\u06eb\u06f2\01\00"+
+ "\00\u06ec\u06ed\05\106\00\u06ed\u06ee\01\00\00\u06ee\u06ef\03\u008a"+
+ "\106\u06ef\u06f0\01\00\00\u06f0\u06f1\05\107\00\u06f1\u06f3\01\00"+
+ "\00\u06f2\u06ec\01\00\00\u06f2\u06f5\01\00\00\u06f3\u06f4\01\00\00"+
+ "\u06f4\u06f2\01\00\00\u06f5\u06fa\01\00\00\u06f6\u06f7\05\106\00\u06f7"+
+ "\u06f8\01\00\00\u06f8\u06f9\05\107\00\u06f9\u06fb\01\00\00\u06fa\u06f6"+
+ "\01\00\00\u06fa\u06fd\01\00\00\u06fb\u06fc\01\00\00\u06fc\u06fa\01"+
+ "\00\00\u06fd\u06ff\01\00\00\u06fe\u06d0\01\00\00\u06fe\u06e2\01\00"+
+ "\00\u06ff\u00bb\01\00\00\u0700\u0701\03\u00be\140\u0701\u0705\01\00"+
+ "\00\u0702\u0703\03\u008a\106\u0703\u0705\01\00\00\u0704\u0700\01\00"+
+ "\00\u0704\u0702\01\00\00\u0705\u00bd\01\00\00\u0706\u0707\05\104\00"+
+ "\u0707\u0712\01\00\00\u0708\u0709\03\u00bc\137\u0709\u070e\01\00\00"+
+ "\u070a\u070b\05\111\00\u070b\u070c\01\00\00\u070c\u070d\03\u00bc\137"+
+ "\u070d\u070f\01\00\00\u070e\u070a\01\00\00\u070e\u0711\01\00\00\u070f"+
+ "\u0710\01\00\00\u0710\u070e\01\00\00\u0711\u0713\01\00\00\u0712\u0708"+
+ "\01\00\00\u0712\u0713\01\00\00\u0713\u0716\01\00\00\u0714\u0715\05"+
+ "\111\00\u0715\u0717\01\00\00\u0716\u0714\01\00\00\u0716\u0717\01\00"+
+ "\00\u0717\u0718\01\00\00\u0718\u0719\05\105\00\u0719\u00bf\01\00\00"+
+ "\u071a\u071b\03\100\041\u071b\u071f\01\00\00\u071c\u071d\03\102\042"+
+ "\u071d\u071f\01\00\00\u071e\u071a\01\00\00\u071e\u071c\01\00\00\u071f"+
+ "\u00c1\01\00\00\u0720\u0721\05\112\00\u0721\u0722\01\00\00\u0722\u0723"+
+ "\05\053\00\u0723\u0726\01\00\00\u0724\u0725\03\u00c6\144\u0725\u0727"+
+ "\01\00\00\u0726\u0724\01\00\00\u0726\u0727\01\00\00\u0727\u0728\01"+
+ "\00\00\u0728\u0729\05\152\00\u0729\u072c\01\00\00\u072a\u072b\03\104"+
+ "\043\u072b\u072d\01\00\00\u072c\u072a\01\00\00\u072c\u072d\01\00\00"+
+ "\u072d\u072e\01\00\00\u072e\u072f\03\u00c4\143\u072f\u00c3\01\00\00"+
+ "\u0730\u0731\03\u00c8\145\u0731\u0734\01\00\00\u0732\u0733\03\052"+
+ "\026\u0733\u0735\01\00\00\u0734\u0732\01\00\00\u0734\u0735\01\00\00"+
+ "\u0735\u00c5\01\00\00\u0736\u0737\05\150\00\u0737\u0738\01\00\00\u0738"+
+ "\u0739\03\050\025\u0739\u073a\01\00\00\u073a\u073b\05\151\00\u073b"+
+ "\u00c7\01\00\00\u073c\u073d\05\102\00\u073d\u0740\01\00\00\u073e\u073f"+
+ "\03\u0088\105\u073f\u0741\01\00\00\u0740\u073e\01\00\00\u0740\u0741"+
+ "\01\00\00\u0741\u0742\01\00\00\u0742\u0743\05\103\00\u0743\u00c9\01"+
+ "\00\00\u0744\u0745\05\05\00\u0745\u0757\01\00\00\u0746\u0747\05\04"+
+ "\00\u0747\u0757\01\00\00\u0748\u0749\05\06\00\u0749\u0757\01\00\00"+
+ "\u074a\u074b\05\07\00\u074b\u0757\01\00\00\u074c\u074d\05\010\00\u074d"+
+ "\u0757\01\00\00\u074e\u074f\05\011\00\u074f\u0757\01\00\00\u0750\u0751"+
+ "\05\077\00\u0751\u0757\01\00\00\u0752\u0753\05\100\00\u0753\u0757"+
+ "\01\00\00\u0754\u0755\05\101\00\u0755\u0757\01\00\00\u0756\u0744\01"+
+ "\00\00\u0756\u0746\01\00\00\u0756\u0748\01\00\00\u0756\u074a\01\00"+
+ "\00\u0756\u074c\01\00\00\u0756\u074e\01\00\00\u0756\u0750\01\00\00"+
+ "\u0756\u0752\01\00\00\u0756\u0754\01\00\00\u0757\u00cb\01\00\00\u00b0"+
+ "\u00ce\u00d2\u00d6\u00dc\u00ea\u00f8\u0100\u0100\u0102\u0108\u010c"+
+ "\u0114\u011c\u0122\u013c\u0144\u014c\u0156\u015c\u0162\u016e\u017a"+
+ "\u0182\u0190\u0198\u019c\u01a0\u01aa\u01b0\u01b6\u01ba\u01c0\u01c8"+
+ "\u01d2\u01d8\u01e2\u01ea\u01f4\u01fe\u0204\u020e\u0214\u021e\u0224"+
+ "\u0228\u0232\u0238\u0242\u024a\u0250\u0252\u025e\u026a\u0272\u027e"+
+ "\u0284\u028a\u0294\u029c\u02aa\u02b6\u02c0\u02c4\u02ca\u02d2\u02d4"+
+ "\u02e8\u02f2\u0300\u0304\u0306\u030e\u0316\u0322\u032a\u032a\u032c"+
+ "\u0330\u033c\u034a\u0350\u035c\u0364\u036c\u0372\u0372\u0374\u0380"+
+ "\u0384\u038c\u039c\u03a6\u03aa\u03ae\u03c0\u03d4\u03e4\u03ec\u03f8"+
+ "\u0408\u0416\u0422\u0430\u045a\u0468\u0470\u0480\u0484\u048c\u049a"+
+ "\u04ac\u04b2\u04ca\u04e6\u04ec\u04f2\u04f8\u04fe\u050c\u0516\u053e"+
+ "\u054a\u0552\u055c\u0566\u0570\u057a\u0584\u0588\u0592\u059a\u05aa"+
+ "\u05b2\u05c4\u05cc\u05d0\u05dc\u05e0\u05f6\u0606\u060e\u0610\u0622"+
+ "\u062c\u0632\u063a\u0640\u0650\u065e\u0666\u066c\u066e\u0674\u0674"+
+ "\u0676\u0682\u0682\u0684\u06a0\u06a8\u06bc\u06ce\u06dc\u06f2\u06fa"+
+ "\u06fe\u0704\u070e\u0712\u0716\u071e\u0726\u072c\u0734\u0740\u0756";
+ public static final ATN _ATN =
+ ATNInterpreter.deserialize(_serializedATN.toCharArray());
+ static {
+ org.antlr.v4.tool.DOTGenerator dot = new org.antlr.v4.tool.DOTGenerator(null);
+ //System.out.println(dot.getDOT(_ATN.decisionToATNState.get(0)));
+ }
+}
\ No newline at end of file
diff --git a/tool/playground/blort.java b/tool/playground/blort.java
new file mode 100644
index 000000000..b90e24e56
--- /dev/null
+++ b/tool/playground/blort.java
@@ -0,0 +1 @@
+int int int
diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg
new file mode 100644
index 000000000..5f85f7b6d
--- /dev/null
+++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg
@@ -0,0 +1,491 @@
+javaTypeInitMap ::= [
+ "int":"0",
+ "long":"0",
+ "float":"0.0f",
+ "double":"0.0",
+ "boolean":"false",
+ "byte":"0",
+ "short":"0",
+ "char":"0",
+ default:"null" // anything other than an atomic type
+]
+
+// args must be ,
+
+ParserFile(file, parser, namedActions) ::= <<
+// $ANTLR ANTLRVersion> generatedTimestamp>
+
+import org.antlr.v4.runtime.NoViableAltException;
+import org.antlr.v4.runtime.Parser;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.EarlyExitException;
+import org.antlr.v4.runtime.ParserSharedState;
+import org.antlr.v4.runtime.RecognitionException;
+import org.antlr.v4.runtime.FailedPredicateException;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.runtime.*;
+
+
+>>
+
+Parser(parser, scopes, funcs, atn, actions, sempreds) ::= <<
+public class extends Parser {
+ public static final int
+ =}; separator=", ", wrap, anchor>;
+ public static final String[] tokenNames = {
+ "\", "\", "\",
+ "}; separator=", ", wrap, anchor>
+ };
+ public static final String[] ruleNames = {
+ "\",
+ "}; separator=", ", wrap, anchor>
+ };
+
+
+
+
+
+ @Override
+ public String[] getTokenNames() { return tokenNames; }
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+ @Override
+ public ATN getATN() { return _ATN; }
+
+
+
+}
+>>
+
+dumpActions(actions,sempreds) ::= <<
+
+ public boolean sempred(int ruleIndex, int predIndex) {
+ switch ( predIndex ) {
+ : return ;}; separator="\n">
+ }
+ return true;
+ }
+
+
+ public void action(int ruleIndex, int actionIndex) {
+ switch ( actionIndex ) {
+ : break;}; separator="\n">
+ }
+ }
+
+>>
+
+ctor(p) ::= <<
+public (TokenStream input) {
+ this(input, new ParserSharedState());
+}
+public (TokenStream input, ParserSharedState state) {
+ super(input, state);
+ _interp = new ParserInterpreter(this,_ATN);
+}
+>>
+
+/*
+ // S.g:5:1: b returns [String q, float x] : A ;
+ public final S.b_return b() throws RecognitionException {
+ b_stack.push(new b_scope());
+ S.b_return retval = new S.b_return();
+*/
+
+RuleFunction(currentRule,code,decls,context,scope,namedActions,finallyAction) ::= <<
+
+
+
+ }>public final (ParserRuleContext _ctx) throws RecognitionException {
+ _ctx = new ParserRuleContext(_ctx, );
+ state.ctx = _ctx;
+
+ _stack.push(new ());
+
+ //System.out.println("enter "+ruleNames[]);
+ _stack.push(new ());}; separator="\n">
+
+
+ try {
+
+ }
+ catch (RecognitionException re) {
+ reportError(re);
+ recover();
+ }
+ finally {
+
+ _stack.pop();}; separator="\n">
+ _stack.pop();
+
+ state.ctx = (ParserRuleContext)_ctx.parent;
+ //System.out.println("exit "+ruleNames[]);
+ }
+ return _ctx;
+}
+>>
+
+/** Convenience method to call from outside */
+StartRuleFunction(f) ::= <<
+ }>public final () throws RecognitionException {
+ return (new (, }>LABitSet.EOF_SET));
+}
+>>
+
+CodeBlock(c, ops) ::= <<
+
+>>
+
+LL1AltBlock(choice, alts, error) ::= <<
+switch ( state.input.LA(1) ) {
+
+
+ break;}; separator="\n">
+ default :
+
+}
+>>
+
+LL1OptionalBlock(choice, alts, error) ::= <<
+switch ( state.input.LA(1) ) {
+
+
+ break;}; separator="\n">
+ default :
+
+}
+>>
+
+LL1OptionalBlockSingleAlt(choice, expr, alts, preamble, error, followExpr) ::= <<
+
+if ( ) {
+
+}
+) ) !>
+>>
+
+LL1StarBlock(choice, alts, sync) ::= <<
+:
+while (true) {
+ switch ( state.input.LA(1) ) {
+
+
+ break;}; separator="\n">
+
+ break ;
+ }
+ //
+}
+>>
+
+LL1StarBlockSingleAlt(choice, loopExpr, alts, preamble, iteration, sync) ::= <<
+
+while ( ) {
+
+
+ //
+}
+>>
+
+LL1PlusBlock(choice, alts, iteration, loopExpr, sync, error, iterationSync) ::= <<
+//
+do {
+ switch ( state.input.LA(1) ) {
+
+
+ break;}; separator="\n">
+ default :
+
+ }
+
+ //
+} while ( );
+>>
+
+LL1PlusBlockSingleAlt(choice, loopExpr, alts, preamble, iteration,
+ sync, iterationSync) ::=
+<<
+//
+
+do {
+
+
+//
+} while ( );
+>>
+
+// LL(*) stuff
+
+AltBlock(choice, alts, error) ::= <<
+switch ( _interp.adaptivePredict(state.input,,_ctx) ) {
+ :
+
+ break;}; separator="\n">
+ default :
+
+}
+>>
+
+OptionalBlock(choice, alts, error) ::= <<
+switch ( _interp.adaptivePredict(state.input,,_ctx) ) {
+ :
+
+ break;}; separator="\n">
+}
+>>
+
+StarBlock(choice, alts, sync) ::= <<
+int _alt = _interp.adaptivePredict(state.input,,_ctx);
+while ( _alt!= ) {
+ switch ( _alt ) {
+ :
+
+ break;}; separator="\n">
+ }
+ _alt = _interp.adaptivePredict(state.input,,_ctx);
+}
+>>
+
+PlusBlock(choice, alts, error) ::= <<
+int _alt = _interp.adaptivePredict(state.input,,_ctx);
+do {
+ switch ( _alt ) {
+ :
+
+ break;}; separator="\n">
+ default :
+
+ }
+ _alt = _interp.adaptivePredict(state.input,,_ctx);
+} while ( _alt!= );
+>>
+
+Sync(s) ::= "sync();"
+
+ThrowNoViableAlt(t) ::= "throw new NoViableAltException(this,_ctx);"
+
+TestSet(s) ::= <<
+_ctx.s = ;
+.member(state.input.LA(1))
+>>
+
+TestSetInline(s) ::= <<
+==}; separator=" || ">
+>>
+
+cases(ttypes) ::= <<
+:}; separator="\n">
+>>
+
+InvokeRule(r) ::= <<
+_ctx.s = ;
+ = }>(_ctx}>);
+>>
+
+MatchToken(m) ::= <<
+_ctx.s = ;
+ = }>(Token)match();
+>>
+
+// ACTION STUFF
+
+Action(a, chunks) ::= ""
+
+ForcedAction(a, chunks) ::= ""
+
+SemPred(p, chunks) ::= <<
+if (!()) throw new FailedPredicateException(this, state.input, "", """!>);
+>>
+
+ActionText(t) ::= ""
+ArgRef(a) ::= "_ctx."
+RetValueRef(a) ::= "_ctx."
+QRetValueRef(a) ::= "."
+/** How to translate $tokenLabel */
+TokenRef(t) ::= ""
+SetAttr(s,rhsChunks) ::= "_ctx. = ;"
+SetQAttr(s,rhsChunks) ::= ". = ;"
+
+TokenPropertyRef_text(t) ::= "(!=null?.getText():null)"
+TokenPropertyRef_type(t) ::= "(!=null?.getType():0)"
+TokenPropertyRef_line(t) ::= "(!=null?.getLine():0)"
+TokenPropertyRef_pos(t) ::= "(!=null?.getCharPositionInLine():0)"
+TokenPropertyRef_channel(t) ::= "(!=null?.getChannel():0)"
+TokenPropertyRef_index(t) ::= "(!=null?.getTokenIndex():0)"
+TokenPropertyRef_tree(t) ::= "_tree"
+TokenPropertyRef_int(t) ::= "(!=null?Integer.valueOf(.getText()):0)"
+
+RulePropertyRef_start(r) ::= "(!=null?(().start):null)"
+RulePropertyRef_stop(r) ::= "(!=null?(().stop):null)"
+RulePropertyRef_tree(r) ::= "(!=null?(().tree):null)"
+RulePropertyRef_text(r) ::= "(!=null?((TokenStream)state.input).toString(.start,.stop):null)"
+RulePropertyRef_st(r) ::= "(!=null?.st:null)"
+
+DynScopeRef(s) ::= "_stack"
+DynScopeAttrRef(s) ::= "_stack.peek()."
+DynScopeAttrRef_negIndex(s, indexChunks) ::=
+ "_stack.get(_stack.size()--1)."
+DynScopeAttrRef_index(s, indexChunks) ::=
+ "_stack.get()."
+SetDynScopeAttr(s, rhsChunks) ::=
+ "_stack.peek(). =;"
+SetDynScopeAttr_negIndex(s, indexChunks, rhsChunks) ::=
+ "_stack.get(_stack.size()--1). =;"
+SetDynScopeAttr_index(s, indexChunks, rhsChunks) ::=
+ "_stack.get(). =;"
+
+AddToList(a) ::= ".add();"
+
+TokenDecl(t) ::= "Token ;"
+TokenTypeDecl(t) ::= "int