@plurnk/plurnk-contracts 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +9 -5
  2. package/SPEC.md +327 -227
  3. package/dist/plurnk.gemma.gbnf +160 -0
  4. package/dist/plurnk.qwen.gbnf +149 -0
  5. package/dist/schema/ClientStatement.json +7 -1
  6. package/dist/schema/EntryReadResult.json +1 -9
  7. package/dist/schema/PlurnkStatement.json +56 -11
  8. package/dist/schema/ProposalProjection.json +1 -1
  9. package/dist/schema/ProviderAccounting.json +30 -0
  10. package/dist/schema/ProviderCost.json +6 -15
  11. package/dist/schema/ProviderRequestAccounting.json +17 -0
  12. package/dist/schema/ProviderUsage.json +40 -0
  13. package/dist/schema/ResourceSelection.json +1 -1
  14. package/dist/schema/TextLineMarker.json +21 -0
  15. package/dist/src/AstBuilder.d.ts.map +1 -1
  16. package/dist/src/AstBuilder.js +108 -20
  17. package/dist/src/AstBuilder.js.map +1 -1
  18. package/dist/src/PlurnkErrorStrategy.d.ts +1 -0
  19. package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -1
  20. package/dist/src/PlurnkErrorStrategy.js +42 -19
  21. package/dist/src/PlurnkErrorStrategy.js.map +1 -1
  22. package/dist/src/PlurnkParser.d.ts.map +1 -1
  23. package/dist/src/PlurnkParser.js +22 -145
  24. package/dist/src/PlurnkParser.js.map +1 -1
  25. package/dist/src/TagSignal.d.ts +15 -0
  26. package/dist/src/TagSignal.d.ts.map +1 -0
  27. package/dist/src/TagSignal.js +48 -0
  28. package/dist/src/TagSignal.js.map +1 -0
  29. package/dist/src/Validator.d.ts +1 -0
  30. package/dist/src/Validator.d.ts.map +1 -1
  31. package/dist/src/Validator.js +7 -0
  32. package/dist/src/Validator.js.map +1 -1
  33. package/dist/src/generated/plurnkLexer.d.ts +99 -64
  34. package/dist/src/generated/plurnkLexer.d.ts.map +1 -1
  35. package/dist/src/generated/plurnkLexer.js +879 -526
  36. package/dist/src/generated/plurnkLexer.js.map +1 -1
  37. package/dist/src/generated/plurnkParser.d.ts +99 -109
  38. package/dist/src/generated/plurnkParser.d.ts.map +1 -1
  39. package/dist/src/generated/plurnkParser.js +943 -1070
  40. package/dist/src/generated/plurnkParser.js.map +1 -1
  41. package/dist/src/generated/plurnkParserVisitor.d.ts +19 -5
  42. package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -1
  43. package/dist/src/generated/plurnkParserVisitor.js +16 -4
  44. package/dist/src/generated/plurnkParserVisitor.js.map +1 -1
  45. package/dist/src/index.d.ts +2 -0
  46. package/dist/src/index.d.ts.map +1 -1
  47. package/dist/src/index.js +1 -0
  48. package/dist/src/index.js.map +1 -1
  49. package/dist/src/types.d.ts +1 -1
  50. package/dist/src/types.d.ts.map +1 -1
  51. package/dist/src/types.generated.d.ts +79 -22
  52. package/dist/src/types.generated.d.ts.map +1 -1
  53. package/dist/src/types.js +1 -1
  54. package/dist/src/types.js.map +1 -1
  55. package/package.json +3 -2
  56. package/plurnk.md +140 -96
  57. package/dist/plurnk.gbnf +0 -394
@@ -5,18 +5,18 @@ export class plurnkLexer extends antlr.Lexer {
5
5
  static LPAREN = 3;
6
6
  static RPAREN = 4;
7
7
  static L_MARKER = 5;
8
- static COLON = 6;
9
- static COMMA = 7;
10
- static INT = 8;
11
- static DISPOSITION = 9;
12
- static IDENT = 10;
13
- static TAG = 11;
14
- static TARGET_TEXT = 12;
15
- static BODY_TEXT = 13;
16
- static CLOSE_TAG = 14;
17
- static TEXT = 15;
18
- static OPEN_TURN = 16;
19
- static CLOSE_TURN = 17;
8
+ static COMBINED_L_MARKER = 6;
9
+ static BODY_OPEN = 7;
10
+ static SECTION_END = 8;
11
+ static COMMA = 9;
12
+ static INT = 10;
13
+ static DISPOSITION = 11;
14
+ static IDENT = 12;
15
+ static TAG = 13;
16
+ static TARGET_TEXT = 14;
17
+ static BODY_TEXT = 15;
18
+ static TEXT = 16;
19
+ static OPEN_PLAN = 17;
20
20
  static OPEN_FIND = 18;
21
21
  static OPEN_READ = 19;
22
22
  static OPEN_EDIT = 20;
@@ -26,21 +26,22 @@ export class plurnkLexer extends antlr.Lexer {
26
26
  static OPEN_FOLD = 24;
27
27
  static OPEN_SEND = 25;
28
28
  static OPEN_EXEC = 26;
29
- static OPEN_WORK = 27;
30
- static OPEN_FORK = 28;
31
- static OPEN_KILL = 29;
32
- static OPEN_PLAN = 30;
29
+ static OPEN_BARE = 27;
30
+ static OPEN_WORK = 28;
31
+ static OPEN_FORK = 29;
32
+ static OPEN_KILL = 30;
33
33
  static OPEN_LOOK = 31;
34
34
  static OPEN_BUFF = 32;
35
- static WS = 33;
36
- static SLOTS_WS = 34;
37
- static ST_WS = 35;
38
- static SI_WS = 36;
39
- static SD_WS = 37;
40
- static ST_COMMA = 38;
41
- static TARGET_BACKSLASH = 39;
42
- static B_NEWLINE_MULTILINE = 40;
43
- static B_COLON = 41;
35
+ static FENCE_OPEN = 33;
36
+ static FENCE_CLOSE = 34;
37
+ static WS = 35;
38
+ static SLOTS_WS = 36;
39
+ static ST_WS = 37;
40
+ static SI_WS = 38;
41
+ static SD_WS = 39;
42
+ static TEXT_HASH = 40;
43
+ static ST_COMMA = 41;
44
+ static TARGET_BACKSLASH = 42;
44
45
  static SLOTS = 1;
45
46
  static SIGNAL_TAGS = 2;
46
47
  static SIGNAL_INT = 3;
@@ -54,169 +55,181 @@ export class plurnkLexer extends antlr.Lexer {
54
55
  null, null, null, null, null, null, null, null, null, null, null,
55
56
  null, null, null, null, null, null, null, null, null, null, null,
56
57
  null, null, null, null, null, null, null, null, null, null, null,
57
- null, null, null, null, null, "','", "'\\'", "'\\n'", "':'"
58
+ null, null, null, null, null, null, null, "'#'", "','", "'\\'"
58
59
  ];
59
60
  static symbolicNames = [
60
- null, "LBRACKET", "RBRACKET", "LPAREN", "RPAREN", "L_MARKER", "COLON",
61
- "COMMA", "INT", "DISPOSITION", "IDENT", "TAG", "TARGET_TEXT", "BODY_TEXT",
62
- "CLOSE_TAG", "TEXT", "OPEN_TURN", "CLOSE_TURN", "OPEN_FIND", "OPEN_READ",
63
- "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE", "OPEN_OPEN", "OPEN_FOLD",
64
- "OPEN_SEND", "OPEN_EXEC", "OPEN_WORK", "OPEN_FORK", "OPEN_KILL",
65
- "OPEN_PLAN", "OPEN_LOOK", "OPEN_BUFF", "WS", "SLOTS_WS", "ST_WS",
66
- "SI_WS", "SD_WS", "ST_COMMA", "TARGET_BACKSLASH", "B_NEWLINE_MULTILINE",
67
- "B_COLON"
61
+ null, "LBRACKET", "RBRACKET", "LPAREN", "RPAREN", "L_MARKER", "COMBINED_L_MARKER",
62
+ "BODY_OPEN", "SECTION_END", "COMMA", "INT", "DISPOSITION", "IDENT",
63
+ "TAG", "TARGET_TEXT", "BODY_TEXT", "TEXT", "OPEN_PLAN", "OPEN_FIND",
64
+ "OPEN_READ", "OPEN_EDIT", "OPEN_COPY", "OPEN_MOVE", "OPEN_OPEN",
65
+ "OPEN_FOLD", "OPEN_SEND", "OPEN_EXEC", "OPEN_BARE", "OPEN_WORK",
66
+ "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK", "OPEN_BUFF", "FENCE_OPEN",
67
+ "FENCE_CLOSE", "WS", "SLOTS_WS", "ST_WS", "SI_WS", "SD_WS", "TEXT_HASH",
68
+ "ST_COMMA", "TARGET_BACKSLASH"
68
69
  ];
69
70
  static modeNames = [
70
71
  "DEFAULT_MODE", "SLOTS", "SIGNAL_TAGS", "SIGNAL_INT", "SIGNAL_IDENT",
71
72
  "TARGET", "BODY",
72
73
  ];
73
74
  static ruleNames = [
74
- "SUFFIX", "NUM", "L_PATTERN", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT",
75
- "OPEN_COPY", "OPEN_MOVE", "OPEN_OPEN", "OPEN_FOLD", "OPEN_SEND",
76
- "OPEN_EXEC", "OPEN_WORK", "OPEN_FORK", "OPEN_KILL", "OPEN_PLAN",
77
- "OPEN_TURN", "OPEN_LOOK", "OPEN_BUFF", "WS", "THINK_BLOCK", "CHANNEL_BLOCK",
78
- "CLOSE_TURN", "TEXT", "SLOTS_WS", "SLOTS_LB_TAGS", "SLOTS_LB_INT",
79
- "SLOTS_LB_IDENT", "SLOTS_LPAREN", "SLOTS_L", "SLOTS_EMPTY_CLOSE",
80
- "SLOTS_COLON_TURN", "SLOTS_COLON", "ST_WS", "ST_COMMA", "ST_TAG",
75
+ "SUFFIX", "NUM", "L_PATTERN", "LINE_ANCHOR", "TEXT_COORD", "TEXT_L_PATTERN",
76
+ "COMBINED_LINE_COORD", "COMBINED_TEXT_COORD", "COMBINED_TEXT_L_PATTERN",
77
+ "EOL", "OPEN_PLAN", "OPEN_FIND", "OPEN_READ", "OPEN_EDIT", "OPEN_COPY",
78
+ "OPEN_MOVE", "OPEN_OPEN", "OPEN_FOLD", "OPEN_SEND", "OPEN_EXEC",
79
+ "OPEN_BARE", "OPEN_WORK", "OPEN_FORK", "OPEN_KILL", "OPEN_LOOK",
80
+ "OPEN_BUFF", "FENCE_OPEN", "FENCE_CLOSE", "WS", "THINK_BLOCK", "CHANNEL_BLOCK",
81
+ "TEXT", "TEXT_HASH", "SLOTS_WS", "SLOTS_LB_TAGS", "SLOTS_LB_INT",
82
+ "SLOTS_LB_IDENT", "SLOTS_LPAREN", "SLOTS_TEXT_L", "SLOTS_L", "SLOTS_COMBINED_TEXT_L",
83
+ "SLOTS_DIRECT_END", "SLOTS_BODY_OPEN", "ST_WS", "ST_COMMA", "ST_TAG",
81
84
  "ST_END", "SI_WS", "SI_DISP", "SI_INT", "SI_END", "SD_WS", "SD_IDENT",
82
85
  "SD_END", "TARGET_ESCAPE", "TARGET_INNER", "TARGET_BACKSLASH", "TARGET_NEST_OPEN",
83
- "TARGET_NEST_END", "TARGET_END", "B_IMPLICIT_CLOSE", "B_CLOSE",
84
- "B_RUN", "B_NEWLINE_MULTILINE", "B_COLON",
86
+ "TARGET_NEST_END", "TARGET_END", "B_FENCE_CLOSE", "B_FENCE_END",
87
+ "B_SECTION_END", "B_DIRECT_END", "B_EMPTY_SPACED_END", "B_RUN",
88
+ "B_CRLF", "B_LF", "B_CR",
85
89
  ];
86
- openTag = "";
87
- openTagLine = 0;
88
- openTagColumn = 0;
89
- bodyStart = null;
90
+ activeSuffix = null;
91
+ openOp = "";
92
+ openHeading = "";
93
+ openHeadingLine = 0;
94
+ openHeadingColumn = 0;
95
+ slotReady = false;
90
96
  targetDepth = 0;
91
- setOpenTag() {
92
- this.openTag = this.text.substring(2);
93
- // Capture where the open tag began, for reference in mismatched-close-tag errors.
94
- this.openTagLine = this.currentTokenStartLine;
95
- this.openTagColumn = this.currentTokenColumn;
96
- this.bodyStart = null;
97
- }
98
- getOpenTag() { return this.openTag; }
99
- getOpenTagLine() { return this.openTagLine; }
100
- getOpenTagColumn() { return this.openTagColumn; }
101
- setBodyStart() {
102
- this.bodyStart = { line: this.line, column: this.column };
103
- }
104
- getBodyStart() {
105
- if (this.bodyStart === null)
106
- throw new Error("BODY start requested before entering BODY mode");
107
- return this.bodyStart;
108
- }
109
- atColonCloseTag() {
110
- if (this.inputStream.LA(1) !== 0x3A /* ':' */)
111
- return false;
112
- const tag = this.openTag;
113
- if (tag.length === 0)
114
- return false;
115
- for (let i = 0; i < tag.length; i++) {
116
- if (this.inputStream.LA(i + 2) !== tag.charCodeAt(i))
97
+ bodyAtStart = false;
98
+ terminalSend = false;
99
+ documentFence = false;
100
+ static PROTOCOL_OPS = [
101
+ "FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD",
102
+ "SEND", "EXEC", "BARE", "WORK", "FORK", "KILL",
103
+ ];
104
+ static CLIENT_OPS = ["LOOK", "BUFF"];
105
+ isSuffixChar(c) {
106
+ return (c >= 0x30 && c <= 0x39)
107
+ || (c >= 0x41 && c <= 0x5A)
108
+ || (c >= 0x61 && c <= 0x7A)
109
+ || c === 0x5F;
110
+ }
111
+ matchesLiteral(offset, literal) {
112
+ for (let i = 0; i < literal.length; i++) {
113
+ if (this.inputStream.LA(offset + i) !== literal.charCodeAt(i))
117
114
  return false;
118
115
  }
119
- const followChar = this.inputStream.LA(tag.length + 2);
120
- if (followChar > 0 && this.isIdentChar(followChar))
121
- return false;
122
116
  return true;
123
117
  }
124
- isIdentChar(c) {
125
- return (c >= 0x30 && c <= 0x39) ||
126
- (c >= 0x41 && c <= 0x5A) ||
127
- (c >= 0x61 && c <= 0x7A) ||
128
- c === 0x5F;
129
- }
130
- consumeRestOfCloseTagAfterColon() {
131
- const remaining = this.openTag.length - 1;
132
- for (let i = 0; i < remaining; i++) {
133
- // Consume through the simulator so its line/column state advances with
134
- // the character stream. Direct CharStream consumption corrupts every
135
- // later token position by the number of skipped closer characters.
136
- this.interpreter.consume(this.inputStream);
137
- }
138
- }
139
- isOpKeywordAfterLtLt() {
140
- // The full minted op keyword set across all tiers — protocol (FIND…PLAN), script (TURN),
141
- // and client (LOOK/BUFF). Membership here means `<<KW` lexes as an opener, NOT prose, so a
142
- // client op in a protocol/script position becomes an OPEN_* token the parser then rejects
143
- // (territorial integrity: a minted op fails hard out of tier, it never masquerades as text).
144
- const ops = ["FIND", "READ", "EDIT", "COPY", "MOVE", "OPEN", "FOLD", "SEND", "EXEC", "WORK", "FORK", "KILL", "PLAN", "TURN", "LOOK", "BUFF"];
145
- for (const op of ops) {
146
- let matches = true;
147
- for (let i = 0; i < op.length; i++) {
148
- if (this.inputStream.LA(i + 1) !== op.charCodeAt(i)) {
149
- matches = false;
150
- break;
151
- }
152
- }
153
- if (matches)
154
- return true;
155
- }
156
- return false;
157
- }
158
- isSendOp() { return this.openTag.startsWith("SEND"); }
159
- isExecOp() { return this.openTag.startsWith("EXEC"); }
160
- isKillOp() { return this.openTag.startsWith("KILL"); }
161
- isTurnOp() { return this.openTag.startsWith("TURN"); }
162
- // FIND matcher bodies and forbidden READ body spellings are single-line. A
163
- // newline before the close tag means the closer was forgotten, so it closes
164
- // the body implicitly before operation-specific AST validation.
165
- isSingleLineBodyOp() {
166
- return this.openTag.startsWith("FIND") || this.openTag.startsWith("READ");
167
- }
168
- // Implicit closes recorded for the parser to surface as recoverable errors.
169
- implicitCloses = [];
170
- getImplicitCloses() { return this.implicitCloses; }
171
- // TURN suffix stack — one entry per open `<<TURN…:` body (pushed by the TURN colon below,
172
- // popped by `:TURN`). Stack depth doubles as nesting depth: a `:TURN` close only fires inside
173
- // an open TURN, so a stray `:TURN` at top level (or in preamble prose) stays TEXT.
174
- turnSuffixStack = [];
175
- // True when the stream is at the matching `:TURN<suffix>` close for the innermost open TURN.
176
- // Mirrors atColonCloseTag: exact suffix match AND a non-ident follow char, so `:TURNING` (or
177
- // a mismatched `:TURN2` for a `<<TURN1`) does NOT false-close inside a turn's prose.
178
- atTurnCloseTag() {
179
- if (this.turnSuffixStack.length === 0)
180
- return false;
181
- if (this.inputStream.LA(1) !== 0x3A /* ':' */)
182
- return false;
183
- const tag = "TURN" + this.turnSuffixStack[this.turnSuffixStack.length - 1];
184
- for (let i = 0; i < tag.length; i++) {
185
- if (this.inputStream.LA(i + 2) !== tag.charCodeAt(i))
186
- return false;
118
+ headingAt(offset) {
119
+ let level;
120
+ let cursor = offset;
121
+ if (this.matchesLiteral(cursor, "# PLAN")) {
122
+ level = 1;
123
+ cursor += "# PLAN".length;
124
+ }
125
+ else if (this.matchesLiteral(cursor, "## ")) {
126
+ level = 2;
127
+ cursor += 3;
128
+ }
129
+ else {
130
+ return null;
187
131
  }
188
- const followChar = this.inputStream.LA(tag.length + 2);
189
- if (followChar > 0 && this.isIdentChar(followChar))
132
+ let op = "PLAN";
133
+ if (level === 2) {
134
+ const operations = [...plurnkLexer.PROTOCOL_OPS, ...plurnkLexer.CLIENT_OPS];
135
+ op = operations.find((candidate) => this.matchesLiteral(cursor, candidate)) ?? "";
136
+ if (op.length === 0)
137
+ return null;
138
+ cursor += op.length;
139
+ }
140
+ let suffix = "";
141
+ while (this.isSuffixChar(this.inputStream.LA(cursor))) {
142
+ suffix += String.fromCharCode(this.inputStream.LA(cursor));
143
+ cursor++;
144
+ }
145
+ const next = this.inputStream.LA(cursor);
146
+ const headerContinues = next <= 0
147
+ || next === 0x20 || next === 0x09
148
+ || next === 0x5B || next === 0x28 || next === 0x3C
149
+ || next === 0x0A || next === 0x0D;
150
+ if (!headerContinues)
151
+ return null;
152
+ const startsNextTurn = level === 1 && op === "PLAN" && this.terminalSend;
153
+ if (this.activeSuffix !== null && suffix !== this.activeSuffix && !startsNextTurn)
154
+ return null;
155
+ return { level, op, suffix };
156
+ }
157
+ matchesHeading(level, op) {
158
+ // The initial PLAN terminates tolerated provider preamble text, even when
159
+ // the provider omitted a separating newline. Once PLAN establishes the
160
+ // lane, every heading retains the ordinary column-zero boundary.
161
+ const initialPlan = level === 1 && op === "PLAN" && this.activeSuffix === null;
162
+ if (this.column !== 0 && !initialPlan)
190
163
  return false;
191
- return true;
164
+ const heading = this.headingAt(1);
165
+ return heading !== null && heading.level === level && heading.op === op;
166
+ }
167
+ open(level, op) {
168
+ const prefixLength = (level === 1 ? "# " : "## ").length + op.length;
169
+ const suffix = this.text.slice(prefixLength);
170
+ const startsNextTurn = level === 1 && op === "PLAN" && this.terminalSend;
171
+ if (this.activeSuffix === null || startsNextTurn)
172
+ this.activeSuffix = suffix;
173
+ this.openOp = op;
174
+ this.openHeading = this.text;
175
+ this.openHeadingLine = this.currentTokenStartLine;
176
+ this.openHeadingColumn = this.currentTokenColumn;
177
+ this.slotReady = true;
178
+ this.bodyAtStart = false;
179
+ this.terminalSend = false;
192
180
  }
193
- // Narrow single-colon empty-body close: at the post-target/modifier `:`, the stream is the
194
- // op's own close tag `:OP<suffix>` AND it is followed by a STATEMENT BOUNDARY
195
- // (newline / EOF / optional horizontal space then next `<<`). So `<<READ(t):READ\n` closes empty, but a bodied op whose body
196
- // starts with the op keyword (`<<EDIT(t):EDIT this:EDIT` — space follows) is NOT mis-closed.
197
- // Canon still prescribes `::OP`; this only forgives the HEREDOC-natural single colon.
198
- atSlotsEmptyClose() {
199
- if (this.isTurnOp())
200
- return false; // TURN closes with :TURN, not an empty body
201
- if (this.openTag.length === 0)
181
+ markDisposition() {
182
+ if (this.openOp === "SEND")
183
+ this.terminalSend = true;
184
+ }
185
+ offsetAfterEol(offset) {
186
+ if (this.inputStream.LA(offset) === 0x0D && this.inputStream.LA(offset + 1) === 0x0A)
187
+ return offset + 2;
188
+ if (this.inputStream.LA(offset) === 0x0A)
189
+ return offset + 1;
190
+ return null;
191
+ }
192
+ headingAfterDirectEol() {
193
+ const after = this.offsetAfterEol(1);
194
+ return after !== null && this.headingAt(after) !== null;
195
+ }
196
+ headingAfterBlankLine() {
197
+ let after = this.offsetAfterEol(1);
198
+ if (after === null)
202
199
  return false;
203
- if (this.inputStream.LA(1) !== 0x3A /* ':' */)
200
+ while (this.inputStream.LA(after) === 0x20 || this.inputStream.LA(after) === 0x09)
201
+ after++;
202
+ after = this.offsetAfterEol(after);
203
+ return after !== null && this.headingAt(after) !== null;
204
+ }
205
+ headingAfterEmptySpacedLine() {
206
+ if (!this.bodyAtStart)
204
207
  return false;
205
- const tag = this.openTag;
206
- for (let i = 0; i < tag.length; i++) {
207
- if (this.inputStream.LA(i + 2) !== tag.charCodeAt(i))
208
- return false;
209
- }
210
- let offset = tag.length + 2;
211
- let follow = this.inputStream.LA(offset);
212
- while (follow === 0x20 /* space */ || follow === 0x09 /* tab */) {
213
- follow = this.inputStream.LA(++offset);
214
- }
215
- return follow <= 0
216
- || follow === 0x0A /* \n */
217
- || follow === 0x0D /* \r */
218
- || (follow === 0x3C /* < */ && this.inputStream.LA(offset + 1) === 0x3C /* < */);
208
+ let after = 1;
209
+ while (this.inputStream.LA(after) === 0x20 || this.inputStream.LA(after) === 0x09)
210
+ after++;
211
+ const lineEnd = this.offsetAfterEol(after);
212
+ return lineEnd !== null && this.headingAt(lineEnd) !== null;
213
+ }
214
+ beginBody() { this.bodyAtStart = true; }
215
+ retainBody() { this.bodyAtStart = false; }
216
+ openDocumentFence() { this.documentFence = true; }
217
+ closeDocumentFence() { this.documentFence = false; }
218
+ inDocumentFence() { return this.documentFence; }
219
+ fenceAfterDirectEol() {
220
+ const after = this.offsetAfterEol(1);
221
+ return after !== null && this.matchesLiteral(after, "```");
222
+ }
223
+ getOpenTag() { return this.openOp + (this.activeSuffix ?? ""); }
224
+ getOpenTagLine() { return this.openHeadingLine; }
225
+ getOpenTagColumn() { return this.openHeadingColumn; }
226
+ getOpenHeading() { return this.openHeading; }
227
+ isSendOp() { return this.openOp === "SEND"; }
228
+ isExecOp() { return this.openOp === "EXEC"; }
229
+ isTextCoordinateOp() {
230
+ return this.openOp === "READ" || this.openOp === "EDIT" || this.openOp === "COPY" || this.openOp === "MOVE" || this.openOp === "LOOK";
219
231
  }
232
+ isKillOp() { return this.openOp === "KILL"; }
220
233
  constructor(input) {
221
234
  super(input);
222
235
  this.interpreter = new antlr.LexerATNSimulator(this, plurnkLexer._ATN, plurnkLexer.decisionsToDFA, new antlr.PredictionContextCache());
@@ -230,356 +243,633 @@ export class plurnkLexer extends antlr.Lexer {
230
243
  get modeNames() { return plurnkLexer.modeNames; }
231
244
  action(localContext, ruleIndex, actionIndex) {
232
245
  switch (ruleIndex) {
233
- case 3:
246
+ case 10:
247
+ this.OPEN_PLAN_action(localContext, actionIndex);
248
+ break;
249
+ case 11:
234
250
  this.OPEN_FIND_action(localContext, actionIndex);
235
251
  break;
236
- case 4:
252
+ case 12:
237
253
  this.OPEN_READ_action(localContext, actionIndex);
238
254
  break;
239
- case 5:
255
+ case 13:
240
256
  this.OPEN_EDIT_action(localContext, actionIndex);
241
257
  break;
242
- case 6:
258
+ case 14:
243
259
  this.OPEN_COPY_action(localContext, actionIndex);
244
260
  break;
245
- case 7:
261
+ case 15:
246
262
  this.OPEN_MOVE_action(localContext, actionIndex);
247
263
  break;
248
- case 8:
264
+ case 16:
249
265
  this.OPEN_OPEN_action(localContext, actionIndex);
250
266
  break;
251
- case 9:
267
+ case 17:
252
268
  this.OPEN_FOLD_action(localContext, actionIndex);
253
269
  break;
254
- case 10:
270
+ case 18:
255
271
  this.OPEN_SEND_action(localContext, actionIndex);
256
272
  break;
257
- case 11:
273
+ case 19:
258
274
  this.OPEN_EXEC_action(localContext, actionIndex);
259
275
  break;
260
- case 12:
276
+ case 20:
277
+ this.OPEN_BARE_action(localContext, actionIndex);
278
+ break;
279
+ case 21:
261
280
  this.OPEN_WORK_action(localContext, actionIndex);
262
281
  break;
263
- case 13:
282
+ case 22:
264
283
  this.OPEN_FORK_action(localContext, actionIndex);
265
284
  break;
266
- case 14:
285
+ case 23:
267
286
  this.OPEN_KILL_action(localContext, actionIndex);
268
287
  break;
269
- case 15:
270
- this.OPEN_PLAN_action(localContext, actionIndex);
271
- break;
272
- case 16:
273
- this.OPEN_TURN_action(localContext, actionIndex);
274
- break;
275
- case 17:
288
+ case 24:
276
289
  this.OPEN_LOOK_action(localContext, actionIndex);
277
290
  break;
278
- case 18:
291
+ case 25:
279
292
  this.OPEN_BUFF_action(localContext, actionIndex);
280
293
  break;
281
- case 22:
282
- this.CLOSE_TURN_action(localContext, actionIndex);
294
+ case 26:
295
+ this.FENCE_OPEN_action(localContext, actionIndex);
283
296
  break;
284
- case 28:
297
+ case 27:
298
+ this.FENCE_CLOSE_action(localContext, actionIndex);
299
+ break;
300
+ case 33:
301
+ this.SLOTS_WS_action(localContext, actionIndex);
302
+ break;
303
+ case 37:
285
304
  this.SLOTS_LPAREN_action(localContext, actionIndex);
286
305
  break;
287
- case 30:
288
- this.SLOTS_EMPTY_CLOSE_action(localContext, actionIndex);
306
+ case 42:
307
+ this.SLOTS_BODY_OPEN_action(localContext, actionIndex);
289
308
  break;
290
- case 31:
291
- this.SLOTS_COLON_TURN_action(localContext, actionIndex);
309
+ case 46:
310
+ this.ST_END_action(localContext, actionIndex);
292
311
  break;
293
- case 32:
294
- this.SLOTS_COLON_action(localContext, actionIndex);
312
+ case 48:
313
+ this.SI_DISP_action(localContext, actionIndex);
314
+ break;
315
+ case 50:
316
+ this.SI_END_action(localContext, actionIndex);
317
+ break;
318
+ case 53:
319
+ this.SD_END_action(localContext, actionIndex);
295
320
  break;
296
- case 47:
321
+ case 57:
297
322
  this.TARGET_NEST_OPEN_action(localContext, actionIndex);
298
323
  break;
299
- case 48:
324
+ case 58:
300
325
  this.TARGET_NEST_END_action(localContext, actionIndex);
301
326
  break;
302
- case 50:
303
- this.B_IMPLICIT_CLOSE_action(localContext, actionIndex);
327
+ case 59:
328
+ this.TARGET_END_action(localContext, actionIndex);
329
+ break;
330
+ case 60:
331
+ this.B_FENCE_CLOSE_action(localContext, actionIndex);
332
+ break;
333
+ case 65:
334
+ this.B_RUN_action(localContext, actionIndex);
335
+ break;
336
+ case 66:
337
+ this.B_CRLF_action(localContext, actionIndex);
304
338
  break;
305
- case 51:
306
- this.B_CLOSE_action(localContext, actionIndex);
339
+ case 67:
340
+ this.B_LF_action(localContext, actionIndex);
341
+ break;
342
+ case 68:
343
+ this.B_CR_action(localContext, actionIndex);
307
344
  break;
308
345
  }
309
346
  }
310
- OPEN_FIND_action(localContext, actionIndex) {
347
+ OPEN_PLAN_action(localContext, actionIndex) {
311
348
  switch (actionIndex) {
312
349
  case 0:
313
- this.setOpenTag();
350
+ this.open(1, "PLAN");
314
351
  break;
315
352
  }
316
353
  }
317
- OPEN_READ_action(localContext, actionIndex) {
354
+ OPEN_FIND_action(localContext, actionIndex) {
318
355
  switch (actionIndex) {
319
356
  case 1:
320
- this.setOpenTag();
357
+ this.open(2, "FIND");
321
358
  break;
322
359
  }
323
360
  }
324
- OPEN_EDIT_action(localContext, actionIndex) {
361
+ OPEN_READ_action(localContext, actionIndex) {
325
362
  switch (actionIndex) {
326
363
  case 2:
327
- this.setOpenTag();
364
+ this.open(2, "READ");
328
365
  break;
329
366
  }
330
367
  }
331
- OPEN_COPY_action(localContext, actionIndex) {
368
+ OPEN_EDIT_action(localContext, actionIndex) {
332
369
  switch (actionIndex) {
333
370
  case 3:
334
- this.setOpenTag();
371
+ this.open(2, "EDIT");
335
372
  break;
336
373
  }
337
374
  }
338
- OPEN_MOVE_action(localContext, actionIndex) {
375
+ OPEN_COPY_action(localContext, actionIndex) {
339
376
  switch (actionIndex) {
340
377
  case 4:
341
- this.setOpenTag();
378
+ this.open(2, "COPY");
342
379
  break;
343
380
  }
344
381
  }
345
- OPEN_OPEN_action(localContext, actionIndex) {
382
+ OPEN_MOVE_action(localContext, actionIndex) {
346
383
  switch (actionIndex) {
347
384
  case 5:
348
- this.setOpenTag();
385
+ this.open(2, "MOVE");
349
386
  break;
350
387
  }
351
388
  }
352
- OPEN_FOLD_action(localContext, actionIndex) {
389
+ OPEN_OPEN_action(localContext, actionIndex) {
353
390
  switch (actionIndex) {
354
391
  case 6:
355
- this.setOpenTag();
392
+ this.open(2, "OPEN");
356
393
  break;
357
394
  }
358
395
  }
359
- OPEN_SEND_action(localContext, actionIndex) {
396
+ OPEN_FOLD_action(localContext, actionIndex) {
360
397
  switch (actionIndex) {
361
398
  case 7:
362
- this.setOpenTag();
399
+ this.open(2, "FOLD");
363
400
  break;
364
401
  }
365
402
  }
366
- OPEN_EXEC_action(localContext, actionIndex) {
403
+ OPEN_SEND_action(localContext, actionIndex) {
367
404
  switch (actionIndex) {
368
405
  case 8:
369
- this.setOpenTag();
406
+ this.open(2, "SEND");
370
407
  break;
371
408
  }
372
409
  }
373
- OPEN_WORK_action(localContext, actionIndex) {
410
+ OPEN_EXEC_action(localContext, actionIndex) {
374
411
  switch (actionIndex) {
375
412
  case 9:
376
- this.setOpenTag();
413
+ this.open(2, "EXEC");
377
414
  break;
378
415
  }
379
416
  }
380
- OPEN_FORK_action(localContext, actionIndex) {
417
+ OPEN_BARE_action(localContext, actionIndex) {
381
418
  switch (actionIndex) {
382
419
  case 10:
383
- this.setOpenTag();
420
+ this.open(2, "BARE");
384
421
  break;
385
422
  }
386
423
  }
387
- OPEN_KILL_action(localContext, actionIndex) {
424
+ OPEN_WORK_action(localContext, actionIndex) {
388
425
  switch (actionIndex) {
389
426
  case 11:
390
- this.setOpenTag();
427
+ this.open(2, "WORK");
391
428
  break;
392
429
  }
393
430
  }
394
- OPEN_PLAN_action(localContext, actionIndex) {
431
+ OPEN_FORK_action(localContext, actionIndex) {
395
432
  switch (actionIndex) {
396
433
  case 12:
397
- this.setOpenTag();
434
+ this.open(2, "FORK");
398
435
  break;
399
436
  }
400
437
  }
401
- OPEN_TURN_action(localContext, actionIndex) {
438
+ OPEN_KILL_action(localContext, actionIndex) {
402
439
  switch (actionIndex) {
403
440
  case 13:
404
- this.setOpenTag();
441
+ this.open(2, "KILL");
405
442
  break;
406
443
  }
407
444
  }
408
445
  OPEN_LOOK_action(localContext, actionIndex) {
409
446
  switch (actionIndex) {
410
447
  case 14:
411
- this.setOpenTag();
448
+ this.open(2, "LOOK");
412
449
  break;
413
450
  }
414
451
  }
415
452
  OPEN_BUFF_action(localContext, actionIndex) {
416
453
  switch (actionIndex) {
417
454
  case 15:
418
- this.setOpenTag();
455
+ this.open(2, "BUFF");
419
456
  break;
420
457
  }
421
458
  }
422
- CLOSE_TURN_action(localContext, actionIndex) {
459
+ FENCE_OPEN_action(localContext, actionIndex) {
423
460
  switch (actionIndex) {
424
461
  case 16:
425
- this.turnSuffixStack.pop();
462
+ this.openDocumentFence();
426
463
  break;
427
464
  }
428
465
  }
429
- SLOTS_LPAREN_action(localContext, actionIndex) {
466
+ FENCE_CLOSE_action(localContext, actionIndex) {
430
467
  switch (actionIndex) {
431
468
  case 17:
432
- this.targetDepth = 0;
469
+ this.closeDocumentFence();
433
470
  break;
434
471
  }
435
472
  }
436
- SLOTS_EMPTY_CLOSE_action(localContext, actionIndex) {
473
+ SLOTS_WS_action(localContext, actionIndex) {
437
474
  switch (actionIndex) {
438
475
  case 18:
439
- this.consumeRestOfCloseTagAfterColon();
476
+ this.slotReady = true;
440
477
  break;
441
478
  }
442
479
  }
443
- SLOTS_COLON_TURN_action(localContext, actionIndex) {
480
+ SLOTS_LPAREN_action(localContext, actionIndex) {
444
481
  switch (actionIndex) {
445
482
  case 19:
446
- this.turnSuffixStack.push(this.openTag.substring(4));
483
+ this.targetDepth = 0;
447
484
  break;
448
485
  }
449
486
  }
450
- SLOTS_COLON_action(localContext, actionIndex) {
487
+ SLOTS_BODY_OPEN_action(localContext, actionIndex) {
451
488
  switch (actionIndex) {
452
489
  case 20:
453
- this.setBodyStart();
490
+ this.beginBody();
454
491
  break;
455
492
  }
456
493
  }
457
- TARGET_NEST_OPEN_action(localContext, actionIndex) {
494
+ ST_END_action(localContext, actionIndex) {
458
495
  switch (actionIndex) {
459
496
  case 21:
460
- this.targetDepth++;
497
+ this.slotReady = true;
461
498
  break;
462
499
  }
463
500
  }
464
- TARGET_NEST_END_action(localContext, actionIndex) {
501
+ SI_DISP_action(localContext, actionIndex) {
465
502
  switch (actionIndex) {
466
503
  case 22:
467
- this.targetDepth--;
504
+ this.markDisposition();
468
505
  break;
469
506
  }
470
507
  }
471
- B_IMPLICIT_CLOSE_action(localContext, actionIndex) {
508
+ SI_END_action(localContext, actionIndex) {
472
509
  switch (actionIndex) {
473
510
  case 23:
474
- this.implicitCloses.push({ line: this.openTagLine, column: this.openTagColumn, op: this.openTag });
475
- this.text = ':' + this.openTag;
511
+ this.slotReady = true;
476
512
  break;
477
513
  }
478
514
  }
479
- B_CLOSE_action(localContext, actionIndex) {
515
+ SD_END_action(localContext, actionIndex) {
480
516
  switch (actionIndex) {
481
517
  case 24:
482
- this.consumeRestOfCloseTagAfterColon();
518
+ this.slotReady = true;
519
+ break;
520
+ }
521
+ }
522
+ TARGET_NEST_OPEN_action(localContext, actionIndex) {
523
+ switch (actionIndex) {
524
+ case 25:
525
+ this.targetDepth++;
526
+ break;
527
+ }
528
+ }
529
+ TARGET_NEST_END_action(localContext, actionIndex) {
530
+ switch (actionIndex) {
531
+ case 26:
532
+ this.targetDepth--;
533
+ break;
534
+ }
535
+ }
536
+ TARGET_END_action(localContext, actionIndex) {
537
+ switch (actionIndex) {
538
+ case 27:
539
+ this.slotReady = true;
540
+ break;
541
+ }
542
+ }
543
+ B_FENCE_CLOSE_action(localContext, actionIndex) {
544
+ switch (actionIndex) {
545
+ case 28:
546
+ this.closeDocumentFence();
547
+ break;
548
+ }
549
+ }
550
+ B_RUN_action(localContext, actionIndex) {
551
+ switch (actionIndex) {
552
+ case 29:
553
+ this.retainBody();
554
+ break;
555
+ }
556
+ }
557
+ B_CRLF_action(localContext, actionIndex) {
558
+ switch (actionIndex) {
559
+ case 30:
560
+ this.retainBody();
561
+ break;
562
+ }
563
+ }
564
+ B_LF_action(localContext, actionIndex) {
565
+ switch (actionIndex) {
566
+ case 31:
567
+ this.retainBody();
568
+ break;
569
+ }
570
+ }
571
+ B_CR_action(localContext, actionIndex) {
572
+ switch (actionIndex) {
573
+ case 32:
574
+ this.retainBody();
483
575
  break;
484
576
  }
485
577
  }
486
578
  sempred(localContext, ruleIndex, predIndex) {
487
579
  switch (ruleIndex) {
580
+ case 10:
581
+ return this.OPEN_PLAN_sempred(localContext, predIndex);
582
+ case 11:
583
+ return this.OPEN_FIND_sempred(localContext, predIndex);
584
+ case 12:
585
+ return this.OPEN_READ_sempred(localContext, predIndex);
586
+ case 13:
587
+ return this.OPEN_EDIT_sempred(localContext, predIndex);
588
+ case 14:
589
+ return this.OPEN_COPY_sempred(localContext, predIndex);
590
+ case 15:
591
+ return this.OPEN_MOVE_sempred(localContext, predIndex);
592
+ case 16:
593
+ return this.OPEN_OPEN_sempred(localContext, predIndex);
594
+ case 17:
595
+ return this.OPEN_FOLD_sempred(localContext, predIndex);
596
+ case 18:
597
+ return this.OPEN_SEND_sempred(localContext, predIndex);
598
+ case 19:
599
+ return this.OPEN_EXEC_sempred(localContext, predIndex);
600
+ case 20:
601
+ return this.OPEN_BARE_sempred(localContext, predIndex);
602
+ case 21:
603
+ return this.OPEN_WORK_sempred(localContext, predIndex);
488
604
  case 22:
489
- return this.CLOSE_TURN_sempred(localContext, predIndex);
605
+ return this.OPEN_FORK_sempred(localContext, predIndex);
490
606
  case 23:
491
- return this.TEXT_sempred(localContext, predIndex);
607
+ return this.OPEN_KILL_sempred(localContext, predIndex);
608
+ case 24:
609
+ return this.OPEN_LOOK_sempred(localContext, predIndex);
492
610
  case 25:
493
- return this.SLOTS_LB_TAGS_sempred(localContext, predIndex);
611
+ return this.OPEN_BUFF_sempred(localContext, predIndex);
494
612
  case 26:
495
- return this.SLOTS_LB_INT_sempred(localContext, predIndex);
613
+ return this.FENCE_OPEN_sempred(localContext, predIndex);
496
614
  case 27:
615
+ return this.FENCE_CLOSE_sempred(localContext, predIndex);
616
+ case 34:
617
+ return this.SLOTS_LB_TAGS_sempred(localContext, predIndex);
618
+ case 35:
619
+ return this.SLOTS_LB_INT_sempred(localContext, predIndex);
620
+ case 36:
497
621
  return this.SLOTS_LB_IDENT_sempred(localContext, predIndex);
498
- case 30:
499
- return this.SLOTS_EMPTY_CLOSE_sempred(localContext, predIndex);
500
- case 31:
501
- return this.SLOTS_COLON_TURN_sempred(localContext, predIndex);
502
- case 48:
622
+ case 37:
623
+ return this.SLOTS_LPAREN_sempred(localContext, predIndex);
624
+ case 38:
625
+ return this.SLOTS_TEXT_L_sempred(localContext, predIndex);
626
+ case 39:
627
+ return this.SLOTS_L_sempred(localContext, predIndex);
628
+ case 40:
629
+ return this.SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex);
630
+ case 41:
631
+ return this.SLOTS_DIRECT_END_sempred(localContext, predIndex);
632
+ case 58:
503
633
  return this.TARGET_NEST_END_sempred(localContext, predIndex);
504
- case 50:
505
- return this.B_IMPLICIT_CLOSE_sempred(localContext, predIndex);
506
- case 51:
507
- return this.B_CLOSE_sempred(localContext, predIndex);
634
+ case 60:
635
+ return this.B_FENCE_CLOSE_sempred(localContext, predIndex);
636
+ case 61:
637
+ return this.B_FENCE_END_sempred(localContext, predIndex);
638
+ case 62:
639
+ return this.B_SECTION_END_sempred(localContext, predIndex);
640
+ case 63:
641
+ return this.B_DIRECT_END_sempred(localContext, predIndex);
642
+ case 64:
643
+ return this.B_EMPTY_SPACED_END_sempred(localContext, predIndex);
508
644
  }
509
645
  return true;
510
646
  }
511
- CLOSE_TURN_sempred(localContext, predIndex) {
647
+ OPEN_PLAN_sempred(localContext, predIndex) {
512
648
  switch (predIndex) {
513
649
  case 0:
514
- return this.atTurnCloseTag();
650
+ return this.matchesHeading(1, "PLAN");
515
651
  }
516
652
  return true;
517
653
  }
518
- TEXT_sempred(localContext, predIndex) {
654
+ OPEN_FIND_sempred(localContext, predIndex) {
519
655
  switch (predIndex) {
520
656
  case 1:
521
- return !this.isOpKeywordAfterLtLt();
657
+ return this.matchesHeading(2, "FIND");
522
658
  }
523
659
  return true;
524
660
  }
525
- SLOTS_LB_TAGS_sempred(localContext, predIndex) {
661
+ OPEN_READ_sempred(localContext, predIndex) {
526
662
  switch (predIndex) {
527
663
  case 2:
528
- return !this.isSendOp() && !this.isExecOp() && !this.isKillOp();
664
+ return this.matchesHeading(2, "READ");
529
665
  }
530
666
  return true;
531
667
  }
532
- SLOTS_LB_INT_sempred(localContext, predIndex) {
668
+ OPEN_EDIT_sempred(localContext, predIndex) {
533
669
  switch (predIndex) {
534
670
  case 3:
535
- return this.isSendOp() || this.isKillOp();
671
+ return this.matchesHeading(2, "EDIT");
536
672
  }
537
673
  return true;
538
674
  }
539
- SLOTS_LB_IDENT_sempred(localContext, predIndex) {
675
+ OPEN_COPY_sempred(localContext, predIndex) {
540
676
  switch (predIndex) {
541
677
  case 4:
542
- return this.isExecOp();
678
+ return this.matchesHeading(2, "COPY");
543
679
  }
544
680
  return true;
545
681
  }
546
- SLOTS_EMPTY_CLOSE_sempred(localContext, predIndex) {
682
+ OPEN_MOVE_sempred(localContext, predIndex) {
547
683
  switch (predIndex) {
548
684
  case 5:
549
- return this.atSlotsEmptyClose();
685
+ return this.matchesHeading(2, "MOVE");
550
686
  }
551
687
  return true;
552
688
  }
553
- SLOTS_COLON_TURN_sempred(localContext, predIndex) {
689
+ OPEN_OPEN_sempred(localContext, predIndex) {
554
690
  switch (predIndex) {
555
691
  case 6:
556
- return this.isTurnOp();
692
+ return this.matchesHeading(2, "OPEN");
557
693
  }
558
694
  return true;
559
695
  }
560
- TARGET_NEST_END_sempred(localContext, predIndex) {
696
+ OPEN_FOLD_sempred(localContext, predIndex) {
561
697
  switch (predIndex) {
562
698
  case 7:
563
- return this.targetDepth > 0;
699
+ return this.matchesHeading(2, "FOLD");
564
700
  }
565
701
  return true;
566
702
  }
567
- B_IMPLICIT_CLOSE_sempred(localContext, predIndex) {
703
+ OPEN_SEND_sempred(localContext, predIndex) {
568
704
  switch (predIndex) {
569
705
  case 8:
570
- return this.isSingleLineBodyOp();
706
+ return this.matchesHeading(2, "SEND");
571
707
  }
572
708
  return true;
573
709
  }
574
- B_CLOSE_sempred(localContext, predIndex) {
710
+ OPEN_EXEC_sempred(localContext, predIndex) {
575
711
  switch (predIndex) {
576
712
  case 9:
577
- return this.atColonCloseTag();
713
+ return this.matchesHeading(2, "EXEC");
714
+ }
715
+ return true;
716
+ }
717
+ OPEN_BARE_sempred(localContext, predIndex) {
718
+ switch (predIndex) {
719
+ case 10:
720
+ return this.matchesHeading(2, "BARE");
721
+ }
722
+ return true;
723
+ }
724
+ OPEN_WORK_sempred(localContext, predIndex) {
725
+ switch (predIndex) {
726
+ case 11:
727
+ return this.matchesHeading(2, "WORK");
728
+ }
729
+ return true;
730
+ }
731
+ OPEN_FORK_sempred(localContext, predIndex) {
732
+ switch (predIndex) {
733
+ case 12:
734
+ return this.matchesHeading(2, "FORK");
735
+ }
736
+ return true;
737
+ }
738
+ OPEN_KILL_sempred(localContext, predIndex) {
739
+ switch (predIndex) {
740
+ case 13:
741
+ return this.matchesHeading(2, "KILL");
742
+ }
743
+ return true;
744
+ }
745
+ OPEN_LOOK_sempred(localContext, predIndex) {
746
+ switch (predIndex) {
747
+ case 14:
748
+ return this.matchesHeading(2, "LOOK");
749
+ }
750
+ return true;
751
+ }
752
+ OPEN_BUFF_sempred(localContext, predIndex) {
753
+ switch (predIndex) {
754
+ case 15:
755
+ return this.matchesHeading(2, "BUFF");
756
+ }
757
+ return true;
758
+ }
759
+ FENCE_OPEN_sempred(localContext, predIndex) {
760
+ switch (predIndex) {
761
+ case 16:
762
+ return this.column === 0 && !this.inDocumentFence();
763
+ }
764
+ return true;
765
+ }
766
+ FENCE_CLOSE_sempred(localContext, predIndex) {
767
+ switch (predIndex) {
768
+ case 17:
769
+ return this.column === 0 && this.inDocumentFence();
770
+ }
771
+ return true;
772
+ }
773
+ SLOTS_LB_TAGS_sempred(localContext, predIndex) {
774
+ switch (predIndex) {
775
+ case 18:
776
+ return this.slotReady && !this.isSendOp() && !this.isExecOp() && !this.isKillOp();
777
+ }
778
+ return true;
779
+ }
780
+ SLOTS_LB_INT_sempred(localContext, predIndex) {
781
+ switch (predIndex) {
782
+ case 19:
783
+ return this.slotReady && (this.isSendOp() || this.isKillOp());
784
+ }
785
+ return true;
786
+ }
787
+ SLOTS_LB_IDENT_sempred(localContext, predIndex) {
788
+ switch (predIndex) {
789
+ case 20:
790
+ return this.slotReady && this.isExecOp();
791
+ }
792
+ return true;
793
+ }
794
+ SLOTS_LPAREN_sempred(localContext, predIndex) {
795
+ switch (predIndex) {
796
+ case 21:
797
+ return this.slotReady;
798
+ }
799
+ return true;
800
+ }
801
+ SLOTS_TEXT_L_sempred(localContext, predIndex) {
802
+ switch (predIndex) {
803
+ case 22:
804
+ return this.slotReady && this.isTextCoordinateOp();
805
+ }
806
+ return true;
807
+ }
808
+ SLOTS_L_sempred(localContext, predIndex) {
809
+ switch (predIndex) {
810
+ case 23:
811
+ return this.slotReady;
812
+ }
813
+ return true;
814
+ }
815
+ SLOTS_COMBINED_TEXT_L_sempred(localContext, predIndex) {
816
+ switch (predIndex) {
817
+ case 24:
818
+ return this.slotReady && this.isTextCoordinateOp();
819
+ }
820
+ return true;
821
+ }
822
+ SLOTS_DIRECT_END_sempred(localContext, predIndex) {
823
+ switch (predIndex) {
824
+ case 25:
825
+ return this.headingAfterDirectEol();
826
+ }
827
+ return true;
828
+ }
829
+ TARGET_NEST_END_sempred(localContext, predIndex) {
830
+ switch (predIndex) {
831
+ case 26:
832
+ return this.targetDepth > 0;
833
+ }
834
+ return true;
835
+ }
836
+ B_FENCE_CLOSE_sempred(localContext, predIndex) {
837
+ switch (predIndex) {
838
+ case 27:
839
+ return this.column === 0 && this.inDocumentFence();
840
+ }
841
+ return true;
842
+ }
843
+ B_FENCE_END_sempred(localContext, predIndex) {
844
+ switch (predIndex) {
845
+ case 28:
846
+ return this.inDocumentFence() && this.fenceAfterDirectEol();
847
+ }
848
+ return true;
849
+ }
850
+ B_SECTION_END_sempred(localContext, predIndex) {
851
+ switch (predIndex) {
852
+ case 29:
853
+ return this.headingAfterBlankLine();
854
+ }
855
+ return true;
856
+ }
857
+ B_DIRECT_END_sempred(localContext, predIndex) {
858
+ switch (predIndex) {
859
+ case 30:
860
+ return this.headingAfterDirectEol();
861
+ }
862
+ return true;
863
+ }
864
+ B_EMPTY_SPACED_END_sempred(localContext, predIndex) {
865
+ switch (predIndex) {
866
+ case 31:
867
+ return this.headingAfterEmptySpacedLine();
578
868
  }
579
869
  return true;
580
870
  }
581
871
  static _serializedATN = [
582
- 4, 0, 41, 674, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2,
872
+ 4, 0, 42, 849, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2,
583
873
  2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2,
584
874
  10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7,
585
875
  16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2,
@@ -587,248 +877,311 @@ export class plurnkLexer extends antlr.Lexer {
587
877
  29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2,
588
878
  36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7,
589
879
  42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2,
590
- 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 1, 0, 4,
591
- 0, 119, 8, 0, 11, 0, 12, 0, 120, 1, 1, 3, 1, 124, 8, 1, 1, 1, 4, 1, 127, 8, 1, 11, 1, 12,
592
- 1, 128, 1, 1, 1, 1, 4, 1, 133, 8, 1, 11, 1, 12, 1, 134, 3, 1, 137, 8, 1, 1, 2, 1, 2, 1, 2,
593
- 1, 2, 1, 2, 3, 2, 144, 8, 2, 3, 2, 146, 8, 2, 1, 2, 5, 2, 149, 8, 2, 10, 2, 12, 2, 152, 9,
594
- 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 164, 8, 3, 1, 3, 1, 3, 1,
595
- 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 178, 8, 4, 1, 4, 1, 4, 1, 4, 1,
596
- 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 192, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1,
597
- 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 206, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1,
598
- 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 220, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1,
599
- 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 234, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1,
600
- 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 248, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10,
601
- 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 262, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11,
602
- 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 276, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11,
603
- 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 290, 8, 12, 1, 12, 1, 12,
604
- 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 304, 8, 13,
605
- 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14,
606
- 318, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15,
607
- 1, 15, 3, 15, 332, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
608
- 1, 16, 1, 16, 1, 16, 3, 16, 346, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17,
609
- 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 361, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17,
610
- 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 375, 8, 18, 1, 18, 1, 18,
611
- 1, 18, 1, 18, 1, 19, 4, 19, 382, 8, 19, 11, 19, 12, 19, 383, 1, 19, 1, 19, 1, 20, 1, 20,
612
- 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 397, 8, 20, 10, 20, 12, 20, 400,
613
- 9, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21,
614
- 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 425,
615
- 8, 21, 10, 21, 12, 21, 428, 9, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21,
616
- 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22,
617
- 3, 22, 451, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23,
618
- 1, 23, 4, 23, 464, 8, 23, 11, 23, 12, 23, 465, 1, 24, 4, 24, 469, 8, 24, 11, 24, 12, 24,
619
- 470, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26,
620
- 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28,
621
- 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30,
622
- 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
623
- 1, 33, 4, 33, 525, 8, 33, 11, 33, 12, 33, 526, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34,
624
- 1, 35, 1, 35, 1, 35, 4, 35, 538, 8, 35, 11, 35, 12, 35, 539, 1, 35, 1, 35, 1, 36, 1, 36,
625
- 1, 36, 1, 36, 1, 36, 1, 37, 4, 37, 550, 8, 37, 11, 37, 12, 37, 551, 1, 37, 1, 37, 1, 38,
626
- 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38,
627
- 1, 38, 3, 38, 571, 8, 38, 1, 38, 1, 38, 1, 39, 3, 39, 576, 8, 39, 1, 39, 4, 39, 579, 8,
628
- 39, 11, 39, 12, 39, 580, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 4, 41,
629
- 591, 8, 41, 11, 41, 12, 41, 592, 1, 41, 1, 41, 1, 42, 1, 42, 5, 42, 599, 8, 42, 10, 42,
630
- 12, 42, 602, 9, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44,
631
- 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 4, 45, 619, 8, 45, 11, 45, 12, 45, 620, 1, 45, 1, 45,
632
- 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48,
633
- 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50,
634
- 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 4, 52, 661, 8, 52,
635
- 11, 52, 12, 52, 662, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54,
636
- 2, 398, 426, 0, 55, 7, 0, 9, 0, 11, 0, 13, 18, 15, 19, 17, 20, 19, 21, 21, 22, 23, 23,
637
- 25, 24, 27, 25, 29, 26, 31, 27, 33, 28, 35, 29, 37, 30, 39, 16, 41, 31, 43, 32, 45, 33,
638
- 47, 0, 49, 0, 51, 17, 53, 15, 55, 34, 57, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 0, 69, 0, 71,
639
- 0, 73, 35, 75, 38, 77, 0, 79, 0, 81, 36, 83, 0, 85, 0, 87, 0, 89, 37, 91, 0, 93, 0, 95,
640
- 0, 97, 0, 99, 39, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 40, 115, 41, 7,
641
- 0, 1, 2, 3, 4, 5, 6, 12, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 9, 10,
642
- 13, 13, 32, 32, 1, 0, 60, 60, 4, 0, 9, 10, 13, 13, 32, 32, 60, 60, 2, 0, 9, 9, 32, 32, 6,
643
- 0, 9, 10, 13, 13, 32, 32, 44, 44, 60, 60, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 6, 0,
644
- 43, 43, 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 40, 41, 92, 92, 5, 0, 10, 10, 13,
645
- 13, 40, 41, 60, 60, 92, 92, 2, 0, 10, 10, 58, 58, 711, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0,
646
- 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0,
647
- 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0,
648
- 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0,
649
- 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 1, 55, 1, 0, 0,
650
- 0, 1, 57, 1, 0, 0, 0, 1, 59, 1, 0, 0, 0, 1, 61, 1, 0, 0, 0, 1, 63, 1, 0, 0, 0, 1, 65, 1, 0, 0,
651
- 0, 1, 67, 1, 0, 0, 0, 1, 69, 1, 0, 0, 0, 1, 71, 1, 0, 0, 0, 2, 73, 1, 0, 0, 0, 2, 75, 1, 0, 0,
652
- 0, 2, 77, 1, 0, 0, 0, 2, 79, 1, 0, 0, 0, 3, 81, 1, 0, 0, 0, 3, 83, 1, 0, 0, 0, 3, 85, 1, 0, 0,
653
- 0, 3, 87, 1, 0, 0, 0, 4, 89, 1, 0, 0, 0, 4, 91, 1, 0, 0, 0, 4, 93, 1, 0, 0, 0, 5, 95, 1, 0, 0,
654
- 0, 5, 97, 1, 0, 0, 0, 5, 99, 1, 0, 0, 0, 5, 101, 1, 0, 0, 0, 5, 103, 1, 0, 0, 0, 5, 105, 1,
655
- 0, 0, 0, 6, 107, 1, 0, 0, 0, 6, 109, 1, 0, 0, 0, 6, 111, 1, 0, 0, 0, 6, 113, 1, 0, 0, 0, 6,
656
- 115, 1, 0, 0, 0, 7, 118, 1, 0, 0, 0, 9, 123, 1, 0, 0, 0, 11, 138, 1, 0, 0, 0, 13, 155, 1,
657
- 0, 0, 0, 15, 169, 1, 0, 0, 0, 17, 183, 1, 0, 0, 0, 19, 197, 1, 0, 0, 0, 21, 211, 1, 0, 0,
658
- 0, 23, 225, 1, 0, 0, 0, 25, 239, 1, 0, 0, 0, 27, 253, 1, 0, 0, 0, 29, 267, 1, 0, 0, 0, 31,
659
- 281, 1, 0, 0, 0, 33, 295, 1, 0, 0, 0, 35, 309, 1, 0, 0, 0, 37, 323, 1, 0, 0, 0, 39, 337,
660
- 1, 0, 0, 0, 41, 352, 1, 0, 0, 0, 43, 366, 1, 0, 0, 0, 45, 381, 1, 0, 0, 0, 47, 387, 1, 0,
661
- 0, 0, 49, 412, 1, 0, 0, 0, 51, 442, 1, 0, 0, 0, 53, 463, 1, 0, 0, 0, 55, 468, 1, 0, 0, 0,
662
- 57, 474, 1, 0, 0, 0, 59, 480, 1, 0, 0, 0, 61, 486, 1, 0, 0, 0, 63, 492, 1, 0, 0, 0, 65, 498,
663
- 1, 0, 0, 0, 67, 502, 1, 0, 0, 0, 69, 510, 1, 0, 0, 0, 71, 517, 1, 0, 0, 0, 73, 524, 1, 0,
664
- 0, 0, 75, 530, 1, 0, 0, 0, 77, 537, 1, 0, 0, 0, 79, 543, 1, 0, 0, 0, 81, 549, 1, 0, 0, 0,
665
- 83, 570, 1, 0, 0, 0, 85, 575, 1, 0, 0, 0, 87, 584, 1, 0, 0, 0, 89, 590, 1, 0, 0, 0, 91, 596,
666
- 1, 0, 0, 0, 93, 605, 1, 0, 0, 0, 95, 610, 1, 0, 0, 0, 97, 618, 1, 0, 0, 0, 99, 624, 1, 0,
667
- 0, 0, 101, 628, 1, 0, 0, 0, 103, 633, 1, 0, 0, 0, 105, 639, 1, 0, 0, 0, 107, 644, 1, 0,
668
- 0, 0, 109, 651, 1, 0, 0, 0, 111, 660, 1, 0, 0, 0, 113, 666, 1, 0, 0, 0, 115, 670, 1, 0,
669
- 0, 0, 117, 119, 7, 0, 0, 0, 118, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 118, 1, 0,
670
- 0, 0, 120, 121, 1, 0, 0, 0, 121, 8, 1, 0, 0, 0, 122, 124, 5, 45, 0, 0, 123, 122, 1, 0, 0,
671
- 0, 123, 124, 1, 0, 0, 0, 124, 126, 1, 0, 0, 0, 125, 127, 7, 1, 0, 0, 126, 125, 1, 0, 0,
672
- 0, 127, 128, 1, 0, 0, 0, 128, 126, 1, 0, 0, 0, 128, 129, 1, 0, 0, 0, 129, 136, 1, 0, 0,
673
- 0, 130, 132, 5, 46, 0, 0, 131, 133, 7, 1, 0, 0, 132, 131, 1, 0, 0, 0, 133, 134, 1, 0, 0,
674
- 0, 134, 132, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 137, 1, 0, 0, 0, 136, 130, 1, 0, 0,
675
- 0, 136, 137, 1, 0, 0, 0, 137, 10, 1, 0, 0, 0, 138, 139, 5, 60, 0, 0, 139, 150, 3, 9, 1,
676
- 0, 140, 146, 5, 45, 0, 0, 141, 143, 5, 44, 0, 0, 142, 144, 5, 32, 0, 0, 143, 142, 1, 0,
677
- 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 140, 1, 0, 0, 0, 145, 141, 1, 0,
678
- 0, 0, 146, 147, 1, 0, 0, 0, 147, 149, 3, 9, 1, 0, 148, 145, 1, 0, 0, 0, 149, 152, 1, 0,
679
- 0, 0, 150, 148, 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 153, 1, 0, 0, 0, 152, 150, 1, 0,
680
- 0, 0, 153, 154, 5, 62, 0, 0, 154, 12, 1, 0, 0, 0, 155, 156, 5, 60, 0, 0, 156, 157, 5, 60,
681
- 0, 0, 157, 158, 5, 70, 0, 0, 158, 159, 5, 73, 0, 0, 159, 160, 5, 78, 0, 0, 160, 161, 5,
682
- 68, 0, 0, 161, 163, 1, 0, 0, 0, 162, 164, 3, 7, 0, 0, 163, 162, 1, 0, 0, 0, 163, 164, 1,
683
- 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 6, 3, 0, 0, 166, 167, 1, 0, 0, 0, 167, 168, 6,
684
- 3, 1, 0, 168, 14, 1, 0, 0, 0, 169, 170, 5, 60, 0, 0, 170, 171, 5, 60, 0, 0, 171, 172, 5,
685
- 82, 0, 0, 172, 173, 5, 69, 0, 0, 173, 174, 5, 65, 0, 0, 174, 175, 5, 68, 0, 0, 175, 177,
686
- 1, 0, 0, 0, 176, 178, 3, 7, 0, 0, 177, 176, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 179,
687
- 1, 0, 0, 0, 179, 180, 6, 4, 2, 0, 180, 181, 1, 0, 0, 0, 181, 182, 6, 4, 1, 0, 182, 16, 1,
688
- 0, 0, 0, 183, 184, 5, 60, 0, 0, 184, 185, 5, 60, 0, 0, 185, 186, 5, 69, 0, 0, 186, 187,
689
- 5, 68, 0, 0, 187, 188, 5, 73, 0, 0, 188, 189, 5, 84, 0, 0, 189, 191, 1, 0, 0, 0, 190, 192,
690
- 3, 7, 0, 0, 191, 190, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 194,
691
- 6, 5, 3, 0, 194, 195, 1, 0, 0, 0, 195, 196, 6, 5, 1, 0, 196, 18, 1, 0, 0, 0, 197, 198, 5,
692
- 60, 0, 0, 198, 199, 5, 60, 0, 0, 199, 200, 5, 67, 0, 0, 200, 201, 5, 79, 0, 0, 201, 202,
693
- 5, 80, 0, 0, 202, 203, 5, 89, 0, 0, 203, 205, 1, 0, 0, 0, 204, 206, 3, 7, 0, 0, 205, 204,
694
- 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208, 6, 6, 4, 0, 208, 209,
695
- 1, 0, 0, 0, 209, 210, 6, 6, 1, 0, 210, 20, 1, 0, 0, 0, 211, 212, 5, 60, 0, 0, 212, 213,
696
- 5, 60, 0, 0, 213, 214, 5, 77, 0, 0, 214, 215, 5, 79, 0, 0, 215, 216, 5, 86, 0, 0, 216,
697
- 217, 5, 69, 0, 0, 217, 219, 1, 0, 0, 0, 218, 220, 3, 7, 0, 0, 219, 218, 1, 0, 0, 0, 219,
698
- 220, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 222, 6, 7, 5, 0, 222, 223, 1, 0, 0, 0, 223,
699
- 224, 6, 7, 1, 0, 224, 22, 1, 0, 0, 0, 225, 226, 5, 60, 0, 0, 226, 227, 5, 60, 0, 0, 227,
700
- 228, 5, 79, 0, 0, 228, 229, 5, 80, 0, 0, 229, 230, 5, 69, 0, 0, 230, 231, 5, 78, 0, 0,
701
- 231, 233, 1, 0, 0, 0, 232, 234, 3, 7, 0, 0, 233, 232, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0,
702
- 234, 235, 1, 0, 0, 0, 235, 236, 6, 8, 6, 0, 236, 237, 1, 0, 0, 0, 237, 238, 6, 8, 1, 0,
703
- 238, 24, 1, 0, 0, 0, 239, 240, 5, 60, 0, 0, 240, 241, 5, 60, 0, 0, 241, 242, 5, 70, 0,
704
- 0, 242, 243, 5, 79, 0, 0, 243, 244, 5, 76, 0, 0, 244, 245, 5, 68, 0, 0, 245, 247, 1, 0,
705
- 0, 0, 246, 248, 3, 7, 0, 0, 247, 246, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 249, 1, 0,
706
- 0, 0, 249, 250, 6, 9, 7, 0, 250, 251, 1, 0, 0, 0, 251, 252, 6, 9, 1, 0, 252, 26, 1, 0, 0,
707
- 0, 253, 254, 5, 60, 0, 0, 254, 255, 5, 60, 0, 0, 255, 256, 5, 83, 0, 0, 256, 257, 5, 69,
708
- 0, 0, 257, 258, 5, 78, 0, 0, 258, 259, 5, 68, 0, 0, 259, 261, 1, 0, 0, 0, 260, 262, 3,
709
- 7, 0, 0, 261, 260, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 6,
710
- 10, 8, 0, 264, 265, 1, 0, 0, 0, 265, 266, 6, 10, 1, 0, 266, 28, 1, 0, 0, 0, 267, 268, 5,
711
- 60, 0, 0, 268, 269, 5, 60, 0, 0, 269, 270, 5, 69, 0, 0, 270, 271, 5, 88, 0, 0, 271, 272,
712
- 5, 69, 0, 0, 272, 273, 5, 67, 0, 0, 273, 275, 1, 0, 0, 0, 274, 276, 3, 7, 0, 0, 275, 274,
713
- 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 278, 6, 11, 9, 0, 278, 279,
714
- 1, 0, 0, 0, 279, 280, 6, 11, 1, 0, 280, 30, 1, 0, 0, 0, 281, 282, 5, 60, 0, 0, 282, 283,
715
- 5, 60, 0, 0, 283, 284, 5, 87, 0, 0, 284, 285, 5, 79, 0, 0, 285, 286, 5, 82, 0, 0, 286,
716
- 287, 5, 75, 0, 0, 287, 289, 1, 0, 0, 0, 288, 290, 3, 7, 0, 0, 289, 288, 1, 0, 0, 0, 289,
717
- 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 292, 6, 12, 10, 0, 292, 293, 1, 0, 0, 0, 293,
718
- 294, 6, 12, 1, 0, 294, 32, 1, 0, 0, 0, 295, 296, 5, 60, 0, 0, 296, 297, 5, 60, 0, 0, 297,
719
- 298, 5, 70, 0, 0, 298, 299, 5, 79, 0, 0, 299, 300, 5, 82, 0, 0, 300, 301, 5, 75, 0, 0,
720
- 301, 303, 1, 0, 0, 0, 302, 304, 3, 7, 0, 0, 303, 302, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0,
721
- 304, 305, 1, 0, 0, 0, 305, 306, 6, 13, 11, 0, 306, 307, 1, 0, 0, 0, 307, 308, 6, 13, 1,
722
- 0, 308, 34, 1, 0, 0, 0, 309, 310, 5, 60, 0, 0, 310, 311, 5, 60, 0, 0, 311, 312, 5, 75,
723
- 0, 0, 312, 313, 5, 73, 0, 0, 313, 314, 5, 76, 0, 0, 314, 315, 5, 76, 0, 0, 315, 317, 1,
724
- 0, 0, 0, 316, 318, 3, 7, 0, 0, 317, 316, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 319, 1,
725
- 0, 0, 0, 319, 320, 6, 14, 12, 0, 320, 321, 1, 0, 0, 0, 321, 322, 6, 14, 1, 0, 322, 36,
726
- 1, 0, 0, 0, 323, 324, 5, 60, 0, 0, 324, 325, 5, 60, 0, 0, 325, 326, 5, 80, 0, 0, 326, 327,
727
- 5, 76, 0, 0, 327, 328, 5, 65, 0, 0, 328, 329, 5, 78, 0, 0, 329, 331, 1, 0, 0, 0, 330, 332,
728
- 3, 7, 0, 0, 331, 330, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 334,
729
- 6, 15, 13, 0, 334, 335, 1, 0, 0, 0, 335, 336, 6, 15, 1, 0, 336, 38, 1, 0, 0, 0, 337, 338,
730
- 5, 60, 0, 0, 338, 339, 5, 60, 0, 0, 339, 340, 5, 84, 0, 0, 340, 341, 5, 85, 0, 0, 341,
731
- 342, 5, 82, 0, 0, 342, 343, 5, 78, 0, 0, 343, 345, 1, 0, 0, 0, 344, 346, 3, 7, 0, 0, 345,
732
- 344, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 348, 6, 16, 14, 0, 348,
733
- 349, 1, 0, 0, 0, 349, 350, 6, 16, 15, 0, 350, 351, 6, 16, 1, 0, 351, 40, 1, 0, 0, 0, 352,
734
- 353, 5, 60, 0, 0, 353, 354, 5, 60, 0, 0, 354, 355, 5, 76, 0, 0, 355, 356, 5, 79, 0, 0,
735
- 356, 357, 5, 79, 0, 0, 357, 358, 5, 75, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 7, 0,
736
- 0, 360, 359, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 363, 6, 17, 16,
737
- 0, 363, 364, 1, 0, 0, 0, 364, 365, 6, 17, 1, 0, 365, 42, 1, 0, 0, 0, 366, 367, 5, 60, 0,
738
- 0, 367, 368, 5, 60, 0, 0, 368, 369, 5, 66, 0, 0, 369, 370, 5, 85, 0, 0, 370, 371, 5, 70,
739
- 0, 0, 371, 372, 5, 70, 0, 0, 372, 374, 1, 0, 0, 0, 373, 375, 3, 7, 0, 0, 374, 373, 1, 0,
740
- 0, 0, 374, 375, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377, 6, 18, 17, 0, 377, 378, 1,
741
- 0, 0, 0, 378, 379, 6, 18, 1, 0, 379, 44, 1, 0, 0, 0, 380, 382, 7, 2, 0, 0, 381, 380, 1,
742
- 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1,
743
- 0, 0, 0, 385, 386, 6, 19, 18, 0, 386, 46, 1, 0, 0, 0, 387, 388, 5, 60, 0, 0, 388, 389,
744
- 5, 116, 0, 0, 389, 390, 5, 104, 0, 0, 390, 391, 5, 105, 0, 0, 391, 392, 5, 110, 0, 0,
745
- 392, 393, 5, 107, 0, 0, 393, 394, 5, 62, 0, 0, 394, 398, 1, 0, 0, 0, 395, 397, 9, 0, 0,
746
- 0, 396, 395, 1, 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 398, 396, 1, 0, 0,
747
- 0, 399, 401, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 402, 5, 60, 0, 0, 402, 403, 5, 47,
748
- 0, 0, 403, 404, 5, 116, 0, 0, 404, 405, 5, 104, 0, 0, 405, 406, 5, 105, 0, 0, 406, 407,
749
- 5, 110, 0, 0, 407, 408, 5, 107, 0, 0, 408, 409, 5, 62, 0, 0, 409, 410, 1, 0, 0, 0, 410,
750
- 411, 6, 20, 19, 0, 411, 48, 1, 0, 0, 0, 412, 413, 5, 60, 0, 0, 413, 414, 5, 124, 0, 0,
751
- 414, 415, 5, 99, 0, 0, 415, 416, 5, 104, 0, 0, 416, 417, 5, 97, 0, 0, 417, 418, 5, 110,
752
- 0, 0, 418, 419, 5, 110, 0, 0, 419, 420, 5, 101, 0, 0, 420, 421, 5, 108, 0, 0, 421, 422,
753
- 5, 62, 0, 0, 422, 426, 1, 0, 0, 0, 423, 425, 9, 0, 0, 0, 424, 423, 1, 0, 0, 0, 425, 428,
754
- 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 426,
755
- 1, 0, 0, 0, 429, 430, 5, 60, 0, 0, 430, 431, 5, 99, 0, 0, 431, 432, 5, 104, 0, 0, 432,
756
- 433, 5, 97, 0, 0, 433, 434, 5, 110, 0, 0, 434, 435, 5, 110, 0, 0, 435, 436, 5, 101, 0,
757
- 0, 436, 437, 5, 108, 0, 0, 437, 438, 5, 124, 0, 0, 438, 439, 5, 62, 0, 0, 439, 440, 1,
758
- 0, 0, 0, 440, 441, 6, 21, 19, 0, 441, 50, 1, 0, 0, 0, 442, 443, 4, 22, 0, 0, 443, 444,
759
- 5, 58, 0, 0, 444, 445, 5, 84, 0, 0, 445, 446, 5, 85, 0, 0, 446, 447, 5, 82, 0, 0, 447,
760
- 448, 5, 78, 0, 0, 448, 450, 1, 0, 0, 0, 449, 451, 3, 7, 0, 0, 450, 449, 1, 0, 0, 0, 450,
761
- 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 6, 22, 20, 0, 453, 454, 1, 0, 0, 0, 454,
762
- 455, 6, 22, 21, 0, 455, 52, 1, 0, 0, 0, 456, 457, 5, 60, 0, 0, 457, 458, 5, 60, 0, 0, 458,
763
- 459, 1, 0, 0, 0, 459, 464, 4, 23, 1, 0, 460, 461, 5, 60, 0, 0, 461, 464, 8, 3, 0, 0, 462,
764
- 464, 8, 4, 0, 0, 463, 456, 1, 0, 0, 0, 463, 460, 1, 0, 0, 0, 463, 462, 1, 0, 0, 0, 464,
765
- 465, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 54, 1, 0, 0, 0, 467, 469,
766
- 7, 2, 0, 0, 468, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471,
767
- 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 6, 24, 22, 0, 473, 56, 1, 0, 0, 0, 474, 475,
768
- 5, 91, 0, 0, 475, 476, 4, 25, 2, 0, 476, 477, 1, 0, 0, 0, 477, 478, 6, 25, 23, 0, 478,
769
- 479, 6, 25, 24, 0, 479, 58, 1, 0, 0, 0, 480, 481, 5, 91, 0, 0, 481, 482, 4, 26, 3, 0, 482,
770
- 483, 1, 0, 0, 0, 483, 484, 6, 26, 23, 0, 484, 485, 6, 26, 25, 0, 485, 60, 1, 0, 0, 0, 486,
771
- 487, 5, 91, 0, 0, 487, 488, 4, 27, 4, 0, 488, 489, 1, 0, 0, 0, 489, 490, 6, 27, 23, 0,
772
- 490, 491, 6, 27, 26, 0, 491, 62, 1, 0, 0, 0, 492, 493, 5, 40, 0, 0, 493, 494, 6, 28, 27,
773
- 0, 494, 495, 1, 0, 0, 0, 495, 496, 6, 28, 28, 0, 496, 497, 6, 28, 29, 0, 497, 64, 1, 0,
774
- 0, 0, 498, 499, 3, 11, 2, 0, 499, 500, 1, 0, 0, 0, 500, 501, 6, 29, 30, 0, 501, 66, 1,
775
- 0, 0, 0, 502, 503, 4, 30, 5, 0, 503, 504, 5, 58, 0, 0, 504, 505, 9, 0, 0, 0, 505, 506,
776
- 6, 30, 31, 0, 506, 507, 1, 0, 0, 0, 507, 508, 6, 30, 32, 0, 508, 509, 6, 30, 33, 0, 509,
777
- 68, 1, 0, 0, 0, 510, 511, 4, 31, 6, 0, 511, 512, 5, 58, 0, 0, 512, 513, 6, 31, 34, 0, 513,
778
- 514, 1, 0, 0, 0, 514, 515, 6, 31, 35, 0, 515, 516, 6, 31, 33, 0, 516, 70, 1, 0, 0, 0, 517,
779
- 518, 5, 58, 0, 0, 518, 519, 6, 32, 36, 0, 519, 520, 1, 0, 0, 0, 520, 521, 6, 32, 35, 0,
780
- 521, 522, 6, 32, 37, 0, 522, 72, 1, 0, 0, 0, 523, 525, 7, 5, 0, 0, 524, 523, 1, 0, 0, 0,
781
- 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0,
782
- 528, 529, 6, 33, 22, 0, 529, 74, 1, 0, 0, 0, 530, 531, 5, 44, 0, 0, 531, 532, 1, 0, 0,
783
- 0, 532, 533, 6, 34, 38, 0, 533, 76, 1, 0, 0, 0, 534, 538, 8, 6, 0, 0, 535, 536, 5, 60,
784
- 0, 0, 536, 538, 8, 6, 0, 0, 537, 534, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 539, 1, 0,
785
- 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 6, 35,
786
- 39, 0, 542, 78, 1, 0, 0, 0, 543, 544, 5, 93, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 6, 36,
787
- 40, 0, 546, 547, 6, 36, 1, 0, 547, 80, 1, 0, 0, 0, 548, 550, 7, 5, 0, 0, 549, 548, 1, 0,
788
- 0, 0, 550, 551, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 1, 0,
789
- 0, 0, 553, 554, 6, 37, 22, 0, 554, 82, 1, 0, 0, 0, 555, 556, 5, 49, 0, 0, 556, 557, 5,
790
- 48, 0, 0, 557, 571, 5, 50, 0, 0, 558, 559, 5, 50, 0, 0, 559, 560, 5, 48, 0, 0, 560, 571,
791
- 5, 48, 0, 0, 561, 562, 5, 50, 0, 0, 562, 563, 5, 48, 0, 0, 563, 571, 5, 50, 0, 0, 564,
792
- 565, 5, 51, 0, 0, 565, 566, 5, 48, 0, 0, 566, 571, 5, 48, 0, 0, 567, 568, 5, 52, 0, 0,
793
- 568, 569, 5, 57, 0, 0, 569, 571, 5, 57, 0, 0, 570, 555, 1, 0, 0, 0, 570, 558, 1, 0, 0,
794
- 0, 570, 561, 1, 0, 0, 0, 570, 564, 1, 0, 0, 0, 570, 567, 1, 0, 0, 0, 571, 572, 1, 0, 0,
795
- 0, 572, 573, 6, 38, 41, 0, 573, 84, 1, 0, 0, 0, 574, 576, 5, 45, 0, 0, 575, 574, 1, 0,
796
- 0, 0, 575, 576, 1, 0, 0, 0, 576, 578, 1, 0, 0, 0, 577, 579, 7, 1, 0, 0, 578, 577, 1, 0,
797
- 0, 0, 579, 580, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0,
798
- 0, 0, 582, 583, 6, 39, 42, 0, 583, 86, 1, 0, 0, 0, 584, 585, 5, 93, 0, 0, 585, 586, 1,
799
- 0, 0, 0, 586, 587, 6, 40, 40, 0, 587, 588, 6, 40, 1, 0, 588, 88, 1, 0, 0, 0, 589, 591,
800
- 7, 5, 0, 0, 590, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 592, 593,
801
- 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 6, 41, 22, 0, 595, 90, 1, 0, 0, 0, 596, 600,
802
- 7, 7, 0, 0, 597, 599, 7, 8, 0, 0, 598, 597, 1, 0, 0, 0, 599, 602, 1, 0, 0, 0, 600, 598,
803
- 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 603, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 603, 604,
804
- 6, 42, 43, 0, 604, 92, 1, 0, 0, 0, 605, 606, 5, 93, 0, 0, 606, 607, 1, 0, 0, 0, 607, 608,
805
- 6, 43, 40, 0, 608, 609, 6, 43, 1, 0, 609, 94, 1, 0, 0, 0, 610, 611, 5, 92, 0, 0, 611, 612,
806
- 7, 9, 0, 0, 612, 613, 1, 0, 0, 0, 613, 614, 6, 44, 44, 0, 614, 96, 1, 0, 0, 0, 615, 619,
807
- 8, 10, 0, 0, 616, 617, 5, 60, 0, 0, 617, 619, 8, 10, 0, 0, 618, 615, 1, 0, 0, 0, 618, 616,
808
- 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622,
809
- 1, 0, 0, 0, 622, 623, 6, 45, 44, 0, 623, 98, 1, 0, 0, 0, 624, 625, 5, 92, 0, 0, 625, 626,
810
- 1, 0, 0, 0, 626, 627, 6, 46, 44, 0, 627, 100, 1, 0, 0, 0, 628, 629, 5, 40, 0, 0, 629, 630,
811
- 6, 47, 45, 0, 630, 631, 1, 0, 0, 0, 631, 632, 6, 47, 44, 0, 632, 102, 1, 0, 0, 0, 633,
812
- 634, 4, 48, 7, 0, 634, 635, 5, 41, 0, 0, 635, 636, 6, 48, 46, 0, 636, 637, 1, 0, 0, 0,
813
- 637, 638, 6, 48, 44, 0, 638, 104, 1, 0, 0, 0, 639, 640, 5, 41, 0, 0, 640, 641, 1, 0, 0,
814
- 0, 641, 642, 6, 49, 47, 0, 642, 643, 6, 49, 1, 0, 643, 106, 1, 0, 0, 0, 644, 645, 4, 50,
815
- 8, 0, 645, 646, 5, 10, 0, 0, 646, 647, 6, 50, 48, 0, 647, 648, 1, 0, 0, 0, 648, 649, 6,
816
- 50, 32, 0, 649, 650, 6, 50, 33, 0, 650, 108, 1, 0, 0, 0, 651, 652, 4, 51, 9, 0, 652, 653,
817
- 5, 58, 0, 0, 653, 654, 9, 0, 0, 0, 654, 655, 6, 51, 49, 0, 655, 656, 1, 0, 0, 0, 656, 657,
818
- 6, 51, 32, 0, 657, 658, 6, 51, 33, 0, 658, 110, 1, 0, 0, 0, 659, 661, 8, 11, 0, 0, 660,
819
- 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 660, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663,
820
- 664, 1, 0, 0, 0, 664, 665, 6, 52, 50, 0, 665, 112, 1, 0, 0, 0, 666, 667, 5, 10, 0, 0, 667,
821
- 668, 1, 0, 0, 0, 668, 669, 6, 53, 50, 0, 669, 114, 1, 0, 0, 0, 670, 671, 5, 58, 0, 0, 671,
822
- 672, 1, 0, 0, 0, 672, 673, 6, 54, 50, 0, 673, 116, 1, 0, 0, 0, 50, 0, 1, 2, 3, 4, 5, 6, 120,
823
- 123, 128, 134, 136, 143, 145, 150, 163, 177, 191, 205, 219, 233, 247, 261, 275,
824
- 289, 303, 317, 331, 345, 360, 374, 383, 398, 426, 450, 463, 465, 470, 526, 537,
825
- 539, 551, 570, 575, 580, 592, 600, 618, 620, 662, 51, 1, 3, 0, 2, 1, 0, 1, 4, 1, 1, 5,
826
- 2, 1, 6, 3, 1, 7, 4, 1, 8, 5, 1, 9, 6, 1, 10, 7, 1, 11, 8, 1, 12, 9, 1, 13, 10, 1, 14, 11, 1,
827
- 15, 12, 1, 16, 13, 7, 16, 0, 1, 17, 14, 1, 18, 15, 0, 1, 0, 7, 15, 0, 1, 22, 16, 7, 17, 0,
828
- 6, 0, 0, 7, 1, 0, 2, 2, 0, 2, 3, 0, 2, 4, 0, 1, 28, 17, 7, 3, 0, 2, 5, 0, 7, 5, 0, 1, 30, 18,
829
- 7, 14, 0, 2, 0, 0, 1, 31, 19, 7, 6, 0, 1, 32, 20, 2, 6, 0, 7, 7, 0, 7, 11, 0, 7, 2, 0, 7, 9,
830
- 0, 7, 8, 0, 7, 10, 0, 7, 12, 0, 1, 47, 21, 1, 48, 22, 7, 4, 0, 1, 50, 23, 1, 51, 24, 7, 13,
831
- 0
880
+ 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7,
881
+ 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2,
882
+ 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7,
883
+ 68, 1, 0, 4, 0, 147, 8, 0, 11, 0, 12, 0, 148, 1, 1, 3, 1, 152, 8, 1, 1, 1, 4, 1, 155, 8, 1,
884
+ 11, 1, 12, 1, 156, 1, 1, 1, 1, 4, 1, 161, 8, 1, 11, 1, 12, 1, 162, 3, 1, 165, 8, 1, 1, 2,
885
+ 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 172, 8, 2, 3, 2, 174, 8, 2, 1, 2, 5, 2, 177, 8, 2, 10, 2, 12,
886
+ 2, 180, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 193, 8,
887
+ 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 199, 8, 5, 1, 5, 5, 5, 202, 8, 5, 10, 5, 12, 5, 205, 9, 5,
888
+ 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 213, 8, 6, 10, 6, 12, 6, 216, 9, 6, 1, 7, 1, 7, 3,
889
+ 7, 220, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 226, 8, 8, 1, 8, 5, 8, 229, 8, 8, 10, 8, 12, 8,
890
+ 232, 9, 8, 1, 8, 1, 8, 1, 9, 3, 9, 237, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10,
891
+ 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 250, 8, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11,
892
+ 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 266, 8, 11, 1, 11, 1, 11,
893
+ 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12,
894
+ 282, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13,
895
+ 1, 13, 1, 13, 1, 13, 3, 13, 298, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14,
896
+ 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 314, 8, 14, 1, 14, 1, 14, 1, 14,
897
+ 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 330,
898
+ 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
899
+ 1, 16, 1, 16, 3, 16, 346, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17,
900
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 362, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17,
901
+ 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 378, 8, 18,
902
+ 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19,
903
+ 1, 19, 3, 19, 394, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20,
904
+ 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 410, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21,
905
+ 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 426, 8, 21, 1, 21,
906
+ 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22,
907
+ 3, 22, 442, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23,
908
+ 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 458, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24,
909
+ 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 474, 8, 24, 1, 24, 1, 24,
910
+ 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25,
911
+ 490, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26,
912
+ 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27,
913
+ 3, 27, 516, 8, 27, 1, 27, 1, 27, 1, 28, 4, 28, 521, 8, 28, 11, 28, 12, 28, 522, 1, 28,
914
+ 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 536, 8, 29,
915
+ 10, 29, 12, 29, 539, 9, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29,
916
+ 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30,
917
+ 1, 30, 5, 30, 564, 8, 30, 10, 30, 12, 30, 567, 9, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30,
918
+ 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 4, 31, 583, 8, 31, 11, 31,
919
+ 12, 31, 584, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 4, 33, 592, 8, 33, 11, 33, 12, 33, 593,
920
+ 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35,
921
+ 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37,
922
+ 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39,
923
+ 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42,
924
+ 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 4, 43, 653, 8, 43, 11, 43, 12, 43, 654, 1, 43, 1, 43,
925
+ 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 4, 45, 664, 8, 45, 11, 45, 12, 45, 665, 1, 45, 1, 45,
926
+ 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 4, 47, 677, 8, 47, 11, 47, 12, 47, 678,
927
+ 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48,
928
+ 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 698, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 3, 49,
929
+ 705, 8, 49, 1, 49, 4, 49, 708, 8, 49, 11, 49, 12, 49, 709, 1, 49, 1, 49, 1, 50, 1, 50,
930
+ 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 4, 51, 721, 8, 51, 11, 51, 12, 51, 722, 1, 51, 1, 51,
931
+ 1, 52, 1, 52, 5, 52, 729, 8, 52, 10, 52, 12, 52, 732, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53,
932
+ 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 4, 55, 748, 8, 55,
933
+ 11, 55, 12, 55, 749, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57,
934
+ 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59,
935
+ 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 781, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60,
936
+ 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 5, 62, 797, 8, 62,
937
+ 10, 62, 12, 62, 800, 9, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63,
938
+ 1, 63, 1, 63, 1, 64, 1, 64, 4, 64, 815, 8, 64, 11, 64, 12, 64, 816, 1, 64, 1, 64, 1, 64,
939
+ 1, 64, 1, 64, 1, 65, 4, 65, 825, 8, 65, 11, 65, 12, 65, 826, 1, 65, 1, 65, 1, 65, 1, 65,
940
+ 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68,
941
+ 1, 68, 1, 68, 1, 68, 1, 68, 2, 537, 565, 0, 69, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19,
942
+ 0, 21, 0, 23, 0, 25, 0, 27, 17, 29, 18, 31, 19, 33, 20, 35, 21, 37, 22, 39, 23, 41, 24,
943
+ 43, 25, 45, 26, 47, 27, 49, 28, 51, 29, 53, 30, 55, 31, 57, 32, 59, 33, 61, 34, 63, 35,
944
+ 65, 0, 67, 0, 69, 16, 71, 40, 73, 36, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89,
945
+ 0, 91, 0, 93, 37, 95, 41, 97, 0, 99, 0, 101, 38, 103, 0, 105, 0, 107, 0, 109, 39, 111,
946
+ 0, 113, 0, 115, 0, 117, 0, 119, 42, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133,
947
+ 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, 7, 0, 1, 2, 3, 4, 5, 6, 14, 4, 0, 48, 57, 65,
948
+ 90, 95, 95, 97, 122, 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 32, 32, 58, 58,
949
+ 1, 0, 49, 57, 3, 0, 9, 10, 13, 13, 32, 32, 4, 0, 9, 10, 13, 13, 32, 32, 35, 35, 2, 0, 9,
950
+ 9, 32, 32, 5, 0, 9, 10, 13, 13, 32, 32, 44, 44, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122,
951
+ 6, 0, 43, 43, 45, 46, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 40, 41, 92, 92, 5, 0, 10,
952
+ 10, 13, 13, 40, 41, 60, 60, 92, 92, 2, 0, 10, 10, 13, 13, 886, 0, 27, 1, 0, 0, 0, 0, 29,
953
+ 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39,
954
+ 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49,
955
+ 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59,
956
+ 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69,
957
+ 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 1, 73, 1, 0, 0, 0, 1, 75, 1, 0, 0, 0, 1, 77, 1, 0, 0, 0, 1, 79,
958
+ 1, 0, 0, 0, 1, 81, 1, 0, 0, 0, 1, 83, 1, 0, 0, 0, 1, 85, 1, 0, 0, 0, 1, 87, 1, 0, 0, 0, 1, 89,
959
+ 1, 0, 0, 0, 1, 91, 1, 0, 0, 0, 2, 93, 1, 0, 0, 0, 2, 95, 1, 0, 0, 0, 2, 97, 1, 0, 0, 0, 2, 99,
960
+ 1, 0, 0, 0, 3, 101, 1, 0, 0, 0, 3, 103, 1, 0, 0, 0, 3, 105, 1, 0, 0, 0, 3, 107, 1, 0, 0, 0,
961
+ 4, 109, 1, 0, 0, 0, 4, 111, 1, 0, 0, 0, 4, 113, 1, 0, 0, 0, 5, 115, 1, 0, 0, 0, 5, 117, 1,
962
+ 0, 0, 0, 5, 119, 1, 0, 0, 0, 5, 121, 1, 0, 0, 0, 5, 123, 1, 0, 0, 0, 5, 125, 1, 0, 0, 0, 6,
963
+ 127, 1, 0, 0, 0, 6, 129, 1, 0, 0, 0, 6, 131, 1, 0, 0, 0, 6, 133, 1, 0, 0, 0, 6, 135, 1, 0,
964
+ 0, 0, 6, 137, 1, 0, 0, 0, 6, 139, 1, 0, 0, 0, 6, 141, 1, 0, 0, 0, 6, 143, 1, 0, 0, 0, 7, 146,
965
+ 1, 0, 0, 0, 9, 151, 1, 0, 0, 0, 11, 166, 1, 0, 0, 0, 13, 183, 1, 0, 0, 0, 15, 192, 1, 0, 0,
966
+ 0, 17, 194, 1, 0, 0, 0, 19, 208, 1, 0, 0, 0, 21, 219, 1, 0, 0, 0, 23, 221, 1, 0, 0, 0, 25,
967
+ 236, 1, 0, 0, 0, 27, 240, 1, 0, 0, 0, 29, 255, 1, 0, 0, 0, 31, 271, 1, 0, 0, 0, 33, 287,
968
+ 1, 0, 0, 0, 35, 303, 1, 0, 0, 0, 37, 319, 1, 0, 0, 0, 39, 335, 1, 0, 0, 0, 41, 351, 1, 0,
969
+ 0, 0, 43, 367, 1, 0, 0, 0, 45, 383, 1, 0, 0, 0, 47, 399, 1, 0, 0, 0, 49, 415, 1, 0, 0, 0,
970
+ 51, 431, 1, 0, 0, 0, 53, 447, 1, 0, 0, 0, 55, 463, 1, 0, 0, 0, 57, 479, 1, 0, 0, 0, 59, 495,
971
+ 1, 0, 0, 0, 61, 509, 1, 0, 0, 0, 63, 520, 1, 0, 0, 0, 65, 526, 1, 0, 0, 0, 67, 551, 1, 0,
972
+ 0, 0, 69, 582, 1, 0, 0, 0, 71, 586, 1, 0, 0, 0, 73, 591, 1, 0, 0, 0, 75, 599, 1, 0, 0, 0,
973
+ 77, 605, 1, 0, 0, 0, 79, 611, 1, 0, 0, 0, 81, 617, 1, 0, 0, 0, 83, 624, 1, 0, 0, 0, 85, 629,
974
+ 1, 0, 0, 0, 87, 634, 1, 0, 0, 0, 89, 639, 1, 0, 0, 0, 91, 645, 1, 0, 0, 0, 93, 652, 1, 0,
975
+ 0, 0, 95, 658, 1, 0, 0, 0, 97, 663, 1, 0, 0, 0, 99, 669, 1, 0, 0, 0, 101, 676, 1, 0, 0, 0,
976
+ 103, 697, 1, 0, 0, 0, 105, 704, 1, 0, 0, 0, 107, 713, 1, 0, 0, 0, 109, 720, 1, 0, 0, 0,
977
+ 111, 726, 1, 0, 0, 0, 113, 735, 1, 0, 0, 0, 115, 741, 1, 0, 0, 0, 117, 747, 1, 0, 0, 0,
978
+ 119, 753, 1, 0, 0, 0, 121, 757, 1, 0, 0, 0, 123, 762, 1, 0, 0, 0, 125, 768, 1, 0, 0, 0,
979
+ 127, 774, 1, 0, 0, 0, 129, 787, 1, 0, 0, 0, 131, 793, 1, 0, 0, 0, 133, 806, 1, 0, 0, 0,
980
+ 135, 812, 1, 0, 0, 0, 137, 824, 1, 0, 0, 0, 139, 832, 1, 0, 0, 0, 141, 839, 1, 0, 0, 0,
981
+ 143, 844, 1, 0, 0, 0, 145, 147, 7, 0, 0, 0, 146, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0,
982
+ 148, 146, 1, 0, 0, 0, 148, 149, 1, 0, 0, 0, 149, 8, 1, 0, 0, 0, 150, 152, 5, 45, 0, 0, 151,
983
+ 150, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 154, 1, 0, 0, 0, 153, 155, 7, 1, 0, 0, 154,
984
+ 153, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157,
985
+ 164, 1, 0, 0, 0, 158, 160, 5, 46, 0, 0, 159, 161, 7, 1, 0, 0, 160, 159, 1, 0, 0, 0, 161,
986
+ 162, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164,
987
+ 158, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 10, 1, 0, 0, 0, 166, 167, 5, 60, 0, 0, 167,
988
+ 178, 3, 9, 1, 0, 168, 174, 5, 45, 0, 0, 169, 171, 5, 44, 0, 0, 170, 172, 5, 32, 0, 0, 171,
989
+ 170, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 174, 1, 0, 0, 0, 173, 168, 1, 0, 0, 0, 173,
990
+ 169, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 177, 3, 9, 1, 0, 176, 173, 1, 0, 0, 0, 177,
991
+ 180, 1, 0, 0, 0, 178, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 181, 1, 0, 0, 0, 180,
992
+ 178, 1, 0, 0, 0, 181, 182, 5, 62, 0, 0, 182, 12, 1, 0, 0, 0, 183, 184, 5, 64, 0, 0, 184,
993
+ 185, 7, 2, 0, 0, 185, 186, 7, 2, 0, 0, 186, 187, 7, 2, 0, 0, 187, 188, 7, 2, 0, 0, 188,
994
+ 189, 7, 2, 0, 0, 189, 14, 1, 0, 0, 0, 190, 193, 3, 9, 1, 0, 191, 193, 3, 13, 3, 0, 192,
995
+ 190, 1, 0, 0, 0, 192, 191, 1, 0, 0, 0, 193, 16, 1, 0, 0, 0, 194, 195, 5, 60, 0, 0, 195,
996
+ 203, 3, 15, 4, 0, 196, 198, 5, 44, 0, 0, 197, 199, 5, 32, 0, 0, 198, 197, 1, 0, 0, 0, 198,
997
+ 199, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 202, 3, 15, 4, 0, 201, 196, 1, 0, 0, 0, 202,
998
+ 205, 1, 0, 0, 0, 203, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 206, 1, 0, 0, 0, 205,
999
+ 203, 1, 0, 0, 0, 206, 207, 5, 62, 0, 0, 207, 18, 1, 0, 0, 0, 208, 209, 3, 13, 3, 0, 209,
1000
+ 210, 7, 3, 0, 0, 210, 214, 7, 4, 0, 0, 211, 213, 7, 1, 0, 0, 212, 211, 1, 0, 0, 0, 213,
1001
+ 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 20, 1, 0, 0, 0, 216, 214,
1002
+ 1, 0, 0, 0, 217, 220, 3, 15, 4, 0, 218, 220, 3, 19, 6, 0, 219, 217, 1, 0, 0, 0, 219, 218,
1003
+ 1, 0, 0, 0, 220, 22, 1, 0, 0, 0, 221, 222, 5, 60, 0, 0, 222, 230, 3, 21, 7, 0, 223, 225,
1004
+ 5, 44, 0, 0, 224, 226, 5, 32, 0, 0, 225, 224, 1, 0, 0, 0, 225, 226, 1, 0, 0, 0, 226, 227,
1005
+ 1, 0, 0, 0, 227, 229, 3, 21, 7, 0, 228, 223, 1, 0, 0, 0, 229, 232, 1, 0, 0, 0, 230, 228,
1006
+ 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 233, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 233, 234,
1007
+ 5, 62, 0, 0, 234, 24, 1, 0, 0, 0, 235, 237, 5, 13, 0, 0, 236, 235, 1, 0, 0, 0, 236, 237,
1008
+ 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 5, 10, 0, 0, 239, 26, 1, 0, 0, 0, 240, 241,
1009
+ 4, 10, 0, 0, 241, 242, 5, 35, 0, 0, 242, 243, 5, 32, 0, 0, 243, 244, 5, 80, 0, 0, 244,
1010
+ 245, 5, 76, 0, 0, 245, 246, 5, 65, 0, 0, 246, 247, 5, 78, 0, 0, 247, 249, 1, 0, 0, 0, 248,
1011
+ 250, 3, 7, 0, 0, 249, 248, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 251, 1, 0, 0, 0, 251,
1012
+ 252, 6, 10, 0, 0, 252, 253, 1, 0, 0, 0, 253, 254, 6, 10, 1, 0, 254, 28, 1, 0, 0, 0, 255,
1013
+ 256, 4, 11, 1, 0, 256, 257, 5, 35, 0, 0, 257, 258, 5, 35, 0, 0, 258, 259, 5, 32, 0, 0,
1014
+ 259, 260, 5, 70, 0, 0, 260, 261, 5, 73, 0, 0, 261, 262, 5, 78, 0, 0, 262, 263, 5, 68,
1015
+ 0, 0, 263, 265, 1, 0, 0, 0, 264, 266, 3, 7, 0, 0, 265, 264, 1, 0, 0, 0, 265, 266, 1, 0,
1016
+ 0, 0, 266, 267, 1, 0, 0, 0, 267, 268, 6, 11, 2, 0, 268, 269, 1, 0, 0, 0, 269, 270, 6, 11,
1017
+ 1, 0, 270, 30, 1, 0, 0, 0, 271, 272, 4, 12, 2, 0, 272, 273, 5, 35, 0, 0, 273, 274, 5, 35,
1018
+ 0, 0, 274, 275, 5, 32, 0, 0, 275, 276, 5, 82, 0, 0, 276, 277, 5, 69, 0, 0, 277, 278, 5,
1019
+ 65, 0, 0, 278, 279, 5, 68, 0, 0, 279, 281, 1, 0, 0, 0, 280, 282, 3, 7, 0, 0, 281, 280,
1020
+ 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 284, 6, 12, 3, 0, 284, 285,
1021
+ 1, 0, 0, 0, 285, 286, 6, 12, 1, 0, 286, 32, 1, 0, 0, 0, 287, 288, 4, 13, 3, 0, 288, 289,
1022
+ 5, 35, 0, 0, 289, 290, 5, 35, 0, 0, 290, 291, 5, 32, 0, 0, 291, 292, 5, 69, 0, 0, 292,
1023
+ 293, 5, 68, 0, 0, 293, 294, 5, 73, 0, 0, 294, 295, 5, 84, 0, 0, 295, 297, 1, 0, 0, 0, 296,
1024
+ 298, 3, 7, 0, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299,
1025
+ 300, 6, 13, 4, 0, 300, 301, 1, 0, 0, 0, 301, 302, 6, 13, 1, 0, 302, 34, 1, 0, 0, 0, 303,
1026
+ 304, 4, 14, 4, 0, 304, 305, 5, 35, 0, 0, 305, 306, 5, 35, 0, 0, 306, 307, 5, 32, 0, 0,
1027
+ 307, 308, 5, 67, 0, 0, 308, 309, 5, 79, 0, 0, 309, 310, 5, 80, 0, 0, 310, 311, 5, 89,
1028
+ 0, 0, 311, 313, 1, 0, 0, 0, 312, 314, 3, 7, 0, 0, 313, 312, 1, 0, 0, 0, 313, 314, 1, 0,
1029
+ 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 6, 14, 5, 0, 316, 317, 1, 0, 0, 0, 317, 318, 6, 14,
1030
+ 1, 0, 318, 36, 1, 0, 0, 0, 319, 320, 4, 15, 5, 0, 320, 321, 5, 35, 0, 0, 321, 322, 5, 35,
1031
+ 0, 0, 322, 323, 5, 32, 0, 0, 323, 324, 5, 77, 0, 0, 324, 325, 5, 79, 0, 0, 325, 326, 5,
1032
+ 86, 0, 0, 326, 327, 5, 69, 0, 0, 327, 329, 1, 0, 0, 0, 328, 330, 3, 7, 0, 0, 329, 328,
1033
+ 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 332, 6, 15, 6, 0, 332, 333,
1034
+ 1, 0, 0, 0, 333, 334, 6, 15, 1, 0, 334, 38, 1, 0, 0, 0, 335, 336, 4, 16, 6, 0, 336, 337,
1035
+ 5, 35, 0, 0, 337, 338, 5, 35, 0, 0, 338, 339, 5, 32, 0, 0, 339, 340, 5, 79, 0, 0, 340,
1036
+ 341, 5, 80, 0, 0, 341, 342, 5, 69, 0, 0, 342, 343, 5, 78, 0, 0, 343, 345, 1, 0, 0, 0, 344,
1037
+ 346, 3, 7, 0, 0, 345, 344, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347,
1038
+ 348, 6, 16, 7, 0, 348, 349, 1, 0, 0, 0, 349, 350, 6, 16, 1, 0, 350, 40, 1, 0, 0, 0, 351,
1039
+ 352, 4, 17, 7, 0, 352, 353, 5, 35, 0, 0, 353, 354, 5, 35, 0, 0, 354, 355, 5, 32, 0, 0,
1040
+ 355, 356, 5, 70, 0, 0, 356, 357, 5, 79, 0, 0, 357, 358, 5, 76, 0, 0, 358, 359, 5, 68,
1041
+ 0, 0, 359, 361, 1, 0, 0, 0, 360, 362, 3, 7, 0, 0, 361, 360, 1, 0, 0, 0, 361, 362, 1, 0,
1042
+ 0, 0, 362, 363, 1, 0, 0, 0, 363, 364, 6, 17, 8, 0, 364, 365, 1, 0, 0, 0, 365, 366, 6, 17,
1043
+ 1, 0, 366, 42, 1, 0, 0, 0, 367, 368, 4, 18, 8, 0, 368, 369, 5, 35, 0, 0, 369, 370, 5, 35,
1044
+ 0, 0, 370, 371, 5, 32, 0, 0, 371, 372, 5, 83, 0, 0, 372, 373, 5, 69, 0, 0, 373, 374, 5,
1045
+ 78, 0, 0, 374, 375, 5, 68, 0, 0, 375, 377, 1, 0, 0, 0, 376, 378, 3, 7, 0, 0, 377, 376,
1046
+ 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 380, 6, 18, 9, 0, 380, 381,
1047
+ 1, 0, 0, 0, 381, 382, 6, 18, 1, 0, 382, 44, 1, 0, 0, 0, 383, 384, 4, 19, 9, 0, 384, 385,
1048
+ 5, 35, 0, 0, 385, 386, 5, 35, 0, 0, 386, 387, 5, 32, 0, 0, 387, 388, 5, 69, 0, 0, 388,
1049
+ 389, 5, 88, 0, 0, 389, 390, 5, 69, 0, 0, 390, 391, 5, 67, 0, 0, 391, 393, 1, 0, 0, 0, 392,
1050
+ 394, 3, 7, 0, 0, 393, 392, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395,
1051
+ 396, 6, 19, 10, 0, 396, 397, 1, 0, 0, 0, 397, 398, 6, 19, 1, 0, 398, 46, 1, 0, 0, 0, 399,
1052
+ 400, 4, 20, 10, 0, 400, 401, 5, 35, 0, 0, 401, 402, 5, 35, 0, 0, 402, 403, 5, 32, 0, 0,
1053
+ 403, 404, 5, 66, 0, 0, 404, 405, 5, 65, 0, 0, 405, 406, 5, 82, 0, 0, 406, 407, 5, 69,
1054
+ 0, 0, 407, 409, 1, 0, 0, 0, 408, 410, 3, 7, 0, 0, 409, 408, 1, 0, 0, 0, 409, 410, 1, 0,
1055
+ 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 6, 20, 11, 0, 412, 413, 1, 0, 0, 0, 413, 414, 6,
1056
+ 20, 1, 0, 414, 48, 1, 0, 0, 0, 415, 416, 4, 21, 11, 0, 416, 417, 5, 35, 0, 0, 417, 418,
1057
+ 5, 35, 0, 0, 418, 419, 5, 32, 0, 0, 419, 420, 5, 87, 0, 0, 420, 421, 5, 79, 0, 0, 421,
1058
+ 422, 5, 82, 0, 0, 422, 423, 5, 75, 0, 0, 423, 425, 1, 0, 0, 0, 424, 426, 3, 7, 0, 0, 425,
1059
+ 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 428, 6, 21, 12, 0, 428,
1060
+ 429, 1, 0, 0, 0, 429, 430, 6, 21, 1, 0, 430, 50, 1, 0, 0, 0, 431, 432, 4, 22, 12, 0, 432,
1061
+ 433, 5, 35, 0, 0, 433, 434, 5, 35, 0, 0, 434, 435, 5, 32, 0, 0, 435, 436, 5, 70, 0, 0,
1062
+ 436, 437, 5, 79, 0, 0, 437, 438, 5, 82, 0, 0, 438, 439, 5, 75, 0, 0, 439, 441, 1, 0, 0,
1063
+ 0, 440, 442, 3, 7, 0, 0, 441, 440, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 443, 1, 0, 0,
1064
+ 0, 443, 444, 6, 22, 13, 0, 444, 445, 1, 0, 0, 0, 445, 446, 6, 22, 1, 0, 446, 52, 1, 0,
1065
+ 0, 0, 447, 448, 4, 23, 13, 0, 448, 449, 5, 35, 0, 0, 449, 450, 5, 35, 0, 0, 450, 451,
1066
+ 5, 32, 0, 0, 451, 452, 5, 75, 0, 0, 452, 453, 5, 73, 0, 0, 453, 454, 5, 76, 0, 0, 454,
1067
+ 455, 5, 76, 0, 0, 455, 457, 1, 0, 0, 0, 456, 458, 3, 7, 0, 0, 457, 456, 1, 0, 0, 0, 457,
1068
+ 458, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 460, 6, 23, 14, 0, 460, 461, 1, 0, 0, 0, 461,
1069
+ 462, 6, 23, 1, 0, 462, 54, 1, 0, 0, 0, 463, 464, 4, 24, 14, 0, 464, 465, 5, 35, 0, 0, 465,
1070
+ 466, 5, 35, 0, 0, 466, 467, 5, 32, 0, 0, 467, 468, 5, 76, 0, 0, 468, 469, 5, 79, 0, 0,
1071
+ 469, 470, 5, 79, 0, 0, 470, 471, 5, 75, 0, 0, 471, 473, 1, 0, 0, 0, 472, 474, 3, 7, 0,
1072
+ 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 6, 24, 15,
1073
+ 0, 476, 477, 1, 0, 0, 0, 477, 478, 6, 24, 1, 0, 478, 56, 1, 0, 0, 0, 479, 480, 4, 25, 15,
1074
+ 0, 480, 481, 5, 35, 0, 0, 481, 482, 5, 35, 0, 0, 482, 483, 5, 32, 0, 0, 483, 484, 5, 66,
1075
+ 0, 0, 484, 485, 5, 85, 0, 0, 485, 486, 5, 70, 0, 0, 486, 487, 5, 70, 0, 0, 487, 489, 1,
1076
+ 0, 0, 0, 488, 490, 3, 7, 0, 0, 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1,
1077
+ 0, 0, 0, 491, 492, 6, 25, 16, 0, 492, 493, 1, 0, 0, 0, 493, 494, 6, 25, 1, 0, 494, 58,
1078
+ 1, 0, 0, 0, 495, 496, 4, 26, 16, 0, 496, 497, 5, 96, 0, 0, 497, 498, 5, 96, 0, 0, 498,
1079
+ 499, 5, 96, 0, 0, 499, 500, 5, 112, 0, 0, 500, 501, 5, 108, 0, 0, 501, 502, 5, 117, 0,
1080
+ 0, 502, 503, 5, 114, 0, 0, 503, 504, 5, 110, 0, 0, 504, 505, 5, 107, 0, 0, 505, 506,
1081
+ 1, 0, 0, 0, 506, 507, 3, 25, 9, 0, 507, 508, 6, 26, 17, 0, 508, 60, 1, 0, 0, 0, 509, 510,
1082
+ 4, 27, 17, 0, 510, 511, 5, 96, 0, 0, 511, 512, 5, 96, 0, 0, 512, 513, 5, 96, 0, 0, 513,
1083
+ 515, 1, 0, 0, 0, 514, 516, 3, 25, 9, 0, 515, 514, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516,
1084
+ 517, 1, 0, 0, 0, 517, 518, 6, 27, 18, 0, 518, 62, 1, 0, 0, 0, 519, 521, 7, 5, 0, 0, 520,
1085
+ 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523,
1086
+ 524, 1, 0, 0, 0, 524, 525, 6, 28, 19, 0, 525, 64, 1, 0, 0, 0, 526, 527, 5, 60, 0, 0, 527,
1087
+ 528, 5, 116, 0, 0, 528, 529, 5, 104, 0, 0, 529, 530, 5, 105, 0, 0, 530, 531, 5, 110,
1088
+ 0, 0, 531, 532, 5, 107, 0, 0, 532, 533, 5, 62, 0, 0, 533, 537, 1, 0, 0, 0, 534, 536, 9,
1089
+ 0, 0, 0, 535, 534, 1, 0, 0, 0, 536, 539, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 537, 535, 1,
1090
+ 0, 0, 0, 538, 540, 1, 0, 0, 0, 539, 537, 1, 0, 0, 0, 540, 541, 5, 60, 0, 0, 541, 542, 5,
1091
+ 47, 0, 0, 542, 543, 5, 116, 0, 0, 543, 544, 5, 104, 0, 0, 544, 545, 5, 105, 0, 0, 545,
1092
+ 546, 5, 110, 0, 0, 546, 547, 5, 107, 0, 0, 547, 548, 5, 62, 0, 0, 548, 549, 1, 0, 0, 0,
1093
+ 549, 550, 6, 29, 20, 0, 550, 66, 1, 0, 0, 0, 551, 552, 5, 60, 0, 0, 552, 553, 5, 124,
1094
+ 0, 0, 553, 554, 5, 99, 0, 0, 554, 555, 5, 104, 0, 0, 555, 556, 5, 97, 0, 0, 556, 557,
1095
+ 5, 110, 0, 0, 557, 558, 5, 110, 0, 0, 558, 559, 5, 101, 0, 0, 559, 560, 5, 108, 0, 0,
1096
+ 560, 561, 5, 62, 0, 0, 561, 565, 1, 0, 0, 0, 562, 564, 9, 0, 0, 0, 563, 562, 1, 0, 0, 0,
1097
+ 564, 567, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0, 566, 568, 1, 0, 0, 0,
1098
+ 567, 565, 1, 0, 0, 0, 568, 569, 5, 60, 0, 0, 569, 570, 5, 99, 0, 0, 570, 571, 5, 104,
1099
+ 0, 0, 571, 572, 5, 97, 0, 0, 572, 573, 5, 110, 0, 0, 573, 574, 5, 110, 0, 0, 574, 575,
1100
+ 5, 101, 0, 0, 575, 576, 5, 108, 0, 0, 576, 577, 5, 124, 0, 0, 577, 578, 5, 62, 0, 0, 578,
1101
+ 579, 1, 0, 0, 0, 579, 580, 6, 30, 20, 0, 580, 68, 1, 0, 0, 0, 581, 583, 8, 6, 0, 0, 582,
1102
+ 581, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585,
1103
+ 70, 1, 0, 0, 0, 586, 587, 5, 35, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 6, 32, 20, 0, 589,
1104
+ 72, 1, 0, 0, 0, 590, 592, 7, 7, 0, 0, 591, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 591,
1105
+ 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 6, 33, 21, 0, 596, 597,
1106
+ 1, 0, 0, 0, 597, 598, 6, 33, 22, 0, 598, 74, 1, 0, 0, 0, 599, 600, 4, 34, 18, 0, 600, 601,
1107
+ 5, 91, 0, 0, 601, 602, 1, 0, 0, 0, 602, 603, 6, 34, 23, 0, 603, 604, 6, 34, 24, 0, 604,
1108
+ 76, 1, 0, 0, 0, 605, 606, 4, 35, 19, 0, 606, 607, 5, 91, 0, 0, 607, 608, 1, 0, 0, 0, 608,
1109
+ 609, 6, 35, 23, 0, 609, 610, 6, 35, 25, 0, 610, 78, 1, 0, 0, 0, 611, 612, 4, 36, 20, 0,
1110
+ 612, 613, 5, 91, 0, 0, 613, 614, 1, 0, 0, 0, 614, 615, 6, 36, 23, 0, 615, 616, 6, 36,
1111
+ 26, 0, 616, 80, 1, 0, 0, 0, 617, 618, 4, 37, 21, 0, 618, 619, 5, 40, 0, 0, 619, 620, 6,
1112
+ 37, 27, 0, 620, 621, 1, 0, 0, 0, 621, 622, 6, 37, 28, 0, 622, 623, 6, 37, 29, 0, 623,
1113
+ 82, 1, 0, 0, 0, 624, 625, 4, 38, 22, 0, 625, 626, 3, 17, 5, 0, 626, 627, 1, 0, 0, 0, 627,
1114
+ 628, 6, 38, 30, 0, 628, 84, 1, 0, 0, 0, 629, 630, 4, 39, 23, 0, 630, 631, 3, 11, 2, 0,
1115
+ 631, 632, 1, 0, 0, 0, 632, 633, 6, 39, 30, 0, 633, 86, 1, 0, 0, 0, 634, 635, 4, 40, 24,
1116
+ 0, 635, 636, 3, 23, 8, 0, 636, 637, 1, 0, 0, 0, 637, 638, 6, 40, 31, 0, 638, 88, 1, 0,
1117
+ 0, 0, 639, 640, 4, 41, 25, 0, 640, 641, 3, 25, 9, 0, 641, 642, 1, 0, 0, 0, 642, 643, 6,
1118
+ 41, 32, 0, 643, 644, 6, 41, 33, 0, 644, 90, 1, 0, 0, 0, 645, 646, 3, 25, 9, 0, 646, 647,
1119
+ 6, 42, 34, 0, 647, 648, 1, 0, 0, 0, 648, 649, 6, 42, 35, 0, 649, 650, 6, 42, 36, 0, 650,
1120
+ 92, 1, 0, 0, 0, 651, 653, 7, 7, 0, 0, 652, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 652,
1121
+ 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 6, 43, 22, 0, 657, 94,
1122
+ 1, 0, 0, 0, 658, 659, 5, 44, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 6, 44, 37, 0, 661, 96,
1123
+ 1, 0, 0, 0, 662, 664, 8, 8, 0, 0, 663, 662, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 663,
1124
+ 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 668, 6, 45, 38, 0, 668, 98,
1125
+ 1, 0, 0, 0, 669, 670, 5, 93, 0, 0, 670, 671, 6, 46, 39, 0, 671, 672, 1, 0, 0, 0, 672, 673,
1126
+ 6, 46, 40, 0, 673, 674, 6, 46, 1, 0, 674, 100, 1, 0, 0, 0, 675, 677, 7, 7, 0, 0, 676, 675,
1127
+ 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680,
1128
+ 1, 0, 0, 0, 680, 681, 6, 47, 22, 0, 681, 102, 1, 0, 0, 0, 682, 683, 5, 49, 0, 0, 683, 684,
1129
+ 5, 48, 0, 0, 684, 698, 5, 50, 0, 0, 685, 686, 5, 50, 0, 0, 686, 687, 5, 48, 0, 0, 687,
1130
+ 698, 5, 48, 0, 0, 688, 689, 5, 50, 0, 0, 689, 690, 5, 48, 0, 0, 690, 698, 5, 50, 0, 0,
1131
+ 691, 692, 5, 51, 0, 0, 692, 693, 5, 48, 0, 0, 693, 698, 5, 48, 0, 0, 694, 695, 5, 52,
1132
+ 0, 0, 695, 696, 5, 57, 0, 0, 696, 698, 5, 57, 0, 0, 697, 682, 1, 0, 0, 0, 697, 685, 1,
1133
+ 0, 0, 0, 697, 688, 1, 0, 0, 0, 697, 691, 1, 0, 0, 0, 697, 694, 1, 0, 0, 0, 698, 699, 1,
1134
+ 0, 0, 0, 699, 700, 6, 48, 41, 0, 700, 701, 1, 0, 0, 0, 701, 702, 6, 48, 42, 0, 702, 104,
1135
+ 1, 0, 0, 0, 703, 705, 5, 45, 0, 0, 704, 703, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 707,
1136
+ 1, 0, 0, 0, 706, 708, 7, 1, 0, 0, 707, 706, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 707,
1137
+ 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 712, 6, 49, 43, 0, 712, 106,
1138
+ 1, 0, 0, 0, 713, 714, 5, 93, 0, 0, 714, 715, 6, 50, 44, 0, 715, 716, 1, 0, 0, 0, 716, 717,
1139
+ 6, 50, 40, 0, 717, 718, 6, 50, 1, 0, 718, 108, 1, 0, 0, 0, 719, 721, 7, 7, 0, 0, 720, 719,
1140
+ 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 724,
1141
+ 1, 0, 0, 0, 724, 725, 6, 51, 22, 0, 725, 110, 1, 0, 0, 0, 726, 730, 7, 9, 0, 0, 727, 729,
1142
+ 7, 10, 0, 0, 728, 727, 1, 0, 0, 0, 729, 732, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 730, 731,
1143
+ 1, 0, 0, 0, 731, 733, 1, 0, 0, 0, 732, 730, 1, 0, 0, 0, 733, 734, 6, 52, 45, 0, 734, 112,
1144
+ 1, 0, 0, 0, 735, 736, 5, 93, 0, 0, 736, 737, 6, 53, 46, 0, 737, 738, 1, 0, 0, 0, 738, 739,
1145
+ 6, 53, 40, 0, 739, 740, 6, 53, 1, 0, 740, 114, 1, 0, 0, 0, 741, 742, 5, 92, 0, 0, 742,
1146
+ 743, 7, 11, 0, 0, 743, 744, 1, 0, 0, 0, 744, 745, 6, 54, 47, 0, 745, 116, 1, 0, 0, 0, 746,
1147
+ 748, 8, 12, 0, 0, 747, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 749,
1148
+ 750, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 6, 55, 47, 0, 752, 118, 1, 0, 0, 0, 753,
1149
+ 754, 5, 92, 0, 0, 754, 755, 1, 0, 0, 0, 755, 756, 6, 56, 47, 0, 756, 120, 1, 0, 0, 0, 757,
1150
+ 758, 5, 40, 0, 0, 758, 759, 6, 57, 48, 0, 759, 760, 1, 0, 0, 0, 760, 761, 6, 57, 47, 0,
1151
+ 761, 122, 1, 0, 0, 0, 762, 763, 4, 58, 26, 0, 763, 764, 5, 41, 0, 0, 764, 765, 6, 58,
1152
+ 49, 0, 765, 766, 1, 0, 0, 0, 766, 767, 6, 58, 47, 0, 767, 124, 1, 0, 0, 0, 768, 769, 5,
1153
+ 41, 0, 0, 769, 770, 6, 59, 50, 0, 770, 771, 1, 0, 0, 0, 771, 772, 6, 59, 51, 0, 772, 773,
1154
+ 6, 59, 1, 0, 773, 126, 1, 0, 0, 0, 774, 775, 4, 60, 27, 0, 775, 776, 5, 96, 0, 0, 776,
1155
+ 777, 5, 96, 0, 0, 777, 778, 5, 96, 0, 0, 778, 780, 1, 0, 0, 0, 779, 781, 3, 25, 9, 0, 780,
1156
+ 779, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 6, 60, 52, 0, 783,
1157
+ 784, 1, 0, 0, 0, 784, 785, 6, 60, 53, 0, 785, 786, 6, 60, 33, 0, 786, 128, 1, 0, 0, 0,
1158
+ 787, 788, 4, 61, 28, 0, 788, 789, 3, 25, 9, 0, 789, 790, 1, 0, 0, 0, 790, 791, 6, 61,
1159
+ 32, 0, 791, 792, 6, 61, 33, 0, 792, 130, 1, 0, 0, 0, 793, 794, 4, 62, 29, 0, 794, 798,
1160
+ 3, 25, 9, 0, 795, 797, 7, 7, 0, 0, 796, 795, 1, 0, 0, 0, 797, 800, 1, 0, 0, 0, 798, 796,
1161
+ 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 801, 1, 0, 0, 0, 800, 798, 1, 0, 0, 0, 801, 802,
1162
+ 3, 25, 9, 0, 802, 803, 1, 0, 0, 0, 803, 804, 6, 62, 32, 0, 804, 805, 6, 62, 33, 0, 805,
1163
+ 132, 1, 0, 0, 0, 806, 807, 4, 63, 30, 0, 807, 808, 3, 25, 9, 0, 808, 809, 1, 0, 0, 0, 809,
1164
+ 810, 6, 63, 32, 0, 810, 811, 6, 63, 33, 0, 811, 134, 1, 0, 0, 0, 812, 814, 4, 64, 31,
1165
+ 0, 813, 815, 7, 7, 0, 0, 814, 813, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 814, 1, 0, 0,
1166
+ 0, 816, 817, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 3, 25, 9, 0, 819, 820, 1, 0, 0,
1167
+ 0, 820, 821, 6, 64, 32, 0, 821, 822, 6, 64, 33, 0, 822, 136, 1, 0, 0, 0, 823, 825, 8,
1168
+ 13, 0, 0, 824, 823, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 826, 827, 1,
1169
+ 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 6, 65, 54, 0, 829, 830, 1, 0, 0, 0, 830, 831,
1170
+ 6, 65, 55, 0, 831, 138, 1, 0, 0, 0, 832, 833, 5, 13, 0, 0, 833, 834, 5, 10, 0, 0, 834,
1171
+ 835, 1, 0, 0, 0, 835, 836, 6, 66, 56, 0, 836, 837, 1, 0, 0, 0, 837, 838, 6, 66, 55, 0,
1172
+ 838, 140, 1, 0, 0, 0, 839, 840, 5, 10, 0, 0, 840, 841, 6, 67, 57, 0, 841, 842, 1, 0, 0,
1173
+ 0, 842, 843, 6, 67, 55, 0, 843, 142, 1, 0, 0, 0, 844, 845, 5, 13, 0, 0, 845, 846, 6, 68,
1174
+ 58, 0, 846, 847, 1, 0, 0, 0, 847, 848, 6, 68, 55, 0, 848, 144, 1, 0, 0, 0, 58, 0, 1, 2,
1175
+ 3, 4, 5, 6, 148, 151, 156, 162, 164, 171, 173, 178, 192, 198, 203, 214, 219, 225,
1176
+ 230, 236, 249, 265, 281, 297, 313, 329, 345, 361, 377, 393, 409, 425, 441, 457,
1177
+ 473, 489, 515, 522, 537, 565, 584, 593, 654, 665, 678, 697, 704, 709, 722, 730,
1178
+ 749, 780, 798, 816, 826, 59, 1, 10, 0, 2, 1, 0, 1, 11, 1, 1, 12, 2, 1, 13, 3, 1, 14, 4,
1179
+ 1, 15, 5, 1, 16, 6, 1, 17, 7, 1, 18, 8, 1, 19, 9, 1, 20, 10, 1, 21, 11, 1, 22, 12, 1, 23,
1180
+ 13, 1, 24, 14, 1, 25, 15, 1, 26, 16, 1, 27, 17, 0, 1, 0, 7, 16, 0, 1, 33, 18, 6, 0, 0, 7,
1181
+ 1, 0, 2, 2, 0, 2, 3, 0, 2, 4, 0, 1, 37, 19, 7, 3, 0, 2, 5, 0, 7, 5, 0, 7, 6, 0, 7, 8, 0, 2, 0,
1182
+ 0, 1, 42, 20, 7, 7, 0, 2, 6, 0, 7, 9, 0, 7, 13, 0, 1, 46, 21, 7, 2, 0, 1, 48, 22, 7, 11, 0,
1183
+ 7, 10, 0, 1, 50, 23, 7, 12, 0, 1, 53, 24, 7, 14, 0, 1, 57, 25, 1, 58, 26, 1, 59, 27, 7, 4,
1184
+ 0, 1, 60, 28, 7, 34, 0, 1, 65, 29, 7, 15, 0, 1, 66, 30, 1, 67, 31, 1, 68, 32
832
1185
  ];
833
1186
  static __ATN;
834
1187
  static get _ATN() {