blob: beb0e9faa2dd29f323eda199c02ea7b4ba1c6ba7 [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,
};
}