blob: d9292f485c8a1868fa8a38c4c5662bdd6ac1141d [file] [log] [blame]
package test0002;
public class Parser
implements
BindingIds,
ParserBasicInformation,
TerminalTokens,
CompilerModifiers,
OperatorIds,
TypeIds {
protected ProblemReporter problemReporter;
protected CompilerOptions options;
public int firstToken; // handle for multiple parsing goals
public int lastAct; //handle for multiple parsing goals
protected ReferenceContext referenceContext;
public int currentToken;
private int synchronizedBlockSourceStart;
//error recovery management
protected int lastCheckPoint;
protected RecoveredElement currentElement;
public static boolean VERBOSE_RECOVERY = false;
protected boolean restartRecovery;
protected int listLength; // for recovering some incomplete list (interfaces, throws or parameters)
protected boolean hasError;
protected boolean hasReportedError;
public static boolean fineErrorDiagnose = true; //TODO remove the static modifier when new diagnose is ready
public boolean reportSyntaxErrorIsRequired = true;
public boolean reportOnlyOneSyntaxError = false;
protected int recoveredStaticInitializerStart;
protected int lastIgnoredToken, nextIgnoredToken; // comment
protected int lastErrorEndPosition;
protected boolean ignoreNextOpeningBrace;
//internal data for the automat
protected final static int StackIncrement = 255;
protected int stateStackTop;
protected int[] stack = new int[StackIncrement];
//scanner token
public Scanner scanner;
//ast stack
final static int AstStackIncrement = 100;
protected int astPtr;
protected AstNode[] astStack = new AstNode[AstStackIncrement];
protected int astLengthPtr;
protected int[] astLengthStack;
public CompilationUnitDeclaration compilationUnit; /*the result from parse()*/
AstNode[] noAstNodes = new AstNode[AstStackIncrement];
//expression stack
final static int ExpressionStackIncrement = 100;
protected int expressionPtr;
protected Expression[] expressionStack = new Expression[ExpressionStackIncrement];
protected int expressionLengthPtr;
protected int[] expressionLengthStack;
Expression[] noExpressions = new Expression[ExpressionStackIncrement];
//identifiers stacks
protected int identifierPtr;
protected char[][] identifierStack;
protected int identifierLengthPtr;
protected int[] identifierLengthStack;
protected long[] identifierPositionStack;
//positions , dimensions , .... (what ever is int) ..... stack
protected int intPtr;
protected int[] intStack;
protected int endPosition; //accurate only when used ! (the start position is pushed into intStack while the end the current one)
protected int endStatementPosition;
protected int lParenPos, rParenPos; //accurate only when used !
//modifiers dimensions nestedType etc.......
protected boolean optimizeStringLiterals = true;
protected int modifiers;
protected int modifiersSourceStart;
protected int nestedType, dimensions;
protected int[] nestedMethod; //the ptr is nestedType
protected int[] realBlockStack;
protected int realBlockPtr;
protected boolean diet = false; //tells the scanner to jump over some parts of the code/expressions like method bodies
protected int dietInt = 0; // if > 0 force the none-diet-parsing mode (even if diet if requested) [field parsing with anonymous inner classes...]
protected int[] variablesCounter;
//===DATA===DATA===DATA===DATA===DATA===DATA===//
public final static byte rhs[] = {0, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 1, 1, 1, 1, 3, 4, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1,
2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 4, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 3, 3, 2, 2, 1, 3, 1, 3, 1, 2, 1, 1, 1, 3, 0, 3,
1, 1, 1, 1, 1, 1, 1, 4, 1, 3, 3, 7, 0, 0, 0, 0, 0, 2, 1, 1, 1, 2,
2, 4, 4, 5, 4, 4, 2, 1, 2, 3, 3, 1, 3, 3, 1, 3, 1, 4, 0, 2, 1, 2,
2, 4, 1, 1, 2, 5, 5, 7, 7, 7, 7, 2, 2, 3, 2, 2, 3, 1, 2, 1, 2, 1,
1, 2, 2, 1, 1, 1, 1, 1, 3, 3, 4, 1, 3, 4, 0, 1, 2, 1, 1, 1, 1, 2,
3, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 5, 7, 7, 6, 2, 3, 3,
4, 1, 2, 2, 1, 2, 3, 2, 5, 5, 7, 9, 9, 1, 1, 1, 1, 3, 3, 5, 2, 3,
2, 3, 3, 3, 5, 1, 3, 4, 1, 2, 5, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
3, 3, 3, 3, 3, 1, 1, 5, 6, 8, 7, 2, 0, 2, 0, 1, 3, 3, 3, 3, 4, 3,
4, 1, 2, 3, 2, 1, 1, 2, 2, 3, 3, 4, 6, 6, 4, 4, 4, 1, 1, 1, 1, 2,
2, 0, 1, 1, 3, 3, 1, 3, 3, 1, 3, 3, 1, 6, 6, 5, 0, 0, 1, 3, 3, 3,
1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3,
1, 3, 1, 3, 1, 5, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 1, 0, 1, 0,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 2, 0, 0, 1, 0, 1, 0, 1, 0, 1};
public static char asb[] = null;
public static char asr[] = null;
public static char nasb[] = null;
public static char nasr[] = null;
public static char terminal_index[] = null;
public static char non_terminal_index[] = null;
public static char term_action[] = null;
public final static byte term_check[] = {0, 0, 0,
0, 0, 3, 0, 3, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 22,
0, 24, 25, 25, 4, 5, 6, 25, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 0, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 0, 0, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 0, 0, 0, 84, 85, 18, 19, 7, 8, 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 22, 21, 24, 25, 0, 26, 27, 28, 55,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 81, 54, 55, 0, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 81, 12, 83, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 0,
56, 0, 84, 85, 0, 4, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 22, 0, 24, 25, 24, 4, 5, 6, 55, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 0, 0, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 0, 13, 14, 15, 16, 17, 82, 7, 8, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 22, 0, 24, 25, 0, 4, 5, 6,
0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 81, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 41, 82, 0, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
0, 13, 14, 15, 16, 17, 57, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 22, 0, 24, 25, 0, 4, 5, 6, 0, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 27, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 0, 0, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 0, 13, 14, 15, 16, 17, 0, 7, 8,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 22, 0, 24, 25, 3, 0, 22,
0, 24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 91, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 3, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 40, 82, 0, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 0, 83, 0, 0, 0, 18, 19, 7, 8, 0, 1, 2, 0, 4, 5, 6, 7, 8, 9,
10, 11, 0, 22, 0, 24, 25, 22, 0, 24, 84, 85, 31, 32, 33, 34, 35,
36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
0, 54, 55, 3, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 40, 0, 29,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, 83, 0, 1, 2, 0,
86, 7, 8, 0, 1, 2, 91, 4, 5, 6, 7, 8, 9, 10, 11, 0, 22, 82, 24, 25,
87, 22, 89, 84, 85, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 54, 55, 70, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 1, 2, 70, 71, 72, 73, 74, 75, 76,
77, 78, 79, 80, 81, 0, 83, 0, 1, 2, 0, 0, 7, 8, 0, 1, 2, 3, 4, 5,
6, 7, 8, 0, 0, 0, 12, 22, 3, 24, 25, 55, 9, 10, 11, 0, 31, 32, 33,
34, 35, 36, 37, 38, 39, 21, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 0, 54, 55, 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 1,
2, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 0, 26, 0, 28, 55, 0,
87, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 12, 22, 0, 24, 25,
24, 9, 10, 11, 25, 31, 32, 33, 34, 35, 36, 37, 38, 39, 20, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 30, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 0, 0, 70, 71, 72, 73, 74, 75, 76,
77, 78, 79, 80, 0, 0, 0, 0, 3, 0, 3, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7,
8, 0, 0, 0, 12, 22, 0, 24, 25, 25, 9, 10, 11, 25, 31, 32, 33, 34,
35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 0, 54, 69, 0, 1, 2, 0, 4, 5, 6, 7, 8, 25, 7, 8, 0, 0, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 22, 0, 24, 25, 0, 0, 0, 0, 0,
31, 32, 33, 34, 35, 36, 37, 38, 39, 12, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 23, 54, 0, 30, 0, 3, 4, 5, 6, 7, 8, 7, 8, 40,
12, 104, 40, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 24, 25,
55, 0, 56, 0, 3, 31, 32, 33, 34, 35, 36, 37, 38, 39, 103, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 24, 54, 0, 86, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 0, 1, 2, 41, 4, 5, 6, 7, 8, 9, 10, 11,
0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 23, 0, 3, 26, 27, 28, 7,
8, 7, 8, 0, 12, 0, 0, 1, 2, 0, 0, 0, 54, 7, 8, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 22, 0, 22, 0, 3, 24, 25, 29, 30, 29, 30, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 0, 90, 55, 92, 93, 94, 95, 96, 97, 98, 99, 100,
101, 102, 67, 68, 0, 1, 2, 69, 0, 0, 22, 7, 8, 90, 0, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 0, 87, 24, 25, 4, 5, 6, 7, 8,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 0, 0, 55, 0, 1, 2, 55, 55, 0, 0, 7, 8, 55, 12,
67, 68, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 25, 24, 25, 12, 30, 22, 24,
25, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 0, 0, 55, 0, 1, 2, 53, 7, 8, 0, 7, 8, 25,
12, 67, 68, 56, 0, 1, 2, 3, 4, 5, 6, 7, 8, 25, 24, 25, 12, 0, 22,
0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 29, 0, 0, 0, 7, 8, 4, 5, 6, 7,
8, 67, 68, 69, 0, 1, 2, 0, 4, 5, 6, 24, 25, 9, 10, 11, 25, 24, 31,
32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 0, 1, 2, 0, 0, 0, 0, 7, 8, 3, 0, 24, 7, 8, 67, 68,
69, 0, 1, 2, 0, 4, 5, 6, 24, 25, 22, 24, 41, 42, 43, 31, 32, 33,
34, 35, 36, 37, 38, 39, 30, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 0, 0, 55, 89, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 67, 68, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 30, 0, 26, 27,
28, 29, 30, 0, 0, 1, 2, 0, 4, 5, 6, 40, 40, 9, 10, 11, 0, 13, 14,
15, 16, 17, 18, 19, 20, 53, 29, 56, 56, 22, 0, 0, 0, 0, 1, 2, 3, 4,
5, 6, 24, 69, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 25, 0, 26, 27, 28, 29, 30, 0, 0, 1, 2, 0, 4, 5, 6, 69, 40,
9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 0, 53, 29, 3, 56, 22, 0,
7, 8, 0, 1, 2, 3, 4, 5, 6, 24, 69, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 88, 55, 26, 27, 28, 29, 30, 0, 1, 2, 3,
4, 5, 6, 7, 8, 40, 0, 0, 0, 1, 2, 0, 4, 5, 6, 7, 8, 0, 53, 12, 3,
56, 0, 0, 7, 8, 0, 1, 2, 3, 4, 5, 6, 22, 69, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27, 28, 29, 30, 0, 0,
9, 10, 11, 40, 40, 0, 54, 40, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 0, 53, 22, 3, 56, 0, 0, 7, 8, 0, 1, 2, 3, 4, 5, 6, 30, 69,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0,
26, 27, 28, 29, 30, 0, 0, 69, 3, 4, 5, 6, 7, 8, 40, 0, 1, 2, 12, 0,
22, 0, 7, 8, 25, 55, 0, 53, 30, 0, 56, 25, 3, 4, 5, 6, 7, 8, 12,
24, 25, 12, 0, 69, 25, 24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 29, 0, 0,
0, 7, 8, 0, 0, 24, 3, 3, 67, 68, 7, 8, 0, 0, 0, 12, 12, 0, 24, 25,
22, 9, 10, 11, 24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 20, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 0, 0, 0, 3, 7, 8,
0, 0, 0, 3, 3, 67, 68, 7, 8, 7, 8, 0, 12, 12, 53, 24, 25, 22, 22,
25, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 90, 0, 0, 0, 7, 8, 0, 0,
0, 3, 3, 67, 68, 7, 8, 7, 8, 0, 12, 12, 0, 24, 25, 22, 7, 8, 24,
24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 0, 1, 2, 69, 0, 0, 0, 7, 8, 0, 0, 0, 3, 3,
67, 68, 7, 8, 7, 8, 0, 12, 12, 53, 24, 25, 22, 7, 8, 24, 24, 31,
32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 0, 1, 2, 0, 0, 0, 0, 7, 8, 0, 0, 0, 3, 3, 67, 68,
7, 8, 12, 0, 0, 12, 12, 12, 24, 25, 23, 40, 0, 25, 25, 31, 32, 33,
34, 35, 36, 37, 38, 39, 12, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 0, 1, 2, 0, 0, 0, 40, 7, 8, 0, 0, 0, 3, 3, 67, 68, 7, 8, 0,
0, 53, 12, 12, 12, 24, 25, 0, 0, 25, 25, 25, 31, 32, 33, 34, 35,
36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
0, 1, 2, 0, 0, 0, 40, 7, 8, 0, 0, 24, 3, 3, 67, 68, 7, 8, 0, 0, 55,
12, 12, 0, 24, 25, 22, 0, 25, 24, 0, 31, 32, 33, 34, 35, 36, 37,
38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2,
29, 0, 0, 29, 7, 8, 0, 0, 0, 3, 3, 67, 68, 7, 8, 0, 0, 0, 12, 12,
3, 24, 25, 0, 40, 0, 25, 25, 31, 32, 33, 34, 35, 36, 37, 38, 39,
29, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 0, 0,
40, 0, 7, 8, 0, 0, 0, 3, 3, 67, 68, 7, 8, 0, 0, 0, 12, 12, 3, 24,
25, 0, 0, 25, 25, 24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 29, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 29, 0, 40, 0,
7, 8, 0, 0, 0, 3, 3, 67, 68, 7, 8, 0, 0, 0, 12, 12, 3, 24, 25, 0,
0, 0, 25, 24, 31, 32, 33, 34, 35, 36, 37, 38, 39, 29, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2, 30, 29, 0, 0, 7, 8, 0,
0, 0, 3, 3, 67, 68, 7, 8, 12, 0, 0, 12, 12, 12, 24, 25, 0, 0, 0, 3,
25, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 0, 1, 2, 29, 0, 30, 0, 7, 8, 0, 0, 0, 3, 0,
67, 68, 7, 8, 0, 0, 0, 12, 12, 3, 24, 25, 22, 0, 22, 0, 0, 31, 32,
33, 34, 35, 36, 37, 38, 39, 22, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 0, 1, 2, 89, 30, 29, 29, 7, 8, 0, 0, 0, 3, 3, 67, 68,
7, 8, 0, 0, 0, 12, 88, 0, 24, 25, 0, 0, 0, 0, 0, 31, 32, 33, 34,
35, 36, 37, 38, 39, 29, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 0, 1, 2, 29, 29, 29, 0, 7, 8, 0, 0, 0, 3, 0, 67, 68, 7, 8, 0,
0, 0, 12, 0, 0, 24, 25, 0, 0, 22, 0, 0, 31, 32, 33, 34, 35, 36, 37,
38, 39, 0, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 0, 1, 2,
0, 0, 29, 29, 7, 8, 0, 0, 0, 25, 0, 67, 68, 0, 0, 0, 0, 0, 0, 0, 0,
24, 25, 0, 0, 25, 25, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 29,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 30, 88, 29, 29, 0,
0, 29, 0, 1, 2, 3, 4, 5, 6, 67, 68, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27, 28, 29, 30, 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
53, 23, 30, 56, 26, 27, 28, 0, 0, 1, 2, 3, 4, 5, 6, 0, 69, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27,
28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 53, 23, 0, 56, 26, 27, 28, 0, 0, 1, 2, 3,
4, 5, 6, 0, 69, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 0, 0, 26, 27, 28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 53, 23, 0, 56, 26, 27,
28, 0, 0, 1, 2, 3, 4, 5, 6, 0, 69, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27, 28, 29, 30, 0, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
53, 23, 0, 56, 26, 27, 28, 0, 0, 1, 2, 3, 4, 5, 6, 0, 69, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27,
28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 53, 23, 0, 56, 0, 1, 2, 3, 4, 5, 6, 0, 0,
9, 10, 11, 69, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0,
26, 27, 28, 29, 30, 24, 0, 1, 2, 0, 4, 5, 6, 0, 40, 9, 10, 11, 0,
13, 14, 15, 16, 17, 0, 0, 0, 53, 29, 0, 56, 0, 1, 2, 3, 4, 5, 6,
29, 0, 9, 10, 11, 69, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
29, 0, 26, 27, 28, 29, 30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 53, 23, 0, 56, 0, 1, 2, 0,
4, 5, 6, 0, 0, 9, 10, 11, 69, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 0, 22, 26, 27, 28, 29, 30, 0, 24, 0, 3, 4, 5, 6, 7, 8, 40,
0, 0, 12, 0, 0, 22, 0, 0, 0, 42, 43, 0, 53, 0, 22, 56, 0, 1, 2, 0,
4, 5, 6, 22, 24, 9, 10, 11, 69, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 29, 40, 26, 27, 28, 29, 30, 0, 81, 0, 0, 0, 0, 0, 0, 54,
40, 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 53, 0, 22, 56, 0,
1, 2, 22, 4, 5, 6, 29, 24, 9, 10, 11, 69, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 0, 0, 26, 27, 28, 29, 30, 0, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 53, 23, 0,
56, 0, 1, 2, 0, 4, 5, 6, 0, 0, 9, 10, 11, 69, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 0, 22, 26, 27, 28, 29, 30, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 53,
23, 0, 56, 26, 27, 28, 0, 0, 1, 2, 3, 4, 5, 6, 0, 69, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27, 28,
22, 30, 0, 0, 1, 2, 3, 4, 5, 6, 0, 40, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27, 28, 0, 30, 0, 0, 1,
2, 3, 4, 5, 6, 0, 40, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 0, 0, 26, 27, 28, 0, 30, 0, 0, 1, 2, 3, 4, 5, 6, 0,
40, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0,
0, 26, 27, 28, 0, 30, 0, 0, 1, 2, 3, 4, 5, 6, 0, 40, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 26, 27, 28, 0,
30, 0, 3, 4, 5, 6, 7, 8, 0, 0, 40, 12, 3, 4, 5, 6, 7, 8, 24, 25, 0,};
}