@echecs/pgn 3.6.2 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/grammar.cjs CHANGED
@@ -2,6 +2,9 @@
2
2
  //
3
3
  // https://peggyjs.org/
4
4
  "use strict";
5
+ // Module-level variable set once per parse() call via the per-parse initializer.
6
+ // Holds the user-supplied onWarning callback (or null when not provided).
7
+ let _warn = null;
5
8
  function applyIndicators(result, promo, ind) {
6
9
  if (promo)
7
10
  result.promotion = promo;
@@ -34,8 +37,13 @@ function pairMoves(moves, start) {
34
37
  const raw = moves[i];
35
38
  const number = raw.number;
36
39
  const long = raw.long;
37
- if (number !== undefined && number !== moveNum) {
38
- console.warn(`Warning: Move number mismatch - ${number}`);
40
+ if (_warn && number !== undefined && number !== moveNum) {
41
+ _warn({
42
+ column: 1,
43
+ line: 1,
44
+ message: `Move number mismatch: expected ${moveNum}, got ${number}`,
45
+ offset: 0,
46
+ });
39
47
  }
40
48
  // Build the clean output object — only public Move fields.
41
49
  const move = { piece: raw.piece, to: raw.to };
@@ -219,30 +227,31 @@ function peg$parse(input, options) {
219
227
  const peg$c0 = "[";
220
228
  const peg$c1 = "]";
221
229
  const peg$c2 = "\"";
222
- const peg$c3 = "1/2-1/2";
223
- const peg$c4 = "1-0";
224
- const peg$c5 = "0-1";
225
- const peg$c6 = "*";
226
- const peg$c7 = ".";
227
- const peg$c8 = "O-O-O";
228
- const peg$c9 = "O-O";
229
- const peg$c10 = "x";
230
- const peg$c11 = "=";
231
- const peg$c12 = "(";
232
- const peg$c13 = ")";
233
- const peg$c14 = "$";
234
- const peg$c15 = "!!";
235
- const peg$c16 = "??";
236
- const peg$c17 = "!?";
237
- const peg$c18 = "?!";
238
- const peg$c19 = "+ \u2212";
239
- const peg$c20 = "\u2212 +";
240
- const peg$c21 = "{";
241
- const peg$c22 = "}";
242
- const peg$c23 = ";";
243
- const peg$c24 = "%";
230
+ const peg$c3 = "\\";
231
+ const peg$c4 = "1/2-1/2";
232
+ const peg$c5 = "1-0";
233
+ const peg$c6 = "0-1";
234
+ const peg$c7 = "*";
235
+ const peg$c8 = ".";
236
+ const peg$c9 = "O-O-O";
237
+ const peg$c10 = "O-O";
238
+ const peg$c11 = "x";
239
+ const peg$c12 = "=";
240
+ const peg$c13 = "(";
241
+ const peg$c14 = ")";
242
+ const peg$c15 = "$";
243
+ const peg$c16 = "!!";
244
+ const peg$c17 = "??";
245
+ const peg$c18 = "!?";
246
+ const peg$c19 = "?!";
247
+ const peg$c20 = "+ \u2212";
248
+ const peg$c21 = "\u2212 +";
249
+ const peg$c22 = "{";
250
+ const peg$c23 = "}";
251
+ const peg$c24 = ";";
252
+ const peg$c25 = "%";
244
253
  const peg$r0 = /^[a-zA-Z0-9_]/;
245
- const peg$r1 = /^[^"]/;
254
+ const peg$r1 = /^[^"\\]/;
246
255
  const peg$r2 = /^[0-9]/;
247
256
  const peg$r3 = /^[+#]/;
248
257
  const peg$r4 = /^[KQBNPR]/;
@@ -258,59 +267,80 @@ function peg$parse(input, options) {
258
267
  const peg$e1 = peg$literalExpectation("]", false);
259
268
  const peg$e2 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "_"], false, false, false);
260
269
  const peg$e3 = peg$literalExpectation("\"", false);
261
- const peg$e4 = peg$classExpectation(["\""], true, false, false);
262
- const peg$e5 = peg$literalExpectation("1/2-1/2", false);
263
- const peg$e6 = peg$literalExpectation("1-0", false);
264
- const peg$e7 = peg$literalExpectation("0-1", false);
265
- const peg$e8 = peg$literalExpectation("*", false);
266
- const peg$e9 = peg$classExpectation([["0", "9"]], false, false, false);
267
- const peg$e10 = peg$literalExpectation(".", false);
268
- const peg$e11 = peg$literalExpectation("O-O-O", false);
269
- const peg$e12 = peg$classExpectation(["+", "#"], false, false, false);
270
- const peg$e13 = peg$literalExpectation("O-O", false);
271
- const peg$e14 = peg$classExpectation(["K", "Q", "B", "N", "P", "R"], false, false, false);
272
- const peg$e15 = peg$classExpectation([["a", "h"]], false, false, false);
273
- const peg$e16 = peg$classExpectation([["1", "8"]], false, false, false);
274
- const peg$e17 = peg$literalExpectation("x", false);
275
- const peg$e18 = peg$literalExpectation("=", false);
276
- const peg$e19 = peg$classExpectation(["N", "B", "R", "Q"], false, false, false);
277
- const peg$e20 = peg$literalExpectation("(", false);
278
- const peg$e21 = peg$literalExpectation(")", false);
279
- const peg$e22 = peg$literalExpectation("$", false);
280
- const peg$e23 = peg$literalExpectation("!!", false);
281
- const peg$e24 = peg$literalExpectation("??", false);
282
- const peg$e25 = peg$literalExpectation("!?", false);
283
- const peg$e26 = peg$literalExpectation("?!", false);
284
- const peg$e27 = peg$classExpectation(["!", "?", "\xB1", "\u2213", "\u221E", "\u25A1", ["\u2A71", "\u2A72"]], false, false, false);
285
- const peg$e28 = peg$literalExpectation("+ \u2212", false);
286
- const peg$e29 = peg$literalExpectation("\u2212 +", false);
287
- const peg$e30 = peg$classExpectation(["=", ["\u2191", "\u2192"], "\u21C6", "\u25CB", "\u27F3", "\u2981", "\u2A00", "\u2BF9"], false, false, false);
288
- const peg$e31 = peg$literalExpectation("{", false);
289
- const peg$e32 = peg$classExpectation(["}"], true, false, false);
290
- const peg$e33 = peg$literalExpectation("}", false);
291
- const peg$e34 = peg$literalExpectation(";", false);
292
- const peg$e35 = peg$classExpectation(["\n"], false, false, false);
293
- const peg$e36 = peg$anyExpectation();
294
- const peg$e37 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false, false);
295
- const peg$e38 = peg$literalExpectation("%", false);
270
+ const peg$e4 = peg$classExpectation(["\"", "\\"], true, false, false);
271
+ const peg$e5 = peg$literalExpectation("\\", false);
272
+ const peg$e6 = peg$anyExpectation();
273
+ const peg$e7 = peg$literalExpectation("1/2-1/2", false);
274
+ const peg$e8 = peg$literalExpectation("1-0", false);
275
+ const peg$e9 = peg$literalExpectation("0-1", false);
276
+ const peg$e10 = peg$literalExpectation("*", false);
277
+ const peg$e11 = peg$classExpectation([["0", "9"]], false, false, false);
278
+ const peg$e12 = peg$literalExpectation(".", false);
279
+ const peg$e13 = peg$literalExpectation("O-O-O", false);
280
+ const peg$e14 = peg$classExpectation(["+", "#"], false, false, false);
281
+ const peg$e15 = peg$literalExpectation("O-O", false);
282
+ const peg$e16 = peg$classExpectation(["K", "Q", "B", "N", "P", "R"], false, false, false);
283
+ const peg$e17 = peg$classExpectation([["a", "h"]], false, false, false);
284
+ const peg$e18 = peg$classExpectation([["1", "8"]], false, false, false);
285
+ const peg$e19 = peg$literalExpectation("x", false);
286
+ const peg$e20 = peg$literalExpectation("=", false);
287
+ const peg$e21 = peg$classExpectation(["N", "B", "R", "Q"], false, false, false);
288
+ const peg$e22 = peg$literalExpectation("(", false);
289
+ const peg$e23 = peg$literalExpectation(")", false);
290
+ const peg$e24 = peg$literalExpectation("$", false);
291
+ const peg$e25 = peg$literalExpectation("!!", false);
292
+ const peg$e26 = peg$literalExpectation("??", false);
293
+ const peg$e27 = peg$literalExpectation("!?", false);
294
+ const peg$e28 = peg$literalExpectation("?!", false);
295
+ const peg$e29 = peg$classExpectation(["!", "?", "\xB1", "\u2213", "\u221E", "\u25A1", ["\u2A71", "\u2A72"]], false, false, false);
296
+ const peg$e30 = peg$literalExpectation("+ \u2212", false);
297
+ const peg$e31 = peg$literalExpectation("\u2212 +", false);
298
+ const peg$e32 = peg$classExpectation(["=", ["\u2191", "\u2192"], "\u21C6", "\u25CB", "\u27F3", "\u2981", "\u2A00", "\u2BF9"], false, false, false);
299
+ const peg$e33 = peg$literalExpectation("{", false);
300
+ const peg$e34 = peg$classExpectation(["}"], true, false, false);
301
+ const peg$e35 = peg$literalExpectation("}", false);
302
+ const peg$e36 = peg$literalExpectation(";", false);
303
+ const peg$e37 = peg$classExpectation(["\n"], false, false, false);
304
+ const peg$e38 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false, false);
305
+ const peg$e39 = peg$literalExpectation("%", false);
296
306
  function peg$f0(first, g) { return g; }
297
307
  function peg$f1(first, rest) { return [first, ...rest]; }
298
308
  function peg$f2(tags, moves, result) { return { meta: tags, moves: pairMoves(moves), result: mapResult(result) }; }
299
309
  function peg$f3(head, t) { return t; }
300
- function peg$f4(head, tail) { return Object.assign({}, head, ...tail); }
301
- function peg$f5(id, val) { return { [id]: val }; }
302
- function peg$f6(val) { return val.trim(); }
303
- function peg$f7(head, r) { return r; }
304
- function peg$f8(head, variants, m) { return m; }
305
- function peg$f9(head, variants, tail) {
310
+ function peg$f4(head, tail) {
311
+ const all = [head, ...tail];
312
+ if (_warn) {
313
+ const seen = Object.create(null);
314
+ for (const tag of all) {
315
+ const key = tag._key;
316
+ if (seen[key]) {
317
+ _warn({
318
+ column: tag._loc.column,
319
+ line: tag._loc.line,
320
+ message: `Duplicate tag: "${key}"`,
321
+ offset: tag._loc.offset,
322
+ });
323
+ }
324
+ seen[key] = true;
325
+ }
326
+ return Object.assign({}, ...all.map(({ _key: _, _loc: __, ...rest }) => rest));
327
+ }
328
+ return Object.assign({}, ...all);
329
+ }
330
+ function peg$f5() { return {}; }
331
+ function peg$f6(id, val) { return _warn ? { _key: id, _loc: location().start, [id]: val } : { [id]: val }; }
332
+ function peg$f7(val) { return val.replace(/\\"/g, '"').replace(/\\\\/g, '\\').trim(); }
333
+ function peg$f8(head, r) { return r; }
334
+ function peg$f9(head, variants, m) { return m; }
335
+ function peg$f10(head, variants, tail) {
306
336
  if (variants.length > 0) {
307
337
  head.variants = variants;
308
338
  }
309
339
  return tail ? [head, ...tail] : [head];
310
340
  }
311
- function peg$f10(num, san, n) { return n; }
312
- function peg$f11(num, san, nags, c) { return c; }
313
- function peg$f12(num, san, nags, comments) {
341
+ function peg$f11(num, san, n) { return n; }
342
+ function peg$f12(num, san, nags, c) { return c; }
343
+ function peg$f13(num, san, nags, comments) {
314
344
  if (num !== null)
315
345
  san.number = num;
316
346
  if (nags.length > 0) {
@@ -334,24 +364,24 @@ function peg$parse(input, options) {
334
364
  }
335
365
  return san;
336
366
  }
337
- function peg$f13(n) { return parseInt(n.replace(/\./g, ''), 10); }
338
- function peg$f14(ind) { return applyIndicators({ castling: true, long: true, piece: 'K', to: 'O-O-O' }, undefined, ind); }
339
- function peg$f15(ind) { return applyIndicators({ castling: true, long: false, piece: 'K', to: 'O-O' }, undefined, ind); }
340
- function peg$f16(piece, df, dr, file, rank, promo, ind) { return applyIndicators({ capture: true, from: df + dr, piece, to: file + rank }, promo, ind); }
341
- function peg$f17(piece, df, dr, file, rank, promo, ind) { return applyIndicators({ from: df + dr, piece, to: file + rank }, promo, ind); }
342
- function peg$f18(piece, df, file, rank, promo, ind) { return applyIndicators({ capture: true, from: df, piece, to: file + rank }, promo, ind); }
343
- function peg$f19(piece, dr, file, rank, promo, ind) { return applyIndicators({ capture: true, from: dr, piece, to: file + rank }, promo, ind); }
344
- function peg$f20(piece, df, file, rank, promo, ind) { return applyIndicators({ from: df, piece, to: file + rank }, promo, ind); }
345
- function peg$f21(piece, dr, file, rank, promo, ind) { return applyIndicators({ from: dr, piece, to: file + rank }, promo, ind); }
346
- function peg$f22(piece, file, rank, promo, ind) { return applyIndicators({ capture: true, piece, to: file + rank }, promo, ind); }
347
- function peg$f23(piece, file, rank, promo, ind) { return applyIndicators({ piece, to: file + rank }, promo, ind); }
348
- function peg$f24(from, file, rank, promo, ind) { return applyIndicators({ capture: true, from, piece: 'P', to: file + rank }, promo, ind); }
349
- function peg$f25(file, rank, promo, ind) { return applyIndicators({ piece: 'P', to: file + rank }, promo, ind); }
350
- function peg$f26(p) { return p; }
351
- function peg$f27(moves) { return moves; }
352
- function peg$f28(n) { return n; }
353
- function peg$f29(text) { return text.replace(/[\n\t]/g, ' ').trim(); }
354
- function peg$f30(text) { return text.trim(); }
367
+ function peg$f14(n) { return parseInt(n.replace(/\./g, ''), 10); }
368
+ function peg$f15(ind) { return applyIndicators({ castling: true, long: true, piece: 'K', to: 'O-O-O' }, undefined, ind); }
369
+ function peg$f16(ind) { return applyIndicators({ castling: true, long: false, piece: 'K', to: 'O-O' }, undefined, ind); }
370
+ function peg$f17(piece, df, dr, file, rank, promo, ind) { return applyIndicators({ capture: true, from: df + dr, piece, to: file + rank }, promo, ind); }
371
+ function peg$f18(piece, df, dr, file, rank, promo, ind) { return applyIndicators({ from: df + dr, piece, to: file + rank }, promo, ind); }
372
+ function peg$f19(piece, df, file, rank, promo, ind) { return applyIndicators({ capture: true, from: df, piece, to: file + rank }, promo, ind); }
373
+ function peg$f20(piece, dr, file, rank, promo, ind) { return applyIndicators({ capture: true, from: dr, piece, to: file + rank }, promo, ind); }
374
+ function peg$f21(piece, df, file, rank, promo, ind) { return applyIndicators({ from: df, piece, to: file + rank }, promo, ind); }
375
+ function peg$f22(piece, dr, file, rank, promo, ind) { return applyIndicators({ from: dr, piece, to: file + rank }, promo, ind); }
376
+ function peg$f23(piece, file, rank, promo, ind) { return applyIndicators({ capture: true, piece, to: file + rank }, promo, ind); }
377
+ function peg$f24(piece, file, rank, promo, ind) { return applyIndicators({ piece, to: file + rank }, promo, ind); }
378
+ function peg$f25(from, file, rank, promo, ind) { return applyIndicators({ capture: true, from, piece: 'P', to: file + rank }, promo, ind); }
379
+ function peg$f26(file, rank, promo, ind) { return applyIndicators({ piece: 'P', to: file + rank }, promo, ind); }
380
+ function peg$f27(p) { return p; }
381
+ function peg$f28(moves) { return moves; }
382
+ function peg$f29(n) { return n; }
383
+ function peg$f30(text) { return text.replace(/[\n\t]/g, ' ').trim(); }
384
+ function peg$f31(text) { return text.trim(); }
355
385
  let peg$currPos = options.peg$currPos | 0;
356
386
  let peg$savedPos = peg$currPos;
357
387
  const peg$posDetailsCache = [{ line: 1, column: 1 }];
@@ -596,6 +626,13 @@ function peg$parse(input, options) {
596
626
  peg$currPos = s0;
597
627
  s0 = peg$FAILED;
598
628
  }
629
+ if (s0 === peg$FAILED) {
630
+ s0 = peg$currPos;
631
+ s1 = '';
632
+ peg$savedPos = s0;
633
+ s1 = peg$f5();
634
+ s0 = s1;
635
+ }
599
636
  return s0;
600
637
  }
601
638
  function peg$parseTAG() {
@@ -631,7 +668,7 @@ function peg$parse(input, options) {
631
668
  }
632
669
  if (s7 !== peg$FAILED) {
633
670
  peg$savedPos = s0;
634
- s0 = peg$f5(s3, s5);
671
+ s0 = peg$f6(s3, s5);
635
672
  }
636
673
  else {
637
674
  peg$currPos = s0;
@@ -695,7 +732,7 @@ function peg$parse(input, options) {
695
732
  return s0;
696
733
  }
697
734
  function peg$parseSTRING() {
698
- let s0, s1, s2, s3, s4;
735
+ let s0, s1, s2, s3, s4, s5, s6;
699
736
  s0 = peg$currPos;
700
737
  if (input.charCodeAt(peg$currPos) === 34) {
701
738
  s1 = peg$c2;
@@ -720,6 +757,43 @@ function peg$parse(input, options) {
720
757
  peg$fail(peg$e4);
721
758
  }
722
759
  }
760
+ if (s4 === peg$FAILED) {
761
+ s4 = peg$currPos;
762
+ if (input.charCodeAt(peg$currPos) === 92) {
763
+ s5 = peg$c3;
764
+ peg$currPos++;
765
+ }
766
+ else {
767
+ s5 = peg$FAILED;
768
+ if (peg$silentFails === 0) {
769
+ peg$fail(peg$e5);
770
+ }
771
+ }
772
+ if (s5 !== peg$FAILED) {
773
+ if (input.length > peg$currPos) {
774
+ s6 = input.charAt(peg$currPos);
775
+ peg$currPos++;
776
+ }
777
+ else {
778
+ s6 = peg$FAILED;
779
+ if (peg$silentFails === 0) {
780
+ peg$fail(peg$e6);
781
+ }
782
+ }
783
+ if (s6 !== peg$FAILED) {
784
+ s5 = [s5, s6];
785
+ s4 = s5;
786
+ }
787
+ else {
788
+ peg$currPos = s4;
789
+ s4 = peg$FAILED;
790
+ }
791
+ }
792
+ else {
793
+ peg$currPos = s4;
794
+ s4 = peg$FAILED;
795
+ }
796
+ }
723
797
  while (s4 !== peg$FAILED) {
724
798
  s3.push(s4);
725
799
  s4 = input.charAt(peg$currPos);
@@ -732,6 +806,43 @@ function peg$parse(input, options) {
732
806
  peg$fail(peg$e4);
733
807
  }
734
808
  }
809
+ if (s4 === peg$FAILED) {
810
+ s4 = peg$currPos;
811
+ if (input.charCodeAt(peg$currPos) === 92) {
812
+ s5 = peg$c3;
813
+ peg$currPos++;
814
+ }
815
+ else {
816
+ s5 = peg$FAILED;
817
+ if (peg$silentFails === 0) {
818
+ peg$fail(peg$e5);
819
+ }
820
+ }
821
+ if (s5 !== peg$FAILED) {
822
+ if (input.length > peg$currPos) {
823
+ s6 = input.charAt(peg$currPos);
824
+ peg$currPos++;
825
+ }
826
+ else {
827
+ s6 = peg$FAILED;
828
+ if (peg$silentFails === 0) {
829
+ peg$fail(peg$e6);
830
+ }
831
+ }
832
+ if (s6 !== peg$FAILED) {
833
+ s5 = [s5, s6];
834
+ s4 = s5;
835
+ }
836
+ else {
837
+ peg$currPos = s4;
838
+ s4 = peg$FAILED;
839
+ }
840
+ }
841
+ else {
842
+ peg$currPos = s4;
843
+ s4 = peg$FAILED;
844
+ }
845
+ }
735
846
  }
736
847
  s2 = input.substring(s2, peg$currPos);
737
848
  if (input.charCodeAt(peg$currPos) === 34) {
@@ -746,7 +857,7 @@ function peg$parse(input, options) {
746
857
  }
747
858
  if (s3 !== peg$FAILED) {
748
859
  peg$savedPos = s0;
749
- s0 = peg$f6(s2);
860
+ s0 = peg$f7(s2);
750
861
  }
751
862
  else {
752
863
  peg$currPos = s0;
@@ -761,47 +872,47 @@ function peg$parse(input, options) {
761
872
  }
762
873
  function peg$parseRESULT() {
763
874
  let s0;
764
- if (input.substr(peg$currPos, 7) === peg$c3) {
765
- s0 = peg$c3;
875
+ if (input.substr(peg$currPos, 7) === peg$c4) {
876
+ s0 = peg$c4;
766
877
  peg$currPos += 7;
767
878
  }
768
879
  else {
769
880
  s0 = peg$FAILED;
770
881
  if (peg$silentFails === 0) {
771
- peg$fail(peg$e5);
882
+ peg$fail(peg$e7);
772
883
  }
773
884
  }
774
885
  if (s0 === peg$FAILED) {
775
- if (input.substr(peg$currPos, 3) === peg$c4) {
776
- s0 = peg$c4;
886
+ if (input.substr(peg$currPos, 3) === peg$c5) {
887
+ s0 = peg$c5;
777
888
  peg$currPos += 3;
778
889
  }
779
890
  else {
780
891
  s0 = peg$FAILED;
781
892
  if (peg$silentFails === 0) {
782
- peg$fail(peg$e6);
893
+ peg$fail(peg$e8);
783
894
  }
784
895
  }
785
896
  if (s0 === peg$FAILED) {
786
- if (input.substr(peg$currPos, 3) === peg$c5) {
787
- s0 = peg$c5;
897
+ if (input.substr(peg$currPos, 3) === peg$c6) {
898
+ s0 = peg$c6;
788
899
  peg$currPos += 3;
789
900
  }
790
901
  else {
791
902
  s0 = peg$FAILED;
792
903
  if (peg$silentFails === 0) {
793
- peg$fail(peg$e7);
904
+ peg$fail(peg$e9);
794
905
  }
795
906
  }
796
907
  if (s0 === peg$FAILED) {
797
908
  if (input.charCodeAt(peg$currPos) === 42) {
798
- s0 = peg$c6;
909
+ s0 = peg$c7;
799
910
  peg$currPos++;
800
911
  }
801
912
  else {
802
913
  s0 = peg$FAILED;
803
914
  if (peg$silentFails === 0) {
804
- peg$fail(peg$e8);
915
+ peg$fail(peg$e10);
805
916
  }
806
917
  }
807
918
  }
@@ -820,7 +931,7 @@ function peg$parse(input, options) {
820
931
  s5 = peg$parseRAV();
821
932
  if (s5 !== peg$FAILED) {
822
933
  peg$savedPos = s3;
823
- s3 = peg$f7(s1, s5);
934
+ s3 = peg$f8(s1, s5);
824
935
  }
825
936
  else {
826
937
  peg$currPos = s3;
@@ -833,7 +944,7 @@ function peg$parse(input, options) {
833
944
  s5 = peg$parseRAV();
834
945
  if (s5 !== peg$FAILED) {
835
946
  peg$savedPos = s3;
836
- s3 = peg$f7(s1, s5);
947
+ s3 = peg$f8(s1, s5);
837
948
  }
838
949
  else {
839
950
  peg$currPos = s3;
@@ -845,7 +956,7 @@ function peg$parse(input, options) {
845
956
  s5 = peg$parseMOVES();
846
957
  if (s5 !== peg$FAILED) {
847
958
  peg$savedPos = s3;
848
- s3 = peg$f8(s1, s2, s5);
959
+ s3 = peg$f9(s1, s2, s5);
849
960
  }
850
961
  else {
851
962
  peg$currPos = s3;
@@ -855,7 +966,7 @@ function peg$parse(input, options) {
855
966
  s3 = null;
856
967
  }
857
968
  peg$savedPos = s0;
858
- s0 = peg$f9(s1, s2, s3);
969
+ s0 = peg$f10(s1, s2, s3);
859
970
  }
860
971
  else {
861
972
  peg$currPos = s0;
@@ -879,7 +990,7 @@ function peg$parse(input, options) {
879
990
  s7 = peg$parseNAG();
880
991
  if (s7 !== peg$FAILED) {
881
992
  peg$savedPos = s5;
882
- s5 = peg$f10(s1, s3, s7);
993
+ s5 = peg$f11(s1, s3, s7);
883
994
  }
884
995
  else {
885
996
  peg$currPos = s5;
@@ -892,7 +1003,7 @@ function peg$parse(input, options) {
892
1003
  s7 = peg$parseNAG();
893
1004
  if (s7 !== peg$FAILED) {
894
1005
  peg$savedPos = s5;
895
- s5 = peg$f10(s1, s3, s7);
1006
+ s5 = peg$f11(s1, s3, s7);
896
1007
  }
897
1008
  else {
898
1009
  peg$currPos = s5;
@@ -905,7 +1016,7 @@ function peg$parse(input, options) {
905
1016
  s8 = peg$parseCOMMENT();
906
1017
  if (s8 !== peg$FAILED) {
907
1018
  peg$savedPos = s6;
908
- s6 = peg$f11(s1, s3, s4, s8);
1019
+ s6 = peg$f12(s1, s3, s4, s8);
909
1020
  }
910
1021
  else {
911
1022
  peg$currPos = s6;
@@ -918,7 +1029,7 @@ function peg$parse(input, options) {
918
1029
  s8 = peg$parseCOMMENT();
919
1030
  if (s8 !== peg$FAILED) {
920
1031
  peg$savedPos = s6;
921
- s6 = peg$f11(s1, s3, s4, s8);
1032
+ s6 = peg$f12(s1, s3, s4, s8);
922
1033
  }
923
1034
  else {
924
1035
  peg$currPos = s6;
@@ -926,7 +1037,7 @@ function peg$parse(input, options) {
926
1037
  }
927
1038
  }
928
1039
  peg$savedPos = s0;
929
- s0 = peg$f12(s1, s3, s4, s5);
1040
+ s0 = peg$f13(s1, s3, s4, s5);
930
1041
  }
931
1042
  else {
932
1043
  peg$currPos = s0;
@@ -947,7 +1058,7 @@ function peg$parse(input, options) {
947
1058
  else {
948
1059
  s4 = peg$FAILED;
949
1060
  if (peg$silentFails === 0) {
950
- peg$fail(peg$e9);
1061
+ peg$fail(peg$e11);
951
1062
  }
952
1063
  }
953
1064
  if (s4 !== peg$FAILED) {
@@ -960,7 +1071,7 @@ function peg$parse(input, options) {
960
1071
  else {
961
1072
  s4 = peg$FAILED;
962
1073
  if (peg$silentFails === 0) {
963
- peg$fail(peg$e9);
1074
+ peg$fail(peg$e11);
964
1075
  }
965
1076
  }
966
1077
  }
@@ -971,25 +1082,25 @@ function peg$parse(input, options) {
971
1082
  if (s3 !== peg$FAILED) {
972
1083
  s4 = [];
973
1084
  if (input.charCodeAt(peg$currPos) === 46) {
974
- s5 = peg$c7;
1085
+ s5 = peg$c8;
975
1086
  peg$currPos++;
976
1087
  }
977
1088
  else {
978
1089
  s5 = peg$FAILED;
979
1090
  if (peg$silentFails === 0) {
980
- peg$fail(peg$e10);
1091
+ peg$fail(peg$e12);
981
1092
  }
982
1093
  }
983
1094
  while (s5 !== peg$FAILED) {
984
1095
  s4.push(s5);
985
1096
  if (input.charCodeAt(peg$currPos) === 46) {
986
- s5 = peg$c7;
1097
+ s5 = peg$c8;
987
1098
  peg$currPos++;
988
1099
  }
989
1100
  else {
990
1101
  s5 = peg$FAILED;
991
1102
  if (peg$silentFails === 0) {
992
- peg$fail(peg$e10);
1103
+ peg$fail(peg$e12);
993
1104
  }
994
1105
  }
995
1106
  }
@@ -1008,7 +1119,7 @@ function peg$parse(input, options) {
1008
1119
  }
1009
1120
  if (s1 !== peg$FAILED) {
1010
1121
  peg$savedPos = s0;
1011
- s1 = peg$f13(s1);
1122
+ s1 = peg$f14(s1);
1012
1123
  }
1013
1124
  s0 = s1;
1014
1125
  return s0;
@@ -1030,14 +1141,14 @@ function peg$parse(input, options) {
1030
1141
  function peg$parseCASTLING() {
1031
1142
  let s0, s1, s2, s3;
1032
1143
  s0 = peg$currPos;
1033
- if (input.substr(peg$currPos, 5) === peg$c8) {
1034
- s1 = peg$c8;
1144
+ if (input.substr(peg$currPos, 5) === peg$c9) {
1145
+ s1 = peg$c9;
1035
1146
  peg$currPos += 5;
1036
1147
  }
1037
1148
  else {
1038
1149
  s1 = peg$FAILED;
1039
1150
  if (peg$silentFails === 0) {
1040
- peg$fail(peg$e11);
1151
+ peg$fail(peg$e13);
1041
1152
  }
1042
1153
  }
1043
1154
  if (s1 !== peg$FAILED) {
@@ -1049,7 +1160,7 @@ function peg$parse(input, options) {
1049
1160
  else {
1050
1161
  s3 = peg$FAILED;
1051
1162
  if (peg$silentFails === 0) {
1052
- peg$fail(peg$e12);
1163
+ peg$fail(peg$e14);
1053
1164
  }
1054
1165
  }
1055
1166
  if (s3 === peg$FAILED) {
@@ -1057,7 +1168,7 @@ function peg$parse(input, options) {
1057
1168
  }
1058
1169
  s2 = input.substring(s2, peg$currPos);
1059
1170
  peg$savedPos = s0;
1060
- s0 = peg$f14(s2);
1171
+ s0 = peg$f15(s2);
1061
1172
  }
1062
1173
  else {
1063
1174
  peg$currPos = s0;
@@ -1065,14 +1176,14 @@ function peg$parse(input, options) {
1065
1176
  }
1066
1177
  if (s0 === peg$FAILED) {
1067
1178
  s0 = peg$currPos;
1068
- if (input.substr(peg$currPos, 3) === peg$c9) {
1069
- s1 = peg$c9;
1179
+ if (input.substr(peg$currPos, 3) === peg$c10) {
1180
+ s1 = peg$c10;
1070
1181
  peg$currPos += 3;
1071
1182
  }
1072
1183
  else {
1073
1184
  s1 = peg$FAILED;
1074
1185
  if (peg$silentFails === 0) {
1075
- peg$fail(peg$e13);
1186
+ peg$fail(peg$e15);
1076
1187
  }
1077
1188
  }
1078
1189
  if (s1 !== peg$FAILED) {
@@ -1084,7 +1195,7 @@ function peg$parse(input, options) {
1084
1195
  else {
1085
1196
  s3 = peg$FAILED;
1086
1197
  if (peg$silentFails === 0) {
1087
- peg$fail(peg$e12);
1198
+ peg$fail(peg$e14);
1088
1199
  }
1089
1200
  }
1090
1201
  if (s3 === peg$FAILED) {
@@ -1092,7 +1203,7 @@ function peg$parse(input, options) {
1092
1203
  }
1093
1204
  s2 = input.substring(s2, peg$currPos);
1094
1205
  peg$savedPos = s0;
1095
- s0 = peg$f15(s2);
1206
+ s0 = peg$f16(s2);
1096
1207
  }
1097
1208
  else {
1098
1209
  peg$currPos = s0;
@@ -1111,7 +1222,7 @@ function peg$parse(input, options) {
1111
1222
  else {
1112
1223
  s1 = peg$FAILED;
1113
1224
  if (peg$silentFails === 0) {
1114
- peg$fail(peg$e14);
1225
+ peg$fail(peg$e16);
1115
1226
  }
1116
1227
  }
1117
1228
  if (s1 !== peg$FAILED) {
@@ -1122,7 +1233,7 @@ function peg$parse(input, options) {
1122
1233
  else {
1123
1234
  s2 = peg$FAILED;
1124
1235
  if (peg$silentFails === 0) {
1125
- peg$fail(peg$e15);
1236
+ peg$fail(peg$e17);
1126
1237
  }
1127
1238
  }
1128
1239
  if (s2 !== peg$FAILED) {
@@ -1133,18 +1244,18 @@ function peg$parse(input, options) {
1133
1244
  else {
1134
1245
  s3 = peg$FAILED;
1135
1246
  if (peg$silentFails === 0) {
1136
- peg$fail(peg$e16);
1247
+ peg$fail(peg$e18);
1137
1248
  }
1138
1249
  }
1139
1250
  if (s3 !== peg$FAILED) {
1140
1251
  if (input.charCodeAt(peg$currPos) === 120) {
1141
- s4 = peg$c10;
1252
+ s4 = peg$c11;
1142
1253
  peg$currPos++;
1143
1254
  }
1144
1255
  else {
1145
1256
  s4 = peg$FAILED;
1146
1257
  if (peg$silentFails === 0) {
1147
- peg$fail(peg$e17);
1258
+ peg$fail(peg$e19);
1148
1259
  }
1149
1260
  }
1150
1261
  if (s4 !== peg$FAILED) {
@@ -1155,7 +1266,7 @@ function peg$parse(input, options) {
1155
1266
  else {
1156
1267
  s5 = peg$FAILED;
1157
1268
  if (peg$silentFails === 0) {
1158
- peg$fail(peg$e15);
1269
+ peg$fail(peg$e17);
1159
1270
  }
1160
1271
  }
1161
1272
  if (s5 !== peg$FAILED) {
@@ -1166,7 +1277,7 @@ function peg$parse(input, options) {
1166
1277
  else {
1167
1278
  s6 = peg$FAILED;
1168
1279
  if (peg$silentFails === 0) {
1169
- peg$fail(peg$e16);
1280
+ peg$fail(peg$e18);
1170
1281
  }
1171
1282
  }
1172
1283
  if (s6 !== peg$FAILED) {
@@ -1182,7 +1293,7 @@ function peg$parse(input, options) {
1182
1293
  else {
1183
1294
  s9 = peg$FAILED;
1184
1295
  if (peg$silentFails === 0) {
1185
- peg$fail(peg$e12);
1296
+ peg$fail(peg$e14);
1186
1297
  }
1187
1298
  }
1188
1299
  if (s9 === peg$FAILED) {
@@ -1190,7 +1301,7 @@ function peg$parse(input, options) {
1190
1301
  }
1191
1302
  s8 = input.substring(s8, peg$currPos);
1192
1303
  peg$savedPos = s0;
1193
- s0 = peg$f16(s1, s2, s3, s5, s6, s7, s8);
1304
+ s0 = peg$f17(s1, s2, s3, s5, s6, s7, s8);
1194
1305
  }
1195
1306
  else {
1196
1307
  peg$currPos = s0;
@@ -1230,7 +1341,7 @@ function peg$parse(input, options) {
1230
1341
  else {
1231
1342
  s1 = peg$FAILED;
1232
1343
  if (peg$silentFails === 0) {
1233
- peg$fail(peg$e14);
1344
+ peg$fail(peg$e16);
1234
1345
  }
1235
1346
  }
1236
1347
  if (s1 !== peg$FAILED) {
@@ -1241,7 +1352,7 @@ function peg$parse(input, options) {
1241
1352
  else {
1242
1353
  s2 = peg$FAILED;
1243
1354
  if (peg$silentFails === 0) {
1244
- peg$fail(peg$e15);
1355
+ peg$fail(peg$e17);
1245
1356
  }
1246
1357
  }
1247
1358
  if (s2 !== peg$FAILED) {
@@ -1252,7 +1363,7 @@ function peg$parse(input, options) {
1252
1363
  else {
1253
1364
  s3 = peg$FAILED;
1254
1365
  if (peg$silentFails === 0) {
1255
- peg$fail(peg$e16);
1366
+ peg$fail(peg$e18);
1256
1367
  }
1257
1368
  }
1258
1369
  if (s3 !== peg$FAILED) {
@@ -1263,7 +1374,7 @@ function peg$parse(input, options) {
1263
1374
  else {
1264
1375
  s4 = peg$FAILED;
1265
1376
  if (peg$silentFails === 0) {
1266
- peg$fail(peg$e15);
1377
+ peg$fail(peg$e17);
1267
1378
  }
1268
1379
  }
1269
1380
  if (s4 !== peg$FAILED) {
@@ -1274,7 +1385,7 @@ function peg$parse(input, options) {
1274
1385
  else {
1275
1386
  s5 = peg$FAILED;
1276
1387
  if (peg$silentFails === 0) {
1277
- peg$fail(peg$e16);
1388
+ peg$fail(peg$e18);
1278
1389
  }
1279
1390
  }
1280
1391
  if (s5 !== peg$FAILED) {
@@ -1290,7 +1401,7 @@ function peg$parse(input, options) {
1290
1401
  else {
1291
1402
  s8 = peg$FAILED;
1292
1403
  if (peg$silentFails === 0) {
1293
- peg$fail(peg$e12);
1404
+ peg$fail(peg$e14);
1294
1405
  }
1295
1406
  }
1296
1407
  if (s8 === peg$FAILED) {
@@ -1298,7 +1409,7 @@ function peg$parse(input, options) {
1298
1409
  }
1299
1410
  s7 = input.substring(s7, peg$currPos);
1300
1411
  peg$savedPos = s0;
1301
- s0 = peg$f17(s1, s2, s3, s4, s5, s6, s7);
1412
+ s0 = peg$f18(s1, s2, s3, s4, s5, s6, s7);
1302
1413
  }
1303
1414
  else {
1304
1415
  peg$currPos = s0;
@@ -1333,7 +1444,7 @@ function peg$parse(input, options) {
1333
1444
  else {
1334
1445
  s1 = peg$FAILED;
1335
1446
  if (peg$silentFails === 0) {
1336
- peg$fail(peg$e14);
1447
+ peg$fail(peg$e16);
1337
1448
  }
1338
1449
  }
1339
1450
  if (s1 !== peg$FAILED) {
@@ -1344,18 +1455,18 @@ function peg$parse(input, options) {
1344
1455
  else {
1345
1456
  s2 = peg$FAILED;
1346
1457
  if (peg$silentFails === 0) {
1347
- peg$fail(peg$e15);
1458
+ peg$fail(peg$e17);
1348
1459
  }
1349
1460
  }
1350
1461
  if (s2 !== peg$FAILED) {
1351
1462
  if (input.charCodeAt(peg$currPos) === 120) {
1352
- s3 = peg$c10;
1463
+ s3 = peg$c11;
1353
1464
  peg$currPos++;
1354
1465
  }
1355
1466
  else {
1356
1467
  s3 = peg$FAILED;
1357
1468
  if (peg$silentFails === 0) {
1358
- peg$fail(peg$e17);
1469
+ peg$fail(peg$e19);
1359
1470
  }
1360
1471
  }
1361
1472
  if (s3 !== peg$FAILED) {
@@ -1366,7 +1477,7 @@ function peg$parse(input, options) {
1366
1477
  else {
1367
1478
  s4 = peg$FAILED;
1368
1479
  if (peg$silentFails === 0) {
1369
- peg$fail(peg$e15);
1480
+ peg$fail(peg$e17);
1370
1481
  }
1371
1482
  }
1372
1483
  if (s4 !== peg$FAILED) {
@@ -1377,7 +1488,7 @@ function peg$parse(input, options) {
1377
1488
  else {
1378
1489
  s5 = peg$FAILED;
1379
1490
  if (peg$silentFails === 0) {
1380
- peg$fail(peg$e16);
1491
+ peg$fail(peg$e18);
1381
1492
  }
1382
1493
  }
1383
1494
  if (s5 !== peg$FAILED) {
@@ -1393,7 +1504,7 @@ function peg$parse(input, options) {
1393
1504
  else {
1394
1505
  s8 = peg$FAILED;
1395
1506
  if (peg$silentFails === 0) {
1396
- peg$fail(peg$e12);
1507
+ peg$fail(peg$e14);
1397
1508
  }
1398
1509
  }
1399
1510
  if (s8 === peg$FAILED) {
@@ -1401,7 +1512,7 @@ function peg$parse(input, options) {
1401
1512
  }
1402
1513
  s7 = input.substring(s7, peg$currPos);
1403
1514
  peg$savedPos = s0;
1404
- s0 = peg$f18(s1, s2, s4, s5, s6, s7);
1515
+ s0 = peg$f19(s1, s2, s4, s5, s6, s7);
1405
1516
  }
1406
1517
  else {
1407
1518
  peg$currPos = s0;
@@ -1436,7 +1547,7 @@ function peg$parse(input, options) {
1436
1547
  else {
1437
1548
  s1 = peg$FAILED;
1438
1549
  if (peg$silentFails === 0) {
1439
- peg$fail(peg$e14);
1550
+ peg$fail(peg$e16);
1440
1551
  }
1441
1552
  }
1442
1553
  if (s1 !== peg$FAILED) {
@@ -1447,18 +1558,18 @@ function peg$parse(input, options) {
1447
1558
  else {
1448
1559
  s2 = peg$FAILED;
1449
1560
  if (peg$silentFails === 0) {
1450
- peg$fail(peg$e16);
1561
+ peg$fail(peg$e18);
1451
1562
  }
1452
1563
  }
1453
1564
  if (s2 !== peg$FAILED) {
1454
1565
  if (input.charCodeAt(peg$currPos) === 120) {
1455
- s3 = peg$c10;
1566
+ s3 = peg$c11;
1456
1567
  peg$currPos++;
1457
1568
  }
1458
1569
  else {
1459
1570
  s3 = peg$FAILED;
1460
1571
  if (peg$silentFails === 0) {
1461
- peg$fail(peg$e17);
1572
+ peg$fail(peg$e19);
1462
1573
  }
1463
1574
  }
1464
1575
  if (s3 !== peg$FAILED) {
@@ -1469,7 +1580,7 @@ function peg$parse(input, options) {
1469
1580
  else {
1470
1581
  s4 = peg$FAILED;
1471
1582
  if (peg$silentFails === 0) {
1472
- peg$fail(peg$e15);
1583
+ peg$fail(peg$e17);
1473
1584
  }
1474
1585
  }
1475
1586
  if (s4 !== peg$FAILED) {
@@ -1480,7 +1591,7 @@ function peg$parse(input, options) {
1480
1591
  else {
1481
1592
  s5 = peg$FAILED;
1482
1593
  if (peg$silentFails === 0) {
1483
- peg$fail(peg$e16);
1594
+ peg$fail(peg$e18);
1484
1595
  }
1485
1596
  }
1486
1597
  if (s5 !== peg$FAILED) {
@@ -1496,7 +1607,7 @@ function peg$parse(input, options) {
1496
1607
  else {
1497
1608
  s8 = peg$FAILED;
1498
1609
  if (peg$silentFails === 0) {
1499
- peg$fail(peg$e12);
1610
+ peg$fail(peg$e14);
1500
1611
  }
1501
1612
  }
1502
1613
  if (s8 === peg$FAILED) {
@@ -1504,7 +1615,7 @@ function peg$parse(input, options) {
1504
1615
  }
1505
1616
  s7 = input.substring(s7, peg$currPos);
1506
1617
  peg$savedPos = s0;
1507
- s0 = peg$f19(s1, s2, s4, s5, s6, s7);
1618
+ s0 = peg$f20(s1, s2, s4, s5, s6, s7);
1508
1619
  }
1509
1620
  else {
1510
1621
  peg$currPos = s0;
@@ -1539,7 +1650,7 @@ function peg$parse(input, options) {
1539
1650
  else {
1540
1651
  s1 = peg$FAILED;
1541
1652
  if (peg$silentFails === 0) {
1542
- peg$fail(peg$e14);
1653
+ peg$fail(peg$e16);
1543
1654
  }
1544
1655
  }
1545
1656
  if (s1 !== peg$FAILED) {
@@ -1550,7 +1661,7 @@ function peg$parse(input, options) {
1550
1661
  else {
1551
1662
  s2 = peg$FAILED;
1552
1663
  if (peg$silentFails === 0) {
1553
- peg$fail(peg$e15);
1664
+ peg$fail(peg$e17);
1554
1665
  }
1555
1666
  }
1556
1667
  if (s2 !== peg$FAILED) {
@@ -1561,7 +1672,7 @@ function peg$parse(input, options) {
1561
1672
  else {
1562
1673
  s3 = peg$FAILED;
1563
1674
  if (peg$silentFails === 0) {
1564
- peg$fail(peg$e15);
1675
+ peg$fail(peg$e17);
1565
1676
  }
1566
1677
  }
1567
1678
  if (s3 !== peg$FAILED) {
@@ -1572,7 +1683,7 @@ function peg$parse(input, options) {
1572
1683
  else {
1573
1684
  s4 = peg$FAILED;
1574
1685
  if (peg$silentFails === 0) {
1575
- peg$fail(peg$e16);
1686
+ peg$fail(peg$e18);
1576
1687
  }
1577
1688
  }
1578
1689
  if (s4 !== peg$FAILED) {
@@ -1588,7 +1699,7 @@ function peg$parse(input, options) {
1588
1699
  else {
1589
1700
  s7 = peg$FAILED;
1590
1701
  if (peg$silentFails === 0) {
1591
- peg$fail(peg$e12);
1702
+ peg$fail(peg$e14);
1592
1703
  }
1593
1704
  }
1594
1705
  if (s7 === peg$FAILED) {
@@ -1596,7 +1707,7 @@ function peg$parse(input, options) {
1596
1707
  }
1597
1708
  s6 = input.substring(s6, peg$currPos);
1598
1709
  peg$savedPos = s0;
1599
- s0 = peg$f20(s1, s2, s3, s4, s5, s6);
1710
+ s0 = peg$f21(s1, s2, s3, s4, s5, s6);
1600
1711
  }
1601
1712
  else {
1602
1713
  peg$currPos = s0;
@@ -1626,7 +1737,7 @@ function peg$parse(input, options) {
1626
1737
  else {
1627
1738
  s1 = peg$FAILED;
1628
1739
  if (peg$silentFails === 0) {
1629
- peg$fail(peg$e14);
1740
+ peg$fail(peg$e16);
1630
1741
  }
1631
1742
  }
1632
1743
  if (s1 !== peg$FAILED) {
@@ -1637,7 +1748,7 @@ function peg$parse(input, options) {
1637
1748
  else {
1638
1749
  s2 = peg$FAILED;
1639
1750
  if (peg$silentFails === 0) {
1640
- peg$fail(peg$e16);
1751
+ peg$fail(peg$e18);
1641
1752
  }
1642
1753
  }
1643
1754
  if (s2 !== peg$FAILED) {
@@ -1648,7 +1759,7 @@ function peg$parse(input, options) {
1648
1759
  else {
1649
1760
  s3 = peg$FAILED;
1650
1761
  if (peg$silentFails === 0) {
1651
- peg$fail(peg$e15);
1762
+ peg$fail(peg$e17);
1652
1763
  }
1653
1764
  }
1654
1765
  if (s3 !== peg$FAILED) {
@@ -1659,7 +1770,7 @@ function peg$parse(input, options) {
1659
1770
  else {
1660
1771
  s4 = peg$FAILED;
1661
1772
  if (peg$silentFails === 0) {
1662
- peg$fail(peg$e16);
1773
+ peg$fail(peg$e18);
1663
1774
  }
1664
1775
  }
1665
1776
  if (s4 !== peg$FAILED) {
@@ -1675,7 +1786,7 @@ function peg$parse(input, options) {
1675
1786
  else {
1676
1787
  s7 = peg$FAILED;
1677
1788
  if (peg$silentFails === 0) {
1678
- peg$fail(peg$e12);
1789
+ peg$fail(peg$e14);
1679
1790
  }
1680
1791
  }
1681
1792
  if (s7 === peg$FAILED) {
@@ -1683,7 +1794,7 @@ function peg$parse(input, options) {
1683
1794
  }
1684
1795
  s6 = input.substring(s6, peg$currPos);
1685
1796
  peg$savedPos = s0;
1686
- s0 = peg$f21(s1, s2, s3, s4, s5, s6);
1797
+ s0 = peg$f22(s1, s2, s3, s4, s5, s6);
1687
1798
  }
1688
1799
  else {
1689
1800
  peg$currPos = s0;
@@ -1713,18 +1824,18 @@ function peg$parse(input, options) {
1713
1824
  else {
1714
1825
  s1 = peg$FAILED;
1715
1826
  if (peg$silentFails === 0) {
1716
- peg$fail(peg$e14);
1827
+ peg$fail(peg$e16);
1717
1828
  }
1718
1829
  }
1719
1830
  if (s1 !== peg$FAILED) {
1720
1831
  if (input.charCodeAt(peg$currPos) === 120) {
1721
- s2 = peg$c10;
1832
+ s2 = peg$c11;
1722
1833
  peg$currPos++;
1723
1834
  }
1724
1835
  else {
1725
1836
  s2 = peg$FAILED;
1726
1837
  if (peg$silentFails === 0) {
1727
- peg$fail(peg$e17);
1838
+ peg$fail(peg$e19);
1728
1839
  }
1729
1840
  }
1730
1841
  if (s2 !== peg$FAILED) {
@@ -1735,7 +1846,7 @@ function peg$parse(input, options) {
1735
1846
  else {
1736
1847
  s3 = peg$FAILED;
1737
1848
  if (peg$silentFails === 0) {
1738
- peg$fail(peg$e15);
1849
+ peg$fail(peg$e17);
1739
1850
  }
1740
1851
  }
1741
1852
  if (s3 !== peg$FAILED) {
@@ -1746,7 +1857,7 @@ function peg$parse(input, options) {
1746
1857
  else {
1747
1858
  s4 = peg$FAILED;
1748
1859
  if (peg$silentFails === 0) {
1749
- peg$fail(peg$e16);
1860
+ peg$fail(peg$e18);
1750
1861
  }
1751
1862
  }
1752
1863
  if (s4 !== peg$FAILED) {
@@ -1762,7 +1873,7 @@ function peg$parse(input, options) {
1762
1873
  else {
1763
1874
  s7 = peg$FAILED;
1764
1875
  if (peg$silentFails === 0) {
1765
- peg$fail(peg$e12);
1876
+ peg$fail(peg$e14);
1766
1877
  }
1767
1878
  }
1768
1879
  if (s7 === peg$FAILED) {
@@ -1770,7 +1881,7 @@ function peg$parse(input, options) {
1770
1881
  }
1771
1882
  s6 = input.substring(s6, peg$currPos);
1772
1883
  peg$savedPos = s0;
1773
- s0 = peg$f22(s1, s3, s4, s5, s6);
1884
+ s0 = peg$f23(s1, s3, s4, s5, s6);
1774
1885
  }
1775
1886
  else {
1776
1887
  peg$currPos = s0;
@@ -1800,7 +1911,7 @@ function peg$parse(input, options) {
1800
1911
  else {
1801
1912
  s1 = peg$FAILED;
1802
1913
  if (peg$silentFails === 0) {
1803
- peg$fail(peg$e14);
1914
+ peg$fail(peg$e16);
1804
1915
  }
1805
1916
  }
1806
1917
  if (s1 !== peg$FAILED) {
@@ -1811,7 +1922,7 @@ function peg$parse(input, options) {
1811
1922
  else {
1812
1923
  s2 = peg$FAILED;
1813
1924
  if (peg$silentFails === 0) {
1814
- peg$fail(peg$e15);
1925
+ peg$fail(peg$e17);
1815
1926
  }
1816
1927
  }
1817
1928
  if (s2 !== peg$FAILED) {
@@ -1822,7 +1933,7 @@ function peg$parse(input, options) {
1822
1933
  else {
1823
1934
  s3 = peg$FAILED;
1824
1935
  if (peg$silentFails === 0) {
1825
- peg$fail(peg$e16);
1936
+ peg$fail(peg$e18);
1826
1937
  }
1827
1938
  }
1828
1939
  if (s3 !== peg$FAILED) {
@@ -1838,7 +1949,7 @@ function peg$parse(input, options) {
1838
1949
  else {
1839
1950
  s6 = peg$FAILED;
1840
1951
  if (peg$silentFails === 0) {
1841
- peg$fail(peg$e12);
1952
+ peg$fail(peg$e14);
1842
1953
  }
1843
1954
  }
1844
1955
  if (s6 === peg$FAILED) {
@@ -1846,7 +1957,7 @@ function peg$parse(input, options) {
1846
1957
  }
1847
1958
  s5 = input.substring(s5, peg$currPos);
1848
1959
  peg$savedPos = s0;
1849
- s0 = peg$f23(s1, s2, s3, s4, s5);
1960
+ s0 = peg$f24(s1, s2, s3, s4, s5);
1850
1961
  }
1851
1962
  else {
1852
1963
  peg$currPos = s0;
@@ -1881,18 +1992,18 @@ function peg$parse(input, options) {
1881
1992
  else {
1882
1993
  s1 = peg$FAILED;
1883
1994
  if (peg$silentFails === 0) {
1884
- peg$fail(peg$e15);
1995
+ peg$fail(peg$e17);
1885
1996
  }
1886
1997
  }
1887
1998
  if (s1 !== peg$FAILED) {
1888
1999
  if (input.charCodeAt(peg$currPos) === 120) {
1889
- s2 = peg$c10;
2000
+ s2 = peg$c11;
1890
2001
  peg$currPos++;
1891
2002
  }
1892
2003
  else {
1893
2004
  s2 = peg$FAILED;
1894
2005
  if (peg$silentFails === 0) {
1895
- peg$fail(peg$e17);
2006
+ peg$fail(peg$e19);
1896
2007
  }
1897
2008
  }
1898
2009
  if (s2 !== peg$FAILED) {
@@ -1903,7 +2014,7 @@ function peg$parse(input, options) {
1903
2014
  else {
1904
2015
  s3 = peg$FAILED;
1905
2016
  if (peg$silentFails === 0) {
1906
- peg$fail(peg$e15);
2017
+ peg$fail(peg$e17);
1907
2018
  }
1908
2019
  }
1909
2020
  if (s3 !== peg$FAILED) {
@@ -1914,7 +2025,7 @@ function peg$parse(input, options) {
1914
2025
  else {
1915
2026
  s4 = peg$FAILED;
1916
2027
  if (peg$silentFails === 0) {
1917
- peg$fail(peg$e16);
2028
+ peg$fail(peg$e18);
1918
2029
  }
1919
2030
  }
1920
2031
  if (s4 !== peg$FAILED) {
@@ -1930,7 +2041,7 @@ function peg$parse(input, options) {
1930
2041
  else {
1931
2042
  s7 = peg$FAILED;
1932
2043
  if (peg$silentFails === 0) {
1933
- peg$fail(peg$e12);
2044
+ peg$fail(peg$e14);
1934
2045
  }
1935
2046
  }
1936
2047
  if (s7 === peg$FAILED) {
@@ -1938,7 +2049,7 @@ function peg$parse(input, options) {
1938
2049
  }
1939
2050
  s6 = input.substring(s6, peg$currPos);
1940
2051
  peg$savedPos = s0;
1941
- s0 = peg$f24(s1, s3, s4, s5, s6);
2052
+ s0 = peg$f25(s1, s3, s4, s5, s6);
1942
2053
  }
1943
2054
  else {
1944
2055
  peg$currPos = s0;
@@ -1971,7 +2082,7 @@ function peg$parse(input, options) {
1971
2082
  else {
1972
2083
  s1 = peg$FAILED;
1973
2084
  if (peg$silentFails === 0) {
1974
- peg$fail(peg$e15);
2085
+ peg$fail(peg$e17);
1975
2086
  }
1976
2087
  }
1977
2088
  if (s1 !== peg$FAILED) {
@@ -1982,7 +2093,7 @@ function peg$parse(input, options) {
1982
2093
  else {
1983
2094
  s2 = peg$FAILED;
1984
2095
  if (peg$silentFails === 0) {
1985
- peg$fail(peg$e16);
2096
+ peg$fail(peg$e18);
1986
2097
  }
1987
2098
  }
1988
2099
  if (s2 !== peg$FAILED) {
@@ -1998,7 +2109,7 @@ function peg$parse(input, options) {
1998
2109
  else {
1999
2110
  s5 = peg$FAILED;
2000
2111
  if (peg$silentFails === 0) {
2001
- peg$fail(peg$e12);
2112
+ peg$fail(peg$e14);
2002
2113
  }
2003
2114
  }
2004
2115
  if (s5 === peg$FAILED) {
@@ -2006,7 +2117,7 @@ function peg$parse(input, options) {
2006
2117
  }
2007
2118
  s4 = input.substring(s4, peg$currPos);
2008
2119
  peg$savedPos = s0;
2009
- s0 = peg$f25(s1, s2, s3, s4);
2120
+ s0 = peg$f26(s1, s2, s3, s4);
2010
2121
  }
2011
2122
  else {
2012
2123
  peg$currPos = s0;
@@ -2023,13 +2134,13 @@ function peg$parse(input, options) {
2023
2134
  let s0, s1, s2;
2024
2135
  s0 = peg$currPos;
2025
2136
  if (input.charCodeAt(peg$currPos) === 61) {
2026
- s1 = peg$c11;
2137
+ s1 = peg$c12;
2027
2138
  peg$currPos++;
2028
2139
  }
2029
2140
  else {
2030
2141
  s1 = peg$FAILED;
2031
2142
  if (peg$silentFails === 0) {
2032
- peg$fail(peg$e18);
2143
+ peg$fail(peg$e20);
2033
2144
  }
2034
2145
  }
2035
2146
  if (s1 !== peg$FAILED) {
@@ -2040,12 +2151,12 @@ function peg$parse(input, options) {
2040
2151
  else {
2041
2152
  s2 = peg$FAILED;
2042
2153
  if (peg$silentFails === 0) {
2043
- peg$fail(peg$e19);
2154
+ peg$fail(peg$e21);
2044
2155
  }
2045
2156
  }
2046
2157
  if (s2 !== peg$FAILED) {
2047
2158
  peg$savedPos = s0;
2048
- s0 = peg$f26(s2);
2159
+ s0 = peg$f27(s2);
2049
2160
  }
2050
2161
  else {
2051
2162
  peg$currPos = s0;
@@ -2062,13 +2173,13 @@ function peg$parse(input, options) {
2062
2173
  let s0, s1, s2, s3, s4, s5;
2063
2174
  s0 = peg$currPos;
2064
2175
  if (input.charCodeAt(peg$currPos) === 40) {
2065
- s1 = peg$c12;
2176
+ s1 = peg$c13;
2066
2177
  peg$currPos++;
2067
2178
  }
2068
2179
  else {
2069
2180
  s1 = peg$FAILED;
2070
2181
  if (peg$silentFails === 0) {
2071
- peg$fail(peg$e20);
2182
+ peg$fail(peg$e22);
2072
2183
  }
2073
2184
  }
2074
2185
  if (s1 !== peg$FAILED) {
@@ -2077,18 +2188,18 @@ function peg$parse(input, options) {
2077
2188
  if (s3 !== peg$FAILED) {
2078
2189
  s4 = peg$parse_();
2079
2190
  if (input.charCodeAt(peg$currPos) === 41) {
2080
- s5 = peg$c13;
2191
+ s5 = peg$c14;
2081
2192
  peg$currPos++;
2082
2193
  }
2083
2194
  else {
2084
2195
  s5 = peg$FAILED;
2085
2196
  if (peg$silentFails === 0) {
2086
- peg$fail(peg$e21);
2197
+ peg$fail(peg$e23);
2087
2198
  }
2088
2199
  }
2089
2200
  if (s5 !== peg$FAILED) {
2090
2201
  peg$savedPos = s0;
2091
- s0 = peg$f27(s3);
2202
+ s0 = peg$f28(s3);
2092
2203
  }
2093
2204
  else {
2094
2205
  peg$currPos = s0;
@@ -2118,13 +2229,13 @@ function peg$parse(input, options) {
2118
2229
  let s0, s1, s2, s3, s4;
2119
2230
  s0 = peg$currPos;
2120
2231
  if (input.charCodeAt(peg$currPos) === 36) {
2121
- s1 = peg$c14;
2232
+ s1 = peg$c15;
2122
2233
  peg$currPos++;
2123
2234
  }
2124
2235
  else {
2125
2236
  s1 = peg$FAILED;
2126
2237
  if (peg$silentFails === 0) {
2127
- peg$fail(peg$e22);
2238
+ peg$fail(peg$e24);
2128
2239
  }
2129
2240
  }
2130
2241
  if (s1 !== peg$FAILED) {
@@ -2137,7 +2248,7 @@ function peg$parse(input, options) {
2137
2248
  else {
2138
2249
  s4 = peg$FAILED;
2139
2250
  if (peg$silentFails === 0) {
2140
- peg$fail(peg$e9);
2251
+ peg$fail(peg$e11);
2141
2252
  }
2142
2253
  }
2143
2254
  if (s4 !== peg$FAILED) {
@@ -2150,7 +2261,7 @@ function peg$parse(input, options) {
2150
2261
  else {
2151
2262
  s4 = peg$FAILED;
2152
2263
  if (peg$silentFails === 0) {
2153
- peg$fail(peg$e9);
2264
+ peg$fail(peg$e11);
2154
2265
  }
2155
2266
  }
2156
2267
  }
@@ -2166,7 +2277,7 @@ function peg$parse(input, options) {
2166
2277
  }
2167
2278
  if (s2 !== peg$FAILED) {
2168
2279
  peg$savedPos = s0;
2169
- s0 = peg$f28(s2);
2280
+ s0 = peg$f29(s2);
2170
2281
  }
2171
2282
  else {
2172
2283
  peg$currPos = s0;
@@ -2181,47 +2292,47 @@ function peg$parse(input, options) {
2181
2292
  }
2182
2293
  function peg$parsenag_import() {
2183
2294
  let s0;
2184
- if (input.substr(peg$currPos, 2) === peg$c15) {
2185
- s0 = peg$c15;
2295
+ if (input.substr(peg$currPos, 2) === peg$c16) {
2296
+ s0 = peg$c16;
2186
2297
  peg$currPos += 2;
2187
2298
  }
2188
2299
  else {
2189
2300
  s0 = peg$FAILED;
2190
2301
  if (peg$silentFails === 0) {
2191
- peg$fail(peg$e23);
2302
+ peg$fail(peg$e25);
2192
2303
  }
2193
2304
  }
2194
2305
  if (s0 === peg$FAILED) {
2195
- if (input.substr(peg$currPos, 2) === peg$c16) {
2196
- s0 = peg$c16;
2306
+ if (input.substr(peg$currPos, 2) === peg$c17) {
2307
+ s0 = peg$c17;
2197
2308
  peg$currPos += 2;
2198
2309
  }
2199
2310
  else {
2200
2311
  s0 = peg$FAILED;
2201
2312
  if (peg$silentFails === 0) {
2202
- peg$fail(peg$e24);
2313
+ peg$fail(peg$e26);
2203
2314
  }
2204
2315
  }
2205
2316
  if (s0 === peg$FAILED) {
2206
- if (input.substr(peg$currPos, 2) === peg$c17) {
2207
- s0 = peg$c17;
2317
+ if (input.substr(peg$currPos, 2) === peg$c18) {
2318
+ s0 = peg$c18;
2208
2319
  peg$currPos += 2;
2209
2320
  }
2210
2321
  else {
2211
2322
  s0 = peg$FAILED;
2212
2323
  if (peg$silentFails === 0) {
2213
- peg$fail(peg$e25);
2324
+ peg$fail(peg$e27);
2214
2325
  }
2215
2326
  }
2216
2327
  if (s0 === peg$FAILED) {
2217
- if (input.substr(peg$currPos, 2) === peg$c18) {
2218
- s0 = peg$c18;
2328
+ if (input.substr(peg$currPos, 2) === peg$c19) {
2329
+ s0 = peg$c19;
2219
2330
  peg$currPos += 2;
2220
2331
  }
2221
2332
  else {
2222
2333
  s0 = peg$FAILED;
2223
2334
  if (peg$silentFails === 0) {
2224
- peg$fail(peg$e26);
2335
+ peg$fail(peg$e28);
2225
2336
  }
2226
2337
  }
2227
2338
  if (s0 === peg$FAILED) {
@@ -2232,29 +2343,29 @@ function peg$parse(input, options) {
2232
2343
  else {
2233
2344
  s0 = peg$FAILED;
2234
2345
  if (peg$silentFails === 0) {
2235
- peg$fail(peg$e27);
2346
+ peg$fail(peg$e29);
2236
2347
  }
2237
2348
  }
2238
2349
  if (s0 === peg$FAILED) {
2239
- if (input.substr(peg$currPos, 3) === peg$c19) {
2240
- s0 = peg$c19;
2350
+ if (input.substr(peg$currPos, 3) === peg$c20) {
2351
+ s0 = peg$c20;
2241
2352
  peg$currPos += 3;
2242
2353
  }
2243
2354
  else {
2244
2355
  s0 = peg$FAILED;
2245
2356
  if (peg$silentFails === 0) {
2246
- peg$fail(peg$e28);
2357
+ peg$fail(peg$e30);
2247
2358
  }
2248
2359
  }
2249
2360
  if (s0 === peg$FAILED) {
2250
- if (input.substr(peg$currPos, 3) === peg$c20) {
2251
- s0 = peg$c20;
2361
+ if (input.substr(peg$currPos, 3) === peg$c21) {
2362
+ s0 = peg$c21;
2252
2363
  peg$currPos += 3;
2253
2364
  }
2254
2365
  else {
2255
2366
  s0 = peg$FAILED;
2256
2367
  if (peg$silentFails === 0) {
2257
- peg$fail(peg$e29);
2368
+ peg$fail(peg$e31);
2258
2369
  }
2259
2370
  }
2260
2371
  if (s0 === peg$FAILED) {
@@ -2265,7 +2376,7 @@ function peg$parse(input, options) {
2265
2376
  else {
2266
2377
  s0 = peg$FAILED;
2267
2378
  if (peg$silentFails === 0) {
2268
- peg$fail(peg$e30);
2379
+ peg$fail(peg$e32);
2269
2380
  }
2270
2381
  }
2271
2382
  }
@@ -2289,13 +2400,13 @@ function peg$parse(input, options) {
2289
2400
  let s0, s1, s2, s3, s4;
2290
2401
  s0 = peg$currPos;
2291
2402
  if (input.charCodeAt(peg$currPos) === 123) {
2292
- s1 = peg$c21;
2403
+ s1 = peg$c22;
2293
2404
  peg$currPos++;
2294
2405
  }
2295
2406
  else {
2296
2407
  s1 = peg$FAILED;
2297
2408
  if (peg$silentFails === 0) {
2298
- peg$fail(peg$e31);
2409
+ peg$fail(peg$e33);
2299
2410
  }
2300
2411
  }
2301
2412
  if (s1 !== peg$FAILED) {
@@ -2308,7 +2419,7 @@ function peg$parse(input, options) {
2308
2419
  else {
2309
2420
  s4 = peg$FAILED;
2310
2421
  if (peg$silentFails === 0) {
2311
- peg$fail(peg$e32);
2422
+ peg$fail(peg$e34);
2312
2423
  }
2313
2424
  }
2314
2425
  while (s4 !== peg$FAILED) {
@@ -2320,24 +2431,24 @@ function peg$parse(input, options) {
2320
2431
  else {
2321
2432
  s4 = peg$FAILED;
2322
2433
  if (peg$silentFails === 0) {
2323
- peg$fail(peg$e32);
2434
+ peg$fail(peg$e34);
2324
2435
  }
2325
2436
  }
2326
2437
  }
2327
2438
  s2 = input.substring(s2, peg$currPos);
2328
2439
  if (input.charCodeAt(peg$currPos) === 125) {
2329
- s3 = peg$c22;
2440
+ s3 = peg$c23;
2330
2441
  peg$currPos++;
2331
2442
  }
2332
2443
  else {
2333
2444
  s3 = peg$FAILED;
2334
2445
  if (peg$silentFails === 0) {
2335
- peg$fail(peg$e33);
2446
+ peg$fail(peg$e35);
2336
2447
  }
2337
2448
  }
2338
2449
  if (s3 !== peg$FAILED) {
2339
2450
  peg$savedPos = s0;
2340
- s0 = peg$f29(s2);
2451
+ s0 = peg$f30(s2);
2341
2452
  }
2342
2453
  else {
2343
2454
  peg$currPos = s0;
@@ -2354,13 +2465,13 @@ function peg$parse(input, options) {
2354
2465
  let s0, s1, s2, s3, s4, s5, s6;
2355
2466
  s0 = peg$currPos;
2356
2467
  if (input.charCodeAt(peg$currPos) === 59) {
2357
- s1 = peg$c23;
2468
+ s1 = peg$c24;
2358
2469
  peg$currPos++;
2359
2470
  }
2360
2471
  else {
2361
2472
  s1 = peg$FAILED;
2362
2473
  if (peg$silentFails === 0) {
2363
- peg$fail(peg$e34);
2474
+ peg$fail(peg$e36);
2364
2475
  }
2365
2476
  }
2366
2477
  if (s1 !== peg$FAILED) {
@@ -2376,7 +2487,7 @@ function peg$parse(input, options) {
2376
2487
  else {
2377
2488
  s6 = peg$FAILED;
2378
2489
  if (peg$silentFails === 0) {
2379
- peg$fail(peg$e35);
2490
+ peg$fail(peg$e37);
2380
2491
  }
2381
2492
  }
2382
2493
  peg$silentFails--;
@@ -2395,7 +2506,7 @@ function peg$parse(input, options) {
2395
2506
  else {
2396
2507
  s6 = peg$FAILED;
2397
2508
  if (peg$silentFails === 0) {
2398
- peg$fail(peg$e36);
2509
+ peg$fail(peg$e6);
2399
2510
  }
2400
2511
  }
2401
2512
  if (s6 !== peg$FAILED) {
@@ -2423,7 +2534,7 @@ function peg$parse(input, options) {
2423
2534
  else {
2424
2535
  s6 = peg$FAILED;
2425
2536
  if (peg$silentFails === 0) {
2426
- peg$fail(peg$e35);
2537
+ peg$fail(peg$e37);
2427
2538
  }
2428
2539
  }
2429
2540
  peg$silentFails--;
@@ -2442,7 +2553,7 @@ function peg$parse(input, options) {
2442
2553
  else {
2443
2554
  s6 = peg$FAILED;
2444
2555
  if (peg$silentFails === 0) {
2445
- peg$fail(peg$e36);
2556
+ peg$fail(peg$e6);
2446
2557
  }
2447
2558
  }
2448
2559
  if (s6 !== peg$FAILED) {
@@ -2461,7 +2572,7 @@ function peg$parse(input, options) {
2461
2572
  }
2462
2573
  s2 = input.substring(s2, peg$currPos);
2463
2574
  peg$savedPos = s0;
2464
- s0 = peg$f30(s2);
2575
+ s0 = peg$f31(s2);
2465
2576
  }
2466
2577
  else {
2467
2578
  peg$currPos = s0;
@@ -2479,7 +2590,7 @@ function peg$parse(input, options) {
2479
2590
  else {
2480
2591
  s1 = peg$FAILED;
2481
2592
  if (peg$silentFails === 0) {
2482
- peg$fail(peg$e37);
2593
+ peg$fail(peg$e38);
2483
2594
  }
2484
2595
  }
2485
2596
  if (s1 === peg$FAILED) {
@@ -2494,7 +2605,7 @@ function peg$parse(input, options) {
2494
2605
  else {
2495
2606
  s1 = peg$FAILED;
2496
2607
  if (peg$silentFails === 0) {
2497
- peg$fail(peg$e37);
2608
+ peg$fail(peg$e38);
2498
2609
  }
2499
2610
  }
2500
2611
  if (s1 === peg$FAILED) {
@@ -2507,13 +2618,13 @@ function peg$parse(input, options) {
2507
2618
  let s0, s1, s2, s3, s4, s5;
2508
2619
  s0 = peg$currPos;
2509
2620
  if (input.charCodeAt(peg$currPos) === 37) {
2510
- s1 = peg$c24;
2621
+ s1 = peg$c25;
2511
2622
  peg$currPos++;
2512
2623
  }
2513
2624
  else {
2514
2625
  s1 = peg$FAILED;
2515
2626
  if (peg$silentFails === 0) {
2516
- peg$fail(peg$e38);
2627
+ peg$fail(peg$e39);
2517
2628
  }
2518
2629
  }
2519
2630
  if (s1 !== peg$FAILED) {
@@ -2528,7 +2639,7 @@ function peg$parse(input, options) {
2528
2639
  else {
2529
2640
  s5 = peg$FAILED;
2530
2641
  if (peg$silentFails === 0) {
2531
- peg$fail(peg$e35);
2642
+ peg$fail(peg$e37);
2532
2643
  }
2533
2644
  }
2534
2645
  peg$silentFails--;
@@ -2547,7 +2658,7 @@ function peg$parse(input, options) {
2547
2658
  else {
2548
2659
  s5 = peg$FAILED;
2549
2660
  if (peg$silentFails === 0) {
2550
- peg$fail(peg$e36);
2661
+ peg$fail(peg$e6);
2551
2662
  }
2552
2663
  }
2553
2664
  if (s5 !== peg$FAILED) {
@@ -2575,7 +2686,7 @@ function peg$parse(input, options) {
2575
2686
  else {
2576
2687
  s5 = peg$FAILED;
2577
2688
  if (peg$silentFails === 0) {
2578
- peg$fail(peg$e35);
2689
+ peg$fail(peg$e37);
2579
2690
  }
2580
2691
  }
2581
2692
  peg$silentFails--;
@@ -2594,7 +2705,7 @@ function peg$parse(input, options) {
2594
2705
  else {
2595
2706
  s5 = peg$FAILED;
2596
2707
  if (peg$silentFails === 0) {
2597
- peg$fail(peg$e36);
2708
+ peg$fail(peg$e6);
2598
2709
  }
2599
2710
  }
2600
2711
  if (s5 !== peg$FAILED) {
@@ -2618,7 +2729,7 @@ function peg$parse(input, options) {
2618
2729
  else {
2619
2730
  s3 = peg$FAILED;
2620
2731
  if (peg$silentFails === 0) {
2621
- peg$fail(peg$e35);
2732
+ peg$fail(peg$e37);
2622
2733
  }
2623
2734
  }
2624
2735
  if (s3 === peg$FAILED) {
@@ -2633,6 +2744,10 @@ function peg$parse(input, options) {
2633
2744
  }
2634
2745
  return s0;
2635
2746
  }
2747
+ // options is Peggy's options object; user-supplied keys pass through unchanged.
2748
+ // _warn is set once per parse() call so pairMoves (global scope) can access it.
2749
+ // @ts-expect-error — Peggy interop: options type is narrower than actual object
2750
+ _warn = typeof options?.onWarning === 'function' ? options.onWarning : null;
2636
2751
  peg$result = peg$startRuleFunction();
2637
2752
  const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);
2638
2753
  function peg$throw() {