circuitscript 0.1.23 → 0.1.24

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/dist/cjs/BaseVisitor.js +35 -23
  2. package/dist/cjs/BomGeneration.js +167 -0
  3. package/dist/cjs/ComponentMatchConditions.js +116 -0
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +247 -244
  5. package/dist/cjs/antlr/CircuitScriptParser.js +1476 -825
  6. package/dist/cjs/builtinMethods.js +6 -1
  7. package/dist/cjs/execute.js +27 -16
  8. package/dist/cjs/graph.js +10 -9
  9. package/dist/cjs/helpers.js +23 -4
  10. package/dist/cjs/layout.js +14 -13
  11. package/dist/cjs/main.js +17 -1
  12. package/dist/cjs/objects/ExecutionScope.js +3 -0
  13. package/dist/cjs/objects/PinDefinition.js +11 -1
  14. package/dist/cjs/objects/types.js +6 -4
  15. package/dist/cjs/rules-check/no-connect-on-connected-pin.js +81 -0
  16. package/dist/cjs/rules-check/rules.js +74 -0
  17. package/dist/cjs/rules-check/unconnected-pins.js +52 -0
  18. package/dist/cjs/visitor.js +121 -5
  19. package/dist/esm/BaseVisitor.js +35 -23
  20. package/dist/esm/BomGeneration.js +137 -0
  21. package/dist/esm/ComponentMatchConditions.js +109 -0
  22. package/dist/esm/antlr/CircuitScriptLexer.js +247 -244
  23. package/dist/esm/antlr/CircuitScriptParser.js +1471 -824
  24. package/dist/esm/antlr/CircuitScriptVisitor.js +7 -0
  25. package/dist/esm/builtinMethods.js +6 -1
  26. package/dist/esm/execute.js +27 -16
  27. package/dist/esm/graph.js +11 -10
  28. package/dist/esm/helpers.js +23 -4
  29. package/dist/esm/layout.js +15 -13
  30. package/dist/esm/main.js +17 -1
  31. package/dist/esm/objects/ExecutionScope.js +3 -0
  32. package/dist/esm/objects/PinDefinition.js +11 -1
  33. package/dist/esm/objects/types.js +7 -5
  34. package/dist/esm/rules-check/no-connect-on-connected-pin.js +77 -0
  35. package/dist/esm/rules-check/rules.js +70 -0
  36. package/dist/esm/rules-check/unconnected-pins.js +48 -0
  37. package/dist/esm/visitor.js +121 -5
  38. package/dist/libs/std.cst +7 -3
  39. package/dist/types/BomGeneration.d.ts +13 -0
  40. package/dist/types/ComponentMatchConditions.d.ts +19 -0
  41. package/dist/types/antlr/CircuitScriptLexer.d.ts +60 -59
  42. package/dist/types/antlr/CircuitScriptParser.d.ts +146 -62
  43. package/dist/types/antlr/CircuitScriptVisitor.d.ts +14 -0
  44. package/dist/types/execute.d.ts +2 -1
  45. package/dist/types/graph.d.ts +6 -1
  46. package/dist/types/helpers.d.ts +3 -0
  47. package/dist/types/layout.d.ts +3 -2
  48. package/dist/types/objects/ExecutionScope.d.ts +8 -2
  49. package/dist/types/objects/ParamDefinition.d.ts +1 -1
  50. package/dist/types/objects/PinDefinition.d.ts +1 -0
  51. package/dist/types/objects/types.d.ts +4 -2
  52. package/dist/types/rules-check/no-connect-on-connected-pin.d.ts +3 -0
  53. package/dist/types/rules-check/rules.d.ts +15 -0
  54. package/dist/types/rules-check/unconnected-pins.d.ts +2 -0
  55. package/dist/types/visitor.d.ts +10 -1
  56. package/libs/std.cst +7 -3
  57. package/package.json +2 -1
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Function_exprContext = exports.Function_def_exprContext = exports.Value_exprContext = exports.Unary_operatorContext = exports.Binary_operatorContext = exports.RoundedBracketsExprContext = exports.BinaryOperatorExprContext = exports.ValueAtomExprContext = exports.UnaryOperatorExprContext = exports.DataExprContext = exports.LogicalOperatorExprContext = exports.MultiplyExprContext = exports.AdditionExprContext = exports.FunctionCallExprContext = exports.ArrayIndexExprContext = exports.ArrayExprContext = exports.Data_exprContext = exports.Double_dot_property_set_exprContext = exports.Property_set_exprContext = exports.ParametersContext = exports.Keyword_assignment_exprContext = exports.Operator_assignment_exprContext = exports.Assignment_exprContext = exports.At_block_pin_expression_complexContext = exports.At_block_pin_expression_simpleContext = exports.At_block_pin_exprContext = exports.At_block_headerContext = exports.At_block_expressionsContext = exports.At_blockContext = exports.At_to_multiple_line_expr_to_pinContext = exports.At_to_multiple_line_exprContext = exports.At_to_multiple_exprContext = exports.To_component_exprContext = exports.At_component_exprContext = exports.Pin_select_expr2Context = exports.Component_select_exprContext = exports.Add_component_exprContext = exports.Data_expr_with_assignmentContext = exports.Component_modifier_exprContext = exports.Pin_select_exprContext = exports.Assignment_expr2Context = exports.Property_set_expr2Context = exports.Path_blockContext = exports.Expressions_blockContext = exports.Graph_linear_expressionContext = exports.Graph_expressionsContext = exports.Flow_expressionsContext = exports.ExpressionContext = exports.ScriptContext = exports.CircuitScriptParser = void 0;
27
- exports.Annotation_comment_exprContext = exports.For_exprContext = exports.While_exprContext = exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Array_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.GraphicForExprContext = exports.GraphicCommandExprContext = exports.Graphic_exprContext = exports.Nested_properties_innerContext = exports.Create_module_exprContext = exports.Create_graphic_exprContext = exports.Graphic_expressions_blockContext = exports.Create_component_exprContext = exports.Property_block_exprContext = exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_expr2Context = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = void 0;
27
+ exports.Annotation_comment_exprContext = exports.Part_value_exprContext = exports.Part_condition_key_only_exprContext = exports.Part_condition_exprContext = exports.Part_sub_exprContext = exports.Part_match_blockContext = exports.Part_set_keyContext = exports.Part_set_exprContext = exports.For_exprContext = exports.While_exprContext = exports.Else_exprContext = exports.If_inner_exprContext = exports.If_exprContext = exports.Frame_exprContext = exports.Import_exprContext = exports.Point_exprContext = exports.Array_exprContext = exports.Wire_exprContext = exports.Wire_expr_direction_onlyContext = exports.Wire_expr_direction_valueContext = exports.Wire_atom_exprContext = exports.Nested_propertiesContext = exports.Single_line_propertyContext = exports.Property_value_exprContext = exports.Property_key_exprContext = exports.Property_exprContext = exports.GraphicForExprContext = exports.GraphicCommandExprContext = exports.Graphic_exprContext = exports.Nested_properties_innerContext = exports.Create_module_exprContext = exports.Create_graphic_exprContext = exports.Graphic_expressions_blockContext = exports.Create_component_exprContext = exports.Property_block_exprContext = exports.Function_return_exprContext = exports.Net_namespace_exprContext = exports.Function_call_exprContext = exports.Trailer_expr2Context = exports.Trailer_exprContext = exports.Atom_exprContext = exports.Function_args_exprContext = void 0;
28
28
  const antlr = __importStar(require("antlr4ng"));
29
29
  class CircuitScriptParser extends antlr.Parser {
30
30
  get grammarFileName() { return "CircuitScript.g4"; }
@@ -47,24 +47,24 @@ class CircuitScriptParser extends antlr.Parser {
47
47
  let alternative;
48
48
  this.enterOuterAlt(localContext, 1);
49
49
  {
50
- this.state = 138;
50
+ this.state = 152;
51
51
  this.errorHandler.sync(this);
52
52
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
53
53
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
54
54
  if (alternative === 1) {
55
55
  {
56
- this.state = 136;
56
+ this.state = 150;
57
57
  this.errorHandler.sync(this);
58
58
  switch (this.tokenStream.LA(1)) {
59
59
  case CircuitScriptParser.Import:
60
60
  {
61
- this.state = 134;
61
+ this.state = 148;
62
62
  this.import_expr();
63
63
  }
64
64
  break;
65
65
  case CircuitScriptParser.NEWLINE:
66
66
  {
67
- this.state = 135;
67
+ this.state = 149;
68
68
  this.match(CircuitScriptParser.NEWLINE);
69
69
  }
70
70
  break;
@@ -73,19 +73,20 @@ class CircuitScriptParser extends antlr.Parser {
73
73
  }
74
74
  }
75
75
  }
76
- this.state = 140;
76
+ this.state = 154;
77
77
  this.errorHandler.sync(this);
78
78
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
79
79
  }
80
- this.state = 143;
80
+ this.state = 157;
81
81
  this.errorHandler.sync(this);
82
82
  _la = this.tokenStream.LA(1);
83
83
  do {
84
84
  {
85
- this.state = 143;
85
+ this.state = 157;
86
86
  this.errorHandler.sync(this);
87
87
  switch (this.tokenStream.LA(1)) {
88
88
  case CircuitScriptParser.T__3:
89
+ case CircuitScriptParser.T__7:
89
90
  case CircuitScriptParser.Break:
90
91
  case CircuitScriptParser.Branch:
91
92
  case CircuitScriptParser.Wire:
@@ -108,13 +109,13 @@ class CircuitScriptParser extends antlr.Parser {
108
109
  case CircuitScriptParser.ANNOTATION_START:
109
110
  case CircuitScriptParser.ID:
110
111
  {
111
- this.state = 141;
112
+ this.state = 155;
112
113
  this.expression();
113
114
  }
114
115
  break;
115
116
  case CircuitScriptParser.NEWLINE:
116
117
  {
117
- this.state = 142;
118
+ this.state = 156;
118
119
  this.match(CircuitScriptParser.NEWLINE);
119
120
  }
120
121
  break;
@@ -122,11 +123,11 @@ class CircuitScriptParser extends antlr.Parser {
122
123
  throw new antlr.NoViableAltException(this);
123
124
  }
124
125
  }
125
- this.state = 145;
126
+ this.state = 159;
126
127
  this.errorHandler.sync(this);
127
128
  _la = this.tokenStream.LA(1);
128
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
129
- this.state = 147;
129
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
130
+ this.state = 161;
130
131
  this.match(CircuitScriptParser.EOF);
131
132
  }
132
133
  }
@@ -148,100 +149,107 @@ class CircuitScriptParser extends antlr.Parser {
148
149
  let localContext = new ExpressionContext(this.context, this.state);
149
150
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
150
151
  try {
151
- this.state = 162;
152
+ this.state = 177;
152
153
  this.errorHandler.sync(this);
153
154
  switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context)) {
154
155
  case 1:
155
156
  this.enterOuterAlt(localContext, 1);
156
157
  {
157
- this.state = 149;
158
+ this.state = 163;
158
159
  this.graph_expressions();
159
160
  }
160
161
  break;
161
162
  case 2:
162
163
  this.enterOuterAlt(localContext, 2);
163
164
  {
164
- this.state = 150;
165
+ this.state = 164;
165
166
  this.assignment_expr();
166
167
  }
167
168
  break;
168
169
  case 3:
169
170
  this.enterOuterAlt(localContext, 3);
170
171
  {
171
- this.state = 151;
172
+ this.state = 165;
172
173
  this.operator_assignment_expr();
173
174
  }
174
175
  break;
175
176
  case 4:
176
177
  this.enterOuterAlt(localContext, 4);
177
178
  {
178
- this.state = 152;
179
+ this.state = 166;
179
180
  this.property_set_expr();
180
181
  }
181
182
  break;
182
183
  case 5:
183
184
  this.enterOuterAlt(localContext, 5);
184
185
  {
185
- this.state = 153;
186
+ this.state = 167;
186
187
  this.property_set_expr2();
187
188
  }
188
189
  break;
189
190
  case 6:
190
191
  this.enterOuterAlt(localContext, 6);
191
192
  {
192
- this.state = 154;
193
+ this.state = 168;
193
194
  this.double_dot_property_set_expr();
194
195
  }
195
196
  break;
196
197
  case 7:
197
198
  this.enterOuterAlt(localContext, 7);
198
199
  {
199
- this.state = 155;
200
+ this.state = 169;
200
201
  this.function_def_expr();
201
202
  }
202
203
  break;
203
204
  case 8:
204
205
  this.enterOuterAlt(localContext, 8);
205
206
  {
206
- this.state = 156;
207
+ this.state = 170;
207
208
  this.function_call_expr();
208
209
  }
209
210
  break;
210
211
  case 9:
211
212
  this.enterOuterAlt(localContext, 9);
212
213
  {
213
- this.state = 157;
214
+ this.state = 171;
214
215
  this.import_expr();
215
216
  }
216
217
  break;
217
218
  case 10:
218
219
  this.enterOuterAlt(localContext, 10);
219
220
  {
220
- this.state = 158;
221
+ this.state = 172;
221
222
  this.atom_expr();
222
223
  }
223
224
  break;
224
225
  case 11:
225
226
  this.enterOuterAlt(localContext, 11);
226
227
  {
227
- this.state = 159;
228
+ this.state = 173;
228
229
  this.frame_expr();
229
230
  }
230
231
  break;
231
232
  case 12:
232
233
  this.enterOuterAlt(localContext, 12);
233
234
  {
234
- this.state = 160;
235
+ this.state = 174;
235
236
  this.flow_expressions();
236
237
  }
237
238
  break;
238
239
  case 13:
239
240
  this.enterOuterAlt(localContext, 13);
240
241
  {
241
- this.state = 161;
242
+ this.state = 175;
242
243
  this.annotation_comment_expr();
243
244
  }
244
245
  break;
246
+ case 14:
247
+ this.enterOuterAlt(localContext, 14);
248
+ {
249
+ this.state = 176;
250
+ this.part_set_expr();
251
+ }
252
+ break;
245
253
  }
246
254
  }
247
255
  catch (re) {
@@ -262,41 +270,41 @@ class CircuitScriptParser extends antlr.Parser {
262
270
  let localContext = new Flow_expressionsContext(this.context, this.state);
263
271
  this.enterRule(localContext, 4, CircuitScriptParser.RULE_flow_expressions);
264
272
  try {
265
- this.state = 169;
273
+ this.state = 184;
266
274
  this.errorHandler.sync(this);
267
275
  switch (this.tokenStream.LA(1)) {
268
276
  case CircuitScriptParser.If:
269
277
  this.enterOuterAlt(localContext, 1);
270
278
  {
271
- this.state = 164;
279
+ this.state = 179;
272
280
  this.if_expr();
273
281
  }
274
282
  break;
275
283
  case CircuitScriptParser.While:
276
284
  this.enterOuterAlt(localContext, 2);
277
285
  {
278
- this.state = 165;
286
+ this.state = 180;
279
287
  this.while_expr();
280
288
  }
281
289
  break;
282
290
  case CircuitScriptParser.For:
283
291
  this.enterOuterAlt(localContext, 3);
284
292
  {
285
- this.state = 166;
293
+ this.state = 181;
286
294
  this.for_expr();
287
295
  }
288
296
  break;
289
297
  case CircuitScriptParser.Break:
290
298
  this.enterOuterAlt(localContext, 4);
291
299
  {
292
- this.state = 167;
300
+ this.state = 182;
293
301
  this.match(CircuitScriptParser.Break);
294
302
  }
295
303
  break;
296
304
  case CircuitScriptParser.Continue:
297
305
  this.enterOuterAlt(localContext, 5);
298
306
  {
299
- this.state = 168;
307
+ this.state = 183;
300
308
  this.match(CircuitScriptParser.Continue);
301
309
  }
302
310
  break;
@@ -322,20 +330,20 @@ class CircuitScriptParser extends antlr.Parser {
322
330
  let localContext = new Graph_expressionsContext(this.context, this.state);
323
331
  this.enterRule(localContext, 6, CircuitScriptParser.RULE_graph_expressions);
324
332
  try {
325
- this.state = 173;
333
+ this.state = 188;
326
334
  this.errorHandler.sync(this);
327
335
  switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context)) {
328
336
  case 1:
329
337
  this.enterOuterAlt(localContext, 1);
330
338
  {
331
- this.state = 171;
339
+ this.state = 186;
332
340
  this.graph_linear_expression();
333
341
  }
334
342
  break;
335
343
  case 2:
336
344
  this.enterOuterAlt(localContext, 2);
337
345
  {
338
- this.state = 172;
346
+ this.state = 187;
339
347
  this.path_block();
340
348
  }
341
349
  break;
@@ -359,48 +367,48 @@ class CircuitScriptParser extends antlr.Parser {
359
367
  let localContext = new Graph_linear_expressionContext(this.context, this.state);
360
368
  this.enterRule(localContext, 8, CircuitScriptParser.RULE_graph_linear_expression);
361
369
  try {
362
- this.state = 181;
370
+ this.state = 196;
363
371
  this.errorHandler.sync(this);
364
372
  switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context)) {
365
373
  case 1:
366
374
  this.enterOuterAlt(localContext, 1);
367
375
  {
368
- this.state = 175;
376
+ this.state = 190;
369
377
  this.add_component_expr();
370
378
  }
371
379
  break;
372
380
  case 2:
373
381
  this.enterOuterAlt(localContext, 2);
374
382
  {
375
- this.state = 176;
383
+ this.state = 191;
376
384
  this.to_component_expr();
377
385
  }
378
386
  break;
379
387
  case 3:
380
388
  this.enterOuterAlt(localContext, 3);
381
389
  {
382
- this.state = 177;
390
+ this.state = 192;
383
391
  this.at_component_expr();
384
392
  }
385
393
  break;
386
394
  case 4:
387
395
  this.enterOuterAlt(localContext, 4);
388
396
  {
389
- this.state = 178;
397
+ this.state = 193;
390
398
  this.at_block();
391
399
  }
392
400
  break;
393
401
  case 5:
394
402
  this.enterOuterAlt(localContext, 5);
395
403
  {
396
- this.state = 179;
404
+ this.state = 194;
397
405
  this.wire_expr();
398
406
  }
399
407
  break;
400
408
  case 6:
401
409
  this.enterOuterAlt(localContext, 6);
402
410
  {
403
- this.state = 180;
411
+ this.state = 195;
404
412
  this.point_expr();
405
413
  }
406
414
  break;
@@ -427,25 +435,26 @@ class CircuitScriptParser extends antlr.Parser {
427
435
  try {
428
436
  this.enterOuterAlt(localContext, 1);
429
437
  {
430
- this.state = 183;
438
+ this.state = 198;
431
439
  this.match(CircuitScriptParser.NEWLINE);
432
- this.state = 184;
440
+ this.state = 199;
433
441
  this.match(CircuitScriptParser.INDENT);
434
- this.state = 187;
442
+ this.state = 202;
435
443
  this.errorHandler.sync(this);
436
444
  _la = this.tokenStream.LA(1);
437
445
  do {
438
446
  {
439
- this.state = 187;
447
+ this.state = 202;
440
448
  this.errorHandler.sync(this);
441
449
  switch (this.tokenStream.LA(1)) {
442
450
  case CircuitScriptParser.NEWLINE:
443
451
  {
444
- this.state = 185;
452
+ this.state = 200;
445
453
  this.match(CircuitScriptParser.NEWLINE);
446
454
  }
447
455
  break;
448
456
  case CircuitScriptParser.T__3:
457
+ case CircuitScriptParser.T__7:
449
458
  case CircuitScriptParser.Break:
450
459
  case CircuitScriptParser.Branch:
451
460
  case CircuitScriptParser.Wire:
@@ -468,7 +477,7 @@ class CircuitScriptParser extends antlr.Parser {
468
477
  case CircuitScriptParser.ANNOTATION_START:
469
478
  case CircuitScriptParser.ID:
470
479
  {
471
- this.state = 186;
480
+ this.state = 201;
472
481
  this.expression();
473
482
  }
474
483
  break;
@@ -476,11 +485,11 @@ class CircuitScriptParser extends antlr.Parser {
476
485
  throw new antlr.NoViableAltException(this);
477
486
  }
478
487
  }
479
- this.state = 189;
488
+ this.state = 204;
480
489
  this.errorHandler.sync(this);
481
490
  _la = this.tokenStream.LA(1);
482
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
483
- this.state = 191;
491
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
492
+ this.state = 206;
484
493
  this.match(CircuitScriptParser.DEDENT);
485
494
  }
486
495
  }
@@ -505,18 +514,18 @@ class CircuitScriptParser extends antlr.Parser {
505
514
  try {
506
515
  this.enterOuterAlt(localContext, 1);
507
516
  {
508
- this.state = 193;
517
+ this.state = 208;
509
518
  _la = this.tokenStream.LA(1);
510
- if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3670528) !== 0))) {
519
+ if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 7341056) !== 0))) {
511
520
  this.errorHandler.recoverInline(this);
512
521
  }
513
522
  else {
514
523
  this.errorHandler.reportMatch(this);
515
524
  this.consume();
516
525
  }
517
- this.state = 194;
526
+ this.state = 209;
518
527
  this.match(CircuitScriptParser.T__0);
519
- this.state = 195;
528
+ this.state = 210;
520
529
  this.expressions_block();
521
530
  }
522
531
  }
@@ -541,32 +550,32 @@ class CircuitScriptParser extends antlr.Parser {
541
550
  try {
542
551
  this.enterOuterAlt(localContext, 1);
543
552
  {
544
- this.state = 197;
553
+ this.state = 212;
545
554
  this.atom_expr();
546
- this.state = 198;
555
+ this.state = 213;
547
556
  this.match(CircuitScriptParser.T__0);
548
- this.state = 199;
557
+ this.state = 214;
549
558
  this.match(CircuitScriptParser.NEWLINE);
550
- this.state = 200;
559
+ this.state = 215;
551
560
  this.match(CircuitScriptParser.INDENT);
552
- this.state = 203;
561
+ this.state = 218;
553
562
  this.errorHandler.sync(this);
554
563
  _la = this.tokenStream.LA(1);
555
564
  do {
556
565
  {
557
- this.state = 203;
566
+ this.state = 218;
558
567
  this.errorHandler.sync(this);
559
568
  switch (this.tokenStream.LA(1)) {
560
569
  case CircuitScriptParser.NEWLINE:
561
570
  {
562
- this.state = 201;
571
+ this.state = 216;
563
572
  this.match(CircuitScriptParser.NEWLINE);
564
573
  }
565
574
  break;
566
575
  case CircuitScriptParser.ID:
567
576
  case CircuitScriptParser.INTEGER_VALUE:
568
577
  {
569
- this.state = 202;
578
+ this.state = 217;
570
579
  this.assignment_expr2();
571
580
  }
572
581
  break;
@@ -574,11 +583,11 @@ class CircuitScriptParser extends antlr.Parser {
574
583
  throw new antlr.NoViableAltException(this);
575
584
  }
576
585
  }
577
- this.state = 205;
586
+ this.state = 220;
578
587
  this.errorHandler.sync(this);
579
588
  _la = this.tokenStream.LA(1);
580
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 259) !== 0));
581
- this.state = 207;
589
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 259) !== 0));
590
+ this.state = 222;
582
591
  this.match(CircuitScriptParser.DEDENT);
583
592
  }
584
593
  }
@@ -603,18 +612,18 @@ class CircuitScriptParser extends antlr.Parser {
603
612
  try {
604
613
  this.enterOuterAlt(localContext, 1);
605
614
  {
606
- this.state = 209;
615
+ this.state = 224;
607
616
  _la = this.tokenStream.LA(1);
608
- if (!(_la === 57 || _la === 58)) {
617
+ if (!(_la === 58 || _la === 59)) {
609
618
  this.errorHandler.recoverInline(this);
610
619
  }
611
620
  else {
612
621
  this.errorHandler.reportMatch(this);
613
622
  this.consume();
614
623
  }
615
- this.state = 210;
624
+ this.state = 225;
616
625
  this.match(CircuitScriptParser.T__0);
617
- this.state = 211;
626
+ this.state = 226;
618
627
  this.value_expr();
619
628
  }
620
629
  }
@@ -638,9 +647,9 @@ class CircuitScriptParser extends antlr.Parser {
638
647
  try {
639
648
  this.enterOuterAlt(localContext, 1);
640
649
  {
641
- this.state = 213;
650
+ this.state = 228;
642
651
  this.match(CircuitScriptParser.Pin);
643
- this.state = 214;
652
+ this.state = 229;
644
653
  this.data_expr(0);
645
654
  }
646
655
  }
@@ -664,11 +673,11 @@ class CircuitScriptParser extends antlr.Parser {
664
673
  try {
665
674
  this.enterOuterAlt(localContext, 1);
666
675
  {
667
- this.state = 216;
676
+ this.state = 231;
668
677
  this.match(CircuitScriptParser.ID);
669
- this.state = 217;
678
+ this.state = 232;
670
679
  this.match(CircuitScriptParser.T__0);
671
- this.state = 220;
680
+ this.state = 235;
672
681
  this.errorHandler.sync(this);
673
682
  switch (this.tokenStream.LA(1)) {
674
683
  case CircuitScriptParser.Minus:
@@ -679,13 +688,13 @@ class CircuitScriptParser extends antlr.Parser {
679
688
  case CircuitScriptParser.STRING_VALUE:
680
689
  case CircuitScriptParser.PERCENTAGE_VALUE:
681
690
  {
682
- this.state = 218;
691
+ this.state = 233;
683
692
  this.value_expr();
684
693
  }
685
694
  break;
686
695
  case CircuitScriptParser.ID:
687
696
  {
688
- this.state = 219;
697
+ this.state = 234;
689
698
  this.match(CircuitScriptParser.ID);
690
699
  }
691
700
  break;
@@ -716,44 +725,44 @@ class CircuitScriptParser extends antlr.Parser {
716
725
  let alternative;
717
726
  this.enterOuterAlt(localContext, 1);
718
727
  {
719
- this.state = 224;
728
+ this.state = 239;
720
729
  this.errorHandler.sync(this);
721
730
  switch (this.interpreter.adaptivePredict(this.tokenStream, 13, this.context)) {
722
731
  case 1:
723
732
  {
724
- this.state = 222;
733
+ this.state = 237;
725
734
  this.data_expr(0);
726
735
  }
727
736
  break;
728
737
  case 2:
729
738
  {
730
- this.state = 223;
739
+ this.state = 238;
731
740
  this.assignment_expr();
732
741
  }
733
742
  break;
734
743
  }
735
- this.state = 229;
744
+ this.state = 244;
736
745
  this.errorHandler.sync(this);
737
746
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
738
747
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
739
748
  if (alternative === 1) {
740
749
  {
741
750
  {
742
- this.state = 226;
751
+ this.state = 241;
743
752
  this.component_modifier_expr();
744
753
  }
745
754
  }
746
755
  }
747
- this.state = 231;
756
+ this.state = 246;
748
757
  this.errorHandler.sync(this);
749
758
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
750
759
  }
751
- this.state = 233;
760
+ this.state = 248;
752
761
  this.errorHandler.sync(this);
753
762
  _la = this.tokenStream.LA(1);
754
- if (_la === 15) {
763
+ if (_la === 16) {
755
764
  {
756
- this.state = 232;
765
+ this.state = 247;
757
766
  this.pin_select_expr();
758
767
  }
759
768
  }
@@ -779,9 +788,9 @@ class CircuitScriptParser extends antlr.Parser {
779
788
  try {
780
789
  this.enterOuterAlt(localContext, 1);
781
790
  {
782
- this.state = 235;
791
+ this.state = 250;
783
792
  this.match(CircuitScriptParser.Add);
784
- this.state = 236;
793
+ this.state = 251;
785
794
  this.data_expr_with_assignment();
786
795
  }
787
796
  }
@@ -803,7 +812,7 @@ class CircuitScriptParser extends antlr.Parser {
803
812
  let localContext = new Component_select_exprContext(this.context, this.state);
804
813
  this.enterRule(localContext, 26, CircuitScriptParser.RULE_component_select_expr);
805
814
  try {
806
- this.state = 241;
815
+ this.state = 256;
807
816
  this.errorHandler.sync(this);
808
817
  switch (this.tokenStream.LA(1)) {
809
818
  case CircuitScriptParser.T__4:
@@ -822,21 +831,21 @@ class CircuitScriptParser extends antlr.Parser {
822
831
  case CircuitScriptParser.PERCENTAGE_VALUE:
823
832
  this.enterOuterAlt(localContext, 1);
824
833
  {
825
- this.state = 238;
834
+ this.state = 253;
826
835
  this.data_expr_with_assignment();
827
836
  }
828
837
  break;
829
838
  case CircuitScriptParser.Pin:
830
839
  this.enterOuterAlt(localContext, 2);
831
840
  {
832
- this.state = 239;
841
+ this.state = 254;
833
842
  this.pin_select_expr();
834
843
  }
835
844
  break;
836
845
  case CircuitScriptParser.Point:
837
846
  this.enterOuterAlt(localContext, 3);
838
847
  {
839
- this.state = 240;
848
+ this.state = 255;
840
849
  this.match(CircuitScriptParser.Point);
841
850
  }
842
851
  break;
@@ -865,9 +874,9 @@ class CircuitScriptParser extends antlr.Parser {
865
874
  try {
866
875
  this.enterOuterAlt(localContext, 1);
867
876
  {
868
- this.state = 243;
877
+ this.state = 258;
869
878
  _la = this.tokenStream.LA(1);
870
- if (!(_la === 58 || _la === 61)) {
879
+ if (!(_la === 59 || _la === 62)) {
871
880
  this.errorHandler.recoverInline(this);
872
881
  }
873
882
  else {
@@ -896,9 +905,9 @@ class CircuitScriptParser extends antlr.Parser {
896
905
  try {
897
906
  this.enterOuterAlt(localContext, 1);
898
907
  {
899
- this.state = 245;
908
+ this.state = 260;
900
909
  this.match(CircuitScriptParser.At);
901
- this.state = 246;
910
+ this.state = 261;
902
911
  this.component_select_expr();
903
912
  }
904
913
  }
@@ -923,24 +932,24 @@ class CircuitScriptParser extends antlr.Parser {
923
932
  try {
924
933
  this.enterOuterAlt(localContext, 1);
925
934
  {
926
- this.state = 248;
935
+ this.state = 263;
927
936
  this.match(CircuitScriptParser.To);
928
937
  {
929
- this.state = 249;
938
+ this.state = 264;
930
939
  this.component_select_expr();
931
- this.state = 254;
940
+ this.state = 269;
932
941
  this.errorHandler.sync(this);
933
942
  _la = this.tokenStream.LA(1);
934
943
  while (_la === 2) {
935
944
  {
936
945
  {
937
- this.state = 250;
946
+ this.state = 265;
938
947
  this.match(CircuitScriptParser.T__1);
939
- this.state = 251;
948
+ this.state = 266;
940
949
  this.component_select_expr();
941
950
  }
942
951
  }
943
- this.state = 256;
952
+ this.state = 271;
944
953
  this.errorHandler.sync(this);
945
954
  _la = this.tokenStream.LA(1);
946
955
  }
@@ -968,54 +977,54 @@ class CircuitScriptParser extends antlr.Parser {
968
977
  try {
969
978
  this.enterOuterAlt(localContext, 1);
970
979
  {
971
- this.state = 257;
980
+ this.state = 272;
972
981
  this.match(CircuitScriptParser.At);
973
- this.state = 258;
982
+ this.state = 273;
974
983
  this.component_select_expr();
975
- this.state = 259;
984
+ this.state = 274;
976
985
  this.match(CircuitScriptParser.To);
977
- this.state = 260;
986
+ this.state = 275;
978
987
  this.component_select_expr();
979
- this.state = 265;
988
+ this.state = 280;
980
989
  this.errorHandler.sync(this);
981
990
  _la = this.tokenStream.LA(1);
982
991
  while (_la === 2) {
983
992
  {
984
993
  {
985
- this.state = 261;
994
+ this.state = 276;
986
995
  this.match(CircuitScriptParser.T__1);
987
- this.state = 262;
996
+ this.state = 277;
988
997
  this.component_select_expr();
989
998
  }
990
999
  }
991
- this.state = 267;
1000
+ this.state = 282;
992
1001
  this.errorHandler.sync(this);
993
1002
  _la = this.tokenStream.LA(1);
994
1003
  }
995
- this.state = 268;
1004
+ this.state = 283;
996
1005
  this.match(CircuitScriptParser.T__0);
997
- this.state = 269;
1006
+ this.state = 284;
998
1007
  this.match(CircuitScriptParser.NEWLINE);
999
- this.state = 270;
1008
+ this.state = 285;
1000
1009
  this.match(CircuitScriptParser.INDENT);
1001
- this.state = 273;
1010
+ this.state = 288;
1002
1011
  this.errorHandler.sync(this);
1003
1012
  _la = this.tokenStream.LA(1);
1004
1013
  do {
1005
1014
  {
1006
- this.state = 273;
1015
+ this.state = 288;
1007
1016
  this.errorHandler.sync(this);
1008
1017
  switch (this.tokenStream.LA(1)) {
1009
1018
  case CircuitScriptParser.NEWLINE:
1010
1019
  {
1011
- this.state = 271;
1020
+ this.state = 286;
1012
1021
  this.match(CircuitScriptParser.NEWLINE);
1013
1022
  }
1014
1023
  break;
1015
1024
  case CircuitScriptParser.INTEGER_VALUE:
1016
1025
  case CircuitScriptParser.STRING_VALUE:
1017
1026
  {
1018
- this.state = 272;
1027
+ this.state = 287;
1019
1028
  this.at_to_multiple_line_expr();
1020
1029
  }
1021
1030
  break;
@@ -1023,11 +1032,11 @@ class CircuitScriptParser extends antlr.Parser {
1023
1032
  throw new antlr.NoViableAltException(this);
1024
1033
  }
1025
1034
  }
1026
- this.state = 275;
1035
+ this.state = 290;
1027
1036
  this.errorHandler.sync(this);
1028
1037
  _la = this.tokenStream.LA(1);
1029
- } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 137) !== 0));
1030
- this.state = 277;
1038
+ } while (((((_la - 59)) & ~0x1F) === 0 && ((1 << (_la - 59)) & 137) !== 0));
1039
+ this.state = 292;
1031
1040
  this.match(CircuitScriptParser.DEDENT);
1032
1041
  }
1033
1042
  }
@@ -1052,25 +1061,25 @@ class CircuitScriptParser extends antlr.Parser {
1052
1061
  try {
1053
1062
  this.enterOuterAlt(localContext, 1);
1054
1063
  {
1055
- this.state = 279;
1064
+ this.state = 294;
1056
1065
  this.pin_select_expr2();
1057
- this.state = 280;
1066
+ this.state = 295;
1058
1067
  this.match(CircuitScriptParser.T__0);
1059
- this.state = 281;
1068
+ this.state = 296;
1060
1069
  this.at_to_multiple_line_expr_to_pin();
1061
- this.state = 286;
1070
+ this.state = 301;
1062
1071
  this.errorHandler.sync(this);
1063
1072
  _la = this.tokenStream.LA(1);
1064
1073
  while (_la === 2) {
1065
1074
  {
1066
1075
  {
1067
- this.state = 282;
1076
+ this.state = 297;
1068
1077
  this.match(CircuitScriptParser.T__1);
1069
- this.state = 283;
1078
+ this.state = 298;
1070
1079
  this.at_to_multiple_line_expr_to_pin();
1071
1080
  }
1072
1081
  }
1073
- this.state = 288;
1082
+ this.state = 303;
1074
1083
  this.errorHandler.sync(this);
1075
1084
  _la = this.tokenStream.LA(1);
1076
1085
  }
@@ -1097,9 +1106,9 @@ class CircuitScriptParser extends antlr.Parser {
1097
1106
  try {
1098
1107
  this.enterOuterAlt(localContext, 1);
1099
1108
  {
1100
- this.state = 289;
1109
+ this.state = 304;
1101
1110
  _la = this.tokenStream.LA(1);
1102
- if (!(_la === 55 || _la === 58)) {
1111
+ if (!(_la === 56 || _la === 59)) {
1103
1112
  this.errorHandler.recoverInline(this);
1104
1113
  }
1105
1114
  else {
@@ -1129,27 +1138,28 @@ class CircuitScriptParser extends antlr.Parser {
1129
1138
  try {
1130
1139
  this.enterOuterAlt(localContext, 1);
1131
1140
  {
1132
- this.state = 291;
1141
+ this.state = 306;
1133
1142
  this.at_block_header();
1134
- this.state = 292;
1143
+ this.state = 307;
1135
1144
  this.match(CircuitScriptParser.NEWLINE);
1136
- this.state = 293;
1145
+ this.state = 308;
1137
1146
  this.match(CircuitScriptParser.INDENT);
1138
- this.state = 296;
1147
+ this.state = 311;
1139
1148
  this.errorHandler.sync(this);
1140
1149
  _la = this.tokenStream.LA(1);
1141
1150
  do {
1142
1151
  {
1143
- this.state = 296;
1152
+ this.state = 311;
1144
1153
  this.errorHandler.sync(this);
1145
1154
  switch (this.tokenStream.LA(1)) {
1146
1155
  case CircuitScriptParser.NEWLINE:
1147
1156
  {
1148
- this.state = 294;
1157
+ this.state = 309;
1149
1158
  this.match(CircuitScriptParser.NEWLINE);
1150
1159
  }
1151
1160
  break;
1152
1161
  case CircuitScriptParser.T__3:
1162
+ case CircuitScriptParser.T__7:
1153
1163
  case CircuitScriptParser.Break:
1154
1164
  case CircuitScriptParser.Branch:
1155
1165
  case CircuitScriptParser.Wire:
@@ -1174,7 +1184,7 @@ class CircuitScriptParser extends antlr.Parser {
1174
1184
  case CircuitScriptParser.INTEGER_VALUE:
1175
1185
  case CircuitScriptParser.STRING_VALUE:
1176
1186
  {
1177
- this.state = 295;
1187
+ this.state = 310;
1178
1188
  this.at_block_expressions();
1179
1189
  }
1180
1190
  break;
@@ -1182,11 +1192,11 @@ class CircuitScriptParser extends antlr.Parser {
1182
1192
  throw new antlr.NoViableAltException(this);
1183
1193
  }
1184
1194
  }
1185
- this.state = 298;
1195
+ this.state = 313;
1186
1196
  this.errorHandler.sync(this);
1187
1197
  _la = this.tokenStream.LA(1);
1188
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 9012229) !== 0));
1189
- this.state = 300;
1198
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1735911537) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 9012229) !== 0));
1199
+ this.state = 315;
1190
1200
  this.match(CircuitScriptParser.DEDENT);
1191
1201
  }
1192
1202
  }
@@ -1208,10 +1218,11 @@ class CircuitScriptParser extends antlr.Parser {
1208
1218
  let localContext = new At_block_expressionsContext(this.context, this.state);
1209
1219
  this.enterRule(localContext, 42, CircuitScriptParser.RULE_at_block_expressions);
1210
1220
  try {
1211
- this.state = 304;
1221
+ this.state = 319;
1212
1222
  this.errorHandler.sync(this);
1213
1223
  switch (this.tokenStream.LA(1)) {
1214
1224
  case CircuitScriptParser.T__3:
1225
+ case CircuitScriptParser.T__7:
1215
1226
  case CircuitScriptParser.Break:
1216
1227
  case CircuitScriptParser.Branch:
1217
1228
  case CircuitScriptParser.Wire:
@@ -1235,7 +1246,7 @@ class CircuitScriptParser extends antlr.Parser {
1235
1246
  case CircuitScriptParser.ID:
1236
1247
  this.enterOuterAlt(localContext, 1);
1237
1248
  {
1238
- this.state = 302;
1249
+ this.state = 317;
1239
1250
  this.expression();
1240
1251
  }
1241
1252
  break;
@@ -1243,7 +1254,7 @@ class CircuitScriptParser extends antlr.Parser {
1243
1254
  case CircuitScriptParser.STRING_VALUE:
1244
1255
  this.enterOuterAlt(localContext, 2);
1245
1256
  {
1246
- this.state = 303;
1257
+ this.state = 318;
1247
1258
  this.at_block_pin_expr();
1248
1259
  }
1249
1260
  break;
@@ -1272,21 +1283,21 @@ class CircuitScriptParser extends antlr.Parser {
1272
1283
  try {
1273
1284
  this.enterOuterAlt(localContext, 1);
1274
1285
  {
1275
- this.state = 306;
1286
+ this.state = 321;
1276
1287
  this.at_component_expr();
1277
- this.state = 307;
1288
+ this.state = 322;
1278
1289
  this.match(CircuitScriptParser.T__0);
1279
- this.state = 311;
1290
+ this.state = 326;
1280
1291
  this.errorHandler.sync(this);
1281
1292
  _la = this.tokenStream.LA(1);
1282
- while (_la === 52) {
1293
+ while (_la === 53) {
1283
1294
  {
1284
1295
  {
1285
- this.state = 308;
1296
+ this.state = 323;
1286
1297
  this.annotation_comment_expr();
1287
1298
  }
1288
1299
  }
1289
- this.state = 313;
1300
+ this.state = 328;
1290
1301
  this.errorHandler.sync(this);
1291
1302
  _la = this.tokenStream.LA(1);
1292
1303
  }
@@ -1312,14 +1323,15 @@ class CircuitScriptParser extends antlr.Parser {
1312
1323
  try {
1313
1324
  this.enterOuterAlt(localContext, 1);
1314
1325
  {
1315
- this.state = 314;
1326
+ this.state = 329;
1316
1327
  this.pin_select_expr2();
1317
- this.state = 315;
1328
+ this.state = 330;
1318
1329
  this.match(CircuitScriptParser.T__0);
1319
- this.state = 318;
1330
+ this.state = 333;
1320
1331
  this.errorHandler.sync(this);
1321
1332
  switch (this.tokenStream.LA(1)) {
1322
1333
  case CircuitScriptParser.T__3:
1334
+ case CircuitScriptParser.T__7:
1323
1335
  case CircuitScriptParser.Break:
1324
1336
  case CircuitScriptParser.Branch:
1325
1337
  case CircuitScriptParser.Wire:
@@ -1343,13 +1355,13 @@ class CircuitScriptParser extends antlr.Parser {
1343
1355
  case CircuitScriptParser.NOT_CONNECTED:
1344
1356
  case CircuitScriptParser.ID:
1345
1357
  {
1346
- this.state = 316;
1358
+ this.state = 331;
1347
1359
  this.at_block_pin_expression_simple();
1348
1360
  }
1349
1361
  break;
1350
1362
  case CircuitScriptParser.NEWLINE:
1351
1363
  {
1352
- this.state = 317;
1364
+ this.state = 332;
1353
1365
  this.at_block_pin_expression_complex();
1354
1366
  }
1355
1367
  break;
@@ -1378,10 +1390,11 @@ class CircuitScriptParser extends antlr.Parser {
1378
1390
  try {
1379
1391
  this.enterOuterAlt(localContext, 1);
1380
1392
  {
1381
- this.state = 322;
1393
+ this.state = 337;
1382
1394
  this.errorHandler.sync(this);
1383
1395
  switch (this.tokenStream.LA(1)) {
1384
1396
  case CircuitScriptParser.T__3:
1397
+ case CircuitScriptParser.T__7:
1385
1398
  case CircuitScriptParser.Break:
1386
1399
  case CircuitScriptParser.Branch:
1387
1400
  case CircuitScriptParser.Wire:
@@ -1404,13 +1417,13 @@ class CircuitScriptParser extends antlr.Parser {
1404
1417
  case CircuitScriptParser.ANNOTATION_START:
1405
1418
  case CircuitScriptParser.ID:
1406
1419
  {
1407
- this.state = 320;
1420
+ this.state = 335;
1408
1421
  this.expression();
1409
1422
  }
1410
1423
  break;
1411
1424
  case CircuitScriptParser.NOT_CONNECTED:
1412
1425
  {
1413
- this.state = 321;
1426
+ this.state = 336;
1414
1427
  this.match(CircuitScriptParser.NOT_CONNECTED);
1415
1428
  }
1416
1429
  break;
@@ -1439,7 +1452,7 @@ class CircuitScriptParser extends antlr.Parser {
1439
1452
  try {
1440
1453
  this.enterOuterAlt(localContext, 1);
1441
1454
  {
1442
- this.state = 324;
1455
+ this.state = 339;
1443
1456
  this.expressions_block();
1444
1457
  }
1445
1458
  }
@@ -1463,25 +1476,25 @@ class CircuitScriptParser extends antlr.Parser {
1463
1476
  try {
1464
1477
  this.enterOuterAlt(localContext, 1);
1465
1478
  {
1466
- this.state = 328;
1479
+ this.state = 343;
1467
1480
  this.errorHandler.sync(this);
1468
1481
  switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context)) {
1469
1482
  case 1:
1470
1483
  {
1471
- this.state = 326;
1484
+ this.state = 341;
1472
1485
  this.atom_expr();
1473
1486
  }
1474
1487
  break;
1475
1488
  case 2:
1476
1489
  {
1477
- this.state = 327;
1490
+ this.state = 342;
1478
1491
  this.function_call_expr();
1479
1492
  }
1480
1493
  break;
1481
1494
  }
1482
- this.state = 330;
1495
+ this.state = 345;
1483
1496
  this.match(CircuitScriptParser.T__2);
1484
- this.state = 331;
1497
+ this.state = 346;
1485
1498
  this.data_expr(0);
1486
1499
  }
1487
1500
  }
@@ -1506,18 +1519,18 @@ class CircuitScriptParser extends antlr.Parser {
1506
1519
  try {
1507
1520
  this.enterOuterAlt(localContext, 1);
1508
1521
  {
1509
- this.state = 333;
1522
+ this.state = 348;
1510
1523
  this.atom_expr();
1511
- this.state = 334;
1524
+ this.state = 349;
1512
1525
  _la = this.tokenStream.LA(1);
1513
- if (!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 31) !== 0))) {
1526
+ if (!(((((_la - 48)) & ~0x1F) === 0 && ((1 << (_la - 48)) & 31) !== 0))) {
1514
1527
  this.errorHandler.recoverInline(this);
1515
1528
  }
1516
1529
  else {
1517
1530
  this.errorHandler.reportMatch(this);
1518
1531
  this.consume();
1519
1532
  }
1520
- this.state = 335;
1533
+ this.state = 350;
1521
1534
  this.data_expr(0);
1522
1535
  }
1523
1536
  }
@@ -1541,11 +1554,11 @@ class CircuitScriptParser extends antlr.Parser {
1541
1554
  try {
1542
1555
  this.enterOuterAlt(localContext, 1);
1543
1556
  {
1544
- this.state = 337;
1557
+ this.state = 352;
1545
1558
  this.match(CircuitScriptParser.ID);
1546
- this.state = 338;
1559
+ this.state = 353;
1547
1560
  this.match(CircuitScriptParser.T__2);
1548
- this.state = 339;
1561
+ this.state = 354;
1549
1562
  this.data_expr(0);
1550
1563
  }
1551
1564
  }
@@ -1569,46 +1582,46 @@ class CircuitScriptParser extends antlr.Parser {
1569
1582
  let _la;
1570
1583
  try {
1571
1584
  let alternative;
1572
- this.state = 364;
1585
+ this.state = 379;
1573
1586
  this.errorHandler.sync(this);
1574
1587
  switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1575
1588
  case 1:
1576
1589
  this.enterOuterAlt(localContext, 1);
1577
1590
  {
1578
1591
  {
1579
- this.state = 341;
1592
+ this.state = 356;
1580
1593
  this.data_expr(0);
1581
- this.state = 346;
1594
+ this.state = 361;
1582
1595
  this.errorHandler.sync(this);
1583
1596
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1584
1597
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1585
1598
  if (alternative === 1) {
1586
1599
  {
1587
1600
  {
1588
- this.state = 342;
1601
+ this.state = 357;
1589
1602
  this.match(CircuitScriptParser.T__1);
1590
- this.state = 343;
1603
+ this.state = 358;
1591
1604
  this.data_expr(0);
1592
1605
  }
1593
1606
  }
1594
1607
  }
1595
- this.state = 348;
1608
+ this.state = 363;
1596
1609
  this.errorHandler.sync(this);
1597
1610
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1598
1611
  }
1599
- this.state = 353;
1612
+ this.state = 368;
1600
1613
  this.errorHandler.sync(this);
1601
1614
  _la = this.tokenStream.LA(1);
1602
1615
  while (_la === 2) {
1603
1616
  {
1604
1617
  {
1605
- this.state = 349;
1618
+ this.state = 364;
1606
1619
  this.match(CircuitScriptParser.T__1);
1607
- this.state = 350;
1620
+ this.state = 365;
1608
1621
  this.keyword_assignment_expr();
1609
1622
  }
1610
1623
  }
1611
- this.state = 355;
1624
+ this.state = 370;
1612
1625
  this.errorHandler.sync(this);
1613
1626
  _la = this.tokenStream.LA(1);
1614
1627
  }
@@ -1619,21 +1632,21 @@ class CircuitScriptParser extends antlr.Parser {
1619
1632
  this.enterOuterAlt(localContext, 2);
1620
1633
  {
1621
1634
  {
1622
- this.state = 356;
1635
+ this.state = 371;
1623
1636
  this.keyword_assignment_expr();
1624
- this.state = 361;
1637
+ this.state = 376;
1625
1638
  this.errorHandler.sync(this);
1626
1639
  _la = this.tokenStream.LA(1);
1627
1640
  while (_la === 2) {
1628
1641
  {
1629
1642
  {
1630
- this.state = 357;
1643
+ this.state = 372;
1631
1644
  this.match(CircuitScriptParser.T__1);
1632
- this.state = 358;
1645
+ this.state = 373;
1633
1646
  this.keyword_assignment_expr();
1634
1647
  }
1635
1648
  }
1636
- this.state = 363;
1649
+ this.state = 378;
1637
1650
  this.errorHandler.sync(this);
1638
1651
  _la = this.tokenStream.LA(1);
1639
1652
  }
@@ -1662,11 +1675,11 @@ class CircuitScriptParser extends antlr.Parser {
1662
1675
  try {
1663
1676
  this.enterOuterAlt(localContext, 1);
1664
1677
  {
1665
- this.state = 366;
1678
+ this.state = 381;
1666
1679
  this.atom_expr();
1667
- this.state = 367;
1680
+ this.state = 382;
1668
1681
  this.match(CircuitScriptParser.T__2);
1669
- this.state = 368;
1682
+ this.state = 383;
1670
1683
  this.data_expr(0);
1671
1684
  }
1672
1685
  }
@@ -1690,13 +1703,13 @@ class CircuitScriptParser extends antlr.Parser {
1690
1703
  try {
1691
1704
  this.enterOuterAlt(localContext, 1);
1692
1705
  {
1693
- this.state = 370;
1706
+ this.state = 385;
1694
1707
  this.match(CircuitScriptParser.T__3);
1695
- this.state = 371;
1708
+ this.state = 386;
1696
1709
  this.match(CircuitScriptParser.ID);
1697
- this.state = 372;
1710
+ this.state = 387;
1698
1711
  this.match(CircuitScriptParser.T__2);
1699
- this.state = 373;
1712
+ this.state = 388;
1700
1713
  this.data_expr(0);
1701
1714
  }
1702
1715
  }
@@ -1729,7 +1742,7 @@ class CircuitScriptParser extends antlr.Parser {
1729
1742
  let alternative;
1730
1743
  this.enterOuterAlt(localContext, 1);
1731
1744
  {
1732
- this.state = 392;
1745
+ this.state = 407;
1733
1746
  this.errorHandler.sync(this);
1734
1747
  switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context)) {
1735
1748
  case 1:
@@ -1737,11 +1750,11 @@ class CircuitScriptParser extends antlr.Parser {
1737
1750
  localContext = new RoundedBracketsExprContext(localContext);
1738
1751
  this.context = localContext;
1739
1752
  previousContext = localContext;
1740
- this.state = 376;
1753
+ this.state = 391;
1741
1754
  this.match(CircuitScriptParser.OPEN_PAREN);
1742
- this.state = 377;
1755
+ this.state = 392;
1743
1756
  this.data_expr(0);
1744
- this.state = 378;
1757
+ this.state = 393;
1745
1758
  this.match(CircuitScriptParser.CLOSE_PAREN);
1746
1759
  }
1747
1760
  break;
@@ -1750,7 +1763,7 @@ class CircuitScriptParser extends antlr.Parser {
1750
1763
  localContext = new ValueAtomExprContext(localContext);
1751
1764
  this.context = localContext;
1752
1765
  previousContext = localContext;
1753
- this.state = 382;
1766
+ this.state = 397;
1754
1767
  this.errorHandler.sync(this);
1755
1768
  switch (this.tokenStream.LA(1)) {
1756
1769
  case CircuitScriptParser.Minus:
@@ -1761,13 +1774,13 @@ class CircuitScriptParser extends antlr.Parser {
1761
1774
  case CircuitScriptParser.STRING_VALUE:
1762
1775
  case CircuitScriptParser.PERCENTAGE_VALUE:
1763
1776
  {
1764
- this.state = 380;
1777
+ this.state = 395;
1765
1778
  this.value_expr();
1766
1779
  }
1767
1780
  break;
1768
1781
  case CircuitScriptParser.ID:
1769
1782
  {
1770
- this.state = 381;
1783
+ this.state = 396;
1771
1784
  this.atom_expr();
1772
1785
  }
1773
1786
  break;
@@ -1781,9 +1794,9 @@ class CircuitScriptParser extends antlr.Parser {
1781
1794
  localContext = new UnaryOperatorExprContext(localContext);
1782
1795
  this.context = localContext;
1783
1796
  previousContext = localContext;
1784
- this.state = 384;
1797
+ this.state = 399;
1785
1798
  this.unary_operator();
1786
- this.state = 385;
1799
+ this.state = 400;
1787
1800
  this.data_expr(11);
1788
1801
  }
1789
1802
  break;
@@ -1792,7 +1805,7 @@ class CircuitScriptParser extends antlr.Parser {
1792
1805
  localContext = new DataExprContext(localContext);
1793
1806
  this.context = localContext;
1794
1807
  previousContext = localContext;
1795
- this.state = 387;
1808
+ this.state = 402;
1796
1809
  this.create_component_expr();
1797
1810
  }
1798
1811
  break;
@@ -1801,7 +1814,7 @@ class CircuitScriptParser extends antlr.Parser {
1801
1814
  localContext = new DataExprContext(localContext);
1802
1815
  this.context = localContext;
1803
1816
  previousContext = localContext;
1804
- this.state = 388;
1817
+ this.state = 403;
1805
1818
  this.create_graphic_expr();
1806
1819
  }
1807
1820
  break;
@@ -1810,7 +1823,7 @@ class CircuitScriptParser extends antlr.Parser {
1810
1823
  localContext = new DataExprContext(localContext);
1811
1824
  this.context = localContext;
1812
1825
  previousContext = localContext;
1813
- this.state = 389;
1826
+ this.state = 404;
1814
1827
  this.create_module_expr();
1815
1828
  }
1816
1829
  break;
@@ -1819,7 +1832,7 @@ class CircuitScriptParser extends antlr.Parser {
1819
1832
  localContext = new FunctionCallExprContext(localContext);
1820
1833
  this.context = localContext;
1821
1834
  previousContext = localContext;
1822
- this.state = 390;
1835
+ this.state = 405;
1823
1836
  this.function_call_expr();
1824
1837
  }
1825
1838
  break;
@@ -1828,13 +1841,13 @@ class CircuitScriptParser extends antlr.Parser {
1828
1841
  localContext = new ArrayExprContext(localContext);
1829
1842
  this.context = localContext;
1830
1843
  previousContext = localContext;
1831
- this.state = 391;
1844
+ this.state = 406;
1832
1845
  this.array_expr();
1833
1846
  }
1834
1847
  break;
1835
1848
  }
1836
1849
  this.context.stop = this.tokenStream.LT(-1);
1837
- this.state = 414;
1850
+ this.state = 429;
1838
1851
  this.errorHandler.sync(this);
1839
1852
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
1840
1853
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
@@ -1844,27 +1857,27 @@ class CircuitScriptParser extends antlr.Parser {
1844
1857
  }
1845
1858
  previousContext = localContext;
1846
1859
  {
1847
- this.state = 412;
1860
+ this.state = 427;
1848
1861
  this.errorHandler.sync(this);
1849
1862
  switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context)) {
1850
1863
  case 1:
1851
1864
  {
1852
1865
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1853
1866
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1854
- this.state = 394;
1867
+ this.state = 409;
1855
1868
  if (!(this.precpred(this.context, 10))) {
1856
1869
  throw this.createFailedPredicateException("this.precpred(this.context, 10)");
1857
1870
  }
1858
- this.state = 395;
1871
+ this.state = 410;
1859
1872
  _la = this.tokenStream.LA(1);
1860
- if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7) !== 0))) {
1873
+ if (!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 7) !== 0))) {
1861
1874
  this.errorHandler.recoverInline(this);
1862
1875
  }
1863
1876
  else {
1864
1877
  this.errorHandler.reportMatch(this);
1865
1878
  this.consume();
1866
1879
  }
1867
- this.state = 396;
1880
+ this.state = 411;
1868
1881
  this.data_expr(11);
1869
1882
  }
1870
1883
  break;
@@ -1872,20 +1885,20 @@ class CircuitScriptParser extends antlr.Parser {
1872
1885
  {
1873
1886
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1874
1887
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1875
- this.state = 397;
1888
+ this.state = 412;
1876
1889
  if (!(this.precpred(this.context, 9))) {
1877
1890
  throw this.createFailedPredicateException("this.precpred(this.context, 9)");
1878
1891
  }
1879
- this.state = 398;
1892
+ this.state = 413;
1880
1893
  _la = this.tokenStream.LA(1);
1881
- if (!(_la === 42 || _la === 43)) {
1894
+ if (!(_la === 43 || _la === 44)) {
1882
1895
  this.errorHandler.recoverInline(this);
1883
1896
  }
1884
1897
  else {
1885
1898
  this.errorHandler.reportMatch(this);
1886
1899
  this.consume();
1887
1900
  }
1888
- this.state = 399;
1901
+ this.state = 414;
1889
1902
  this.data_expr(10);
1890
1903
  }
1891
1904
  break;
@@ -1893,13 +1906,13 @@ class CircuitScriptParser extends antlr.Parser {
1893
1906
  {
1894
1907
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1895
1908
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1896
- this.state = 400;
1909
+ this.state = 415;
1897
1910
  if (!(this.precpred(this.context, 8))) {
1898
1911
  throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1899
1912
  }
1900
- this.state = 401;
1913
+ this.state = 416;
1901
1914
  this.binary_operator();
1902
- this.state = 402;
1915
+ this.state = 417;
1903
1916
  this.data_expr(9);
1904
1917
  }
1905
1918
  break;
@@ -1907,20 +1920,20 @@ class CircuitScriptParser extends antlr.Parser {
1907
1920
  {
1908
1921
  localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
1909
1922
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1910
- this.state = 404;
1923
+ this.state = 419;
1911
1924
  if (!(this.precpred(this.context, 7))) {
1912
1925
  throw this.createFailedPredicateException("this.precpred(this.context, 7)");
1913
1926
  }
1914
- this.state = 405;
1927
+ this.state = 420;
1915
1928
  _la = this.tokenStream.LA(1);
1916
- if (!(_la === 40 || _la === 41)) {
1929
+ if (!(_la === 41 || _la === 42)) {
1917
1930
  this.errorHandler.recoverInline(this);
1918
1931
  }
1919
1932
  else {
1920
1933
  this.errorHandler.reportMatch(this);
1921
1934
  this.consume();
1922
1935
  }
1923
- this.state = 406;
1936
+ this.state = 421;
1924
1937
  this.data_expr(8);
1925
1938
  }
1926
1939
  break;
@@ -1928,22 +1941,22 @@ class CircuitScriptParser extends antlr.Parser {
1928
1941
  {
1929
1942
  localContext = new ArrayIndexExprContext(new Data_exprContext(parentContext, parentState));
1930
1943
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1931
- this.state = 407;
1944
+ this.state = 422;
1932
1945
  if (!(this.precpred(this.context, 1))) {
1933
1946
  throw this.createFailedPredicateException("this.precpred(this.context, 1)");
1934
1947
  }
1935
- this.state = 408;
1948
+ this.state = 423;
1936
1949
  this.match(CircuitScriptParser.T__4);
1937
- this.state = 409;
1950
+ this.state = 424;
1938
1951
  this.data_expr(0);
1939
- this.state = 410;
1952
+ this.state = 425;
1940
1953
  this.match(CircuitScriptParser.T__5);
1941
1954
  }
1942
1955
  break;
1943
1956
  }
1944
1957
  }
1945
1958
  }
1946
- this.state = 416;
1959
+ this.state = 431;
1947
1960
  this.errorHandler.sync(this);
1948
1961
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
1949
1962
  }
@@ -1970,9 +1983,9 @@ class CircuitScriptParser extends antlr.Parser {
1970
1983
  try {
1971
1984
  this.enterOuterAlt(localContext, 1);
1972
1985
  {
1973
- this.state = 417;
1986
+ this.state = 432;
1974
1987
  _la = this.tokenStream.LA(1);
1975
- if (!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 63) !== 0))) {
1988
+ if (!(((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 63) !== 0))) {
1976
1989
  this.errorHandler.recoverInline(this);
1977
1990
  }
1978
1991
  else {
@@ -2002,9 +2015,9 @@ class CircuitScriptParser extends antlr.Parser {
2002
2015
  try {
2003
2016
  this.enterOuterAlt(localContext, 1);
2004
2017
  {
2005
- this.state = 419;
2018
+ this.state = 434;
2006
2019
  _la = this.tokenStream.LA(1);
2007
- if (!(_la === 31 || _la === 43)) {
2020
+ if (!(_la === 32 || _la === 44)) {
2008
2021
  this.errorHandler.recoverInline(this);
2009
2022
  }
2010
2023
  else {
@@ -2035,18 +2048,18 @@ class CircuitScriptParser extends antlr.Parser {
2035
2048
  this.enterOuterAlt(localContext, 1);
2036
2049
  {
2037
2050
  {
2038
- this.state = 422;
2051
+ this.state = 437;
2039
2052
  this.errorHandler.sync(this);
2040
2053
  _la = this.tokenStream.LA(1);
2041
- if (_la === 43) {
2054
+ if (_la === 44) {
2042
2055
  {
2043
- this.state = 421;
2056
+ this.state = 436;
2044
2057
  this.match(CircuitScriptParser.Minus);
2045
2058
  }
2046
2059
  }
2047
- this.state = 424;
2060
+ this.state = 439;
2048
2061
  _la = this.tokenStream.LA(1);
2049
- if (!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 125) !== 0))) {
2062
+ if (!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 125) !== 0))) {
2050
2063
  this.errorHandler.recoverInline(this);
2051
2064
  }
2052
2065
  else {
@@ -2077,44 +2090,45 @@ class CircuitScriptParser extends antlr.Parser {
2077
2090
  try {
2078
2091
  this.enterOuterAlt(localContext, 1);
2079
2092
  {
2080
- this.state = 426;
2093
+ this.state = 441;
2081
2094
  this.match(CircuitScriptParser.Define);
2082
- this.state = 427;
2095
+ this.state = 442;
2083
2096
  this.match(CircuitScriptParser.ID);
2084
- this.state = 428;
2097
+ this.state = 443;
2085
2098
  this.match(CircuitScriptParser.OPEN_PAREN);
2086
- this.state = 430;
2099
+ this.state = 445;
2087
2100
  this.errorHandler.sync(this);
2088
2101
  _la = this.tokenStream.LA(1);
2089
- if (_la === 57) {
2102
+ if (_la === 58) {
2090
2103
  {
2091
- this.state = 429;
2104
+ this.state = 444;
2092
2105
  this.function_args_expr();
2093
2106
  }
2094
2107
  }
2095
- this.state = 432;
2108
+ this.state = 447;
2096
2109
  this.match(CircuitScriptParser.CLOSE_PAREN);
2097
- this.state = 433;
2110
+ this.state = 448;
2098
2111
  this.match(CircuitScriptParser.T__0);
2099
- this.state = 434;
2112
+ this.state = 449;
2100
2113
  this.match(CircuitScriptParser.NEWLINE);
2101
- this.state = 435;
2114
+ this.state = 450;
2102
2115
  this.match(CircuitScriptParser.INDENT);
2103
- this.state = 438;
2116
+ this.state = 453;
2104
2117
  this.errorHandler.sync(this);
2105
2118
  _la = this.tokenStream.LA(1);
2106
2119
  do {
2107
2120
  {
2108
- this.state = 438;
2121
+ this.state = 453;
2109
2122
  this.errorHandler.sync(this);
2110
2123
  switch (this.tokenStream.LA(1)) {
2111
2124
  case CircuitScriptParser.NEWLINE:
2112
2125
  {
2113
- this.state = 436;
2126
+ this.state = 451;
2114
2127
  this.match(CircuitScriptParser.NEWLINE);
2115
2128
  }
2116
2129
  break;
2117
2130
  case CircuitScriptParser.T__3:
2131
+ case CircuitScriptParser.T__7:
2118
2132
  case CircuitScriptParser.Break:
2119
2133
  case CircuitScriptParser.Branch:
2120
2134
  case CircuitScriptParser.Wire:
@@ -2138,7 +2152,7 @@ class CircuitScriptParser extends antlr.Parser {
2138
2152
  case CircuitScriptParser.ANNOTATION_START:
2139
2153
  case CircuitScriptParser.ID:
2140
2154
  {
2141
- this.state = 437;
2155
+ this.state = 452;
2142
2156
  this.function_expr();
2143
2157
  }
2144
2158
  break;
@@ -2146,11 +2160,11 @@ class CircuitScriptParser extends antlr.Parser {
2146
2160
  throw new antlr.NoViableAltException(this);
2147
2161
  }
2148
2162
  }
2149
- this.state = 440;
2163
+ this.state = 455;
2150
2164
  this.errorHandler.sync(this);
2151
2165
  _la = this.tokenStream.LA(1);
2152
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 868217905) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
2153
- this.state = 442;
2166
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 1736435825) !== 0) || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 8422405) !== 0));
2167
+ this.state = 457;
2154
2168
  this.match(CircuitScriptParser.DEDENT);
2155
2169
  }
2156
2170
  }
@@ -2172,10 +2186,11 @@ class CircuitScriptParser extends antlr.Parser {
2172
2186
  let localContext = new Function_exprContext(this.context, this.state);
2173
2187
  this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_expr);
2174
2188
  try {
2175
- this.state = 446;
2189
+ this.state = 461;
2176
2190
  this.errorHandler.sync(this);
2177
2191
  switch (this.tokenStream.LA(1)) {
2178
2192
  case CircuitScriptParser.T__3:
2193
+ case CircuitScriptParser.T__7:
2179
2194
  case CircuitScriptParser.Break:
2180
2195
  case CircuitScriptParser.Branch:
2181
2196
  case CircuitScriptParser.Wire:
@@ -2199,14 +2214,14 @@ class CircuitScriptParser extends antlr.Parser {
2199
2214
  case CircuitScriptParser.ID:
2200
2215
  this.enterOuterAlt(localContext, 1);
2201
2216
  {
2202
- this.state = 444;
2217
+ this.state = 459;
2203
2218
  this.expression();
2204
2219
  }
2205
2220
  break;
2206
2221
  case CircuitScriptParser.Return:
2207
2222
  this.enterOuterAlt(localContext, 2);
2208
2223
  {
2209
- this.state = 445;
2224
+ this.state = 460;
2210
2225
  this.function_return_expr();
2211
2226
  }
2212
2227
  break;
@@ -2234,49 +2249,49 @@ class CircuitScriptParser extends antlr.Parser {
2234
2249
  let _la;
2235
2250
  try {
2236
2251
  let alternative;
2237
- this.state = 477;
2252
+ this.state = 492;
2238
2253
  this.errorHandler.sync(this);
2239
2254
  switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context)) {
2240
2255
  case 1:
2241
2256
  this.enterOuterAlt(localContext, 1);
2242
2257
  {
2243
- this.state = 448;
2258
+ this.state = 463;
2244
2259
  this.match(CircuitScriptParser.ID);
2245
- this.state = 453;
2260
+ this.state = 468;
2246
2261
  this.errorHandler.sync(this);
2247
2262
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2248
2263
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2249
2264
  if (alternative === 1) {
2250
2265
  {
2251
2266
  {
2252
- this.state = 449;
2267
+ this.state = 464;
2253
2268
  this.match(CircuitScriptParser.T__1);
2254
- this.state = 450;
2269
+ this.state = 465;
2255
2270
  this.match(CircuitScriptParser.ID);
2256
2271
  }
2257
2272
  }
2258
2273
  }
2259
- this.state = 455;
2274
+ this.state = 470;
2260
2275
  this.errorHandler.sync(this);
2261
2276
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2262
2277
  }
2263
- this.state = 462;
2278
+ this.state = 477;
2264
2279
  this.errorHandler.sync(this);
2265
2280
  _la = this.tokenStream.LA(1);
2266
2281
  while (_la === 2) {
2267
2282
  {
2268
2283
  {
2269
- this.state = 456;
2284
+ this.state = 471;
2270
2285
  this.match(CircuitScriptParser.T__1);
2271
- this.state = 457;
2286
+ this.state = 472;
2272
2287
  this.match(CircuitScriptParser.ID);
2273
- this.state = 458;
2288
+ this.state = 473;
2274
2289
  this.match(CircuitScriptParser.T__2);
2275
- this.state = 459;
2290
+ this.state = 474;
2276
2291
  this.value_expr();
2277
2292
  }
2278
2293
  }
2279
- this.state = 464;
2294
+ this.state = 479;
2280
2295
  this.errorHandler.sync(this);
2281
2296
  _la = this.tokenStream.LA(1);
2282
2297
  }
@@ -2285,29 +2300,29 @@ class CircuitScriptParser extends antlr.Parser {
2285
2300
  case 2:
2286
2301
  this.enterOuterAlt(localContext, 2);
2287
2302
  {
2288
- this.state = 465;
2303
+ this.state = 480;
2289
2304
  this.match(CircuitScriptParser.ID);
2290
- this.state = 466;
2305
+ this.state = 481;
2291
2306
  this.match(CircuitScriptParser.T__2);
2292
- this.state = 467;
2307
+ this.state = 482;
2293
2308
  this.value_expr();
2294
- this.state = 474;
2309
+ this.state = 489;
2295
2310
  this.errorHandler.sync(this);
2296
2311
  _la = this.tokenStream.LA(1);
2297
2312
  while (_la === 2) {
2298
2313
  {
2299
2314
  {
2300
- this.state = 468;
2315
+ this.state = 483;
2301
2316
  this.match(CircuitScriptParser.T__1);
2302
- this.state = 469;
2317
+ this.state = 484;
2303
2318
  this.match(CircuitScriptParser.ID);
2304
- this.state = 470;
2319
+ this.state = 485;
2305
2320
  this.match(CircuitScriptParser.T__2);
2306
- this.state = 471;
2321
+ this.state = 486;
2307
2322
  this.value_expr();
2308
2323
  }
2309
2324
  }
2310
- this.state = 476;
2325
+ this.state = 491;
2311
2326
  this.errorHandler.sync(this);
2312
2327
  _la = this.tokenStream.LA(1);
2313
2328
  }
@@ -2336,21 +2351,21 @@ class CircuitScriptParser extends antlr.Parser {
2336
2351
  let alternative;
2337
2352
  this.enterOuterAlt(localContext, 1);
2338
2353
  {
2339
- this.state = 479;
2354
+ this.state = 494;
2340
2355
  this.match(CircuitScriptParser.ID);
2341
- this.state = 483;
2356
+ this.state = 498;
2342
2357
  this.errorHandler.sync(this);
2343
2358
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2344
2359
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2345
2360
  if (alternative === 1) {
2346
2361
  {
2347
2362
  {
2348
- this.state = 480;
2363
+ this.state = 495;
2349
2364
  this.trailer_expr2();
2350
2365
  }
2351
2366
  }
2352
2367
  }
2353
- this.state = 485;
2368
+ this.state = 500;
2354
2369
  this.errorHandler.sync(this);
2355
2370
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2356
2371
  }
@@ -2375,24 +2390,24 @@ class CircuitScriptParser extends antlr.Parser {
2375
2390
  this.enterRule(localContext, 80, CircuitScriptParser.RULE_trailer_expr);
2376
2391
  let _la;
2377
2392
  try {
2378
- this.state = 492;
2393
+ this.state = 507;
2379
2394
  this.errorHandler.sync(this);
2380
2395
  switch (this.tokenStream.LA(1)) {
2381
2396
  case CircuitScriptParser.OPEN_PAREN:
2382
2397
  this.enterOuterAlt(localContext, 1);
2383
2398
  {
2384
- this.state = 486;
2399
+ this.state = 501;
2385
2400
  this.match(CircuitScriptParser.OPEN_PAREN);
2386
- this.state = 488;
2401
+ this.state = 503;
2387
2402
  this.errorHandler.sync(this);
2388
2403
  _la = this.tokenStream.LA(1);
2389
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2082823) !== 0)) {
2404
+ if (_la === 5 || _la === 11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4265621505) !== 0)) {
2390
2405
  {
2391
- this.state = 487;
2406
+ this.state = 502;
2392
2407
  this.parameters();
2393
2408
  }
2394
2409
  }
2395
- this.state = 490;
2410
+ this.state = 505;
2396
2411
  this.match(CircuitScriptParser.CLOSE_PAREN);
2397
2412
  }
2398
2413
  break;
@@ -2400,7 +2415,7 @@ class CircuitScriptParser extends antlr.Parser {
2400
2415
  case CircuitScriptParser.T__6:
2401
2416
  this.enterOuterAlt(localContext, 2);
2402
2417
  {
2403
- this.state = 491;
2418
+ this.state = 506;
2404
2419
  this.trailer_expr2();
2405
2420
  }
2406
2421
  break;
@@ -2426,26 +2441,26 @@ class CircuitScriptParser extends antlr.Parser {
2426
2441
  let localContext = new Trailer_expr2Context(this.context, this.state);
2427
2442
  this.enterRule(localContext, 82, CircuitScriptParser.RULE_trailer_expr2);
2428
2443
  try {
2429
- this.state = 500;
2444
+ this.state = 515;
2430
2445
  this.errorHandler.sync(this);
2431
2446
  switch (this.tokenStream.LA(1)) {
2432
2447
  case CircuitScriptParser.T__6:
2433
2448
  this.enterOuterAlt(localContext, 1);
2434
2449
  {
2435
- this.state = 494;
2450
+ this.state = 509;
2436
2451
  this.match(CircuitScriptParser.T__6);
2437
- this.state = 495;
2452
+ this.state = 510;
2438
2453
  this.match(CircuitScriptParser.ID);
2439
2454
  }
2440
2455
  break;
2441
2456
  case CircuitScriptParser.T__4:
2442
2457
  this.enterOuterAlt(localContext, 2);
2443
2458
  {
2444
- this.state = 496;
2459
+ this.state = 511;
2445
2460
  this.match(CircuitScriptParser.T__4);
2446
- this.state = 497;
2461
+ this.state = 512;
2447
2462
  this.data_expr(0);
2448
- this.state = 498;
2463
+ this.state = 513;
2449
2464
  this.match(CircuitScriptParser.T__5);
2450
2465
  }
2451
2466
  break;
@@ -2475,18 +2490,18 @@ class CircuitScriptParser extends antlr.Parser {
2475
2490
  let alternative;
2476
2491
  this.enterOuterAlt(localContext, 1);
2477
2492
  {
2478
- this.state = 503;
2493
+ this.state = 518;
2479
2494
  this.errorHandler.sync(this);
2480
2495
  _la = this.tokenStream.LA(1);
2481
- if (_la === 42 || _la === 44) {
2496
+ if (_la === 43 || _la === 45) {
2482
2497
  {
2483
- this.state = 502;
2498
+ this.state = 517;
2484
2499
  this.net_namespace_expr();
2485
2500
  }
2486
2501
  }
2487
- this.state = 505;
2502
+ this.state = 520;
2488
2503
  this.match(CircuitScriptParser.ID);
2489
- this.state = 507;
2504
+ this.state = 522;
2490
2505
  this.errorHandler.sync(this);
2491
2506
  alternative = 1;
2492
2507
  do {
@@ -2494,7 +2509,7 @@ class CircuitScriptParser extends antlr.Parser {
2494
2509
  case 1:
2495
2510
  {
2496
2511
  {
2497
- this.state = 506;
2512
+ this.state = 521;
2498
2513
  this.trailer_expr();
2499
2514
  }
2500
2515
  }
@@ -2502,7 +2517,7 @@ class CircuitScriptParser extends antlr.Parser {
2502
2517
  default:
2503
2518
  throw new antlr.NoViableAltException(this);
2504
2519
  }
2505
- this.state = 509;
2520
+ this.state = 524;
2506
2521
  this.errorHandler.sync(this);
2507
2522
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 51, this.context);
2508
2523
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
@@ -2529,23 +2544,23 @@ class CircuitScriptParser extends antlr.Parser {
2529
2544
  try {
2530
2545
  this.enterOuterAlt(localContext, 1);
2531
2546
  {
2532
- this.state = 512;
2547
+ this.state = 527;
2533
2548
  this.errorHandler.sync(this);
2534
2549
  _la = this.tokenStream.LA(1);
2535
- if (_la === 42) {
2550
+ if (_la === 43) {
2536
2551
  {
2537
- this.state = 511;
2552
+ this.state = 526;
2538
2553
  this.match(CircuitScriptParser.Addition);
2539
2554
  }
2540
2555
  }
2541
- this.state = 514;
2556
+ this.state = 529;
2542
2557
  this.match(CircuitScriptParser.Divide);
2543
- this.state = 516;
2558
+ this.state = 531;
2544
2559
  this.errorHandler.sync(this);
2545
2560
  switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context)) {
2546
2561
  case 1:
2547
2562
  {
2548
- this.state = 515;
2563
+ this.state = 530;
2549
2564
  this.data_expr(0);
2550
2565
  }
2551
2566
  break;
@@ -2572,9 +2587,9 @@ class CircuitScriptParser extends antlr.Parser {
2572
2587
  try {
2573
2588
  this.enterOuterAlt(localContext, 1);
2574
2589
  {
2575
- this.state = 518;
2590
+ this.state = 533;
2576
2591
  this.match(CircuitScriptParser.Return);
2577
- this.state = 519;
2592
+ this.state = 534;
2578
2593
  this.data_expr(0);
2579
2594
  }
2580
2595
  }
@@ -2598,11 +2613,11 @@ class CircuitScriptParser extends antlr.Parser {
2598
2613
  try {
2599
2614
  this.enterOuterAlt(localContext, 1);
2600
2615
  {
2601
- this.state = 521;
2616
+ this.state = 536;
2602
2617
  this.property_key_expr();
2603
- this.state = 522;
2618
+ this.state = 537;
2604
2619
  this.match(CircuitScriptParser.T__0);
2605
- this.state = 523;
2620
+ this.state = 538;
2606
2621
  this.expressions_block();
2607
2622
  }
2608
2623
  }
@@ -2627,27 +2642,27 @@ class CircuitScriptParser extends antlr.Parser {
2627
2642
  try {
2628
2643
  this.enterOuterAlt(localContext, 1);
2629
2644
  {
2630
- this.state = 525;
2645
+ this.state = 540;
2631
2646
  this.match(CircuitScriptParser.Create);
2632
- this.state = 526;
2647
+ this.state = 541;
2633
2648
  this.match(CircuitScriptParser.Component);
2634
- this.state = 527;
2649
+ this.state = 542;
2635
2650
  this.match(CircuitScriptParser.T__0);
2636
- this.state = 528;
2651
+ this.state = 543;
2637
2652
  this.match(CircuitScriptParser.NEWLINE);
2638
- this.state = 529;
2653
+ this.state = 544;
2639
2654
  this.match(CircuitScriptParser.INDENT);
2640
- this.state = 532;
2655
+ this.state = 547;
2641
2656
  this.errorHandler.sync(this);
2642
2657
  _la = this.tokenStream.LA(1);
2643
2658
  do {
2644
2659
  {
2645
- this.state = 532;
2660
+ this.state = 547;
2646
2661
  this.errorHandler.sync(this);
2647
2662
  switch (this.tokenStream.LA(1)) {
2648
2663
  case CircuitScriptParser.NEWLINE:
2649
2664
  {
2650
- this.state = 530;
2665
+ this.state = 545;
2651
2666
  this.match(CircuitScriptParser.NEWLINE);
2652
2667
  }
2653
2668
  break;
@@ -2655,7 +2670,7 @@ class CircuitScriptParser extends antlr.Parser {
2655
2670
  case CircuitScriptParser.INTEGER_VALUE:
2656
2671
  case CircuitScriptParser.STRING_VALUE:
2657
2672
  {
2658
- this.state = 531;
2673
+ this.state = 546;
2659
2674
  this.property_expr();
2660
2675
  }
2661
2676
  break;
@@ -2663,11 +2678,11 @@ class CircuitScriptParser extends antlr.Parser {
2663
2678
  throw new antlr.NoViableAltException(this);
2664
2679
  }
2665
2680
  }
2666
- this.state = 534;
2681
+ this.state = 549;
2667
2682
  this.errorHandler.sync(this);
2668
2683
  _la = this.tokenStream.LA(1);
2669
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2670
- this.state = 536;
2684
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2685
+ this.state = 551;
2671
2686
  this.match(CircuitScriptParser.DEDENT);
2672
2687
  }
2673
2688
  }
@@ -2692,21 +2707,21 @@ class CircuitScriptParser extends antlr.Parser {
2692
2707
  try {
2693
2708
  this.enterOuterAlt(localContext, 1);
2694
2709
  {
2695
- this.state = 538;
2710
+ this.state = 553;
2696
2711
  this.match(CircuitScriptParser.NEWLINE);
2697
- this.state = 539;
2712
+ this.state = 554;
2698
2713
  this.match(CircuitScriptParser.INDENT);
2699
- this.state = 542;
2714
+ this.state = 557;
2700
2715
  this.errorHandler.sync(this);
2701
2716
  _la = this.tokenStream.LA(1);
2702
2717
  do {
2703
2718
  {
2704
- this.state = 542;
2719
+ this.state = 557;
2705
2720
  this.errorHandler.sync(this);
2706
2721
  switch (this.tokenStream.LA(1)) {
2707
2722
  case CircuitScriptParser.NEWLINE:
2708
2723
  {
2709
- this.state = 540;
2724
+ this.state = 555;
2710
2725
  this.match(CircuitScriptParser.NEWLINE);
2711
2726
  }
2712
2727
  break;
@@ -2714,7 +2729,7 @@ class CircuitScriptParser extends antlr.Parser {
2714
2729
  case CircuitScriptParser.For:
2715
2730
  case CircuitScriptParser.ID:
2716
2731
  {
2717
- this.state = 541;
2732
+ this.state = 556;
2718
2733
  this.graphic_expr();
2719
2734
  }
2720
2735
  break;
@@ -2722,11 +2737,11 @@ class CircuitScriptParser extends antlr.Parser {
2722
2737
  throw new antlr.NoViableAltException(this);
2723
2738
  }
2724
2739
  }
2725
- this.state = 544;
2740
+ this.state = 559;
2726
2741
  this.errorHandler.sync(this);
2727
2742
  _la = this.tokenStream.LA(1);
2728
- } while (_la === 15 || _la === 25 || _la === 57 || _la === 65);
2729
- this.state = 546;
2743
+ } while (_la === 16 || _la === 26 || _la === 58 || _la === 66);
2744
+ this.state = 561;
2730
2745
  this.match(CircuitScriptParser.DEDENT);
2731
2746
  }
2732
2747
  }
@@ -2751,26 +2766,26 @@ class CircuitScriptParser extends antlr.Parser {
2751
2766
  try {
2752
2767
  this.enterOuterAlt(localContext, 1);
2753
2768
  {
2754
- this.state = 548;
2769
+ this.state = 563;
2755
2770
  this.match(CircuitScriptParser.Create);
2756
- this.state = 549;
2771
+ this.state = 564;
2757
2772
  this.match(CircuitScriptParser.Graphic);
2758
- this.state = 553;
2773
+ this.state = 568;
2759
2774
  this.errorHandler.sync(this);
2760
2775
  _la = this.tokenStream.LA(1);
2761
- if (_la === 53) {
2776
+ if (_la === 54) {
2762
2777
  {
2763
- this.state = 550;
2778
+ this.state = 565;
2764
2779
  this.match(CircuitScriptParser.OPEN_PAREN);
2765
- this.state = 551;
2780
+ this.state = 566;
2766
2781
  this.match(CircuitScriptParser.ID);
2767
- this.state = 552;
2782
+ this.state = 567;
2768
2783
  this.match(CircuitScriptParser.CLOSE_PAREN);
2769
2784
  }
2770
2785
  }
2771
- this.state = 555;
2786
+ this.state = 570;
2772
2787
  this.match(CircuitScriptParser.T__0);
2773
- this.state = 556;
2788
+ this.state = 571;
2774
2789
  this.graphic_expressions_block();
2775
2790
  }
2776
2791
  }
@@ -2795,49 +2810,49 @@ class CircuitScriptParser extends antlr.Parser {
2795
2810
  try {
2796
2811
  this.enterOuterAlt(localContext, 1);
2797
2812
  {
2798
- this.state = 558;
2813
+ this.state = 573;
2799
2814
  this.match(CircuitScriptParser.Create);
2800
- this.state = 559;
2815
+ this.state = 574;
2801
2816
  this.match(CircuitScriptParser.Module);
2802
- this.state = 560;
2817
+ this.state = 575;
2803
2818
  this.match(CircuitScriptParser.T__0);
2804
- this.state = 561;
2819
+ this.state = 576;
2805
2820
  this.match(CircuitScriptParser.NEWLINE);
2806
- this.state = 562;
2821
+ this.state = 577;
2807
2822
  this.match(CircuitScriptParser.INDENT);
2808
- this.state = 566;
2823
+ this.state = 581;
2809
2824
  this.errorHandler.sync(this);
2810
2825
  _la = this.tokenStream.LA(1);
2811
2826
  do {
2812
2827
  {
2813
- this.state = 566;
2828
+ this.state = 581;
2814
2829
  this.errorHandler.sync(this);
2815
2830
  switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2816
2831
  case 1:
2817
2832
  {
2818
- this.state = 563;
2833
+ this.state = 578;
2819
2834
  this.match(CircuitScriptParser.NEWLINE);
2820
2835
  }
2821
2836
  break;
2822
2837
  case 2:
2823
2838
  {
2824
- this.state = 564;
2839
+ this.state = 579;
2825
2840
  this.property_expr();
2826
2841
  }
2827
2842
  break;
2828
2843
  case 3:
2829
2844
  {
2830
- this.state = 565;
2845
+ this.state = 580;
2831
2846
  this.property_block_expr();
2832
2847
  }
2833
2848
  break;
2834
2849
  }
2835
2850
  }
2836
- this.state = 568;
2851
+ this.state = 583;
2837
2852
  this.errorHandler.sync(this);
2838
2853
  _la = this.tokenStream.LA(1);
2839
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2840
- this.state = 570;
2854
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2855
+ this.state = 585;
2841
2856
  this.match(CircuitScriptParser.DEDENT);
2842
2857
  }
2843
2858
  }
@@ -2863,21 +2878,21 @@ class CircuitScriptParser extends antlr.Parser {
2863
2878
  this.enterOuterAlt(localContext, 1);
2864
2879
  {
2865
2880
  {
2866
- this.state = 572;
2881
+ this.state = 587;
2867
2882
  this.match(CircuitScriptParser.NEWLINE);
2868
- this.state = 573;
2883
+ this.state = 588;
2869
2884
  this.match(CircuitScriptParser.INDENT);
2870
- this.state = 576;
2885
+ this.state = 591;
2871
2886
  this.errorHandler.sync(this);
2872
2887
  _la = this.tokenStream.LA(1);
2873
2888
  do {
2874
2889
  {
2875
- this.state = 576;
2890
+ this.state = 591;
2876
2891
  this.errorHandler.sync(this);
2877
2892
  switch (this.tokenStream.LA(1)) {
2878
2893
  case CircuitScriptParser.NEWLINE:
2879
2894
  {
2880
- this.state = 574;
2895
+ this.state = 589;
2881
2896
  this.match(CircuitScriptParser.NEWLINE);
2882
2897
  }
2883
2898
  break;
@@ -2885,7 +2900,7 @@ class CircuitScriptParser extends antlr.Parser {
2885
2900
  case CircuitScriptParser.INTEGER_VALUE:
2886
2901
  case CircuitScriptParser.STRING_VALUE:
2887
2902
  {
2888
- this.state = 575;
2903
+ this.state = 590;
2889
2904
  this.property_expr();
2890
2905
  }
2891
2906
  break;
@@ -2893,11 +2908,11 @@ class CircuitScriptParser extends antlr.Parser {
2893
2908
  throw new antlr.NoViableAltException(this);
2894
2909
  }
2895
2910
  }
2896
- this.state = 578;
2911
+ this.state = 593;
2897
2912
  this.errorHandler.sync(this);
2898
2913
  _la = this.tokenStream.LA(1);
2899
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2900
- this.state = 580;
2914
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 275) !== 0));
2915
+ this.state = 595;
2901
2916
  this.match(CircuitScriptParser.DEDENT);
2902
2917
  }
2903
2918
  }
@@ -2921,7 +2936,7 @@ class CircuitScriptParser extends antlr.Parser {
2921
2936
  this.enterRule(localContext, 102, CircuitScriptParser.RULE_graphic_expr);
2922
2937
  let _la;
2923
2938
  try {
2924
- this.state = 608;
2939
+ this.state = 623;
2925
2940
  this.errorHandler.sync(this);
2926
2941
  switch (this.tokenStream.LA(1)) {
2927
2942
  case CircuitScriptParser.Pin:
@@ -2929,47 +2944,47 @@ class CircuitScriptParser extends antlr.Parser {
2929
2944
  localContext = new GraphicCommandExprContext(localContext);
2930
2945
  this.enterOuterAlt(localContext, 1);
2931
2946
  {
2932
- this.state = 582;
2947
+ this.state = 597;
2933
2948
  localContext._command = this.tokenStream.LT(1);
2934
2949
  _la = this.tokenStream.LA(1);
2935
- if (!(_la === 15 || _la === 57)) {
2950
+ if (!(_la === 16 || _la === 58)) {
2936
2951
  localContext._command = this.errorHandler.recoverInline(this);
2937
2952
  }
2938
2953
  else {
2939
2954
  this.errorHandler.reportMatch(this);
2940
2955
  this.consume();
2941
2956
  }
2942
- this.state = 584;
2957
+ this.state = 599;
2943
2958
  this.errorHandler.sync(this);
2944
2959
  _la = this.tokenStream.LA(1);
2945
2960
  if (_la === 1) {
2946
2961
  {
2947
- this.state = 583;
2962
+ this.state = 598;
2948
2963
  this.match(CircuitScriptParser.T__0);
2949
2964
  }
2950
2965
  }
2951
- this.state = 592;
2966
+ this.state = 607;
2952
2967
  this.errorHandler.sync(this);
2953
2968
  switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
2954
2969
  case 1:
2955
2970
  {
2956
- this.state = 586;
2971
+ this.state = 601;
2957
2972
  this.parameters();
2958
2973
  }
2959
2974
  break;
2960
2975
  case 2:
2961
2976
  {
2962
- this.state = 587;
2977
+ this.state = 602;
2963
2978
  this.match(CircuitScriptParser.OPEN_PAREN);
2964
- this.state = 588;
2979
+ this.state = 603;
2965
2980
  this.parameters();
2966
- this.state = 589;
2981
+ this.state = 604;
2967
2982
  this.match(CircuitScriptParser.CLOSE_PAREN);
2968
2983
  }
2969
2984
  break;
2970
2985
  case 3:
2971
2986
  {
2972
- this.state = 591;
2987
+ this.state = 606;
2973
2988
  this.nested_properties_inner();
2974
2989
  }
2975
2990
  break;
@@ -2980,33 +2995,33 @@ class CircuitScriptParser extends antlr.Parser {
2980
2995
  localContext = new GraphicForExprContext(localContext);
2981
2996
  this.enterOuterAlt(localContext, 2);
2982
2997
  {
2983
- this.state = 594;
2998
+ this.state = 609;
2984
2999
  this.match(CircuitScriptParser.For);
2985
- this.state = 595;
3000
+ this.state = 610;
2986
3001
  this.match(CircuitScriptParser.ID);
2987
- this.state = 600;
3002
+ this.state = 615;
2988
3003
  this.errorHandler.sync(this);
2989
3004
  _la = this.tokenStream.LA(1);
2990
3005
  while (_la === 2) {
2991
3006
  {
2992
3007
  {
2993
- this.state = 596;
3008
+ this.state = 611;
2994
3009
  this.match(CircuitScriptParser.T__1);
2995
- this.state = 597;
3010
+ this.state = 612;
2996
3011
  this.match(CircuitScriptParser.ID);
2997
3012
  }
2998
3013
  }
2999
- this.state = 602;
3014
+ this.state = 617;
3000
3015
  this.errorHandler.sync(this);
3001
3016
  _la = this.tokenStream.LA(1);
3002
3017
  }
3003
- this.state = 603;
3018
+ this.state = 618;
3004
3019
  this.match(CircuitScriptParser.In);
3005
- this.state = 604;
3020
+ this.state = 619;
3006
3021
  this.data_expr(0);
3007
- this.state = 605;
3022
+ this.state = 620;
3008
3023
  this.match(CircuitScriptParser.T__0);
3009
- this.state = 606;
3024
+ this.state = 621;
3010
3025
  this.graphic_expressions_block();
3011
3026
  }
3012
3027
  break;
@@ -3034,11 +3049,11 @@ class CircuitScriptParser extends antlr.Parser {
3034
3049
  try {
3035
3050
  this.enterOuterAlt(localContext, 1);
3036
3051
  {
3037
- this.state = 610;
3052
+ this.state = 625;
3038
3053
  this.property_key_expr();
3039
- this.state = 611;
3054
+ this.state = 626;
3040
3055
  this.match(CircuitScriptParser.T__0);
3041
- this.state = 612;
3056
+ this.state = 627;
3042
3057
  this.property_value_expr();
3043
3058
  }
3044
3059
  }
@@ -3063,9 +3078,9 @@ class CircuitScriptParser extends antlr.Parser {
3063
3078
  try {
3064
3079
  this.enterOuterAlt(localContext, 1);
3065
3080
  {
3066
- this.state = 614;
3081
+ this.state = 629;
3067
3082
  _la = this.tokenStream.LA(1);
3068
- if (!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 19) !== 0))) {
3083
+ if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 19) !== 0))) {
3069
3084
  this.errorHandler.recoverInline(this);
3070
3085
  }
3071
3086
  else {
@@ -3093,14 +3108,14 @@ class CircuitScriptParser extends antlr.Parser {
3093
3108
  this.enterRule(localContext, 108, CircuitScriptParser.RULE_property_value_expr);
3094
3109
  let _la;
3095
3110
  try {
3096
- this.state = 625;
3111
+ this.state = 640;
3097
3112
  this.errorHandler.sync(this);
3098
3113
  switch (this.tokenStream.LA(1)) {
3099
3114
  case CircuitScriptParser.NEWLINE:
3100
3115
  localContext = new Nested_propertiesContext(localContext);
3101
3116
  this.enterOuterAlt(localContext, 1);
3102
3117
  {
3103
- this.state = 616;
3118
+ this.state = 631;
3104
3119
  this.nested_properties_inner();
3105
3120
  }
3106
3121
  break;
@@ -3121,21 +3136,21 @@ class CircuitScriptParser extends antlr.Parser {
3121
3136
  localContext = new Single_line_propertyContext(localContext);
3122
3137
  this.enterOuterAlt(localContext, 2);
3123
3138
  {
3124
- this.state = 617;
3139
+ this.state = 632;
3125
3140
  this.data_expr(0);
3126
- this.state = 622;
3141
+ this.state = 637;
3127
3142
  this.errorHandler.sync(this);
3128
3143
  _la = this.tokenStream.LA(1);
3129
3144
  while (_la === 2) {
3130
3145
  {
3131
3146
  {
3132
- this.state = 618;
3147
+ this.state = 633;
3133
3148
  this.match(CircuitScriptParser.T__1);
3134
- this.state = 619;
3149
+ this.state = 634;
3135
3150
  this.data_expr(0);
3136
3151
  }
3137
3152
  }
3138
- this.state = 624;
3153
+ this.state = 639;
3139
3154
  this.errorHandler.sync(this);
3140
3155
  _la = this.tokenStream.LA(1);
3141
3156
  }
@@ -3163,27 +3178,27 @@ class CircuitScriptParser extends antlr.Parser {
3163
3178
  let localContext = new Wire_atom_exprContext(this.context, this.state);
3164
3179
  this.enterRule(localContext, 110, CircuitScriptParser.RULE_wire_atom_expr);
3165
3180
  try {
3166
- this.state = 633;
3181
+ this.state = 648;
3167
3182
  this.errorHandler.sync(this);
3168
3183
  switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context)) {
3169
3184
  case 1:
3170
3185
  localContext = new Wire_expr_direction_valueContext(localContext);
3171
3186
  this.enterOuterAlt(localContext, 1);
3172
3187
  {
3173
- this.state = 627;
3188
+ this.state = 642;
3174
3189
  this.match(CircuitScriptParser.ID);
3175
- this.state = 630;
3190
+ this.state = 645;
3176
3191
  this.errorHandler.sync(this);
3177
3192
  switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context)) {
3178
3193
  case 1:
3179
3194
  {
3180
- this.state = 628;
3195
+ this.state = 643;
3181
3196
  this.match(CircuitScriptParser.INTEGER_VALUE);
3182
3197
  }
3183
3198
  break;
3184
3199
  case 2:
3185
3200
  {
3186
- this.state = 629;
3201
+ this.state = 644;
3187
3202
  this.data_expr(0);
3188
3203
  }
3189
3204
  break;
@@ -3194,7 +3209,7 @@ class CircuitScriptParser extends antlr.Parser {
3194
3209
  localContext = new Wire_expr_direction_onlyContext(localContext);
3195
3210
  this.enterOuterAlt(localContext, 2);
3196
3211
  {
3197
- this.state = 632;
3212
+ this.state = 647;
3198
3213
  this.match(CircuitScriptParser.ID);
3199
3214
  }
3200
3215
  break;
@@ -3221,21 +3236,21 @@ class CircuitScriptParser extends antlr.Parser {
3221
3236
  let alternative;
3222
3237
  this.enterOuterAlt(localContext, 1);
3223
3238
  {
3224
- this.state = 635;
3239
+ this.state = 650;
3225
3240
  this.match(CircuitScriptParser.Wire);
3226
- this.state = 639;
3241
+ this.state = 654;
3227
3242
  this.errorHandler.sync(this);
3228
3243
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3229
3244
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3230
3245
  if (alternative === 1) {
3231
3246
  {
3232
3247
  {
3233
- this.state = 636;
3248
+ this.state = 651;
3234
3249
  this.wire_atom_expr();
3235
3250
  }
3236
3251
  }
3237
3252
  }
3238
- this.state = 641;
3253
+ this.state = 656;
3239
3254
  this.errorHandler.sync(this);
3240
3255
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3241
3256
  }
@@ -3262,39 +3277,39 @@ class CircuitScriptParser extends antlr.Parser {
3262
3277
  try {
3263
3278
  this.enterOuterAlt(localContext, 1);
3264
3279
  {
3265
- this.state = 642;
3280
+ this.state = 657;
3266
3281
  this.match(CircuitScriptParser.T__4);
3267
- this.state = 653;
3282
+ this.state = 668;
3268
3283
  this.errorHandler.sync(this);
3269
3284
  _la = this.tokenStream.LA(1);
3270
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2082823) !== 0)) {
3285
+ while (_la === 5 || _la === 11 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4265621505) !== 0)) {
3271
3286
  {
3272
3287
  {
3273
- this.state = 643;
3288
+ this.state = 658;
3274
3289
  this.data_expr(0);
3275
- this.state = 648;
3290
+ this.state = 663;
3276
3291
  this.errorHandler.sync(this);
3277
3292
  _la = this.tokenStream.LA(1);
3278
3293
  while (_la === 2) {
3279
3294
  {
3280
3295
  {
3281
- this.state = 644;
3296
+ this.state = 659;
3282
3297
  this.match(CircuitScriptParser.T__1);
3283
- this.state = 645;
3298
+ this.state = 660;
3284
3299
  this.data_expr(0);
3285
3300
  }
3286
3301
  }
3287
- this.state = 650;
3302
+ this.state = 665;
3288
3303
  this.errorHandler.sync(this);
3289
3304
  _la = this.tokenStream.LA(1);
3290
3305
  }
3291
3306
  }
3292
3307
  }
3293
- this.state = 655;
3308
+ this.state = 670;
3294
3309
  this.errorHandler.sync(this);
3295
3310
  _la = this.tokenStream.LA(1);
3296
3311
  }
3297
- this.state = 656;
3312
+ this.state = 671;
3298
3313
  this.match(CircuitScriptParser.T__5);
3299
3314
  }
3300
3315
  }
@@ -3318,20 +3333,20 @@ class CircuitScriptParser extends antlr.Parser {
3318
3333
  try {
3319
3334
  this.enterOuterAlt(localContext, 1);
3320
3335
  {
3321
- this.state = 658;
3336
+ this.state = 673;
3322
3337
  this.match(CircuitScriptParser.Point);
3323
- this.state = 661;
3338
+ this.state = 676;
3324
3339
  this.errorHandler.sync(this);
3325
3340
  switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context)) {
3326
3341
  case 1:
3327
3342
  {
3328
- this.state = 659;
3343
+ this.state = 674;
3329
3344
  this.match(CircuitScriptParser.ID);
3330
3345
  }
3331
3346
  break;
3332
3347
  case 2:
3333
3348
  {
3334
- this.state = 660;
3349
+ this.state = 675;
3335
3350
  this.data_expr(0);
3336
3351
  }
3337
3352
  break;
@@ -3358,9 +3373,9 @@ class CircuitScriptParser extends antlr.Parser {
3358
3373
  try {
3359
3374
  this.enterOuterAlt(localContext, 1);
3360
3375
  {
3361
- this.state = 663;
3376
+ this.state = 678;
3362
3377
  this.match(CircuitScriptParser.Import);
3363
- this.state = 664;
3378
+ this.state = 679;
3364
3379
  this.match(CircuitScriptParser.ID);
3365
3380
  }
3366
3381
  }
@@ -3385,18 +3400,18 @@ class CircuitScriptParser extends antlr.Parser {
3385
3400
  try {
3386
3401
  this.enterOuterAlt(localContext, 1);
3387
3402
  {
3388
- this.state = 666;
3403
+ this.state = 681;
3389
3404
  _la = this.tokenStream.LA(1);
3390
- if (!(_la === 32 || _la === 33)) {
3405
+ if (!(_la === 33 || _la === 34)) {
3391
3406
  this.errorHandler.recoverInline(this);
3392
3407
  }
3393
3408
  else {
3394
3409
  this.errorHandler.reportMatch(this);
3395
3410
  this.consume();
3396
3411
  }
3397
- this.state = 667;
3412
+ this.state = 682;
3398
3413
  this.match(CircuitScriptParser.T__0);
3399
- this.state = 668;
3414
+ this.state = 683;
3400
3415
  this.expressions_block();
3401
3416
  }
3402
3417
  }
@@ -3422,36 +3437,36 @@ class CircuitScriptParser extends antlr.Parser {
3422
3437
  let alternative;
3423
3438
  this.enterOuterAlt(localContext, 1);
3424
3439
  {
3425
- this.state = 670;
3440
+ this.state = 685;
3426
3441
  this.match(CircuitScriptParser.If);
3427
- this.state = 671;
3442
+ this.state = 686;
3428
3443
  this.data_expr(0);
3429
- this.state = 672;
3444
+ this.state = 687;
3430
3445
  this.match(CircuitScriptParser.T__0);
3431
- this.state = 673;
3446
+ this.state = 688;
3432
3447
  this.expressions_block();
3433
- this.state = 677;
3448
+ this.state = 692;
3434
3449
  this.errorHandler.sync(this);
3435
3450
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3436
3451
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3437
3452
  if (alternative === 1) {
3438
3453
  {
3439
3454
  {
3440
- this.state = 674;
3455
+ this.state = 689;
3441
3456
  this.if_inner_expr();
3442
3457
  }
3443
3458
  }
3444
3459
  }
3445
- this.state = 679;
3460
+ this.state = 694;
3446
3461
  this.errorHandler.sync(this);
3447
3462
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3448
3463
  }
3449
- this.state = 681;
3464
+ this.state = 696;
3450
3465
  this.errorHandler.sync(this);
3451
3466
  _la = this.tokenStream.LA(1);
3452
- if (_la === 30) {
3467
+ if (_la === 31) {
3453
3468
  {
3454
- this.state = 680;
3469
+ this.state = 695;
3455
3470
  this.else_expr();
3456
3471
  }
3457
3472
  }
@@ -3477,15 +3492,15 @@ class CircuitScriptParser extends antlr.Parser {
3477
3492
  try {
3478
3493
  this.enterOuterAlt(localContext, 1);
3479
3494
  {
3480
- this.state = 683;
3495
+ this.state = 698;
3481
3496
  this.match(CircuitScriptParser.Else);
3482
- this.state = 684;
3497
+ this.state = 699;
3483
3498
  this.match(CircuitScriptParser.If);
3484
- this.state = 685;
3499
+ this.state = 700;
3485
3500
  this.data_expr(0);
3486
- this.state = 686;
3501
+ this.state = 701;
3487
3502
  this.match(CircuitScriptParser.T__0);
3488
- this.state = 687;
3503
+ this.state = 702;
3489
3504
  this.expressions_block();
3490
3505
  }
3491
3506
  }
@@ -3509,11 +3524,11 @@ class CircuitScriptParser extends antlr.Parser {
3509
3524
  try {
3510
3525
  this.enterOuterAlt(localContext, 1);
3511
3526
  {
3512
- this.state = 689;
3527
+ this.state = 704;
3513
3528
  this.match(CircuitScriptParser.Else);
3514
- this.state = 690;
3529
+ this.state = 705;
3515
3530
  this.match(CircuitScriptParser.T__0);
3516
- this.state = 691;
3531
+ this.state = 706;
3517
3532
  this.expressions_block();
3518
3533
  }
3519
3534
  }
@@ -3537,13 +3552,13 @@ class CircuitScriptParser extends antlr.Parser {
3537
3552
  try {
3538
3553
  this.enterOuterAlt(localContext, 1);
3539
3554
  {
3540
- this.state = 693;
3555
+ this.state = 708;
3541
3556
  this.match(CircuitScriptParser.While);
3542
- this.state = 694;
3557
+ this.state = 709;
3543
3558
  this.data_expr(0);
3544
- this.state = 695;
3559
+ this.state = 710;
3545
3560
  this.match(CircuitScriptParser.T__0);
3546
- this.state = 696;
3561
+ this.state = 711;
3547
3562
  this.expressions_block();
3548
3563
  }
3549
3564
  }
@@ -3568,33 +3583,33 @@ class CircuitScriptParser extends antlr.Parser {
3568
3583
  try {
3569
3584
  this.enterOuterAlt(localContext, 1);
3570
3585
  {
3571
- this.state = 698;
3586
+ this.state = 713;
3572
3587
  this.match(CircuitScriptParser.For);
3573
- this.state = 699;
3588
+ this.state = 714;
3574
3589
  this.match(CircuitScriptParser.ID);
3575
- this.state = 704;
3590
+ this.state = 719;
3576
3591
  this.errorHandler.sync(this);
3577
3592
  _la = this.tokenStream.LA(1);
3578
3593
  while (_la === 2) {
3579
3594
  {
3580
3595
  {
3581
- this.state = 700;
3596
+ this.state = 715;
3582
3597
  this.match(CircuitScriptParser.T__1);
3583
- this.state = 701;
3598
+ this.state = 716;
3584
3599
  this.match(CircuitScriptParser.ID);
3585
3600
  }
3586
3601
  }
3587
- this.state = 706;
3602
+ this.state = 721;
3588
3603
  this.errorHandler.sync(this);
3589
3604
  _la = this.tokenStream.LA(1);
3590
3605
  }
3591
- this.state = 707;
3606
+ this.state = 722;
3592
3607
  this.match(CircuitScriptParser.In);
3593
- this.state = 708;
3608
+ this.state = 723;
3594
3609
  this.data_expr(0);
3595
- this.state = 709;
3610
+ this.state = 724;
3596
3611
  this.match(CircuitScriptParser.T__0);
3597
- this.state = 710;
3612
+ this.state = 725;
3598
3613
  this.expressions_block();
3599
3614
  }
3600
3615
  }
@@ -3612,16 +3627,39 @@ class CircuitScriptParser extends antlr.Parser {
3612
3627
  }
3613
3628
  return localContext;
3614
3629
  }
3615
- annotation_comment_expr() {
3616
- let localContext = new Annotation_comment_exprContext(this.context, this.state);
3617
- this.enterRule(localContext, 132, CircuitScriptParser.RULE_annotation_comment_expr);
3630
+ part_set_expr() {
3631
+ let localContext = new Part_set_exprContext(this.context, this.state);
3632
+ this.enterRule(localContext, 132, CircuitScriptParser.RULE_part_set_expr);
3633
+ let _la;
3618
3634
  try {
3619
3635
  this.enterOuterAlt(localContext, 1);
3620
3636
  {
3621
- this.state = 712;
3622
- this.match(CircuitScriptParser.ANNOTATION_START);
3623
- this.state = 713;
3624
- this.match(CircuitScriptParser.ID);
3637
+ this.state = 727;
3638
+ this.match(CircuitScriptParser.T__7);
3639
+ this.state = 728;
3640
+ this.match(CircuitScriptParser.T__0);
3641
+ this.state = 729;
3642
+ this.data_expr(0);
3643
+ this.state = 734;
3644
+ this.errorHandler.sync(this);
3645
+ _la = this.tokenStream.LA(1);
3646
+ while (_la === 2) {
3647
+ {
3648
+ {
3649
+ this.state = 730;
3650
+ this.match(CircuitScriptParser.T__1);
3651
+ this.state = 731;
3652
+ this.data_expr(0);
3653
+ }
3654
+ }
3655
+ this.state = 736;
3656
+ this.errorHandler.sync(this);
3657
+ _la = this.tokenStream.LA(1);
3658
+ }
3659
+ this.state = 737;
3660
+ this.match(CircuitScriptParser.T__0);
3661
+ this.state = 738;
3662
+ this.part_match_block();
3625
3663
  }
3626
3664
  }
3627
3665
  catch (re) {
@@ -3638,109 +3676,471 @@ class CircuitScriptParser extends antlr.Parser {
3638
3676
  }
3639
3677
  return localContext;
3640
3678
  }
3641
- sempred(localContext, ruleIndex, predIndex) {
3642
- switch (ruleIndex) {
3643
- case 32:
3644
- return this.data_expr_sempred(localContext, predIndex);
3679
+ part_set_key() {
3680
+ let localContext = new Part_set_keyContext(this.context, this.state);
3681
+ this.enterRule(localContext, 134, CircuitScriptParser.RULE_part_set_key);
3682
+ let _la;
3683
+ try {
3684
+ this.enterOuterAlt(localContext, 1);
3685
+ {
3686
+ this.state = 740;
3687
+ _la = this.tokenStream.LA(1);
3688
+ if (!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 59) !== 0))) {
3689
+ this.errorHandler.recoverInline(this);
3690
+ }
3691
+ else {
3692
+ this.errorHandler.reportMatch(this);
3693
+ this.consume();
3694
+ }
3695
+ }
3645
3696
  }
3646
- return true;
3647
- }
3648
- data_expr_sempred(localContext, predIndex) {
3649
- switch (predIndex) {
3650
- case 0:
3651
- return this.precpred(this.context, 10);
3652
- case 1:
3653
- return this.precpred(this.context, 9);
3654
- case 2:
3655
- return this.precpred(this.context, 8);
3656
- case 3:
3657
- return this.precpred(this.context, 7);
3658
- case 4:
3659
- return this.precpred(this.context, 1);
3697
+ catch (re) {
3698
+ if (re instanceof antlr.RecognitionException) {
3699
+ this.errorHandler.reportError(this, re);
3700
+ this.errorHandler.recover(this, re);
3701
+ }
3702
+ else {
3703
+ throw re;
3704
+ }
3660
3705
  }
3661
- return true;
3662
- }
3663
- static get _ATN() {
3664
- if (!CircuitScriptParser.__ATN) {
3665
- CircuitScriptParser.__ATN = new antlr.ATNDeserializer().deserialize(CircuitScriptParser._serializedATN);
3706
+ finally {
3707
+ this.exitRule();
3666
3708
  }
3667
- return CircuitScriptParser.__ATN;
3668
- }
3669
- get vocabulary() {
3670
- return CircuitScriptParser.vocabulary;
3709
+ return localContext;
3671
3710
  }
3672
- }
3673
- exports.CircuitScriptParser = CircuitScriptParser;
3674
- CircuitScriptParser.T__0 = 1;
3675
- CircuitScriptParser.T__1 = 2;
3676
- CircuitScriptParser.T__2 = 3;
3677
- CircuitScriptParser.T__3 = 4;
3678
- CircuitScriptParser.T__4 = 5;
3679
- CircuitScriptParser.T__5 = 6;
3680
- CircuitScriptParser.T__6 = 7;
3681
- CircuitScriptParser.Break = 8;
3682
- CircuitScriptParser.Branch = 9;
3683
- CircuitScriptParser.Create = 10;
3684
- CircuitScriptParser.Component = 11;
3685
- CircuitScriptParser.Graphic = 12;
3686
- CircuitScriptParser.Module = 13;
3687
- CircuitScriptParser.Wire = 14;
3688
- CircuitScriptParser.Pin = 15;
3689
- CircuitScriptParser.Add = 16;
3690
- CircuitScriptParser.At = 17;
3691
- CircuitScriptParser.To = 18;
3692
- CircuitScriptParser.Point = 19;
3693
- CircuitScriptParser.Join = 20;
3694
- CircuitScriptParser.Parallel = 21;
3695
- CircuitScriptParser.Return = 22;
3696
- CircuitScriptParser.Define = 23;
3697
- CircuitScriptParser.Import = 24;
3698
- CircuitScriptParser.For = 25;
3699
- CircuitScriptParser.In = 26;
3700
- CircuitScriptParser.While = 27;
3701
- CircuitScriptParser.Continue = 28;
3702
- CircuitScriptParser.If = 29;
3703
- CircuitScriptParser.Else = 30;
3704
- CircuitScriptParser.Not = 31;
3705
- CircuitScriptParser.Frame = 32;
3706
- CircuitScriptParser.Sheet = 33;
3707
- CircuitScriptParser.Equals = 34;
3708
- CircuitScriptParser.NotEquals = 35;
3709
- CircuitScriptParser.GreaterThan = 36;
3710
- CircuitScriptParser.GreatOrEqualThan = 37;
3711
- CircuitScriptParser.LessThan = 38;
3712
- CircuitScriptParser.LessOrEqualThan = 39;
3713
- CircuitScriptParser.LogicalAnd = 40;
3714
- CircuitScriptParser.LogicalOr = 41;
3715
- CircuitScriptParser.Addition = 42;
3716
- CircuitScriptParser.Minus = 43;
3717
- CircuitScriptParser.Divide = 44;
3718
- CircuitScriptParser.Multiply = 45;
3719
- CircuitScriptParser.Modulus = 46;
3720
- CircuitScriptParser.AdditionAssign = 47;
3721
- CircuitScriptParser.MinusAssign = 48;
3722
- CircuitScriptParser.DivideAssign = 49;
3723
- CircuitScriptParser.MultiplyAssign = 50;
3724
- CircuitScriptParser.ModulusAssign = 51;
3725
- CircuitScriptParser.ANNOTATION_START = 52;
3726
- CircuitScriptParser.OPEN_PAREN = 53;
3727
- CircuitScriptParser.CLOSE_PAREN = 54;
3728
- CircuitScriptParser.NOT_CONNECTED = 55;
3729
- CircuitScriptParser.BOOLEAN_VALUE = 56;
3730
- CircuitScriptParser.ID = 57;
3731
- CircuitScriptParser.INTEGER_VALUE = 58;
3732
- CircuitScriptParser.DECIMAL_VALUE = 59;
3733
- CircuitScriptParser.NUMERIC_VALUE = 60;
3734
- CircuitScriptParser.STRING_VALUE = 61;
3735
- CircuitScriptParser.PERCENTAGE_VALUE = 62;
3736
- CircuitScriptParser.ALPHA_NUMERIC = 63;
3737
- CircuitScriptParser.WS = 64;
3738
- CircuitScriptParser.NEWLINE = 65;
3739
- CircuitScriptParser.COMMENT = 66;
3740
- CircuitScriptParser.INDENT = 67;
3741
- CircuitScriptParser.DEDENT = 68;
3742
- CircuitScriptParser.RULE_script = 0;
3743
- CircuitScriptParser.RULE_expression = 1;
3711
+ part_match_block() {
3712
+ let localContext = new Part_match_blockContext(this.context, this.state);
3713
+ this.enterRule(localContext, 136, CircuitScriptParser.RULE_part_match_block);
3714
+ let _la;
3715
+ try {
3716
+ this.enterOuterAlt(localContext, 1);
3717
+ {
3718
+ this.state = 742;
3719
+ this.match(CircuitScriptParser.NEWLINE);
3720
+ this.state = 743;
3721
+ this.match(CircuitScriptParser.INDENT);
3722
+ this.state = 746;
3723
+ this.errorHandler.sync(this);
3724
+ _la = this.tokenStream.LA(1);
3725
+ do {
3726
+ {
3727
+ this.state = 746;
3728
+ this.errorHandler.sync(this);
3729
+ switch (this.tokenStream.LA(1)) {
3730
+ case CircuitScriptParser.NEWLINE:
3731
+ {
3732
+ this.state = 744;
3733
+ this.match(CircuitScriptParser.NEWLINE);
3734
+ }
3735
+ break;
3736
+ case CircuitScriptParser.ID:
3737
+ case CircuitScriptParser.INTEGER_VALUE:
3738
+ case CircuitScriptParser.NUMERIC_VALUE:
3739
+ case CircuitScriptParser.STRING_VALUE:
3740
+ case CircuitScriptParser.PERCENTAGE_VALUE:
3741
+ {
3742
+ this.state = 745;
3743
+ this.part_sub_expr();
3744
+ }
3745
+ break;
3746
+ default:
3747
+ throw new antlr.NoViableAltException(this);
3748
+ }
3749
+ }
3750
+ this.state = 748;
3751
+ this.errorHandler.sync(this);
3752
+ _la = this.tokenStream.LA(1);
3753
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 315) !== 0));
3754
+ this.state = 750;
3755
+ this.match(CircuitScriptParser.DEDENT);
3756
+ }
3757
+ }
3758
+ catch (re) {
3759
+ if (re instanceof antlr.RecognitionException) {
3760
+ this.errorHandler.reportError(this, re);
3761
+ this.errorHandler.recover(this, re);
3762
+ }
3763
+ else {
3764
+ throw re;
3765
+ }
3766
+ }
3767
+ finally {
3768
+ this.exitRule();
3769
+ }
3770
+ return localContext;
3771
+ }
3772
+ part_sub_expr() {
3773
+ let localContext = new Part_sub_exprContext(this.context, this.state);
3774
+ this.enterRule(localContext, 138, CircuitScriptParser.RULE_part_sub_expr);
3775
+ try {
3776
+ this.state = 755;
3777
+ this.errorHandler.sync(this);
3778
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context)) {
3779
+ case 1:
3780
+ this.enterOuterAlt(localContext, 1);
3781
+ {
3782
+ this.state = 752;
3783
+ this.part_condition_expr();
3784
+ }
3785
+ break;
3786
+ case 2:
3787
+ this.enterOuterAlt(localContext, 2);
3788
+ {
3789
+ this.state = 753;
3790
+ this.part_value_expr();
3791
+ }
3792
+ break;
3793
+ case 3:
3794
+ this.enterOuterAlt(localContext, 3);
3795
+ {
3796
+ this.state = 754;
3797
+ this.part_condition_key_only_expr();
3798
+ }
3799
+ break;
3800
+ }
3801
+ }
3802
+ catch (re) {
3803
+ if (re instanceof antlr.RecognitionException) {
3804
+ this.errorHandler.reportError(this, re);
3805
+ this.errorHandler.recover(this, re);
3806
+ }
3807
+ else {
3808
+ throw re;
3809
+ }
3810
+ }
3811
+ finally {
3812
+ this.exitRule();
3813
+ }
3814
+ return localContext;
3815
+ }
3816
+ part_condition_expr() {
3817
+ let localContext = new Part_condition_exprContext(this.context, this.state);
3818
+ this.enterRule(localContext, 140, CircuitScriptParser.RULE_part_condition_expr);
3819
+ let _la;
3820
+ try {
3821
+ let alternative;
3822
+ this.enterOuterAlt(localContext, 1);
3823
+ {
3824
+ this.state = 757;
3825
+ localContext._part_set_key = this.part_set_key();
3826
+ localContext._key_id.push(localContext._part_set_key);
3827
+ this.state = 758;
3828
+ this.match(CircuitScriptParser.T__0);
3829
+ this.state = 759;
3830
+ localContext._data_expr = this.data_expr(0);
3831
+ localContext._values.push(localContext._data_expr);
3832
+ this.state = 767;
3833
+ this.errorHandler.sync(this);
3834
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3835
+ while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3836
+ if (alternative === 1) {
3837
+ {
3838
+ {
3839
+ this.state = 760;
3840
+ this.match(CircuitScriptParser.T__1);
3841
+ this.state = 761;
3842
+ localContext._part_set_key = this.part_set_key();
3843
+ localContext._key_id.push(localContext._part_set_key);
3844
+ this.state = 762;
3845
+ this.match(CircuitScriptParser.T__0);
3846
+ this.state = 763;
3847
+ localContext._data_expr = this.data_expr(0);
3848
+ localContext._values.push(localContext._data_expr);
3849
+ }
3850
+ }
3851
+ }
3852
+ this.state = 769;
3853
+ this.errorHandler.sync(this);
3854
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 82, this.context);
3855
+ }
3856
+ this.state = 774;
3857
+ this.errorHandler.sync(this);
3858
+ _la = this.tokenStream.LA(1);
3859
+ while (_la === 2) {
3860
+ {
3861
+ {
3862
+ this.state = 770;
3863
+ this.match(CircuitScriptParser.T__1);
3864
+ this.state = 771;
3865
+ localContext._id_only = this.part_set_key();
3866
+ }
3867
+ }
3868
+ this.state = 776;
3869
+ this.errorHandler.sync(this);
3870
+ _la = this.tokenStream.LA(1);
3871
+ }
3872
+ this.state = 777;
3873
+ this.match(CircuitScriptParser.T__0);
3874
+ this.state = 787;
3875
+ this.errorHandler.sync(this);
3876
+ switch (this.tokenStream.LA(1)) {
3877
+ case CircuitScriptParser.NEWLINE:
3878
+ {
3879
+ this.state = 778;
3880
+ this.part_match_block();
3881
+ }
3882
+ break;
3883
+ case CircuitScriptParser.T__4:
3884
+ case CircuitScriptParser.Create:
3885
+ case CircuitScriptParser.Not:
3886
+ case CircuitScriptParser.Addition:
3887
+ case CircuitScriptParser.Minus:
3888
+ case CircuitScriptParser.Divide:
3889
+ case CircuitScriptParser.OPEN_PAREN:
3890
+ case CircuitScriptParser.BOOLEAN_VALUE:
3891
+ case CircuitScriptParser.ID:
3892
+ case CircuitScriptParser.INTEGER_VALUE:
3893
+ case CircuitScriptParser.DECIMAL_VALUE:
3894
+ case CircuitScriptParser.NUMERIC_VALUE:
3895
+ case CircuitScriptParser.STRING_VALUE:
3896
+ case CircuitScriptParser.PERCENTAGE_VALUE:
3897
+ {
3898
+ {
3899
+ this.state = 779;
3900
+ localContext._data_expr = this.data_expr(0);
3901
+ localContext._last_data.push(localContext._data_expr);
3902
+ this.state = 784;
3903
+ this.errorHandler.sync(this);
3904
+ _la = this.tokenStream.LA(1);
3905
+ while (_la === 2) {
3906
+ {
3907
+ {
3908
+ this.state = 780;
3909
+ this.match(CircuitScriptParser.T__1);
3910
+ this.state = 781;
3911
+ localContext._data_expr = this.data_expr(0);
3912
+ localContext._last_data.push(localContext._data_expr);
3913
+ }
3914
+ }
3915
+ this.state = 786;
3916
+ this.errorHandler.sync(this);
3917
+ _la = this.tokenStream.LA(1);
3918
+ }
3919
+ }
3920
+ }
3921
+ break;
3922
+ default:
3923
+ throw new antlr.NoViableAltException(this);
3924
+ }
3925
+ }
3926
+ }
3927
+ catch (re) {
3928
+ if (re instanceof antlr.RecognitionException) {
3929
+ this.errorHandler.reportError(this, re);
3930
+ this.errorHandler.recover(this, re);
3931
+ }
3932
+ else {
3933
+ throw re;
3934
+ }
3935
+ }
3936
+ finally {
3937
+ this.exitRule();
3938
+ }
3939
+ return localContext;
3940
+ }
3941
+ part_condition_key_only_expr() {
3942
+ let localContext = new Part_condition_key_only_exprContext(this.context, this.state);
3943
+ this.enterRule(localContext, 142, CircuitScriptParser.RULE_part_condition_key_only_expr);
3944
+ try {
3945
+ this.enterOuterAlt(localContext, 1);
3946
+ {
3947
+ this.state = 789;
3948
+ this.part_set_key();
3949
+ this.state = 790;
3950
+ this.match(CircuitScriptParser.T__0);
3951
+ this.state = 791;
3952
+ this.part_match_block();
3953
+ }
3954
+ }
3955
+ catch (re) {
3956
+ if (re instanceof antlr.RecognitionException) {
3957
+ this.errorHandler.reportError(this, re);
3958
+ this.errorHandler.recover(this, re);
3959
+ }
3960
+ else {
3961
+ throw re;
3962
+ }
3963
+ }
3964
+ finally {
3965
+ this.exitRule();
3966
+ }
3967
+ return localContext;
3968
+ }
3969
+ part_value_expr() {
3970
+ let localContext = new Part_value_exprContext(this.context, this.state);
3971
+ this.enterRule(localContext, 144, CircuitScriptParser.RULE_part_value_expr);
3972
+ let _la;
3973
+ try {
3974
+ this.enterOuterAlt(localContext, 1);
3975
+ {
3976
+ this.state = 793;
3977
+ this.part_set_key();
3978
+ this.state = 794;
3979
+ this.match(CircuitScriptParser.T__0);
3980
+ this.state = 795;
3981
+ this.data_expr(0);
3982
+ this.state = 800;
3983
+ this.errorHandler.sync(this);
3984
+ _la = this.tokenStream.LA(1);
3985
+ while (_la === 2) {
3986
+ {
3987
+ {
3988
+ this.state = 796;
3989
+ this.match(CircuitScriptParser.T__1);
3990
+ this.state = 797;
3991
+ this.data_expr(0);
3992
+ }
3993
+ }
3994
+ this.state = 802;
3995
+ this.errorHandler.sync(this);
3996
+ _la = this.tokenStream.LA(1);
3997
+ }
3998
+ }
3999
+ }
4000
+ catch (re) {
4001
+ if (re instanceof antlr.RecognitionException) {
4002
+ this.errorHandler.reportError(this, re);
4003
+ this.errorHandler.recover(this, re);
4004
+ }
4005
+ else {
4006
+ throw re;
4007
+ }
4008
+ }
4009
+ finally {
4010
+ this.exitRule();
4011
+ }
4012
+ return localContext;
4013
+ }
4014
+ annotation_comment_expr() {
4015
+ let localContext = new Annotation_comment_exprContext(this.context, this.state);
4016
+ this.enterRule(localContext, 146, CircuitScriptParser.RULE_annotation_comment_expr);
4017
+ try {
4018
+ this.enterOuterAlt(localContext, 1);
4019
+ {
4020
+ this.state = 803;
4021
+ this.match(CircuitScriptParser.ANNOTATION_START);
4022
+ this.state = 804;
4023
+ this.match(CircuitScriptParser.ID);
4024
+ }
4025
+ }
4026
+ catch (re) {
4027
+ if (re instanceof antlr.RecognitionException) {
4028
+ this.errorHandler.reportError(this, re);
4029
+ this.errorHandler.recover(this, re);
4030
+ }
4031
+ else {
4032
+ throw re;
4033
+ }
4034
+ }
4035
+ finally {
4036
+ this.exitRule();
4037
+ }
4038
+ return localContext;
4039
+ }
4040
+ sempred(localContext, ruleIndex, predIndex) {
4041
+ switch (ruleIndex) {
4042
+ case 32:
4043
+ return this.data_expr_sempred(localContext, predIndex);
4044
+ }
4045
+ return true;
4046
+ }
4047
+ data_expr_sempred(localContext, predIndex) {
4048
+ switch (predIndex) {
4049
+ case 0:
4050
+ return this.precpred(this.context, 10);
4051
+ case 1:
4052
+ return this.precpred(this.context, 9);
4053
+ case 2:
4054
+ return this.precpred(this.context, 8);
4055
+ case 3:
4056
+ return this.precpred(this.context, 7);
4057
+ case 4:
4058
+ return this.precpred(this.context, 1);
4059
+ }
4060
+ return true;
4061
+ }
4062
+ static get _ATN() {
4063
+ if (!CircuitScriptParser.__ATN) {
4064
+ CircuitScriptParser.__ATN = new antlr.ATNDeserializer().deserialize(CircuitScriptParser._serializedATN);
4065
+ }
4066
+ return CircuitScriptParser.__ATN;
4067
+ }
4068
+ get vocabulary() {
4069
+ return CircuitScriptParser.vocabulary;
4070
+ }
4071
+ }
4072
+ exports.CircuitScriptParser = CircuitScriptParser;
4073
+ CircuitScriptParser.T__0 = 1;
4074
+ CircuitScriptParser.T__1 = 2;
4075
+ CircuitScriptParser.T__2 = 3;
4076
+ CircuitScriptParser.T__3 = 4;
4077
+ CircuitScriptParser.T__4 = 5;
4078
+ CircuitScriptParser.T__5 = 6;
4079
+ CircuitScriptParser.T__6 = 7;
4080
+ CircuitScriptParser.T__7 = 8;
4081
+ CircuitScriptParser.Break = 9;
4082
+ CircuitScriptParser.Branch = 10;
4083
+ CircuitScriptParser.Create = 11;
4084
+ CircuitScriptParser.Component = 12;
4085
+ CircuitScriptParser.Graphic = 13;
4086
+ CircuitScriptParser.Module = 14;
4087
+ CircuitScriptParser.Wire = 15;
4088
+ CircuitScriptParser.Pin = 16;
4089
+ CircuitScriptParser.Add = 17;
4090
+ CircuitScriptParser.At = 18;
4091
+ CircuitScriptParser.To = 19;
4092
+ CircuitScriptParser.Point = 20;
4093
+ CircuitScriptParser.Join = 21;
4094
+ CircuitScriptParser.Parallel = 22;
4095
+ CircuitScriptParser.Return = 23;
4096
+ CircuitScriptParser.Define = 24;
4097
+ CircuitScriptParser.Import = 25;
4098
+ CircuitScriptParser.For = 26;
4099
+ CircuitScriptParser.In = 27;
4100
+ CircuitScriptParser.While = 28;
4101
+ CircuitScriptParser.Continue = 29;
4102
+ CircuitScriptParser.If = 30;
4103
+ CircuitScriptParser.Else = 31;
4104
+ CircuitScriptParser.Not = 32;
4105
+ CircuitScriptParser.Frame = 33;
4106
+ CircuitScriptParser.Sheet = 34;
4107
+ CircuitScriptParser.Equals = 35;
4108
+ CircuitScriptParser.NotEquals = 36;
4109
+ CircuitScriptParser.GreaterThan = 37;
4110
+ CircuitScriptParser.GreatOrEqualThan = 38;
4111
+ CircuitScriptParser.LessThan = 39;
4112
+ CircuitScriptParser.LessOrEqualThan = 40;
4113
+ CircuitScriptParser.LogicalAnd = 41;
4114
+ CircuitScriptParser.LogicalOr = 42;
4115
+ CircuitScriptParser.Addition = 43;
4116
+ CircuitScriptParser.Minus = 44;
4117
+ CircuitScriptParser.Divide = 45;
4118
+ CircuitScriptParser.Multiply = 46;
4119
+ CircuitScriptParser.Modulus = 47;
4120
+ CircuitScriptParser.AdditionAssign = 48;
4121
+ CircuitScriptParser.MinusAssign = 49;
4122
+ CircuitScriptParser.DivideAssign = 50;
4123
+ CircuitScriptParser.MultiplyAssign = 51;
4124
+ CircuitScriptParser.ModulusAssign = 52;
4125
+ CircuitScriptParser.ANNOTATION_START = 53;
4126
+ CircuitScriptParser.OPEN_PAREN = 54;
4127
+ CircuitScriptParser.CLOSE_PAREN = 55;
4128
+ CircuitScriptParser.NOT_CONNECTED = 56;
4129
+ CircuitScriptParser.BOOLEAN_VALUE = 57;
4130
+ CircuitScriptParser.ID = 58;
4131
+ CircuitScriptParser.INTEGER_VALUE = 59;
4132
+ CircuitScriptParser.DECIMAL_VALUE = 60;
4133
+ CircuitScriptParser.NUMERIC_VALUE = 61;
4134
+ CircuitScriptParser.STRING_VALUE = 62;
4135
+ CircuitScriptParser.PERCENTAGE_VALUE = 63;
4136
+ CircuitScriptParser.ALPHA_NUMERIC = 64;
4137
+ CircuitScriptParser.WS = 65;
4138
+ CircuitScriptParser.NEWLINE = 66;
4139
+ CircuitScriptParser.COMMENT = 67;
4140
+ CircuitScriptParser.INDENT = 68;
4141
+ CircuitScriptParser.DEDENT = 69;
4142
+ CircuitScriptParser.RULE_script = 0;
4143
+ CircuitScriptParser.RULE_expression = 1;
3744
4144
  CircuitScriptParser.RULE_flow_expressions = 2;
3745
4145
  CircuitScriptParser.RULE_graph_expressions = 3;
3746
4146
  CircuitScriptParser.RULE_graph_linear_expression = 4;
@@ -3805,10 +4205,17 @@ CircuitScriptParser.RULE_if_inner_expr = 62;
3805
4205
  CircuitScriptParser.RULE_else_expr = 63;
3806
4206
  CircuitScriptParser.RULE_while_expr = 64;
3807
4207
  CircuitScriptParser.RULE_for_expr = 65;
3808
- CircuitScriptParser.RULE_annotation_comment_expr = 66;
4208
+ CircuitScriptParser.RULE_part_set_expr = 66;
4209
+ CircuitScriptParser.RULE_part_set_key = 67;
4210
+ CircuitScriptParser.RULE_part_match_block = 68;
4211
+ CircuitScriptParser.RULE_part_sub_expr = 69;
4212
+ CircuitScriptParser.RULE_part_condition_expr = 70;
4213
+ CircuitScriptParser.RULE_part_condition_key_only_expr = 71;
4214
+ CircuitScriptParser.RULE_part_value_expr = 72;
4215
+ CircuitScriptParser.RULE_annotation_comment_expr = 73;
3809
4216
  CircuitScriptParser.literalNames = [
3810
- null, "':'", "','", "'='", "'..'", "'['", "']'", "'.'", "'break'",
3811
- "'branch'", "'create'", "'component'", "'graphic'", "'module'",
4217
+ null, "':'", "','", "'='", "'..'", "'['", "']'", "'.'", "'set'",
4218
+ "'break'", "'branch'", "'create'", "'component'", "'graphic'", "'module'",
3812
4219
  "'wire'", "'pin'", "'add'", "'at'", "'to'", "'point'", "'join'",
3813
4220
  "'parallel'", "'return'", "'def'", "'import'", "'for'", "'in'",
3814
4221
  "'while'", "'continue'", "'if'", "'else'", null, "'frame'", "'sheet'",
@@ -3817,7 +4224,7 @@ CircuitScriptParser.literalNames = [
3817
4224
  "'#='", "'('", "')'"
3818
4225
  ];
3819
4226
  CircuitScriptParser.symbolicNames = [
3820
- null, null, null, null, null, null, null, null, "Break", "Branch",
4227
+ null, null, null, null, null, null, null, null, null, "Break", "Branch",
3821
4228
  "Create", "Component", "Graphic", "Module", "Wire", "Pin", "Add",
3822
4229
  "At", "To", "Point", "Join", "Parallel", "Return", "Define", "Import",
3823
4230
  "For", "In", "While", "Continue", "If", "Else", "Not", "Frame",
@@ -3849,10 +4256,12 @@ CircuitScriptParser.ruleNames = [
3849
4256
  "nested_properties_inner", "graphic_expr", "property_expr", "property_key_expr",
3850
4257
  "property_value_expr", "wire_atom_expr", "wire_expr", "array_expr",
3851
4258
  "point_expr", "import_expr", "frame_expr", "if_expr", "if_inner_expr",
3852
- "else_expr", "while_expr", "for_expr", "annotation_comment_expr",
4259
+ "else_expr", "while_expr", "for_expr", "part_set_expr", "part_set_key",
4260
+ "part_match_block", "part_sub_expr", "part_condition_expr", "part_condition_key_only_expr",
4261
+ "part_value_expr", "annotation_comment_expr",
3853
4262
  ];
3854
4263
  CircuitScriptParser._serializedATN = [
3855
- 4, 1, 68, 716, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7,
4264
+ 4, 1, 69, 807, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7,
3856
4265
  6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13,
3857
4266
  2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20,
3858
4267
  7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26,
@@ -3862,259 +4271,293 @@ CircuitScriptParser._serializedATN = [
3862
4271
  7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52,
3863
4272
  2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59,
3864
4273
  7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65,
3865
- 2, 66, 7, 66, 1, 0, 1, 0, 5, 0, 137, 8, 0, 10, 0, 12, 0, 140, 9, 0, 1, 0, 1, 0, 4, 0, 144,
3866
- 8, 0, 11, 0, 12, 0, 145, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3867
- 1, 1, 1, 1, 1, 1, 1, 3, 1, 163, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 170, 8, 2, 1, 3, 1,
3868
- 3, 3, 3, 174, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 182, 8, 4, 1, 5, 1, 5, 1, 5, 1,
3869
- 5, 4, 5, 188, 8, 5, 11, 5, 12, 5, 189, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7,
3870
- 1, 7, 1, 7, 1, 7, 4, 7, 204, 8, 7, 11, 7, 12, 7, 205, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1,
3871
- 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 221, 8, 10, 1, 11, 1, 11, 3, 11, 225, 8,
3872
- 11, 1, 11, 5, 11, 228, 8, 11, 10, 11, 12, 11, 231, 9, 11, 1, 11, 3, 11, 234, 8, 11, 1,
3873
- 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 242, 8, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1,
3874
- 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 253, 8, 16, 10, 16, 12, 16, 256, 9, 16, 1, 17, 1,
3875
- 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 264, 8, 17, 10, 17, 12, 17, 267, 9, 17, 1, 17, 1,
3876
- 17, 1, 17, 1, 17, 1, 17, 4, 17, 274, 8, 17, 11, 17, 12, 17, 275, 1, 17, 1, 17, 1, 18, 1,
3877
- 18, 1, 18, 1, 18, 1, 18, 5, 18, 285, 8, 18, 10, 18, 12, 18, 288, 9, 18, 1, 19, 1, 19, 1,
3878
- 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 297, 8, 20, 11, 20, 12, 20, 298, 1, 20, 1, 20, 1,
3879
- 21, 1, 21, 3, 21, 305, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 310, 8, 22, 10, 22, 12, 22, 313,
3880
- 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 319, 8, 23, 1, 24, 1, 24, 3, 24, 323, 8, 24, 1,
3881
- 25, 1, 25, 1, 26, 1, 26, 3, 26, 329, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1,
3882
- 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 345, 8, 29, 10, 29, 12, 29,
3883
- 348, 9, 29, 1, 29, 1, 29, 5, 29, 352, 8, 29, 10, 29, 12, 29, 355, 9, 29, 1, 29, 1, 29,
3884
- 1, 29, 5, 29, 360, 8, 29, 10, 29, 12, 29, 363, 9, 29, 3, 29, 365, 8, 29, 1, 30, 1, 30,
3885
- 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
3886
- 1, 32, 3, 32, 383, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32,
3887
- 393, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
3888
- 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 413, 8, 32, 10, 32, 12, 32, 416,
3889
- 9, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 423, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36,
3890
- 1, 36, 1, 36, 3, 36, 431, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36, 439, 8,
3891
- 36, 11, 36, 12, 36, 440, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 447, 8, 37, 1, 38, 1, 38, 1,
3892
- 38, 5, 38, 452, 8, 38, 10, 38, 12, 38, 455, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 461,
3893
- 8, 38, 10, 38, 12, 38, 464, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38,
3894
- 473, 8, 38, 10, 38, 12, 38, 476, 9, 38, 3, 38, 478, 8, 38, 1, 39, 1, 39, 5, 39, 482, 8,
3895
- 39, 10, 39, 12, 39, 485, 9, 39, 1, 40, 1, 40, 3, 40, 489, 8, 40, 1, 40, 1, 40, 3, 40, 493,
3896
- 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 501, 8, 41, 1, 42, 3, 42, 504, 8,
3897
- 42, 1, 42, 1, 42, 4, 42, 508, 8, 42, 11, 42, 12, 42, 509, 1, 43, 3, 43, 513, 8, 43, 1,
3898
- 43, 1, 43, 3, 43, 517, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1,
3899
- 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 533, 8, 46, 11, 46, 12, 46, 534, 1, 46, 1,
3900
- 46, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 543, 8, 47, 11, 47, 12, 47, 544, 1, 47, 1, 47, 1,
3901
- 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 554, 8, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1,
3902
- 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 567, 8, 49, 11, 49, 12, 49, 568, 1, 49, 1,
3903
- 49, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 577, 8, 50, 11, 50, 12, 50, 578, 1, 50, 1, 50, 1,
3904
- 51, 1, 51, 3, 51, 585, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 593, 8, 51,
3905
- 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 599, 8, 51, 10, 51, 12, 51, 602, 9, 51, 1, 51, 1, 51,
3906
- 1, 51, 1, 51, 1, 51, 3, 51, 609, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54,
3907
- 1, 54, 1, 54, 1, 54, 5, 54, 621, 8, 54, 10, 54, 12, 54, 624, 9, 54, 3, 54, 626, 8, 54,
3908
- 1, 55, 1, 55, 1, 55, 3, 55, 631, 8, 55, 1, 55, 3, 55, 634, 8, 55, 1, 56, 1, 56, 5, 56, 638,
3909
- 8, 56, 10, 56, 12, 56, 641, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 647, 8, 57, 10, 57,
3910
- 12, 57, 650, 9, 57, 5, 57, 652, 8, 57, 10, 57, 12, 57, 655, 9, 57, 1, 57, 1, 57, 1, 58,
3911
- 1, 58, 1, 58, 3, 58, 662, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61,
3912
- 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 676, 8, 61, 10, 61, 12, 61, 679, 9, 61, 1, 61, 3, 61,
3913
- 682, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64,
3914
- 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 703, 8, 65, 10, 65, 12, 65,
3915
- 706, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 0, 1, 64, 67,
3916
- 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44,
3917
- 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
3918
- 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
3919
- 126, 128, 130, 132, 0, 14, 2, 0, 9, 9, 19, 21, 1, 0, 57, 58, 2, 0, 58, 58, 61, 61, 2, 0,
3920
- 55, 55, 58, 58, 1, 0, 47, 51, 1, 0, 44, 46, 1, 0, 42, 43, 1, 0, 40, 41, 1, 0, 34, 39, 2,
3921
- 0, 31, 31, 43, 43, 2, 0, 56, 56, 58, 62, 2, 0, 15, 15, 57, 57, 2, 0, 57, 58, 61, 61, 1,
3922
- 0, 32, 33, 756, 0, 138, 1, 0, 0, 0, 2, 162, 1, 0, 0, 0, 4, 169, 1, 0, 0, 0, 6, 173, 1, 0,
3923
- 0, 0, 8, 181, 1, 0, 0, 0, 10, 183, 1, 0, 0, 0, 12, 193, 1, 0, 0, 0, 14, 197, 1, 0, 0, 0, 16,
3924
- 209, 1, 0, 0, 0, 18, 213, 1, 0, 0, 0, 20, 216, 1, 0, 0, 0, 22, 224, 1, 0, 0, 0, 24, 235,
3925
- 1, 0, 0, 0, 26, 241, 1, 0, 0, 0, 28, 243, 1, 0, 0, 0, 30, 245, 1, 0, 0, 0, 32, 248, 1, 0,
3926
- 0, 0, 34, 257, 1, 0, 0, 0, 36, 279, 1, 0, 0, 0, 38, 289, 1, 0, 0, 0, 40, 291, 1, 0, 0, 0,
3927
- 42, 304, 1, 0, 0, 0, 44, 306, 1, 0, 0, 0, 46, 314, 1, 0, 0, 0, 48, 322, 1, 0, 0, 0, 50, 324,
3928
- 1, 0, 0, 0, 52, 328, 1, 0, 0, 0, 54, 333, 1, 0, 0, 0, 56, 337, 1, 0, 0, 0, 58, 364, 1, 0,
3929
- 0, 0, 60, 366, 1, 0, 0, 0, 62, 370, 1, 0, 0, 0, 64, 392, 1, 0, 0, 0, 66, 417, 1, 0, 0, 0,
3930
- 68, 419, 1, 0, 0, 0, 70, 422, 1, 0, 0, 0, 72, 426, 1, 0, 0, 0, 74, 446, 1, 0, 0, 0, 76, 477,
3931
- 1, 0, 0, 0, 78, 479, 1, 0, 0, 0, 80, 492, 1, 0, 0, 0, 82, 500, 1, 0, 0, 0, 84, 503, 1, 0,
3932
- 0, 0, 86, 512, 1, 0, 0, 0, 88, 518, 1, 0, 0, 0, 90, 521, 1, 0, 0, 0, 92, 525, 1, 0, 0, 0,
3933
- 94, 538, 1, 0, 0, 0, 96, 548, 1, 0, 0, 0, 98, 558, 1, 0, 0, 0, 100, 572, 1, 0, 0, 0, 102,
3934
- 608, 1, 0, 0, 0, 104, 610, 1, 0, 0, 0, 106, 614, 1, 0, 0, 0, 108, 625, 1, 0, 0, 0, 110,
3935
- 633, 1, 0, 0, 0, 112, 635, 1, 0, 0, 0, 114, 642, 1, 0, 0, 0, 116, 658, 1, 0, 0, 0, 118,
3936
- 663, 1, 0, 0, 0, 120, 666, 1, 0, 0, 0, 122, 670, 1, 0, 0, 0, 124, 683, 1, 0, 0, 0, 126,
3937
- 689, 1, 0, 0, 0, 128, 693, 1, 0, 0, 0, 130, 698, 1, 0, 0, 0, 132, 712, 1, 0, 0, 0, 134,
3938
- 137, 3, 118, 59, 0, 135, 137, 5, 65, 0, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0,
3939
- 137, 140, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 143, 1, 0, 0, 0,
3940
- 140, 138, 1, 0, 0, 0, 141, 144, 3, 2, 1, 0, 142, 144, 5, 65, 0, 0, 143, 141, 1, 0, 0, 0,
3941
- 143, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0,
3942
- 146, 147, 1, 0, 0, 0, 147, 148, 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 163, 3, 6, 3, 0, 150,
3943
- 163, 3, 52, 26, 0, 151, 163, 3, 54, 27, 0, 152, 163, 3, 60, 30, 0, 153, 163, 3, 14, 7,
3944
- 0, 154, 163, 3, 62, 31, 0, 155, 163, 3, 72, 36, 0, 156, 163, 3, 84, 42, 0, 157, 163,
3945
- 3, 118, 59, 0, 158, 163, 3, 78, 39, 0, 159, 163, 3, 120, 60, 0, 160, 163, 3, 4, 2, 0,
3946
- 161, 163, 3, 132, 66, 0, 162, 149, 1, 0, 0, 0, 162, 150, 1, 0, 0, 0, 162, 151, 1, 0, 0,
3947
- 0, 162, 152, 1, 0, 0, 0, 162, 153, 1, 0, 0, 0, 162, 154, 1, 0, 0, 0, 162, 155, 1, 0, 0,
3948
- 0, 162, 156, 1, 0, 0, 0, 162, 157, 1, 0, 0, 0, 162, 158, 1, 0, 0, 0, 162, 159, 1, 0, 0,
3949
- 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, 3, 1, 0, 0, 0, 164, 170, 3, 122, 61,
3950
- 0, 165, 170, 3, 128, 64, 0, 166, 170, 3, 130, 65, 0, 167, 170, 5, 8, 0, 0, 168, 170,
3951
- 5, 28, 0, 0, 169, 164, 1, 0, 0, 0, 169, 165, 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 167,
3952
- 1, 0, 0, 0, 169, 168, 1, 0, 0, 0, 170, 5, 1, 0, 0, 0, 171, 174, 3, 8, 4, 0, 172, 174, 3,
3953
- 12, 6, 0, 173, 171, 1, 0, 0, 0, 173, 172, 1, 0, 0, 0, 174, 7, 1, 0, 0, 0, 175, 182, 3, 24,
3954
- 12, 0, 176, 182, 3, 32, 16, 0, 177, 182, 3, 30, 15, 0, 178, 182, 3, 40, 20, 0, 179, 182,
3955
- 3, 112, 56, 0, 180, 182, 3, 116, 58, 0, 181, 175, 1, 0, 0, 0, 181, 176, 1, 0, 0, 0, 181,
3956
- 177, 1, 0, 0, 0, 181, 178, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 180, 1, 0, 0, 0, 182,
3957
- 9, 1, 0, 0, 0, 183, 184, 5, 65, 0, 0, 184, 187, 5, 67, 0, 0, 185, 188, 5, 65, 0, 0, 186,
3958
- 188, 3, 2, 1, 0, 187, 185, 1, 0, 0, 0, 187, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189,
3959
- 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 5, 68, 0, 0, 192,
3960
- 11, 1, 0, 0, 0, 193, 194, 7, 0, 0, 0, 194, 195, 5, 1, 0, 0, 195, 196, 3, 10, 5, 0, 196,
3961
- 13, 1, 0, 0, 0, 197, 198, 3, 78, 39, 0, 198, 199, 5, 1, 0, 0, 199, 200, 5, 65, 0, 0, 200,
3962
- 203, 5, 67, 0, 0, 201, 204, 5, 65, 0, 0, 202, 204, 3, 16, 8, 0, 203, 201, 1, 0, 0, 0, 203,
3963
- 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206,
3964
- 207, 1, 0, 0, 0, 207, 208, 5, 68, 0, 0, 208, 15, 1, 0, 0, 0, 209, 210, 7, 1, 0, 0, 210,
3965
- 211, 5, 1, 0, 0, 211, 212, 3, 70, 35, 0, 212, 17, 1, 0, 0, 0, 213, 214, 5, 15, 0, 0, 214,
3966
- 215, 3, 64, 32, 0, 215, 19, 1, 0, 0, 0, 216, 217, 5, 57, 0, 0, 217, 220, 5, 1, 0, 0, 218,
3967
- 221, 3, 70, 35, 0, 219, 221, 5, 57, 0, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221,
3968
- 21, 1, 0, 0, 0, 222, 225, 3, 64, 32, 0, 223, 225, 3, 52, 26, 0, 224, 222, 1, 0, 0, 0, 224,
3969
- 223, 1, 0, 0, 0, 225, 229, 1, 0, 0, 0, 226, 228, 3, 20, 10, 0, 227, 226, 1, 0, 0, 0, 228,
3970
- 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 233, 1, 0, 0, 0, 231,
3971
- 229, 1, 0, 0, 0, 232, 234, 3, 18, 9, 0, 233, 232, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234,
3972
- 23, 1, 0, 0, 0, 235, 236, 5, 16, 0, 0, 236, 237, 3, 22, 11, 0, 237, 25, 1, 0, 0, 0, 238,
3973
- 242, 3, 22, 11, 0, 239, 242, 3, 18, 9, 0, 240, 242, 5, 19, 0, 0, 241, 238, 1, 0, 0, 0,
3974
- 241, 239, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 27, 1, 0, 0, 0, 243, 244, 7, 2, 0, 0, 244,
3975
- 29, 1, 0, 0, 0, 245, 246, 5, 17, 0, 0, 246, 247, 3, 26, 13, 0, 247, 31, 1, 0, 0, 0, 248,
3976
- 249, 5, 18, 0, 0, 249, 254, 3, 26, 13, 0, 250, 251, 5, 2, 0, 0, 251, 253, 3, 26, 13, 0,
3977
- 252, 250, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0,
3978
- 255, 33, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 258, 5, 17, 0, 0, 258, 259, 3, 26, 13,
3979
- 0, 259, 260, 5, 18, 0, 0, 260, 265, 3, 26, 13, 0, 261, 262, 5, 2, 0, 0, 262, 264, 3, 26,
3980
- 13, 0, 263, 261, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0,
3981
- 0, 0, 266, 268, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 269, 5, 1, 0, 0, 269, 270, 5, 65,
3982
- 0, 0, 270, 273, 5, 67, 0, 0, 271, 274, 5, 65, 0, 0, 272, 274, 3, 36, 18, 0, 273, 271,
3983
- 1, 0, 0, 0, 273, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276,
3984
- 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 278, 5, 68, 0, 0, 278, 35, 1, 0, 0, 0, 279, 280,
3985
- 3, 28, 14, 0, 280, 281, 5, 1, 0, 0, 281, 286, 3, 38, 19, 0, 282, 283, 5, 2, 0, 0, 283,
3986
- 285, 3, 38, 19, 0, 284, 282, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286,
3987
- 287, 1, 0, 0, 0, 287, 37, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 290, 7, 3, 0, 0, 290, 39,
3988
- 1, 0, 0, 0, 291, 292, 3, 44, 22, 0, 292, 293, 5, 65, 0, 0, 293, 296, 5, 67, 0, 0, 294,
3989
- 297, 5, 65, 0, 0, 295, 297, 3, 42, 21, 0, 296, 294, 1, 0, 0, 0, 296, 295, 1, 0, 0, 0, 297,
3990
- 298, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300,
3991
- 301, 5, 68, 0, 0, 301, 41, 1, 0, 0, 0, 302, 305, 3, 2, 1, 0, 303, 305, 3, 46, 23, 0, 304,
3992
- 302, 1, 0, 0, 0, 304, 303, 1, 0, 0, 0, 305, 43, 1, 0, 0, 0, 306, 307, 3, 30, 15, 0, 307,
3993
- 311, 5, 1, 0, 0, 308, 310, 3, 132, 66, 0, 309, 308, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311,
3994
- 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 45, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 315,
3995
- 3, 28, 14, 0, 315, 318, 5, 1, 0, 0, 316, 319, 3, 48, 24, 0, 317, 319, 3, 50, 25, 0, 318,
3996
- 316, 1, 0, 0, 0, 318, 317, 1, 0, 0, 0, 319, 47, 1, 0, 0, 0, 320, 323, 3, 2, 1, 0, 321, 323,
3997
- 5, 55, 0, 0, 322, 320, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 49, 1, 0, 0, 0, 324, 325,
3998
- 3, 10, 5, 0, 325, 51, 1, 0, 0, 0, 326, 329, 3, 78, 39, 0, 327, 329, 3, 84, 42, 0, 328,
3999
- 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 5, 3, 0, 0, 331,
4000
- 332, 3, 64, 32, 0, 332, 53, 1, 0, 0, 0, 333, 334, 3, 78, 39, 0, 334, 335, 7, 4, 0, 0, 335,
4001
- 336, 3, 64, 32, 0, 336, 55, 1, 0, 0, 0, 337, 338, 5, 57, 0, 0, 338, 339, 5, 3, 0, 0, 339,
4002
- 340, 3, 64, 32, 0, 340, 57, 1, 0, 0, 0, 341, 346, 3, 64, 32, 0, 342, 343, 5, 2, 0, 0, 343,
4003
- 345, 3, 64, 32, 0, 344, 342, 1, 0, 0, 0, 345, 348, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 346,
4004
- 347, 1, 0, 0, 0, 347, 353, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 349, 350, 5, 2, 0, 0, 350,
4005
- 352, 3, 56, 28, 0, 351, 349, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353,
4006
- 354, 1, 0, 0, 0, 354, 365, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 356, 361, 3, 56, 28, 0, 357,
4007
- 358, 5, 2, 0, 0, 358, 360, 3, 56, 28, 0, 359, 357, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361,
4008
- 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 364,
4009
- 341, 1, 0, 0, 0, 364, 356, 1, 0, 0, 0, 365, 59, 1, 0, 0, 0, 366, 367, 3, 78, 39, 0, 367,
4010
- 368, 5, 3, 0, 0, 368, 369, 3, 64, 32, 0, 369, 61, 1, 0, 0, 0, 370, 371, 5, 4, 0, 0, 371,
4011
- 372, 5, 57, 0, 0, 372, 373, 5, 3, 0, 0, 373, 374, 3, 64, 32, 0, 374, 63, 1, 0, 0, 0, 375,
4012
- 376, 6, 32, -1, 0, 376, 377, 5, 53, 0, 0, 377, 378, 3, 64, 32, 0, 378, 379, 5, 54, 0,
4013
- 0, 379, 393, 1, 0, 0, 0, 380, 383, 3, 70, 35, 0, 381, 383, 3, 78, 39, 0, 382, 380, 1,
4014
- 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 393, 1, 0, 0, 0, 384, 385, 3, 68, 34, 0, 385, 386,
4015
- 3, 64, 32, 11, 386, 393, 1, 0, 0, 0, 387, 393, 3, 92, 46, 0, 388, 393, 3, 96, 48, 0, 389,
4016
- 393, 3, 98, 49, 0, 390, 393, 3, 84, 42, 0, 391, 393, 3, 114, 57, 0, 392, 375, 1, 0, 0,
4017
- 0, 392, 382, 1, 0, 0, 0, 392, 384, 1, 0, 0, 0, 392, 387, 1, 0, 0, 0, 392, 388, 1, 0, 0,
4018
- 0, 392, 389, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 392, 391, 1, 0, 0, 0, 393, 414, 1, 0, 0,
4019
- 0, 394, 395, 10, 10, 0, 0, 395, 396, 7, 5, 0, 0, 396, 413, 3, 64, 32, 11, 397, 398, 10,
4020
- 9, 0, 0, 398, 399, 7, 6, 0, 0, 399, 413, 3, 64, 32, 10, 400, 401, 10, 8, 0, 0, 401, 402,
4021
- 3, 66, 33, 0, 402, 403, 3, 64, 32, 9, 403, 413, 1, 0, 0, 0, 404, 405, 10, 7, 0, 0, 405,
4022
- 406, 7, 7, 0, 0, 406, 413, 3, 64, 32, 8, 407, 408, 10, 1, 0, 0, 408, 409, 5, 5, 0, 0, 409,
4023
- 410, 3, 64, 32, 0, 410, 411, 5, 6, 0, 0, 411, 413, 1, 0, 0, 0, 412, 394, 1, 0, 0, 0, 412,
4024
- 397, 1, 0, 0, 0, 412, 400, 1, 0, 0, 0, 412, 404, 1, 0, 0, 0, 412, 407, 1, 0, 0, 0, 413,
4025
- 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 65, 1, 0, 0, 0, 416, 414,
4026
- 1, 0, 0, 0, 417, 418, 7, 8, 0, 0, 418, 67, 1, 0, 0, 0, 419, 420, 7, 9, 0, 0, 420, 69, 1,
4027
- 0, 0, 0, 421, 423, 5, 43, 0, 0, 422, 421, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1,
4028
- 0, 0, 0, 424, 425, 7, 10, 0, 0, 425, 71, 1, 0, 0, 0, 426, 427, 5, 23, 0, 0, 427, 428, 5,
4029
- 57, 0, 0, 428, 430, 5, 53, 0, 0, 429, 431, 3, 76, 38, 0, 430, 429, 1, 0, 0, 0, 430, 431,
4030
- 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 5, 54, 0, 0, 433, 434, 5, 1, 0, 0, 434, 435,
4031
- 5, 65, 0, 0, 435, 438, 5, 67, 0, 0, 436, 439, 5, 65, 0, 0, 437, 439, 3, 74, 37, 0, 438,
4032
- 436, 1, 0, 0, 0, 438, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440,
4033
- 441, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 443, 5, 68, 0, 0, 443, 73, 1, 0, 0, 0, 444,
4034
- 447, 3, 2, 1, 0, 445, 447, 3, 88, 44, 0, 446, 444, 1, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447,
4035
- 75, 1, 0, 0, 0, 448, 453, 5, 57, 0, 0, 449, 450, 5, 2, 0, 0, 450, 452, 5, 57, 0, 0, 451,
4036
- 449, 1, 0, 0, 0, 452, 455, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454,
4037
- 462, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 456, 457, 5, 2, 0, 0, 457, 458, 5, 57, 0, 0, 458,
4038
- 459, 5, 3, 0, 0, 459, 461, 3, 70, 35, 0, 460, 456, 1, 0, 0, 0, 461, 464, 1, 0, 0, 0, 462,
4039
- 460, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 478, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 465,
4040
- 466, 5, 57, 0, 0, 466, 467, 5, 3, 0, 0, 467, 474, 3, 70, 35, 0, 468, 469, 5, 2, 0, 0, 469,
4041
- 470, 5, 57, 0, 0, 470, 471, 5, 3, 0, 0, 471, 473, 3, 70, 35, 0, 472, 468, 1, 0, 0, 0, 473,
4042
- 476, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 478, 1, 0, 0, 0, 476,
4043
- 474, 1, 0, 0, 0, 477, 448, 1, 0, 0, 0, 477, 465, 1, 0, 0, 0, 478, 77, 1, 0, 0, 0, 479, 483,
4044
- 5, 57, 0, 0, 480, 482, 3, 82, 41, 0, 481, 480, 1, 0, 0, 0, 482, 485, 1, 0, 0, 0, 483, 481,
4045
- 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 79, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 486, 488, 5,
4046
- 53, 0, 0, 487, 489, 3, 58, 29, 0, 488, 487, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 490,
4047
- 1, 0, 0, 0, 490, 493, 5, 54, 0, 0, 491, 493, 3, 82, 41, 0, 492, 486, 1, 0, 0, 0, 492, 491,
4048
- 1, 0, 0, 0, 493, 81, 1, 0, 0, 0, 494, 495, 5, 7, 0, 0, 495, 501, 5, 57, 0, 0, 496, 497,
4049
- 5, 5, 0, 0, 497, 498, 3, 64, 32, 0, 498, 499, 5, 6, 0, 0, 499, 501, 1, 0, 0, 0, 500, 494,
4050
- 1, 0, 0, 0, 500, 496, 1, 0, 0, 0, 501, 83, 1, 0, 0, 0, 502, 504, 3, 86, 43, 0, 503, 502,
4051
- 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 507, 5, 57, 0, 0, 506, 508,
4052
- 3, 80, 40, 0, 507, 506, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510,
4053
- 1, 0, 0, 0, 510, 85, 1, 0, 0, 0, 511, 513, 5, 42, 0, 0, 512, 511, 1, 0, 0, 0, 512, 513,
4054
- 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 516, 5, 44, 0, 0, 515, 517, 3, 64, 32, 0, 516, 515,
4055
- 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 87, 1, 0, 0, 0, 518, 519, 5, 22, 0, 0, 519, 520,
4056
- 3, 64, 32, 0, 520, 89, 1, 0, 0, 0, 521, 522, 3, 106, 53, 0, 522, 523, 5, 1, 0, 0, 523,
4057
- 524, 3, 10, 5, 0, 524, 91, 1, 0, 0, 0, 525, 526, 5, 10, 0, 0, 526, 527, 5, 11, 0, 0, 527,
4058
- 528, 5, 1, 0, 0, 528, 529, 5, 65, 0, 0, 529, 532, 5, 67, 0, 0, 530, 533, 5, 65, 0, 0, 531,
4059
- 533, 3, 104, 52, 0, 532, 530, 1, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534,
4060
- 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 537, 5, 68, 0, 0, 537,
4061
- 93, 1, 0, 0, 0, 538, 539, 5, 65, 0, 0, 539, 542, 5, 67, 0, 0, 540, 543, 5, 65, 0, 0, 541,
4062
- 543, 3, 102, 51, 0, 542, 540, 1, 0, 0, 0, 542, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544,
4063
- 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 68, 0, 0, 547,
4064
- 95, 1, 0, 0, 0, 548, 549, 5, 10, 0, 0, 549, 553, 5, 12, 0, 0, 550, 551, 5, 53, 0, 0, 551,
4065
- 552, 5, 57, 0, 0, 552, 554, 5, 54, 0, 0, 553, 550, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554,
4066
- 555, 1, 0, 0, 0, 555, 556, 5, 1, 0, 0, 556, 557, 3, 94, 47, 0, 557, 97, 1, 0, 0, 0, 558,
4067
- 559, 5, 10, 0, 0, 559, 560, 5, 13, 0, 0, 560, 561, 5, 1, 0, 0, 561, 562, 5, 65, 0, 0, 562,
4068
- 566, 5, 67, 0, 0, 563, 567, 5, 65, 0, 0, 564, 567, 3, 104, 52, 0, 565, 567, 3, 90, 45,
4069
- 0, 566, 563, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 566, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0,
4070
- 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 5, 68, 0,
4071
- 0, 571, 99, 1, 0, 0, 0, 572, 573, 5, 65, 0, 0, 573, 576, 5, 67, 0, 0, 574, 577, 5, 65,
4072
- 0, 0, 575, 577, 3, 104, 52, 0, 576, 574, 1, 0, 0, 0, 576, 575, 1, 0, 0, 0, 577, 578, 1,
4073
- 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 5,
4074
- 68, 0, 0, 581, 101, 1, 0, 0, 0, 582, 584, 7, 11, 0, 0, 583, 585, 5, 1, 0, 0, 584, 583,
4075
- 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 592, 1, 0, 0, 0, 586, 593, 3, 58, 29, 0, 587, 588,
4076
- 5, 53, 0, 0, 588, 589, 3, 58, 29, 0, 589, 590, 5, 54, 0, 0, 590, 593, 1, 0, 0, 0, 591,
4077
- 593, 3, 100, 50, 0, 592, 586, 1, 0, 0, 0, 592, 587, 1, 0, 0, 0, 592, 591, 1, 0, 0, 0, 593,
4078
- 609, 1, 0, 0, 0, 594, 595, 5, 25, 0, 0, 595, 600, 5, 57, 0, 0, 596, 597, 5, 2, 0, 0, 597,
4079
- 599, 5, 57, 0, 0, 598, 596, 1, 0, 0, 0, 599, 602, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 600,
4080
- 601, 1, 0, 0, 0, 601, 603, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 603, 604, 5, 26, 0, 0, 604,
4081
- 605, 3, 64, 32, 0, 605, 606, 5, 1, 0, 0, 606, 607, 3, 94, 47, 0, 607, 609, 1, 0, 0, 0,
4082
- 608, 582, 1, 0, 0, 0, 608, 594, 1, 0, 0, 0, 609, 103, 1, 0, 0, 0, 610, 611, 3, 106, 53,
4083
- 0, 611, 612, 5, 1, 0, 0, 612, 613, 3, 108, 54, 0, 613, 105, 1, 0, 0, 0, 614, 615, 7, 12,
4084
- 0, 0, 615, 107, 1, 0, 0, 0, 616, 626, 3, 100, 50, 0, 617, 622, 3, 64, 32, 0, 618, 619,
4085
- 5, 2, 0, 0, 619, 621, 3, 64, 32, 0, 620, 618, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 620,
4086
- 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 625, 616,
4087
- 1, 0, 0, 0, 625, 617, 1, 0, 0, 0, 626, 109, 1, 0, 0, 0, 627, 630, 5, 57, 0, 0, 628, 631,
4088
- 5, 58, 0, 0, 629, 631, 3, 64, 32, 0, 630, 628, 1, 0, 0, 0, 630, 629, 1, 0, 0, 0, 631, 634,
4089
- 1, 0, 0, 0, 632, 634, 5, 57, 0, 0, 633, 627, 1, 0, 0, 0, 633, 632, 1, 0, 0, 0, 634, 111,
4090
- 1, 0, 0, 0, 635, 639, 5, 14, 0, 0, 636, 638, 3, 110, 55, 0, 637, 636, 1, 0, 0, 0, 638,
4091
- 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 113, 1, 0, 0, 0, 641,
4092
- 639, 1, 0, 0, 0, 642, 653, 5, 5, 0, 0, 643, 648, 3, 64, 32, 0, 644, 645, 5, 2, 0, 0, 645,
4093
- 647, 3, 64, 32, 0, 646, 644, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 648,
4094
- 649, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 643, 1, 0, 0, 0, 652,
4095
- 655, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 656, 1, 0, 0, 0, 655,
4096
- 653, 1, 0, 0, 0, 656, 657, 5, 6, 0, 0, 657, 115, 1, 0, 0, 0, 658, 661, 5, 19, 0, 0, 659,
4097
- 662, 5, 57, 0, 0, 660, 662, 3, 64, 32, 0, 661, 659, 1, 0, 0, 0, 661, 660, 1, 0, 0, 0, 662,
4098
- 117, 1, 0, 0, 0, 663, 664, 5, 24, 0, 0, 664, 665, 5, 57, 0, 0, 665, 119, 1, 0, 0, 0, 666,
4099
- 667, 7, 13, 0, 0, 667, 668, 5, 1, 0, 0, 668, 669, 3, 10, 5, 0, 669, 121, 1, 0, 0, 0, 670,
4100
- 671, 5, 29, 0, 0, 671, 672, 3, 64, 32, 0, 672, 673, 5, 1, 0, 0, 673, 677, 3, 10, 5, 0,
4101
- 674, 676, 3, 124, 62, 0, 675, 674, 1, 0, 0, 0, 676, 679, 1, 0, 0, 0, 677, 675, 1, 0, 0,
4102
- 0, 677, 678, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 680, 682, 3, 126,
4103
- 63, 0, 681, 680, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 123, 1, 0, 0, 0, 683, 684, 5, 30,
4104
- 0, 0, 684, 685, 5, 29, 0, 0, 685, 686, 3, 64, 32, 0, 686, 687, 5, 1, 0, 0, 687, 688, 3,
4105
- 10, 5, 0, 688, 125, 1, 0, 0, 0, 689, 690, 5, 30, 0, 0, 690, 691, 5, 1, 0, 0, 691, 692,
4106
- 3, 10, 5, 0, 692, 127, 1, 0, 0, 0, 693, 694, 5, 27, 0, 0, 694, 695, 3, 64, 32, 0, 695,
4107
- 696, 5, 1, 0, 0, 696, 697, 3, 10, 5, 0, 697, 129, 1, 0, 0, 0, 698, 699, 5, 25, 0, 0, 699,
4108
- 704, 5, 57, 0, 0, 700, 701, 5, 2, 0, 0, 701, 703, 5, 57, 0, 0, 702, 700, 1, 0, 0, 0, 703,
4109
- 706, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 707, 1, 0, 0, 0, 706,
4110
- 704, 1, 0, 0, 0, 707, 708, 5, 26, 0, 0, 708, 709, 3, 64, 32, 0, 709, 710, 5, 1, 0, 0, 710,
4111
- 711, 3, 10, 5, 0, 711, 131, 1, 0, 0, 0, 712, 713, 5, 52, 0, 0, 713, 714, 5, 57, 0, 0, 714,
4112
- 133, 1, 0, 0, 0, 78, 136, 138, 143, 145, 162, 169, 173, 181, 187, 189, 203, 205, 220,
4113
- 224, 229, 233, 241, 254, 265, 273, 275, 286, 296, 298, 304, 311, 318, 322, 328,
4114
- 346, 353, 361, 364, 382, 392, 412, 414, 422, 430, 438, 440, 446, 453, 462, 474,
4115
- 477, 483, 488, 492, 500, 503, 509, 512, 516, 532, 534, 542, 544, 553, 566, 568,
4116
- 576, 578, 584, 592, 600, 608, 622, 625, 630, 633, 639, 648, 653, 661, 677, 681,
4117
- 704
4274
+ 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72,
4275
+ 7, 72, 2, 73, 7, 73, 1, 0, 1, 0, 5, 0, 151, 8, 0, 10, 0, 12, 0, 154, 9, 0, 1, 0, 1, 0, 4, 0,
4276
+ 158, 8, 0, 11, 0, 12, 0, 159, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4277
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 178, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 185, 8,
4278
+ 2, 1, 3, 1, 3, 3, 3, 189, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 197, 8, 4, 1, 5, 1,
4279
+ 5, 1, 5, 1, 5, 4, 5, 203, 8, 5, 11, 5, 12, 5, 204, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7,
4280
+ 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 219, 8, 7, 11, 7, 12, 7, 220, 1, 7, 1, 7, 1, 8, 1, 8, 1,
4281
+ 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 236, 8, 10, 1, 11, 1, 11, 3,
4282
+ 11, 240, 8, 11, 1, 11, 5, 11, 243, 8, 11, 10, 11, 12, 11, 246, 9, 11, 1, 11, 3, 11, 249,
4283
+ 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 257, 8, 13, 1, 14, 1, 14, 1, 15,
4284
+ 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 268, 8, 16, 10, 16, 12, 16, 271, 9, 16,
4285
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 279, 8, 17, 10, 17, 12, 17, 282, 9, 17,
4286
+ 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 289, 8, 17, 11, 17, 12, 17, 290, 1, 17, 1, 17,
4287
+ 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 300, 8, 18, 10, 18, 12, 18, 303, 9, 18, 1, 19,
4288
+ 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 312, 8, 20, 11, 20, 12, 20, 313, 1, 20,
4289
+ 1, 20, 1, 21, 1, 21, 3, 21, 320, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 325, 8, 22, 10, 22,
4290
+ 12, 22, 328, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 334, 8, 23, 1, 24, 1, 24, 3, 24,
4291
+ 338, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 344, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1,
4292
+ 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 360, 8, 29, 10,
4293
+ 29, 12, 29, 363, 9, 29, 1, 29, 1, 29, 5, 29, 367, 8, 29, 10, 29, 12, 29, 370, 9, 29, 1,
4294
+ 29, 1, 29, 1, 29, 5, 29, 375, 8, 29, 10, 29, 12, 29, 378, 9, 29, 3, 29, 380, 8, 29, 1,
4295
+ 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4296
+ 32, 1, 32, 1, 32, 3, 32, 398, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4297
+ 32, 3, 32, 408, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
4298
+ 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 428, 8, 32, 10, 32, 12,
4299
+ 32, 431, 9, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 438, 8, 35, 1, 35, 1, 35, 1, 36,
4300
+ 1, 36, 1, 36, 1, 36, 3, 36, 446, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36,
4301
+ 454, 8, 36, 11, 36, 12, 36, 455, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 462, 8, 37, 1, 38,
4302
+ 1, 38, 1, 38, 5, 38, 467, 8, 38, 10, 38, 12, 38, 470, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4303
+ 5, 38, 476, 8, 38, 10, 38, 12, 38, 479, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38,
4304
+ 1, 38, 5, 38, 488, 8, 38, 10, 38, 12, 38, 491, 9, 38, 3, 38, 493, 8, 38, 1, 39, 1, 39,
4305
+ 5, 39, 497, 8, 39, 10, 39, 12, 39, 500, 9, 39, 1, 40, 1, 40, 3, 40, 504, 8, 40, 1, 40,
4306
+ 1, 40, 3, 40, 508, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 516, 8, 41, 1,
4307
+ 42, 3, 42, 519, 8, 42, 1, 42, 1, 42, 4, 42, 523, 8, 42, 11, 42, 12, 42, 524, 1, 43, 3,
4308
+ 43, 528, 8, 43, 1, 43, 1, 43, 3, 43, 532, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45,
4309
+ 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 548, 8, 46, 11, 46, 12, 46,
4310
+ 549, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 558, 8, 47, 11, 47, 12, 47, 559,
4311
+ 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 569, 8, 48, 1, 48, 1, 48, 1, 48,
4312
+ 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 582, 8, 49, 11, 49, 12, 49,
4313
+ 583, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 592, 8, 50, 11, 50, 12, 50, 593,
4314
+ 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 600, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51,
4315
+ 3, 51, 608, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 614, 8, 51, 10, 51, 12, 51, 617,
4316
+ 9, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 624, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52,
4317
+ 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 636, 8, 54, 10, 54, 12, 54, 639, 9, 54,
4318
+ 3, 54, 641, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 646, 8, 55, 1, 55, 3, 55, 649, 8, 55, 1,
4319
+ 56, 1, 56, 5, 56, 653, 8, 56, 10, 56, 12, 56, 656, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5,
4320
+ 57, 662, 8, 57, 10, 57, 12, 57, 665, 9, 57, 5, 57, 667, 8, 57, 10, 57, 12, 57, 670, 9,
4321
+ 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 3, 58, 677, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1,
4322
+ 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 691, 8, 61, 10, 61, 12, 61,
4323
+ 694, 9, 61, 1, 61, 3, 61, 697, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1,
4324
+ 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 718,
4325
+ 8, 65, 10, 65, 12, 65, 721, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66,
4326
+ 1, 66, 1, 66, 5, 66, 733, 8, 66, 10, 66, 12, 66, 736, 9, 66, 1, 66, 1, 66, 1, 66, 1, 67,
4327
+ 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 747, 8, 68, 11, 68, 12, 68, 748, 1, 68, 1, 68,
4328
+ 1, 69, 1, 69, 1, 69, 3, 69, 756, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70,
4329
+ 1, 70, 5, 70, 766, 8, 70, 10, 70, 12, 70, 769, 9, 70, 1, 70, 1, 70, 5, 70, 773, 8, 70,
4330
+ 10, 70, 12, 70, 776, 9, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 783, 8, 70, 10, 70,
4331
+ 12, 70, 786, 9, 70, 3, 70, 788, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72,
4332
+ 1, 72, 1, 72, 5, 72, 799, 8, 72, 10, 72, 12, 72, 802, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73,
4333
+ 0, 1, 64, 74, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
4334
+ 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
4335
+ 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
4336
+ 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 0, 15, 2, 0,
4337
+ 10, 10, 20, 22, 1, 0, 58, 59, 2, 0, 59, 59, 62, 62, 2, 0, 56, 56, 59, 59, 1, 0, 48, 52,
4338
+ 1, 0, 45, 47, 1, 0, 43, 44, 1, 0, 41, 42, 1, 0, 35, 40, 2, 0, 32, 32, 44, 44, 2, 0, 57, 57,
4339
+ 59, 63, 2, 0, 16, 16, 58, 58, 2, 0, 58, 59, 62, 62, 1, 0, 33, 34, 2, 0, 58, 59, 61, 63,
4340
+ 851, 0, 152, 1, 0, 0, 0, 2, 177, 1, 0, 0, 0, 4, 184, 1, 0, 0, 0, 6, 188, 1, 0, 0, 0, 8, 196,
4341
+ 1, 0, 0, 0, 10, 198, 1, 0, 0, 0, 12, 208, 1, 0, 0, 0, 14, 212, 1, 0, 0, 0, 16, 224, 1, 0,
4342
+ 0, 0, 18, 228, 1, 0, 0, 0, 20, 231, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 250, 1, 0, 0, 0,
4343
+ 26, 256, 1, 0, 0, 0, 28, 258, 1, 0, 0, 0, 30, 260, 1, 0, 0, 0, 32, 263, 1, 0, 0, 0, 34, 272,
4344
+ 1, 0, 0, 0, 36, 294, 1, 0, 0, 0, 38, 304, 1, 0, 0, 0, 40, 306, 1, 0, 0, 0, 42, 319, 1, 0,
4345
+ 0, 0, 44, 321, 1, 0, 0, 0, 46, 329, 1, 0, 0, 0, 48, 337, 1, 0, 0, 0, 50, 339, 1, 0, 0, 0,
4346
+ 52, 343, 1, 0, 0, 0, 54, 348, 1, 0, 0, 0, 56, 352, 1, 0, 0, 0, 58, 379, 1, 0, 0, 0, 60, 381,
4347
+ 1, 0, 0, 0, 62, 385, 1, 0, 0, 0, 64, 407, 1, 0, 0, 0, 66, 432, 1, 0, 0, 0, 68, 434, 1, 0,
4348
+ 0, 0, 70, 437, 1, 0, 0, 0, 72, 441, 1, 0, 0, 0, 74, 461, 1, 0, 0, 0, 76, 492, 1, 0, 0, 0,
4349
+ 78, 494, 1, 0, 0, 0, 80, 507, 1, 0, 0, 0, 82, 515, 1, 0, 0, 0, 84, 518, 1, 0, 0, 0, 86, 527,
4350
+ 1, 0, 0, 0, 88, 533, 1, 0, 0, 0, 90, 536, 1, 0, 0, 0, 92, 540, 1, 0, 0, 0, 94, 553, 1, 0,
4351
+ 0, 0, 96, 563, 1, 0, 0, 0, 98, 573, 1, 0, 0, 0, 100, 587, 1, 0, 0, 0, 102, 623, 1, 0, 0,
4352
+ 0, 104, 625, 1, 0, 0, 0, 106, 629, 1, 0, 0, 0, 108, 640, 1, 0, 0, 0, 110, 648, 1, 0, 0,
4353
+ 0, 112, 650, 1, 0, 0, 0, 114, 657, 1, 0, 0, 0, 116, 673, 1, 0, 0, 0, 118, 678, 1, 0, 0,
4354
+ 0, 120, 681, 1, 0, 0, 0, 122, 685, 1, 0, 0, 0, 124, 698, 1, 0, 0, 0, 126, 704, 1, 0, 0,
4355
+ 0, 128, 708, 1, 0, 0, 0, 130, 713, 1, 0, 0, 0, 132, 727, 1, 0, 0, 0, 134, 740, 1, 0, 0,
4356
+ 0, 136, 742, 1, 0, 0, 0, 138, 755, 1, 0, 0, 0, 140, 757, 1, 0, 0, 0, 142, 789, 1, 0, 0,
4357
+ 0, 144, 793, 1, 0, 0, 0, 146, 803, 1, 0, 0, 0, 148, 151, 3, 118, 59, 0, 149, 151, 5, 66,
4358
+ 0, 0, 150, 148, 1, 0, 0, 0, 150, 149, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0,
4359
+ 0, 0, 152, 153, 1, 0, 0, 0, 153, 157, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 158, 3, 2,
4360
+ 1, 0, 156, 158, 5, 66, 0, 0, 157, 155, 1, 0, 0, 0, 157, 156, 1, 0, 0, 0, 158, 159, 1, 0,
4361
+ 0, 0, 159, 157, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 5, 0,
4362
+ 0, 1, 162, 1, 1, 0, 0, 0, 163, 178, 3, 6, 3, 0, 164, 178, 3, 52, 26, 0, 165, 178, 3, 54,
4363
+ 27, 0, 166, 178, 3, 60, 30, 0, 167, 178, 3, 14, 7, 0, 168, 178, 3, 62, 31, 0, 169, 178,
4364
+ 3, 72, 36, 0, 170, 178, 3, 84, 42, 0, 171, 178, 3, 118, 59, 0, 172, 178, 3, 78, 39, 0,
4365
+ 173, 178, 3, 120, 60, 0, 174, 178, 3, 4, 2, 0, 175, 178, 3, 146, 73, 0, 176, 178, 3,
4366
+ 132, 66, 0, 177, 163, 1, 0, 0, 0, 177, 164, 1, 0, 0, 0, 177, 165, 1, 0, 0, 0, 177, 166,
4367
+ 1, 0, 0, 0, 177, 167, 1, 0, 0, 0, 177, 168, 1, 0, 0, 0, 177, 169, 1, 0, 0, 0, 177, 170,
4368
+ 1, 0, 0, 0, 177, 171, 1, 0, 0, 0, 177, 172, 1, 0, 0, 0, 177, 173, 1, 0, 0, 0, 177, 174,
4369
+ 1, 0, 0, 0, 177, 175, 1, 0, 0, 0, 177, 176, 1, 0, 0, 0, 178, 3, 1, 0, 0, 0, 179, 185, 3,
4370
+ 122, 61, 0, 180, 185, 3, 128, 64, 0, 181, 185, 3, 130, 65, 0, 182, 185, 5, 9, 0, 0, 183,
4371
+ 185, 5, 29, 0, 0, 184, 179, 1, 0, 0, 0, 184, 180, 1, 0, 0, 0, 184, 181, 1, 0, 0, 0, 184,
4372
+ 182, 1, 0, 0, 0, 184, 183, 1, 0, 0, 0, 185, 5, 1, 0, 0, 0, 186, 189, 3, 8, 4, 0, 187, 189,
4373
+ 3, 12, 6, 0, 188, 186, 1, 0, 0, 0, 188, 187, 1, 0, 0, 0, 189, 7, 1, 0, 0, 0, 190, 197, 3,
4374
+ 24, 12, 0, 191, 197, 3, 32, 16, 0, 192, 197, 3, 30, 15, 0, 193, 197, 3, 40, 20, 0, 194,
4375
+ 197, 3, 112, 56, 0, 195, 197, 3, 116, 58, 0, 196, 190, 1, 0, 0, 0, 196, 191, 1, 0, 0,
4376
+ 0, 196, 192, 1, 0, 0, 0, 196, 193, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 195, 1, 0, 0,
4377
+ 0, 197, 9, 1, 0, 0, 0, 198, 199, 5, 66, 0, 0, 199, 202, 5, 68, 0, 0, 200, 203, 5, 66, 0,
4378
+ 0, 201, 203, 3, 2, 1, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 204, 1, 0, 0,
4379
+ 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 5, 69, 0,
4380
+ 0, 207, 11, 1, 0, 0, 0, 208, 209, 7, 0, 0, 0, 209, 210, 5, 1, 0, 0, 210, 211, 3, 10, 5,
4381
+ 0, 211, 13, 1, 0, 0, 0, 212, 213, 3, 78, 39, 0, 213, 214, 5, 1, 0, 0, 214, 215, 5, 66,
4382
+ 0, 0, 215, 218, 5, 68, 0, 0, 216, 219, 5, 66, 0, 0, 217, 219, 3, 16, 8, 0, 218, 216, 1,
4383
+ 0, 0, 0, 218, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 218, 1, 0, 0, 0, 220, 221, 1,
4384
+ 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 5, 69, 0, 0, 223, 15, 1, 0, 0, 0, 224, 225, 7,
4385
+ 1, 0, 0, 225, 226, 5, 1, 0, 0, 226, 227, 3, 70, 35, 0, 227, 17, 1, 0, 0, 0, 228, 229, 5,
4386
+ 16, 0, 0, 229, 230, 3, 64, 32, 0, 230, 19, 1, 0, 0, 0, 231, 232, 5, 58, 0, 0, 232, 235,
4387
+ 5, 1, 0, 0, 233, 236, 3, 70, 35, 0, 234, 236, 5, 58, 0, 0, 235, 233, 1, 0, 0, 0, 235, 234,
4388
+ 1, 0, 0, 0, 236, 21, 1, 0, 0, 0, 237, 240, 3, 64, 32, 0, 238, 240, 3, 52, 26, 0, 239, 237,
4389
+ 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, 240, 244, 1, 0, 0, 0, 241, 243, 3, 20, 10, 0, 242, 241,
4390
+ 1, 0, 0, 0, 243, 246, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 248,
4391
+ 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 247, 249, 3, 18, 9, 0, 248, 247, 1, 0, 0, 0, 248, 249,
4392
+ 1, 0, 0, 0, 249, 23, 1, 0, 0, 0, 250, 251, 5, 17, 0, 0, 251, 252, 3, 22, 11, 0, 252, 25,
4393
+ 1, 0, 0, 0, 253, 257, 3, 22, 11, 0, 254, 257, 3, 18, 9, 0, 255, 257, 5, 20, 0, 0, 256,
4394
+ 253, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 256, 255, 1, 0, 0, 0, 257, 27, 1, 0, 0, 0, 258, 259,
4395
+ 7, 2, 0, 0, 259, 29, 1, 0, 0, 0, 260, 261, 5, 18, 0, 0, 261, 262, 3, 26, 13, 0, 262, 31,
4396
+ 1, 0, 0, 0, 263, 264, 5, 19, 0, 0, 264, 269, 3, 26, 13, 0, 265, 266, 5, 2, 0, 0, 266, 268,
4397
+ 3, 26, 13, 0, 267, 265, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270,
4398
+ 1, 0, 0, 0, 270, 33, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 273, 5, 18, 0, 0, 273, 274,
4399
+ 3, 26, 13, 0, 274, 275, 5, 19, 0, 0, 275, 280, 3, 26, 13, 0, 276, 277, 5, 2, 0, 0, 277,
4400
+ 279, 3, 26, 13, 0, 278, 276, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280,
4401
+ 281, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 5, 1, 0, 0, 284,
4402
+ 285, 5, 66, 0, 0, 285, 288, 5, 68, 0, 0, 286, 289, 5, 66, 0, 0, 287, 289, 3, 36, 18, 0,
4403
+ 288, 286, 1, 0, 0, 0, 288, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0,
4404
+ 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 69, 0, 0, 293, 35, 1, 0, 0, 0,
4405
+ 294, 295, 3, 28, 14, 0, 295, 296, 5, 1, 0, 0, 296, 301, 3, 38, 19, 0, 297, 298, 5, 2,
4406
+ 0, 0, 298, 300, 3, 38, 19, 0, 299, 297, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1,
4407
+ 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 37, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 7, 3,
4408
+ 0, 0, 305, 39, 1, 0, 0, 0, 306, 307, 3, 44, 22, 0, 307, 308, 5, 66, 0, 0, 308, 311, 5,
4409
+ 68, 0, 0, 309, 312, 5, 66, 0, 0, 310, 312, 3, 42, 21, 0, 311, 309, 1, 0, 0, 0, 311, 310,
4410
+ 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315,
4411
+ 1, 0, 0, 0, 315, 316, 5, 69, 0, 0, 316, 41, 1, 0, 0, 0, 317, 320, 3, 2, 1, 0, 318, 320,
4412
+ 3, 46, 23, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 43, 1, 0, 0, 0, 321, 322,
4413
+ 3, 30, 15, 0, 322, 326, 5, 1, 0, 0, 323, 325, 3, 146, 73, 0, 324, 323, 1, 0, 0, 0, 325,
4414
+ 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 45, 1, 0, 0, 0, 328, 326,
4415
+ 1, 0, 0, 0, 329, 330, 3, 28, 14, 0, 330, 333, 5, 1, 0, 0, 331, 334, 3, 48, 24, 0, 332,
4416
+ 334, 3, 50, 25, 0, 333, 331, 1, 0, 0, 0, 333, 332, 1, 0, 0, 0, 334, 47, 1, 0, 0, 0, 335,
4417
+ 338, 3, 2, 1, 0, 336, 338, 5, 56, 0, 0, 337, 335, 1, 0, 0, 0, 337, 336, 1, 0, 0, 0, 338,
4418
+ 49, 1, 0, 0, 0, 339, 340, 3, 10, 5, 0, 340, 51, 1, 0, 0, 0, 341, 344, 3, 78, 39, 0, 342,
4419
+ 344, 3, 84, 42, 0, 343, 341, 1, 0, 0, 0, 343, 342, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345,
4420
+ 346, 5, 3, 0, 0, 346, 347, 3, 64, 32, 0, 347, 53, 1, 0, 0, 0, 348, 349, 3, 78, 39, 0, 349,
4421
+ 350, 7, 4, 0, 0, 350, 351, 3, 64, 32, 0, 351, 55, 1, 0, 0, 0, 352, 353, 5, 58, 0, 0, 353,
4422
+ 354, 5, 3, 0, 0, 354, 355, 3, 64, 32, 0, 355, 57, 1, 0, 0, 0, 356, 361, 3, 64, 32, 0, 357,
4423
+ 358, 5, 2, 0, 0, 358, 360, 3, 64, 32, 0, 359, 357, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361,
4424
+ 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 368, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 364,
4425
+ 365, 5, 2, 0, 0, 365, 367, 3, 56, 28, 0, 366, 364, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368,
4426
+ 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371,
4427
+ 376, 3, 56, 28, 0, 372, 373, 5, 2, 0, 0, 373, 375, 3, 56, 28, 0, 374, 372, 1, 0, 0, 0,
4428
+ 375, 378, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0,
4429
+ 378, 376, 1, 0, 0, 0, 379, 356, 1, 0, 0, 0, 379, 371, 1, 0, 0, 0, 380, 59, 1, 0, 0, 0, 381,
4430
+ 382, 3, 78, 39, 0, 382, 383, 5, 3, 0, 0, 383, 384, 3, 64, 32, 0, 384, 61, 1, 0, 0, 0, 385,
4431
+ 386, 5, 4, 0, 0, 386, 387, 5, 58, 0, 0, 387, 388, 5, 3, 0, 0, 388, 389, 3, 64, 32, 0, 389,
4432
+ 63, 1, 0, 0, 0, 390, 391, 6, 32, -1, 0, 391, 392, 5, 54, 0, 0, 392, 393, 3, 64, 32, 0,
4433
+ 393, 394, 5, 55, 0, 0, 394, 408, 1, 0, 0, 0, 395, 398, 3, 70, 35, 0, 396, 398, 3, 78,
4434
+ 39, 0, 397, 395, 1, 0, 0, 0, 397, 396, 1, 0, 0, 0, 398, 408, 1, 0, 0, 0, 399, 400, 3, 68,
4435
+ 34, 0, 400, 401, 3, 64, 32, 11, 401, 408, 1, 0, 0, 0, 402, 408, 3, 92, 46, 0, 403, 408,
4436
+ 3, 96, 48, 0, 404, 408, 3, 98, 49, 0, 405, 408, 3, 84, 42, 0, 406, 408, 3, 114, 57, 0,
4437
+ 407, 390, 1, 0, 0, 0, 407, 397, 1, 0, 0, 0, 407, 399, 1, 0, 0, 0, 407, 402, 1, 0, 0, 0,
4438
+ 407, 403, 1, 0, 0, 0, 407, 404, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 407, 406, 1, 0, 0, 0,
4439
+ 408, 429, 1, 0, 0, 0, 409, 410, 10, 10, 0, 0, 410, 411, 7, 5, 0, 0, 411, 428, 3, 64, 32,
4440
+ 11, 412, 413, 10, 9, 0, 0, 413, 414, 7, 6, 0, 0, 414, 428, 3, 64, 32, 10, 415, 416, 10,
4441
+ 8, 0, 0, 416, 417, 3, 66, 33, 0, 417, 418, 3, 64, 32, 9, 418, 428, 1, 0, 0, 0, 419, 420,
4442
+ 10, 7, 0, 0, 420, 421, 7, 7, 0, 0, 421, 428, 3, 64, 32, 8, 422, 423, 10, 1, 0, 0, 423,
4443
+ 424, 5, 5, 0, 0, 424, 425, 3, 64, 32, 0, 425, 426, 5, 6, 0, 0, 426, 428, 1, 0, 0, 0, 427,
4444
+ 409, 1, 0, 0, 0, 427, 412, 1, 0, 0, 0, 427, 415, 1, 0, 0, 0, 427, 419, 1, 0, 0, 0, 427,
4445
+ 422, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430,
4446
+ 65, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 433, 7, 8, 0, 0, 433, 67, 1, 0, 0, 0, 434, 435,
4447
+ 7, 9, 0, 0, 435, 69, 1, 0, 0, 0, 436, 438, 5, 44, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438,
4448
+ 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 7, 10, 0, 0, 440, 71, 1, 0, 0, 0, 441, 442,
4449
+ 5, 24, 0, 0, 442, 443, 5, 58, 0, 0, 443, 445, 5, 54, 0, 0, 444, 446, 3, 76, 38, 0, 445,
4450
+ 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 448, 5, 55, 0, 0, 448,
4451
+ 449, 5, 1, 0, 0, 449, 450, 5, 66, 0, 0, 450, 453, 5, 68, 0, 0, 451, 454, 5, 66, 0, 0, 452,
4452
+ 454, 3, 74, 37, 0, 453, 451, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455,
4453
+ 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 5, 69, 0, 0, 458,
4454
+ 73, 1, 0, 0, 0, 459, 462, 3, 2, 1, 0, 460, 462, 3, 88, 44, 0, 461, 459, 1, 0, 0, 0, 461,
4455
+ 460, 1, 0, 0, 0, 462, 75, 1, 0, 0, 0, 463, 468, 5, 58, 0, 0, 464, 465, 5, 2, 0, 0, 465,
4456
+ 467, 5, 58, 0, 0, 466, 464, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468,
4457
+ 469, 1, 0, 0, 0, 469, 477, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 472, 5, 2, 0, 0, 472,
4458
+ 473, 5, 58, 0, 0, 473, 474, 5, 3, 0, 0, 474, 476, 3, 70, 35, 0, 475, 471, 1, 0, 0, 0, 476,
4459
+ 479, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 493, 1, 0, 0, 0, 479,
4460
+ 477, 1, 0, 0, 0, 480, 481, 5, 58, 0, 0, 481, 482, 5, 3, 0, 0, 482, 489, 3, 70, 35, 0, 483,
4461
+ 484, 5, 2, 0, 0, 484, 485, 5, 58, 0, 0, 485, 486, 5, 3, 0, 0, 486, 488, 3, 70, 35, 0, 487,
4462
+ 483, 1, 0, 0, 0, 488, 491, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490,
4463
+ 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 463, 1, 0, 0, 0, 492, 480, 1, 0, 0, 0, 493,
4464
+ 77, 1, 0, 0, 0, 494, 498, 5, 58, 0, 0, 495, 497, 3, 82, 41, 0, 496, 495, 1, 0, 0, 0, 497,
4465
+ 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 79, 1, 0, 0, 0, 500, 498,
4466
+ 1, 0, 0, 0, 501, 503, 5, 54, 0, 0, 502, 504, 3, 58, 29, 0, 503, 502, 1, 0, 0, 0, 503, 504,
4467
+ 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 508, 5, 55, 0, 0, 506, 508, 3, 82, 41, 0, 507, 501,
4468
+ 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 81, 1, 0, 0, 0, 509, 510, 5, 7, 0, 0, 510, 516, 5,
4469
+ 58, 0, 0, 511, 512, 5, 5, 0, 0, 512, 513, 3, 64, 32, 0, 513, 514, 5, 6, 0, 0, 514, 516,
4470
+ 1, 0, 0, 0, 515, 509, 1, 0, 0, 0, 515, 511, 1, 0, 0, 0, 516, 83, 1, 0, 0, 0, 517, 519, 3,
4471
+ 86, 43, 0, 518, 517, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 522,
4472
+ 5, 58, 0, 0, 521, 523, 3, 80, 40, 0, 522, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 522,
4473
+ 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 85, 1, 0, 0, 0, 526, 528, 5, 43, 0, 0, 527, 526,
4474
+ 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 531, 5, 45, 0, 0, 530, 532,
4475
+ 3, 64, 32, 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 87, 1, 0, 0, 0, 533, 534,
4476
+ 5, 23, 0, 0, 534, 535, 3, 64, 32, 0, 535, 89, 1, 0, 0, 0, 536, 537, 3, 106, 53, 0, 537,
4477
+ 538, 5, 1, 0, 0, 538, 539, 3, 10, 5, 0, 539, 91, 1, 0, 0, 0, 540, 541, 5, 11, 0, 0, 541,
4478
+ 542, 5, 12, 0, 0, 542, 543, 5, 1, 0, 0, 543, 544, 5, 66, 0, 0, 544, 547, 5, 68, 0, 0, 545,
4479
+ 548, 5, 66, 0, 0, 546, 548, 3, 104, 52, 0, 547, 545, 1, 0, 0, 0, 547, 546, 1, 0, 0, 0,
4480
+ 548, 549, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0,
4481
+ 551, 552, 5, 69, 0, 0, 552, 93, 1, 0, 0, 0, 553, 554, 5, 66, 0, 0, 554, 557, 5, 68, 0,
4482
+ 0, 555, 558, 5, 66, 0, 0, 556, 558, 3, 102, 51, 0, 557, 555, 1, 0, 0, 0, 557, 556, 1,
4483
+ 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 1,
4484
+ 0, 0, 0, 561, 562, 5, 69, 0, 0, 562, 95, 1, 0, 0, 0, 563, 564, 5, 11, 0, 0, 564, 568, 5,
4485
+ 13, 0, 0, 565, 566, 5, 54, 0, 0, 566, 567, 5, 58, 0, 0, 567, 569, 5, 55, 0, 0, 568, 565,
4486
+ 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 5, 1, 0, 0, 571, 572,
4487
+ 3, 94, 47, 0, 572, 97, 1, 0, 0, 0, 573, 574, 5, 11, 0, 0, 574, 575, 5, 14, 0, 0, 575, 576,
4488
+ 5, 1, 0, 0, 576, 577, 5, 66, 0, 0, 577, 581, 5, 68, 0, 0, 578, 582, 5, 66, 0, 0, 579, 582,
4489
+ 3, 104, 52, 0, 580, 582, 3, 90, 45, 0, 581, 578, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581,
4490
+ 580, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584,
4491
+ 585, 1, 0, 0, 0, 585, 586, 5, 69, 0, 0, 586, 99, 1, 0, 0, 0, 587, 588, 5, 66, 0, 0, 588,
4492
+ 591, 5, 68, 0, 0, 589, 592, 5, 66, 0, 0, 590, 592, 3, 104, 52, 0, 591, 589, 1, 0, 0, 0,
4493
+ 591, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0,
4494
+ 594, 595, 1, 0, 0, 0, 595, 596, 5, 69, 0, 0, 596, 101, 1, 0, 0, 0, 597, 599, 7, 11, 0,
4495
+ 0, 598, 600, 5, 1, 0, 0, 599, 598, 1, 0, 0, 0, 599, 600, 1, 0, 0, 0, 600, 607, 1, 0, 0,
4496
+ 0, 601, 608, 3, 58, 29, 0, 602, 603, 5, 54, 0, 0, 603, 604, 3, 58, 29, 0, 604, 605, 5,
4497
+ 55, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 100, 50, 0, 607, 601, 1, 0, 0, 0, 607, 602,
4498
+ 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 624, 1, 0, 0, 0, 609, 610, 5, 26, 0, 0, 610, 615,
4499
+ 5, 58, 0, 0, 611, 612, 5, 2, 0, 0, 612, 614, 5, 58, 0, 0, 613, 611, 1, 0, 0, 0, 614, 617,
4500
+ 1, 0, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 618, 1, 0, 0, 0, 617, 615,
4501
+ 1, 0, 0, 0, 618, 619, 5, 27, 0, 0, 619, 620, 3, 64, 32, 0, 620, 621, 5, 1, 0, 0, 621, 622,
4502
+ 3, 94, 47, 0, 622, 624, 1, 0, 0, 0, 623, 597, 1, 0, 0, 0, 623, 609, 1, 0, 0, 0, 624, 103,
4503
+ 1, 0, 0, 0, 625, 626, 3, 106, 53, 0, 626, 627, 5, 1, 0, 0, 627, 628, 3, 108, 54, 0, 628,
4504
+ 105, 1, 0, 0, 0, 629, 630, 7, 12, 0, 0, 630, 107, 1, 0, 0, 0, 631, 641, 3, 100, 50, 0,
4505
+ 632, 637, 3, 64, 32, 0, 633, 634, 5, 2, 0, 0, 634, 636, 3, 64, 32, 0, 635, 633, 1, 0,
4506
+ 0, 0, 636, 639, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 641, 1, 0,
4507
+ 0, 0, 639, 637, 1, 0, 0, 0, 640, 631, 1, 0, 0, 0, 640, 632, 1, 0, 0, 0, 641, 109, 1, 0,
4508
+ 0, 0, 642, 645, 5, 58, 0, 0, 643, 646, 5, 59, 0, 0, 644, 646, 3, 64, 32, 0, 645, 643,
4509
+ 1, 0, 0, 0, 645, 644, 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647, 649, 5, 58, 0, 0, 648, 642,
4510
+ 1, 0, 0, 0, 648, 647, 1, 0, 0, 0, 649, 111, 1, 0, 0, 0, 650, 654, 5, 15, 0, 0, 651, 653,
4511
+ 3, 110, 55, 0, 652, 651, 1, 0, 0, 0, 653, 656, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655,
4512
+ 1, 0, 0, 0, 655, 113, 1, 0, 0, 0, 656, 654, 1, 0, 0, 0, 657, 668, 5, 5, 0, 0, 658, 663,
4513
+ 3, 64, 32, 0, 659, 660, 5, 2, 0, 0, 660, 662, 3, 64, 32, 0, 661, 659, 1, 0, 0, 0, 662,
4514
+ 665, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 667, 1, 0, 0, 0, 665,
4515
+ 663, 1, 0, 0, 0, 666, 658, 1, 0, 0, 0, 667, 670, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 668,
4516
+ 669, 1, 0, 0, 0, 669, 671, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 671, 672, 5, 6, 0, 0, 672,
4517
+ 115, 1, 0, 0, 0, 673, 676, 5, 20, 0, 0, 674, 677, 5, 58, 0, 0, 675, 677, 3, 64, 32, 0,
4518
+ 676, 674, 1, 0, 0, 0, 676, 675, 1, 0, 0, 0, 677, 117, 1, 0, 0, 0, 678, 679, 5, 25, 0, 0,
4519
+ 679, 680, 5, 58, 0, 0, 680, 119, 1, 0, 0, 0, 681, 682, 7, 13, 0, 0, 682, 683, 5, 1, 0,
4520
+ 0, 683, 684, 3, 10, 5, 0, 684, 121, 1, 0, 0, 0, 685, 686, 5, 30, 0, 0, 686, 687, 3, 64,
4521
+ 32, 0, 687, 688, 5, 1, 0, 0, 688, 692, 3, 10, 5, 0, 689, 691, 3, 124, 62, 0, 690, 689,
4522
+ 1, 0, 0, 0, 691, 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 696,
4523
+ 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 695, 697, 3, 126, 63, 0, 696, 695, 1, 0, 0, 0, 696, 697,
4524
+ 1, 0, 0, 0, 697, 123, 1, 0, 0, 0, 698, 699, 5, 31, 0, 0, 699, 700, 5, 30, 0, 0, 700, 701,
4525
+ 3, 64, 32, 0, 701, 702, 5, 1, 0, 0, 702, 703, 3, 10, 5, 0, 703, 125, 1, 0, 0, 0, 704, 705,
4526
+ 5, 31, 0, 0, 705, 706, 5, 1, 0, 0, 706, 707, 3, 10, 5, 0, 707, 127, 1, 0, 0, 0, 708, 709,
4527
+ 5, 28, 0, 0, 709, 710, 3, 64, 32, 0, 710, 711, 5, 1, 0, 0, 711, 712, 3, 10, 5, 0, 712,
4528
+ 129, 1, 0, 0, 0, 713, 714, 5, 26, 0, 0, 714, 719, 5, 58, 0, 0, 715, 716, 5, 2, 0, 0, 716,
4529
+ 718, 5, 58, 0, 0, 717, 715, 1, 0, 0, 0, 718, 721, 1, 0, 0, 0, 719, 717, 1, 0, 0, 0, 719,
4530
+ 720, 1, 0, 0, 0, 720, 722, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 722, 723, 5, 27, 0, 0, 723,
4531
+ 724, 3, 64, 32, 0, 724, 725, 5, 1, 0, 0, 725, 726, 3, 10, 5, 0, 726, 131, 1, 0, 0, 0, 727,
4532
+ 728, 5, 8, 0, 0, 728, 729, 5, 1, 0, 0, 729, 734, 3, 64, 32, 0, 730, 731, 5, 2, 0, 0, 731,
4533
+ 733, 3, 64, 32, 0, 732, 730, 1, 0, 0, 0, 733, 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734,
4534
+ 735, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 737, 738, 5, 1, 0, 0, 738,
4535
+ 739, 3, 136, 68, 0, 739, 133, 1, 0, 0, 0, 740, 741, 7, 14, 0, 0, 741, 135, 1, 0, 0, 0,
4536
+ 742, 743, 5, 66, 0, 0, 743, 746, 5, 68, 0, 0, 744, 747, 5, 66, 0, 0, 745, 747, 3, 138,
4537
+ 69, 0, 746, 744, 1, 0, 0, 0, 746, 745, 1, 0, 0, 0, 747, 748, 1, 0, 0, 0, 748, 746, 1, 0,
4538
+ 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 5, 69, 0, 0, 751, 137, 1, 0,
4539
+ 0, 0, 752, 756, 3, 140, 70, 0, 753, 756, 3, 144, 72, 0, 754, 756, 3, 142, 71, 0, 755,
4540
+ 752, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 755, 754, 1, 0, 0, 0, 756, 139, 1, 0, 0, 0, 757,
4541
+ 758, 3, 134, 67, 0, 758, 759, 5, 1, 0, 0, 759, 767, 3, 64, 32, 0, 760, 761, 5, 2, 0, 0,
4542
+ 761, 762, 3, 134, 67, 0, 762, 763, 5, 1, 0, 0, 763, 764, 3, 64, 32, 0, 764, 766, 1, 0,
4543
+ 0, 0, 765, 760, 1, 0, 0, 0, 766, 769, 1, 0, 0, 0, 767, 765, 1, 0, 0, 0, 767, 768, 1, 0,
4544
+ 0, 0, 768, 774, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 770, 771, 5, 2, 0, 0, 771, 773, 3, 134,
4545
+ 67, 0, 772, 770, 1, 0, 0, 0, 773, 776, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0,
4546
+ 0, 0, 775, 777, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 777, 787, 5, 1, 0, 0, 778, 788, 3, 136,
4547
+ 68, 0, 779, 784, 3, 64, 32, 0, 780, 781, 5, 2, 0, 0, 781, 783, 3, 64, 32, 0, 782, 780,
4548
+ 1, 0, 0, 0, 783, 786, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 788,
4549
+ 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 787, 778, 1, 0, 0, 0, 787, 779, 1, 0, 0, 0, 788, 141,
4550
+ 1, 0, 0, 0, 789, 790, 3, 134, 67, 0, 790, 791, 5, 1, 0, 0, 791, 792, 3, 136, 68, 0, 792,
4551
+ 143, 1, 0, 0, 0, 793, 794, 3, 134, 67, 0, 794, 795, 5, 1, 0, 0, 795, 800, 3, 64, 32, 0,
4552
+ 796, 797, 5, 2, 0, 0, 797, 799, 3, 64, 32, 0, 798, 796, 1, 0, 0, 0, 799, 802, 1, 0, 0,
4553
+ 0, 800, 798, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 145, 1, 0, 0, 0, 802, 800, 1, 0, 0,
4554
+ 0, 803, 804, 5, 53, 0, 0, 804, 805, 5, 58, 0, 0, 805, 147, 1, 0, 0, 0, 87, 150, 152, 157,
4555
+ 159, 177, 184, 188, 196, 202, 204, 218, 220, 235, 239, 244, 248, 256, 269, 280,
4556
+ 288, 290, 301, 311, 313, 319, 326, 333, 337, 343, 361, 368, 376, 379, 397, 407,
4557
+ 427, 429, 437, 445, 453, 455, 461, 468, 477, 489, 492, 498, 503, 507, 515, 518,
4558
+ 524, 527, 531, 547, 549, 557, 559, 568, 581, 583, 591, 593, 599, 607, 615, 623,
4559
+ 637, 640, 645, 648, 654, 663, 668, 676, 692, 696, 719, 734, 746, 748, 755, 767,
4560
+ 774, 784, 787, 800
4118
4561
  ];
4119
4562
  CircuitScriptParser.vocabulary = new antlr.Vocabulary(CircuitScriptParser.literalNames, CircuitScriptParser.symbolicNames, []);
4120
4563
  CircuitScriptParser.decisionsToDFA = CircuitScriptParser._ATN.decisionToState.map((ds, index) => new antlr.DFA(ds, index));
@@ -4201,6 +4644,9 @@ class ExpressionContext extends antlr.ParserRuleContext {
4201
4644
  annotation_comment_expr() {
4202
4645
  return this.getRuleContext(0, Annotation_comment_exprContext);
4203
4646
  }
4647
+ part_set_expr() {
4648
+ return this.getRuleContext(0, Part_set_exprContext);
4649
+ }
4204
4650
  get ruleIndex() {
4205
4651
  return CircuitScriptParser.RULE_expression;
4206
4652
  }
@@ -6418,6 +6864,211 @@ class For_exprContext extends antlr.ParserRuleContext {
6418
6864
  }
6419
6865
  }
6420
6866
  exports.For_exprContext = For_exprContext;
6867
+ class Part_set_exprContext extends antlr.ParserRuleContext {
6868
+ constructor(parent, invokingState) {
6869
+ super(parent, invokingState);
6870
+ }
6871
+ data_expr(i) {
6872
+ if (i === undefined) {
6873
+ return this.getRuleContexts(Data_exprContext);
6874
+ }
6875
+ return this.getRuleContext(i, Data_exprContext);
6876
+ }
6877
+ part_match_block() {
6878
+ return this.getRuleContext(0, Part_match_blockContext);
6879
+ }
6880
+ get ruleIndex() {
6881
+ return CircuitScriptParser.RULE_part_set_expr;
6882
+ }
6883
+ accept(visitor) {
6884
+ if (visitor.visitPart_set_expr) {
6885
+ return visitor.visitPart_set_expr(this);
6886
+ }
6887
+ else {
6888
+ return visitor.visitChildren(this);
6889
+ }
6890
+ }
6891
+ }
6892
+ exports.Part_set_exprContext = Part_set_exprContext;
6893
+ class Part_set_keyContext extends antlr.ParserRuleContext {
6894
+ constructor(parent, invokingState) {
6895
+ super(parent, invokingState);
6896
+ }
6897
+ ID() {
6898
+ return this.getToken(CircuitScriptParser.ID, 0);
6899
+ }
6900
+ INTEGER_VALUE() {
6901
+ return this.getToken(CircuitScriptParser.INTEGER_VALUE, 0);
6902
+ }
6903
+ NUMERIC_VALUE() {
6904
+ return this.getToken(CircuitScriptParser.NUMERIC_VALUE, 0);
6905
+ }
6906
+ STRING_VALUE() {
6907
+ return this.getToken(CircuitScriptParser.STRING_VALUE, 0);
6908
+ }
6909
+ PERCENTAGE_VALUE() {
6910
+ return this.getToken(CircuitScriptParser.PERCENTAGE_VALUE, 0);
6911
+ }
6912
+ get ruleIndex() {
6913
+ return CircuitScriptParser.RULE_part_set_key;
6914
+ }
6915
+ accept(visitor) {
6916
+ if (visitor.visitPart_set_key) {
6917
+ return visitor.visitPart_set_key(this);
6918
+ }
6919
+ else {
6920
+ return visitor.visitChildren(this);
6921
+ }
6922
+ }
6923
+ }
6924
+ exports.Part_set_keyContext = Part_set_keyContext;
6925
+ class Part_match_blockContext extends antlr.ParserRuleContext {
6926
+ constructor(parent, invokingState) {
6927
+ super(parent, invokingState);
6928
+ }
6929
+ NEWLINE(i) {
6930
+ if (i === undefined) {
6931
+ return this.getTokens(CircuitScriptParser.NEWLINE);
6932
+ }
6933
+ else {
6934
+ return this.getToken(CircuitScriptParser.NEWLINE, i);
6935
+ }
6936
+ }
6937
+ INDENT() {
6938
+ return this.getToken(CircuitScriptParser.INDENT, 0);
6939
+ }
6940
+ DEDENT() {
6941
+ return this.getToken(CircuitScriptParser.DEDENT, 0);
6942
+ }
6943
+ part_sub_expr(i) {
6944
+ if (i === undefined) {
6945
+ return this.getRuleContexts(Part_sub_exprContext);
6946
+ }
6947
+ return this.getRuleContext(i, Part_sub_exprContext);
6948
+ }
6949
+ get ruleIndex() {
6950
+ return CircuitScriptParser.RULE_part_match_block;
6951
+ }
6952
+ accept(visitor) {
6953
+ if (visitor.visitPart_match_block) {
6954
+ return visitor.visitPart_match_block(this);
6955
+ }
6956
+ else {
6957
+ return visitor.visitChildren(this);
6958
+ }
6959
+ }
6960
+ }
6961
+ exports.Part_match_blockContext = Part_match_blockContext;
6962
+ class Part_sub_exprContext extends antlr.ParserRuleContext {
6963
+ constructor(parent, invokingState) {
6964
+ super(parent, invokingState);
6965
+ }
6966
+ part_condition_expr() {
6967
+ return this.getRuleContext(0, Part_condition_exprContext);
6968
+ }
6969
+ part_value_expr() {
6970
+ return this.getRuleContext(0, Part_value_exprContext);
6971
+ }
6972
+ part_condition_key_only_expr() {
6973
+ return this.getRuleContext(0, Part_condition_key_only_exprContext);
6974
+ }
6975
+ get ruleIndex() {
6976
+ return CircuitScriptParser.RULE_part_sub_expr;
6977
+ }
6978
+ accept(visitor) {
6979
+ if (visitor.visitPart_sub_expr) {
6980
+ return visitor.visitPart_sub_expr(this);
6981
+ }
6982
+ else {
6983
+ return visitor.visitChildren(this);
6984
+ }
6985
+ }
6986
+ }
6987
+ exports.Part_sub_exprContext = Part_sub_exprContext;
6988
+ class Part_condition_exprContext extends antlr.ParserRuleContext {
6989
+ constructor(parent, invokingState) {
6990
+ super(parent, invokingState);
6991
+ this._key_id = [];
6992
+ this._values = [];
6993
+ this._last_data = [];
6994
+ }
6995
+ part_set_key(i) {
6996
+ if (i === undefined) {
6997
+ return this.getRuleContexts(Part_set_keyContext);
6998
+ }
6999
+ return this.getRuleContext(i, Part_set_keyContext);
7000
+ }
7001
+ data_expr(i) {
7002
+ if (i === undefined) {
7003
+ return this.getRuleContexts(Data_exprContext);
7004
+ }
7005
+ return this.getRuleContext(i, Data_exprContext);
7006
+ }
7007
+ part_match_block() {
7008
+ return this.getRuleContext(0, Part_match_blockContext);
7009
+ }
7010
+ get ruleIndex() {
7011
+ return CircuitScriptParser.RULE_part_condition_expr;
7012
+ }
7013
+ accept(visitor) {
7014
+ if (visitor.visitPart_condition_expr) {
7015
+ return visitor.visitPart_condition_expr(this);
7016
+ }
7017
+ else {
7018
+ return visitor.visitChildren(this);
7019
+ }
7020
+ }
7021
+ }
7022
+ exports.Part_condition_exprContext = Part_condition_exprContext;
7023
+ class Part_condition_key_only_exprContext extends antlr.ParserRuleContext {
7024
+ constructor(parent, invokingState) {
7025
+ super(parent, invokingState);
7026
+ }
7027
+ part_set_key() {
7028
+ return this.getRuleContext(0, Part_set_keyContext);
7029
+ }
7030
+ part_match_block() {
7031
+ return this.getRuleContext(0, Part_match_blockContext);
7032
+ }
7033
+ get ruleIndex() {
7034
+ return CircuitScriptParser.RULE_part_condition_key_only_expr;
7035
+ }
7036
+ accept(visitor) {
7037
+ if (visitor.visitPart_condition_key_only_expr) {
7038
+ return visitor.visitPart_condition_key_only_expr(this);
7039
+ }
7040
+ else {
7041
+ return visitor.visitChildren(this);
7042
+ }
7043
+ }
7044
+ }
7045
+ exports.Part_condition_key_only_exprContext = Part_condition_key_only_exprContext;
7046
+ class Part_value_exprContext extends antlr.ParserRuleContext {
7047
+ constructor(parent, invokingState) {
7048
+ super(parent, invokingState);
7049
+ }
7050
+ part_set_key() {
7051
+ return this.getRuleContext(0, Part_set_keyContext);
7052
+ }
7053
+ data_expr(i) {
7054
+ if (i === undefined) {
7055
+ return this.getRuleContexts(Data_exprContext);
7056
+ }
7057
+ return this.getRuleContext(i, Data_exprContext);
7058
+ }
7059
+ get ruleIndex() {
7060
+ return CircuitScriptParser.RULE_part_value_expr;
7061
+ }
7062
+ accept(visitor) {
7063
+ if (visitor.visitPart_value_expr) {
7064
+ return visitor.visitPart_value_expr(this);
7065
+ }
7066
+ else {
7067
+ return visitor.visitChildren(this);
7068
+ }
7069
+ }
7070
+ }
7071
+ exports.Part_value_exprContext = Part_value_exprContext;
6421
7072
  class Annotation_comment_exprContext extends antlr.ParserRuleContext {
6422
7073
  constructor(parent, invokingState) {
6423
7074
  super(parent, invokingState);