@cristianormazabal/triton-latex 0.1.8 → 0.1.9

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/cli.cjs CHANGED
@@ -1508,9 +1508,11 @@ function layoutFlowchart(ir, theme, options) {
1508
1508
  const toRect2 = nodePos.get(edge.to);
1509
1509
  if (!fromRect || !toRect2) continue;
1510
1510
  const dash = edge.style === "dotted" ? "6 3" : edge.style === "dashed" ? "8 4" : void 0;
1511
+ const sw = edge.style === "thick" ? edgeTheme.strokeWidth * 2 : edgeTheme.strokeWidth;
1512
+ const color = edge.style === "dotted" ? palette.textMuted : palette.primary;
1511
1513
  if (edge.from === edge.to) {
1512
1514
  const loop = selfLoopRoute(fromRect, isLR);
1513
- elements.push(p.path(loop.path, edge.kind === "async" ? palette.textMuted : palette.primary, edgeTheme.strokeWidth, {
1515
+ elements.push(p.path(loop.path, color, sw, {
1514
1516
  ...dash !== void 0 ? { dash } : {},
1515
1517
  markerEnd: ARROW_MARKER_ID
1516
1518
  }));
@@ -1523,7 +1525,7 @@ function layoutFlowchart(ir, theme, options) {
1523
1525
  }
1524
1526
  if (backEdges.has(ei)) {
1525
1527
  const bow = backEdgeRoute(fromRect, toRect2, isLR);
1526
- elements.push(p.path(bow.path, edge.kind === "async" ? palette.textMuted : palette.primary, edgeTheme.strokeWidth, {
1528
+ elements.push(p.path(bow.path, color, sw, {
1527
1529
  ...dash !== void 0 ? { dash } : {},
1528
1530
  markerEnd: ARROW_MARKER_ID
1529
1531
  }));
@@ -1548,7 +1550,7 @@ function layoutFlowchart(ir, theme, options) {
1548
1550
  fromDir: fromAnchor.portDir,
1549
1551
  toDir: toAnchor.portDir
1550
1552
  });
1551
- elements.push(p.path(route.path, edge.kind === "async" ? palette.textMuted : palette.primary, edgeTheme.strokeWidth, {
1553
+ elements.push(p.path(route.path, color, sw, {
1552
1554
  ...dash !== void 0 ? { dash } : {},
1553
1555
  markerEnd: ARROW_MARKER_ID
1554
1556
  }));
@@ -1970,8 +1972,13 @@ function registerNode(rawId, label, shape) {
1970
1972
  }
1971
1973
  return id;
1972
1974
  }
1973
- function addEdge(from, to, label, kind, style, ann) {
1974
- const e = { from, to, label: label || void 0, kind: kind || "sync", style: style || "solid" };
1975
+ function addEdge(from, to, label, style, ann, edgeProps) {
1976
+ const e = { from, to, label: label || void 0, style: style || "solid" };
1977
+ if (edgeProps) {
1978
+ if (edgeProps.bidirectional) e.bidirectional = true;
1979
+ if (edgeProps.undirected) e.undirected = true;
1980
+ if (edgeProps.endMarker) e.endMarker = edgeProps.endMarker;
1981
+ }
1975
1982
  if (ann) {
1976
1983
  if (ann.routing) e.routing = ann.routing;
1977
1984
  if (ann.exitWall) e.exitWall = ann.exitWall;
@@ -2130,59 +2137,65 @@ function peg$parse(input, options) {
2130
2137
  var peg$c13 = "]";
2131
2138
  var peg$c14 = "@";
2132
2139
  var peg$c15 = "|";
2133
- var peg$c16 = "<-.->";
2134
- var peg$c17 = "<-->";
2135
- var peg$c18 = "<==>";
2136
- var peg$c19 = "-..->";
2137
- var peg$c20 = "-.-> ";
2138
- var peg$c21 = "-.->";
2139
- var peg$c22 = "--->";
2140
- var peg$c23 = "-->";
2141
- var peg$c24 = "==>";
2142
- var peg$c25 = "--x";
2143
- var peg$c26 = "--o";
2144
- var peg$c27 = "-.-";
2145
- var peg$c28 = "===";
2146
- var peg$c29 = ":";
2147
- var peg$c30 = "straight";
2148
- var peg$c31 = "orthogonal";
2149
- var peg$c32 = "bezier";
2150
- var peg$c33 = "polyline";
2151
- var peg$c34 = "((";
2152
- var peg$c35 = "))";
2153
- var peg$c36 = "([";
2154
- var peg$c37 = "])";
2155
- var peg$c38 = "[[";
2156
- var peg$c39 = "]]";
2157
- var peg$c40 = "[(";
2158
- var peg$c41 = ")]";
2159
- var peg$c42 = "{{";
2160
- var peg$c43 = "}}";
2161
- var peg$c44 = "[/";
2162
- var peg$c45 = "/]";
2163
- var peg$c46 = "[\\";
2164
- var peg$c47 = "\\]";
2165
- var peg$c48 = ">";
2166
- var peg$c49 = "{";
2167
- var peg$c50 = "}";
2168
- var peg$c51 = "(";
2169
- var peg$c52 = ")";
2170
- var peg$c53 = "style";
2171
- var peg$c54 = "classDef";
2172
- var peg$c55 = "class";
2173
- var peg$c56 = "click";
2174
- var peg$c57 = "note";
2175
- var peg$c58 = '"';
2176
- var peg$c59 = "at";
2177
- var peg$c60 = "offset";
2178
- var peg$c61 = ",";
2179
- var peg$c62 = "-";
2180
- var peg$c63 = "legend";
2181
- var peg$c64 = "bottom-right";
2182
- var peg$c65 = "bottom-left";
2183
- var peg$c66 = "top-right";
2184
- var peg$c67 = "top-left";
2185
- var peg$c68 = "\r\n";
2140
+ var peg$c16 = "<-~->";
2141
+ var peg$c17 = "<-_->";
2142
+ var peg$c18 = "<-.->";
2143
+ var peg$c19 = "<==>";
2144
+ var peg$c20 = "<-->";
2145
+ var peg$c21 = "-~->";
2146
+ var peg$c22 = "-_->";
2147
+ var peg$c23 = "-..->";
2148
+ var peg$c24 = "-.->";
2149
+ var peg$c25 = "===>";
2150
+ var peg$c26 = "==>";
2151
+ var peg$c27 = "--->";
2152
+ var peg$c28 = "-->";
2153
+ var peg$c29 = "--x";
2154
+ var peg$c30 = "--o";
2155
+ var peg$c31 = "-~-";
2156
+ var peg$c32 = "-_-";
2157
+ var peg$c33 = "-.-";
2158
+ var peg$c34 = "===";
2159
+ var peg$c35 = ":";
2160
+ var peg$c36 = "straight";
2161
+ var peg$c37 = "orthogonal";
2162
+ var peg$c38 = "bezier";
2163
+ var peg$c39 = "polyline";
2164
+ var peg$c40 = "((";
2165
+ var peg$c41 = "))";
2166
+ var peg$c42 = "([";
2167
+ var peg$c43 = "])";
2168
+ var peg$c44 = "[[";
2169
+ var peg$c45 = "]]";
2170
+ var peg$c46 = "[(";
2171
+ var peg$c47 = ")]";
2172
+ var peg$c48 = "{{";
2173
+ var peg$c49 = "}}";
2174
+ var peg$c50 = "[/";
2175
+ var peg$c51 = "/]";
2176
+ var peg$c52 = "[\\";
2177
+ var peg$c53 = "\\]";
2178
+ var peg$c54 = ">";
2179
+ var peg$c55 = "{";
2180
+ var peg$c56 = "}";
2181
+ var peg$c57 = "(";
2182
+ var peg$c58 = ")";
2183
+ var peg$c59 = "style";
2184
+ var peg$c60 = "classDef";
2185
+ var peg$c61 = "class";
2186
+ var peg$c62 = "click";
2187
+ var peg$c63 = "note";
2188
+ var peg$c64 = '"';
2189
+ var peg$c65 = "at";
2190
+ var peg$c66 = "offset";
2191
+ var peg$c67 = ",";
2192
+ var peg$c68 = "-";
2193
+ var peg$c69 = "legend";
2194
+ var peg$c70 = "bottom-right";
2195
+ var peg$c71 = "bottom-left";
2196
+ var peg$c72 = "top-right";
2197
+ var peg$c73 = "top-left";
2198
+ var peg$c74 = "\r\n";
2186
2199
  var peg$r0 = /^[^\n]/;
2187
2200
  var peg$r1 = /^[a-zA-Z_]/;
2188
2201
  var peg$r2 = /^[a-zA-Z0-9_]/;
@@ -2223,73 +2236,79 @@ function peg$parse(input, options) {
2223
2236
  var peg$e20 = peg$literalExpectation("@", false);
2224
2237
  var peg$e21 = peg$literalExpectation("|", false);
2225
2238
  var peg$e22 = peg$classExpectation(["|"], true, false);
2226
- var peg$e23 = peg$literalExpectation("<-.->", false);
2227
- var peg$e24 = peg$literalExpectation("<-->", false);
2228
- var peg$e25 = peg$literalExpectation("<==>", false);
2229
- var peg$e26 = peg$literalExpectation("-..->", false);
2230
- var peg$e27 = peg$literalExpectation("-.-> ", false);
2231
- var peg$e28 = peg$literalExpectation("-.->", false);
2232
- var peg$e29 = peg$literalExpectation("--->", false);
2233
- var peg$e30 = peg$literalExpectation("-->", false);
2234
- var peg$e31 = peg$literalExpectation("==>", false);
2235
- var peg$e32 = peg$literalExpectation("--x", false);
2236
- var peg$e33 = peg$literalExpectation("--o", false);
2237
- var peg$e34 = peg$literalExpectation("-.-", false);
2238
- var peg$e35 = peg$literalExpectation("===", false);
2239
- var peg$e36 = peg$literalExpectation(":", false);
2240
- var peg$e37 = peg$literalExpectation("straight", false);
2241
- var peg$e38 = peg$literalExpectation("orthogonal", false);
2242
- var peg$e39 = peg$literalExpectation("bezier", false);
2243
- var peg$e40 = peg$literalExpectation("polyline", false);
2244
- var peg$e41 = peg$classExpectation(["E", "N", "S", "W"], false, false);
2245
- var peg$e42 = peg$literalExpectation("((", false);
2246
- var peg$e43 = peg$classExpectation([")"], true, false);
2247
- var peg$e44 = peg$literalExpectation("))", false);
2248
- var peg$e45 = peg$literalExpectation("([", false);
2249
- var peg$e46 = peg$literalExpectation("])", false);
2250
- var peg$e47 = peg$literalExpectation("[[", false);
2251
- var peg$e48 = peg$literalExpectation("]]", false);
2252
- var peg$e49 = peg$literalExpectation("[(", false);
2253
- var peg$e50 = peg$literalExpectation(")]", false);
2254
- var peg$e51 = peg$literalExpectation("{{", false);
2255
- var peg$e52 = peg$classExpectation(["}"], true, false);
2256
- var peg$e53 = peg$literalExpectation("}}", false);
2257
- var peg$e54 = peg$literalExpectation("[/", false);
2258
- var peg$e55 = peg$classExpectation(["/"], true, false);
2259
- var peg$e56 = peg$literalExpectation("/]", false);
2260
- var peg$e57 = peg$literalExpectation("[\\", false);
2261
- var peg$e58 = peg$classExpectation(["\\"], true, false);
2262
- var peg$e59 = peg$literalExpectation("\\]", false);
2263
- var peg$e60 = peg$literalExpectation(">", false);
2264
- var peg$e61 = peg$literalExpectation("{", false);
2265
- var peg$e62 = peg$literalExpectation("}", false);
2266
- var peg$e63 = peg$literalExpectation("(", false);
2267
- var peg$e64 = peg$literalExpectation(")", false);
2268
- var peg$e65 = peg$literalExpectation("style", false);
2269
- var peg$e66 = peg$classExpectation(["\n", ";"], true, false);
2270
- var peg$e67 = peg$literalExpectation("classDef", false);
2271
- var peg$e68 = peg$literalExpectation("class", false);
2272
- var peg$e69 = peg$literalExpectation("click", false);
2273
- var peg$e70 = peg$literalExpectation("note", false);
2274
- var peg$e71 = peg$literalExpectation('"', false);
2275
- var peg$e72 = peg$classExpectation(['"'], true, false);
2276
- var peg$e73 = peg$literalExpectation("at", false);
2277
- var peg$e74 = peg$literalExpectation("offset", false);
2278
- var peg$e75 = peg$literalExpectation(",", false);
2279
- var peg$e76 = peg$literalExpectation("-", false);
2280
- var peg$e77 = peg$classExpectation([["0", "9"]], false, false);
2281
- var peg$e78 = peg$literalExpectation("legend", false);
2282
- var peg$e79 = peg$literalExpectation("bottom-right", false);
2283
- var peg$e80 = peg$literalExpectation("bottom-left", false);
2284
- var peg$e81 = peg$literalExpectation("top-right", false);
2285
- var peg$e82 = peg$literalExpectation("top-left", false);
2286
- var peg$e83 = peg$classExpectation([":", "\n"], true, false);
2287
- var peg$e84 = peg$otherExpectation("optional whitespace");
2288
- var peg$e85 = peg$classExpectation([" ", " "], false, false);
2289
- var peg$e86 = peg$otherExpectation("required whitespace");
2290
- var peg$e87 = peg$otherExpectation("newline");
2291
- var peg$e88 = peg$literalExpectation("\r\n", false);
2292
- var peg$e89 = peg$classExpectation(["\n", "\r"], false, false);
2239
+ var peg$e23 = peg$literalExpectation("<-~->", false);
2240
+ var peg$e24 = peg$literalExpectation("<-_->", false);
2241
+ var peg$e25 = peg$literalExpectation("<-.->", false);
2242
+ var peg$e26 = peg$literalExpectation("<==>", false);
2243
+ var peg$e27 = peg$literalExpectation("<-->", false);
2244
+ var peg$e28 = peg$literalExpectation("-~->", false);
2245
+ var peg$e29 = peg$literalExpectation("-_->", false);
2246
+ var peg$e30 = peg$literalExpectation("-..->", false);
2247
+ var peg$e31 = peg$literalExpectation("-.->", false);
2248
+ var peg$e32 = peg$literalExpectation("===>", false);
2249
+ var peg$e33 = peg$literalExpectation("==>", false);
2250
+ var peg$e34 = peg$literalExpectation("--->", false);
2251
+ var peg$e35 = peg$literalExpectation("-->", false);
2252
+ var peg$e36 = peg$literalExpectation("--x", false);
2253
+ var peg$e37 = peg$literalExpectation("--o", false);
2254
+ var peg$e38 = peg$literalExpectation("-~-", false);
2255
+ var peg$e39 = peg$literalExpectation("-_-", false);
2256
+ var peg$e40 = peg$literalExpectation("-.-", false);
2257
+ var peg$e41 = peg$literalExpectation("===", false);
2258
+ var peg$e42 = peg$literalExpectation(":", false);
2259
+ var peg$e43 = peg$literalExpectation("straight", false);
2260
+ var peg$e44 = peg$literalExpectation("orthogonal", false);
2261
+ var peg$e45 = peg$literalExpectation("bezier", false);
2262
+ var peg$e46 = peg$literalExpectation("polyline", false);
2263
+ var peg$e47 = peg$classExpectation(["E", "N", "S", "W"], false, false);
2264
+ var peg$e48 = peg$literalExpectation("((", false);
2265
+ var peg$e49 = peg$classExpectation([")"], true, false);
2266
+ var peg$e50 = peg$literalExpectation("))", false);
2267
+ var peg$e51 = peg$literalExpectation("([", false);
2268
+ var peg$e52 = peg$literalExpectation("])", false);
2269
+ var peg$e53 = peg$literalExpectation("[[", false);
2270
+ var peg$e54 = peg$literalExpectation("]]", false);
2271
+ var peg$e55 = peg$literalExpectation("[(", false);
2272
+ var peg$e56 = peg$literalExpectation(")]", false);
2273
+ var peg$e57 = peg$literalExpectation("{{", false);
2274
+ var peg$e58 = peg$classExpectation(["}"], true, false);
2275
+ var peg$e59 = peg$literalExpectation("}}", false);
2276
+ var peg$e60 = peg$literalExpectation("[/", false);
2277
+ var peg$e61 = peg$classExpectation(["/"], true, false);
2278
+ var peg$e62 = peg$literalExpectation("/]", false);
2279
+ var peg$e63 = peg$literalExpectation("[\\", false);
2280
+ var peg$e64 = peg$classExpectation(["\\"], true, false);
2281
+ var peg$e65 = peg$literalExpectation("\\]", false);
2282
+ var peg$e66 = peg$literalExpectation(">", false);
2283
+ var peg$e67 = peg$literalExpectation("{", false);
2284
+ var peg$e68 = peg$literalExpectation("}", false);
2285
+ var peg$e69 = peg$literalExpectation("(", false);
2286
+ var peg$e70 = peg$literalExpectation(")", false);
2287
+ var peg$e71 = peg$literalExpectation("style", false);
2288
+ var peg$e72 = peg$classExpectation(["\n", ";"], true, false);
2289
+ var peg$e73 = peg$literalExpectation("classDef", false);
2290
+ var peg$e74 = peg$literalExpectation("class", false);
2291
+ var peg$e75 = peg$literalExpectation("click", false);
2292
+ var peg$e76 = peg$literalExpectation("note", false);
2293
+ var peg$e77 = peg$literalExpectation('"', false);
2294
+ var peg$e78 = peg$classExpectation(['"'], true, false);
2295
+ var peg$e79 = peg$literalExpectation("at", false);
2296
+ var peg$e80 = peg$literalExpectation("offset", false);
2297
+ var peg$e81 = peg$literalExpectation(",", false);
2298
+ var peg$e82 = peg$literalExpectation("-", false);
2299
+ var peg$e83 = peg$classExpectation([["0", "9"]], false, false);
2300
+ var peg$e84 = peg$literalExpectation("legend", false);
2301
+ var peg$e85 = peg$literalExpectation("bottom-right", false);
2302
+ var peg$e86 = peg$literalExpectation("bottom-left", false);
2303
+ var peg$e87 = peg$literalExpectation("top-right", false);
2304
+ var peg$e88 = peg$literalExpectation("top-left", false);
2305
+ var peg$e89 = peg$classExpectation([":", "\n"], true, false);
2306
+ var peg$e90 = peg$otherExpectation("optional whitespace");
2307
+ var peg$e91 = peg$classExpectation([" ", " "], false, false);
2308
+ var peg$e92 = peg$otherExpectation("required whitespace");
2309
+ var peg$e93 = peg$otherExpectation("newline");
2310
+ var peg$e94 = peg$literalExpectation("\r\n", false);
2311
+ var peg$e95 = peg$classExpectation(["\n", "\r"], false, false);
2293
2312
  var peg$f0 = function(frontmatter, header, statements) {
2294
2313
  return {
2295
2314
  version: "1.0",
@@ -2337,7 +2356,7 @@ function peg$parse(input, options) {
2337
2356
  var peg$f11 = function(head, rest) {
2338
2357
  let prev = head;
2339
2358
  for (const { edge, target, ann } of rest) {
2340
- addEdge(prev.id, target.id, edge.label, edge.kind, edge.style, ann);
2359
+ addEdge(prev.id, target.id, edge.label, edge.style, ann, edge);
2341
2360
  prev = target;
2342
2361
  }
2343
2362
  return { type: "chain" };
@@ -2349,145 +2368,163 @@ function peg$parse(input, options) {
2349
2368
  return text2.trim();
2350
2369
  };
2351
2370
  var peg$f14 = function() {
2352
- return { kind: "async", style: "dotted" };
2371
+ return { style: "wavy", bidirectional: true };
2353
2372
  };
2354
2373
  var peg$f15 = function() {
2355
- return { kind: "sync", style: "solid" };
2374
+ return { style: "dashed", bidirectional: true };
2356
2375
  };
2357
2376
  var peg$f16 = function() {
2358
- return { kind: "sync", style: "solid" };
2377
+ return { style: "dotted", bidirectional: true };
2359
2378
  };
2360
2379
  var peg$f17 = function() {
2361
- return { kind: "async", style: "dotted" };
2380
+ return { style: "thick", bidirectional: true };
2362
2381
  };
2363
2382
  var peg$f18 = function() {
2364
- return { kind: "async", style: "dotted" };
2383
+ return { style: "solid", bidirectional: true };
2365
2384
  };
2366
2385
  var peg$f19 = function() {
2367
- return { kind: "async", style: "dotted" };
2386
+ return { style: "wavy" };
2368
2387
  };
2369
2388
  var peg$f20 = function() {
2370
- return { kind: "sync", style: "solid" };
2389
+ return { style: "dashed" };
2371
2390
  };
2372
2391
  var peg$f21 = function() {
2373
- return { kind: "sync", style: "solid" };
2392
+ return { style: "dotted" };
2374
2393
  };
2375
2394
  var peg$f22 = function() {
2376
- return { kind: "sync", style: "solid" };
2395
+ return { style: "dotted" };
2377
2396
  };
2378
2397
  var peg$f23 = function() {
2379
- return { kind: "sync", style: "solid" };
2398
+ return { style: "thick" };
2380
2399
  };
2381
2400
  var peg$f24 = function() {
2382
- return { kind: "sync", style: "solid" };
2401
+ return { style: "thick" };
2383
2402
  };
2384
2403
  var peg$f25 = function() {
2385
- return { kind: "async", style: "dotted" };
2404
+ return { style: "solid" };
2386
2405
  };
2387
2406
  var peg$f26 = function() {
2388
- return { kind: "sync", style: "solid" };
2407
+ return { style: "solid" };
2389
2408
  };
2390
2409
  var peg$f27 = function() {
2391
- return { kind: "sync", style: "solid" };
2410
+ return { style: "solid", endMarker: "cross" };
2411
+ };
2412
+ var peg$f28 = function() {
2413
+ return { style: "solid", endMarker: "circle" };
2414
+ };
2415
+ var peg$f29 = function() {
2416
+ return { style: "wavy", undirected: true };
2417
+ };
2418
+ var peg$f30 = function() {
2419
+ return { style: "dashed", undirected: true };
2420
+ };
2421
+ var peg$f31 = function() {
2422
+ return { style: "dotted", undirected: true };
2423
+ };
2424
+ var peg$f32 = function() {
2425
+ return { style: "thick", undirected: true };
2392
2426
  };
2393
- var peg$f28 = function(route, walls) {
2427
+ var peg$f33 = function() {
2428
+ return { style: "solid", undirected: true };
2429
+ };
2430
+ var peg$f34 = function(route, walls) {
2394
2431
  return { routing: route, ...walls ? walls[1] : {} };
2395
2432
  };
2396
- var peg$f29 = function(walls) {
2433
+ var peg$f35 = function(walls) {
2397
2434
  return walls;
2398
2435
  };
2399
- var peg$f30 = function() {
2436
+ var peg$f36 = function() {
2400
2437
  return "straight";
2401
2438
  };
2402
- var peg$f31 = function() {
2439
+ var peg$f37 = function() {
2403
2440
  return "orthogonal";
2404
2441
  };
2405
- var peg$f32 = function() {
2442
+ var peg$f38 = function() {
2406
2443
  return "bezier";
2407
2444
  };
2408
- var peg$f33 = function() {
2445
+ var peg$f39 = function() {
2409
2446
  return "polyline";
2410
2447
  };
2411
- var peg$f34 = function(exit, entry) {
2448
+ var peg$f40 = function(exit, entry) {
2412
2449
  return { exitWall: exit, entryWall: entry };
2413
2450
  };
2414
- var peg$f35 = function(exit) {
2451
+ var peg$f41 = function(exit) {
2415
2452
  return { exitWall: exit };
2416
2453
  };
2417
- var peg$f36 = function(w) {
2454
+ var peg$f42 = function(w) {
2418
2455
  return w;
2419
2456
  };
2420
- var peg$f37 = function(id, shape) {
2457
+ var peg$f43 = function(id, shape) {
2421
2458
  return { id: registerNode(id, shape ? shape.label : null, shape ? shape.shape : null) };
2422
2459
  };
2423
- var peg$f38 = function(ref) {
2460
+ var peg$f44 = function(ref) {
2424
2461
  return { type: "node", ...ref };
2425
2462
  };
2426
- var peg$f39 = function(id) {
2463
+ var peg$f45 = function(id) {
2427
2464
  return id;
2428
2465
  };
2429
- var peg$f40 = function(text2) {
2466
+ var peg$f46 = function(text2) {
2430
2467
  return { shape: "circle", label: stripQuotes(text2.trim()) };
2431
2468
  };
2432
- var peg$f41 = function(text2) {
2469
+ var peg$f47 = function(text2) {
2433
2470
  return { shape: "stadium", label: stripQuotes(text2.trim()) };
2434
2471
  };
2435
- var peg$f42 = function(text2) {
2472
+ var peg$f48 = function(text2) {
2436
2473
  return { shape: "subroutine", label: stripQuotes(text2.trim()) };
2437
2474
  };
2438
- var peg$f43 = function(text2) {
2475
+ var peg$f49 = function(text2) {
2439
2476
  return { shape: "cylinder", label: stripQuotes(text2.trim()) };
2440
2477
  };
2441
- var peg$f44 = function(text2) {
2478
+ var peg$f50 = function(text2) {
2442
2479
  return { shape: "hexagon", label: stripQuotes(text2.trim()) };
2443
2480
  };
2444
- var peg$f45 = function(text2) {
2481
+ var peg$f51 = function(text2) {
2445
2482
  return { shape: "parallelogram", label: stripQuotes(text2.trim()) };
2446
2483
  };
2447
- var peg$f46 = function(text2) {
2484
+ var peg$f52 = function(text2) {
2448
2485
  return { shape: "parallelogram-alt", label: stripQuotes(text2.trim()) };
2449
2486
  };
2450
- var peg$f47 = function(text2) {
2487
+ var peg$f53 = function(text2) {
2451
2488
  return { shape: "asymmetric", label: stripQuotes(text2.trim()) };
2452
2489
  };
2453
- var peg$f48 = function(text2) {
2490
+ var peg$f54 = function(text2) {
2454
2491
  return { shape: "rect", label: stripQuotes(text2.trim()) };
2455
2492
  };
2456
- var peg$f49 = function(text2) {
2493
+ var peg$f55 = function(text2) {
2457
2494
  return { shape: "diamond", label: stripQuotes(text2.trim()) };
2458
2495
  };
2459
- var peg$f50 = function(text2) {
2496
+ var peg$f56 = function(text2) {
2460
2497
  return { shape: "rounded-rect", label: stripQuotes(text2.trim()) };
2461
2498
  };
2462
- var peg$f51 = function(content) {
2499
+ var peg$f57 = function(content) {
2463
2500
  return { type: "style", raw: content };
2464
2501
  };
2465
- var peg$f52 = function(content) {
2502
+ var peg$f58 = function(content) {
2466
2503
  return { type: "class", raw: content };
2467
2504
  };
2468
- var peg$f53 = function(content) {
2505
+ var peg$f59 = function(content) {
2469
2506
  return { type: "click", raw: content };
2470
2507
  };
2471
- var peg$f54 = function(text2, target, offset2) {
2508
+ var peg$f60 = function(text2, target, offset2) {
2472
2509
  const note = { type: "note", text: text2, target, offset: offset2 || void 0 };
2473
2510
  overlays.push(note);
2474
2511
  return note;
2475
2512
  };
2476
- var peg$f55 = function(dx, dy) {
2513
+ var peg$f61 = function(dx, dy) {
2477
2514
  return { dx, dy };
2478
2515
  };
2479
- var peg$f56 = function(sign, digits) {
2516
+ var peg$f62 = function(sign, digits) {
2480
2517
  return parseInt((sign || "") + digits, 10);
2481
2518
  };
2482
- var peg$f57 = function(corner, t) {
2519
+ var peg$f63 = function(corner, t) {
2483
2520
  return t;
2484
2521
  };
2485
- var peg$f58 = function(corner, title, entries) {
2522
+ var peg$f64 = function(corner, title, entries) {
2486
2523
  const legend = { type: "legend", corner, title: title || void 0, entries };
2487
2524
  overlays.push(legend);
2488
2525
  return legend;
2489
2526
  };
2490
- var peg$f59 = function(key, value) {
2527
+ var peg$f65 = function(key, value) {
2491
2528
  return { key: key.trim(), value: value.trim() };
2492
2529
  };
2493
2530
  var peg$currPos = options.peg$currPos | 0;
@@ -3547,9 +3584,9 @@ function peg$parse(input, options) {
3547
3584
  s0 = s1;
3548
3585
  if (s0 === peg$FAILED) {
3549
3586
  s0 = peg$currPos;
3550
- if (input.substr(peg$currPos, 4) === peg$c17) {
3587
+ if (input.substr(peg$currPos, 5) === peg$c17) {
3551
3588
  s1 = peg$c17;
3552
- peg$currPos += 4;
3589
+ peg$currPos += 5;
3553
3590
  } else {
3554
3591
  s1 = peg$FAILED;
3555
3592
  if (peg$silentFails === 0) {
@@ -3563,9 +3600,9 @@ function peg$parse(input, options) {
3563
3600
  s0 = s1;
3564
3601
  if (s0 === peg$FAILED) {
3565
3602
  s0 = peg$currPos;
3566
- if (input.substr(peg$currPos, 4) === peg$c18) {
3603
+ if (input.substr(peg$currPos, 5) === peg$c18) {
3567
3604
  s1 = peg$c18;
3568
- peg$currPos += 4;
3605
+ peg$currPos += 5;
3569
3606
  } else {
3570
3607
  s1 = peg$FAILED;
3571
3608
  if (peg$silentFails === 0) {
@@ -3579,9 +3616,9 @@ function peg$parse(input, options) {
3579
3616
  s0 = s1;
3580
3617
  if (s0 === peg$FAILED) {
3581
3618
  s0 = peg$currPos;
3582
- if (input.substr(peg$currPos, 5) === peg$c19) {
3619
+ if (input.substr(peg$currPos, 4) === peg$c19) {
3583
3620
  s1 = peg$c19;
3584
- peg$currPos += 5;
3621
+ peg$currPos += 4;
3585
3622
  } else {
3586
3623
  s1 = peg$FAILED;
3587
3624
  if (peg$silentFails === 0) {
@@ -3595,9 +3632,9 @@ function peg$parse(input, options) {
3595
3632
  s0 = s1;
3596
3633
  if (s0 === peg$FAILED) {
3597
3634
  s0 = peg$currPos;
3598
- if (input.substr(peg$currPos, 5) === peg$c20) {
3635
+ if (input.substr(peg$currPos, 4) === peg$c20) {
3599
3636
  s1 = peg$c20;
3600
- peg$currPos += 5;
3637
+ peg$currPos += 4;
3601
3638
  } else {
3602
3639
  s1 = peg$FAILED;
3603
3640
  if (peg$silentFails === 0) {
@@ -3643,9 +3680,9 @@ function peg$parse(input, options) {
3643
3680
  s0 = s1;
3644
3681
  if (s0 === peg$FAILED) {
3645
3682
  s0 = peg$currPos;
3646
- if (input.substr(peg$currPos, 3) === peg$c23) {
3683
+ if (input.substr(peg$currPos, 5) === peg$c23) {
3647
3684
  s1 = peg$c23;
3648
- peg$currPos += 3;
3685
+ peg$currPos += 5;
3649
3686
  } else {
3650
3687
  s1 = peg$FAILED;
3651
3688
  if (peg$silentFails === 0) {
@@ -3659,9 +3696,9 @@ function peg$parse(input, options) {
3659
3696
  s0 = s1;
3660
3697
  if (s0 === peg$FAILED) {
3661
3698
  s0 = peg$currPos;
3662
- if (input.substr(peg$currPos, 3) === peg$c24) {
3699
+ if (input.substr(peg$currPos, 4) === peg$c24) {
3663
3700
  s1 = peg$c24;
3664
- peg$currPos += 3;
3701
+ peg$currPos += 4;
3665
3702
  } else {
3666
3703
  s1 = peg$FAILED;
3667
3704
  if (peg$silentFails === 0) {
@@ -3675,9 +3712,9 @@ function peg$parse(input, options) {
3675
3712
  s0 = s1;
3676
3713
  if (s0 === peg$FAILED) {
3677
3714
  s0 = peg$currPos;
3678
- if (input.substr(peg$currPos, 3) === peg$c25) {
3715
+ if (input.substr(peg$currPos, 4) === peg$c25) {
3679
3716
  s1 = peg$c25;
3680
- peg$currPos += 3;
3717
+ peg$currPos += 4;
3681
3718
  } else {
3682
3719
  s1 = peg$FAILED;
3683
3720
  if (peg$silentFails === 0) {
@@ -3707,9 +3744,9 @@ function peg$parse(input, options) {
3707
3744
  s0 = s1;
3708
3745
  if (s0 === peg$FAILED) {
3709
3746
  s0 = peg$currPos;
3710
- if (input.substr(peg$currPos, 3) === peg$c27) {
3747
+ if (input.substr(peg$currPos, 4) === peg$c27) {
3711
3748
  s1 = peg$c27;
3712
- peg$currPos += 3;
3749
+ peg$currPos += 4;
3713
3750
  } else {
3714
3751
  s1 = peg$FAILED;
3715
3752
  if (peg$silentFails === 0) {
@@ -3723,13 +3760,13 @@ function peg$parse(input, options) {
3723
3760
  s0 = s1;
3724
3761
  if (s0 === peg$FAILED) {
3725
3762
  s0 = peg$currPos;
3726
- if (input.substr(peg$currPos, 3) === peg$c0) {
3727
- s1 = peg$c0;
3763
+ if (input.substr(peg$currPos, 3) === peg$c28) {
3764
+ s1 = peg$c28;
3728
3765
  peg$currPos += 3;
3729
3766
  } else {
3730
3767
  s1 = peg$FAILED;
3731
3768
  if (peg$silentFails === 0) {
3732
- peg$fail(peg$e0);
3769
+ peg$fail(peg$e35);
3733
3770
  }
3734
3771
  }
3735
3772
  if (s1 !== peg$FAILED) {
@@ -3739,13 +3776,13 @@ function peg$parse(input, options) {
3739
3776
  s0 = s1;
3740
3777
  if (s0 === peg$FAILED) {
3741
3778
  s0 = peg$currPos;
3742
- if (input.substr(peg$currPos, 3) === peg$c28) {
3743
- s1 = peg$c28;
3779
+ if (input.substr(peg$currPos, 3) === peg$c29) {
3780
+ s1 = peg$c29;
3744
3781
  peg$currPos += 3;
3745
3782
  } else {
3746
3783
  s1 = peg$FAILED;
3747
3784
  if (peg$silentFails === 0) {
3748
- peg$fail(peg$e35);
3785
+ peg$fail(peg$e36);
3749
3786
  }
3750
3787
  }
3751
3788
  if (s1 !== peg$FAILED) {
@@ -3753,6 +3790,108 @@ function peg$parse(input, options) {
3753
3790
  s1 = peg$f27();
3754
3791
  }
3755
3792
  s0 = s1;
3793
+ if (s0 === peg$FAILED) {
3794
+ s0 = peg$currPos;
3795
+ if (input.substr(peg$currPos, 3) === peg$c30) {
3796
+ s1 = peg$c30;
3797
+ peg$currPos += 3;
3798
+ } else {
3799
+ s1 = peg$FAILED;
3800
+ if (peg$silentFails === 0) {
3801
+ peg$fail(peg$e37);
3802
+ }
3803
+ }
3804
+ if (s1 !== peg$FAILED) {
3805
+ peg$savedPos = s0;
3806
+ s1 = peg$f28();
3807
+ }
3808
+ s0 = s1;
3809
+ if (s0 === peg$FAILED) {
3810
+ s0 = peg$currPos;
3811
+ if (input.substr(peg$currPos, 3) === peg$c31) {
3812
+ s1 = peg$c31;
3813
+ peg$currPos += 3;
3814
+ } else {
3815
+ s1 = peg$FAILED;
3816
+ if (peg$silentFails === 0) {
3817
+ peg$fail(peg$e38);
3818
+ }
3819
+ }
3820
+ if (s1 !== peg$FAILED) {
3821
+ peg$savedPos = s0;
3822
+ s1 = peg$f29();
3823
+ }
3824
+ s0 = s1;
3825
+ if (s0 === peg$FAILED) {
3826
+ s0 = peg$currPos;
3827
+ if (input.substr(peg$currPos, 3) === peg$c32) {
3828
+ s1 = peg$c32;
3829
+ peg$currPos += 3;
3830
+ } else {
3831
+ s1 = peg$FAILED;
3832
+ if (peg$silentFails === 0) {
3833
+ peg$fail(peg$e39);
3834
+ }
3835
+ }
3836
+ if (s1 !== peg$FAILED) {
3837
+ peg$savedPos = s0;
3838
+ s1 = peg$f30();
3839
+ }
3840
+ s0 = s1;
3841
+ if (s0 === peg$FAILED) {
3842
+ s0 = peg$currPos;
3843
+ if (input.substr(peg$currPos, 3) === peg$c33) {
3844
+ s1 = peg$c33;
3845
+ peg$currPos += 3;
3846
+ } else {
3847
+ s1 = peg$FAILED;
3848
+ if (peg$silentFails === 0) {
3849
+ peg$fail(peg$e40);
3850
+ }
3851
+ }
3852
+ if (s1 !== peg$FAILED) {
3853
+ peg$savedPos = s0;
3854
+ s1 = peg$f31();
3855
+ }
3856
+ s0 = s1;
3857
+ if (s0 === peg$FAILED) {
3858
+ s0 = peg$currPos;
3859
+ if (input.substr(peg$currPos, 3) === peg$c34) {
3860
+ s1 = peg$c34;
3861
+ peg$currPos += 3;
3862
+ } else {
3863
+ s1 = peg$FAILED;
3864
+ if (peg$silentFails === 0) {
3865
+ peg$fail(peg$e41);
3866
+ }
3867
+ }
3868
+ if (s1 !== peg$FAILED) {
3869
+ peg$savedPos = s0;
3870
+ s1 = peg$f32();
3871
+ }
3872
+ s0 = s1;
3873
+ if (s0 === peg$FAILED) {
3874
+ s0 = peg$currPos;
3875
+ if (input.substr(peg$currPos, 3) === peg$c0) {
3876
+ s1 = peg$c0;
3877
+ peg$currPos += 3;
3878
+ } else {
3879
+ s1 = peg$FAILED;
3880
+ if (peg$silentFails === 0) {
3881
+ peg$fail(peg$e0);
3882
+ }
3883
+ }
3884
+ if (s1 !== peg$FAILED) {
3885
+ peg$savedPos = s0;
3886
+ s1 = peg$f33();
3887
+ }
3888
+ s0 = s1;
3889
+ }
3890
+ }
3891
+ }
3892
+ }
3893
+ }
3894
+ }
3756
3895
  }
3757
3896
  }
3758
3897
  }
@@ -3775,12 +3914,12 @@ function peg$parse(input, options) {
3775
3914
  if (s1 !== peg$FAILED) {
3776
3915
  s2 = peg$currPos;
3777
3916
  if (input.charCodeAt(peg$currPos) === 58) {
3778
- s3 = peg$c29;
3917
+ s3 = peg$c35;
3779
3918
  peg$currPos++;
3780
3919
  } else {
3781
3920
  s3 = peg$FAILED;
3782
3921
  if (peg$silentFails === 0) {
3783
- peg$fail(peg$e36);
3922
+ peg$fail(peg$e42);
3784
3923
  }
3785
3924
  }
3786
3925
  if (s3 !== peg$FAILED) {
@@ -3800,7 +3939,7 @@ function peg$parse(input, options) {
3800
3939
  s2 = null;
3801
3940
  }
3802
3941
  peg$savedPos = s0;
3803
- s0 = peg$f28(s1, s2);
3942
+ s0 = peg$f34(s1, s2);
3804
3943
  } else {
3805
3944
  peg$currPos = s0;
3806
3945
  s0 = peg$FAILED;
@@ -3810,7 +3949,7 @@ function peg$parse(input, options) {
3810
3949
  s1 = peg$parseWallPair();
3811
3950
  if (s1 !== peg$FAILED) {
3812
3951
  peg$savedPos = s0;
3813
- s1 = peg$f29(s1);
3952
+ s1 = peg$f35(s1);
3814
3953
  }
3815
3954
  s0 = s1;
3816
3955
  }
@@ -3819,66 +3958,66 @@ function peg$parse(input, options) {
3819
3958
  function peg$parseRouteWord() {
3820
3959
  var s0, s1;
3821
3960
  s0 = peg$currPos;
3822
- if (input.substr(peg$currPos, 8) === peg$c30) {
3823
- s1 = peg$c30;
3961
+ if (input.substr(peg$currPos, 8) === peg$c36) {
3962
+ s1 = peg$c36;
3824
3963
  peg$currPos += 8;
3825
3964
  } else {
3826
3965
  s1 = peg$FAILED;
3827
3966
  if (peg$silentFails === 0) {
3828
- peg$fail(peg$e37);
3967
+ peg$fail(peg$e43);
3829
3968
  }
3830
3969
  }
3831
3970
  if (s1 !== peg$FAILED) {
3832
3971
  peg$savedPos = s0;
3833
- s1 = peg$f30();
3972
+ s1 = peg$f36();
3834
3973
  }
3835
3974
  s0 = s1;
3836
3975
  if (s0 === peg$FAILED) {
3837
3976
  s0 = peg$currPos;
3838
- if (input.substr(peg$currPos, 10) === peg$c31) {
3839
- s1 = peg$c31;
3977
+ if (input.substr(peg$currPos, 10) === peg$c37) {
3978
+ s1 = peg$c37;
3840
3979
  peg$currPos += 10;
3841
3980
  } else {
3842
3981
  s1 = peg$FAILED;
3843
3982
  if (peg$silentFails === 0) {
3844
- peg$fail(peg$e38);
3983
+ peg$fail(peg$e44);
3845
3984
  }
3846
3985
  }
3847
3986
  if (s1 !== peg$FAILED) {
3848
3987
  peg$savedPos = s0;
3849
- s1 = peg$f31();
3988
+ s1 = peg$f37();
3850
3989
  }
3851
3990
  s0 = s1;
3852
3991
  if (s0 === peg$FAILED) {
3853
3992
  s0 = peg$currPos;
3854
- if (input.substr(peg$currPos, 6) === peg$c32) {
3855
- s1 = peg$c32;
3993
+ if (input.substr(peg$currPos, 6) === peg$c38) {
3994
+ s1 = peg$c38;
3856
3995
  peg$currPos += 6;
3857
3996
  } else {
3858
3997
  s1 = peg$FAILED;
3859
3998
  if (peg$silentFails === 0) {
3860
- peg$fail(peg$e39);
3999
+ peg$fail(peg$e45);
3861
4000
  }
3862
4001
  }
3863
4002
  if (s1 !== peg$FAILED) {
3864
4003
  peg$savedPos = s0;
3865
- s1 = peg$f32();
4004
+ s1 = peg$f38();
3866
4005
  }
3867
4006
  s0 = s1;
3868
4007
  if (s0 === peg$FAILED) {
3869
4008
  s0 = peg$currPos;
3870
- if (input.substr(peg$currPos, 8) === peg$c33) {
3871
- s1 = peg$c33;
4009
+ if (input.substr(peg$currPos, 8) === peg$c39) {
4010
+ s1 = peg$c39;
3872
4011
  peg$currPos += 8;
3873
4012
  } else {
3874
4013
  s1 = peg$FAILED;
3875
4014
  if (peg$silentFails === 0) {
3876
- peg$fail(peg$e40);
4015
+ peg$fail(peg$e46);
3877
4016
  }
3878
4017
  }
3879
4018
  if (s1 !== peg$FAILED) {
3880
4019
  peg$savedPos = s0;
3881
- s1 = peg$f33();
4020
+ s1 = peg$f39();
3882
4021
  }
3883
4022
  s0 = s1;
3884
4023
  }
@@ -3894,7 +4033,7 @@ function peg$parse(input, options) {
3894
4033
  s2 = peg$parseWall();
3895
4034
  if (s2 !== peg$FAILED) {
3896
4035
  peg$savedPos = s0;
3897
- s0 = peg$f34(s1, s2);
4036
+ s0 = peg$f40(s1, s2);
3898
4037
  } else {
3899
4038
  peg$currPos = s0;
3900
4039
  s0 = peg$FAILED;
@@ -3908,7 +4047,7 @@ function peg$parse(input, options) {
3908
4047
  s1 = peg$parseWall();
3909
4048
  if (s1 !== peg$FAILED) {
3910
4049
  peg$savedPos = s0;
3911
- s1 = peg$f35(s1);
4050
+ s1 = peg$f41(s1);
3912
4051
  }
3913
4052
  s0 = s1;
3914
4053
  }
@@ -3923,12 +4062,12 @@ function peg$parse(input, options) {
3923
4062
  } else {
3924
4063
  s1 = peg$FAILED;
3925
4064
  if (peg$silentFails === 0) {
3926
- peg$fail(peg$e41);
4065
+ peg$fail(peg$e47);
3927
4066
  }
3928
4067
  }
3929
4068
  if (s1 !== peg$FAILED) {
3930
4069
  peg$savedPos = s0;
3931
- s1 = peg$f36(s1);
4070
+ s1 = peg$f42(s1);
3932
4071
  }
3933
4072
  s0 = s1;
3934
4073
  return s0;
@@ -3943,7 +4082,7 @@ function peg$parse(input, options) {
3943
4082
  s2 = null;
3944
4083
  }
3945
4084
  peg$savedPos = s0;
3946
- s0 = peg$f37(s1, s2);
4085
+ s0 = peg$f43(s1, s2);
3947
4086
  } else {
3948
4087
  peg$currPos = s0;
3949
4088
  s0 = peg$FAILED;
@@ -3976,7 +4115,7 @@ function peg$parse(input, options) {
3976
4115
  }
3977
4116
  if (s2 !== peg$FAILED) {
3978
4117
  peg$savedPos = s0;
3979
- s0 = peg$f38(s1);
4118
+ s0 = peg$f44(s1);
3980
4119
  } else {
3981
4120
  peg$currPos = s0;
3982
4121
  s0 = peg$FAILED;
@@ -4137,7 +4276,7 @@ function peg$parse(input, options) {
4137
4276
  }
4138
4277
  if (s3 !== peg$FAILED) {
4139
4278
  peg$savedPos = s0;
4140
- s0 = peg$f39(s3);
4279
+ s0 = peg$f45(s3);
4141
4280
  } else {
4142
4281
  peg$currPos = s0;
4143
4282
  s0 = peg$FAILED;
@@ -4155,13 +4294,13 @@ function peg$parse(input, options) {
4155
4294
  function peg$parseShape() {
4156
4295
  var s0, s1, s2, s3, s4;
4157
4296
  s0 = peg$currPos;
4158
- if (input.substr(peg$currPos, 2) === peg$c34) {
4159
- s1 = peg$c34;
4297
+ if (input.substr(peg$currPos, 2) === peg$c40) {
4298
+ s1 = peg$c40;
4160
4299
  peg$currPos += 2;
4161
4300
  } else {
4162
4301
  s1 = peg$FAILED;
4163
4302
  if (peg$silentFails === 0) {
4164
- peg$fail(peg$e42);
4303
+ peg$fail(peg$e48);
4165
4304
  }
4166
4305
  }
4167
4306
  if (s1 !== peg$FAILED) {
@@ -4173,7 +4312,7 @@ function peg$parse(input, options) {
4173
4312
  } else {
4174
4313
  s4 = peg$FAILED;
4175
4314
  if (peg$silentFails === 0) {
4176
- peg$fail(peg$e43);
4315
+ peg$fail(peg$e49);
4177
4316
  }
4178
4317
  }
4179
4318
  if (s4 !== peg$FAILED) {
@@ -4185,7 +4324,7 @@ function peg$parse(input, options) {
4185
4324
  } else {
4186
4325
  s4 = peg$FAILED;
4187
4326
  if (peg$silentFails === 0) {
4188
- peg$fail(peg$e43);
4327
+ peg$fail(peg$e49);
4189
4328
  }
4190
4329
  }
4191
4330
  }
@@ -4198,18 +4337,18 @@ function peg$parse(input, options) {
4198
4337
  s2 = s3;
4199
4338
  }
4200
4339
  if (s2 !== peg$FAILED) {
4201
- if (input.substr(peg$currPos, 2) === peg$c35) {
4202
- s3 = peg$c35;
4340
+ if (input.substr(peg$currPos, 2) === peg$c41) {
4341
+ s3 = peg$c41;
4203
4342
  peg$currPos += 2;
4204
4343
  } else {
4205
4344
  s3 = peg$FAILED;
4206
4345
  if (peg$silentFails === 0) {
4207
- peg$fail(peg$e44);
4346
+ peg$fail(peg$e50);
4208
4347
  }
4209
4348
  }
4210
4349
  if (s3 !== peg$FAILED) {
4211
4350
  peg$savedPos = s0;
4212
- s0 = peg$f40(s2);
4351
+ s0 = peg$f46(s2);
4213
4352
  } else {
4214
4353
  peg$currPos = s0;
4215
4354
  s0 = peg$FAILED;
@@ -4224,13 +4363,13 @@ function peg$parse(input, options) {
4224
4363
  }
4225
4364
  if (s0 === peg$FAILED) {
4226
4365
  s0 = peg$currPos;
4227
- if (input.substr(peg$currPos, 2) === peg$c36) {
4228
- s1 = peg$c36;
4366
+ if (input.substr(peg$currPos, 2) === peg$c42) {
4367
+ s1 = peg$c42;
4229
4368
  peg$currPos += 2;
4230
4369
  } else {
4231
4370
  s1 = peg$FAILED;
4232
4371
  if (peg$silentFails === 0) {
4233
- peg$fail(peg$e45);
4372
+ peg$fail(peg$e51);
4234
4373
  }
4235
4374
  }
4236
4375
  if (s1 !== peg$FAILED) {
@@ -4258,18 +4397,18 @@ function peg$parse(input, options) {
4258
4397
  }
4259
4398
  }
4260
4399
  s2 = input.substring(s2, peg$currPos);
4261
- if (input.substr(peg$currPos, 2) === peg$c37) {
4262
- s3 = peg$c37;
4400
+ if (input.substr(peg$currPos, 2) === peg$c43) {
4401
+ s3 = peg$c43;
4263
4402
  peg$currPos += 2;
4264
4403
  } else {
4265
4404
  s3 = peg$FAILED;
4266
4405
  if (peg$silentFails === 0) {
4267
- peg$fail(peg$e46);
4406
+ peg$fail(peg$e52);
4268
4407
  }
4269
4408
  }
4270
4409
  if (s3 !== peg$FAILED) {
4271
4410
  peg$savedPos = s0;
4272
- s0 = peg$f41(s2);
4411
+ s0 = peg$f47(s2);
4273
4412
  } else {
4274
4413
  peg$currPos = s0;
4275
4414
  s0 = peg$FAILED;
@@ -4280,13 +4419,13 @@ function peg$parse(input, options) {
4280
4419
  }
4281
4420
  if (s0 === peg$FAILED) {
4282
4421
  s0 = peg$currPos;
4283
- if (input.substr(peg$currPos, 2) === peg$c38) {
4284
- s1 = peg$c38;
4422
+ if (input.substr(peg$currPos, 2) === peg$c44) {
4423
+ s1 = peg$c44;
4285
4424
  peg$currPos += 2;
4286
4425
  } else {
4287
4426
  s1 = peg$FAILED;
4288
4427
  if (peg$silentFails === 0) {
4289
- peg$fail(peg$e47);
4428
+ peg$fail(peg$e53);
4290
4429
  }
4291
4430
  }
4292
4431
  if (s1 !== peg$FAILED) {
@@ -4314,18 +4453,18 @@ function peg$parse(input, options) {
4314
4453
  }
4315
4454
  }
4316
4455
  s2 = input.substring(s2, peg$currPos);
4317
- if (input.substr(peg$currPos, 2) === peg$c39) {
4318
- s3 = peg$c39;
4456
+ if (input.substr(peg$currPos, 2) === peg$c45) {
4457
+ s3 = peg$c45;
4319
4458
  peg$currPos += 2;
4320
4459
  } else {
4321
4460
  s3 = peg$FAILED;
4322
4461
  if (peg$silentFails === 0) {
4323
- peg$fail(peg$e48);
4462
+ peg$fail(peg$e54);
4324
4463
  }
4325
4464
  }
4326
4465
  if (s3 !== peg$FAILED) {
4327
4466
  peg$savedPos = s0;
4328
- s0 = peg$f42(s2);
4467
+ s0 = peg$f48(s2);
4329
4468
  } else {
4330
4469
  peg$currPos = s0;
4331
4470
  s0 = peg$FAILED;
@@ -4336,13 +4475,13 @@ function peg$parse(input, options) {
4336
4475
  }
4337
4476
  if (s0 === peg$FAILED) {
4338
4477
  s0 = peg$currPos;
4339
- if (input.substr(peg$currPos, 2) === peg$c40) {
4340
- s1 = peg$c40;
4478
+ if (input.substr(peg$currPos, 2) === peg$c46) {
4479
+ s1 = peg$c46;
4341
4480
  peg$currPos += 2;
4342
4481
  } else {
4343
4482
  s1 = peg$FAILED;
4344
4483
  if (peg$silentFails === 0) {
4345
- peg$fail(peg$e49);
4484
+ peg$fail(peg$e55);
4346
4485
  }
4347
4486
  }
4348
4487
  if (s1 !== peg$FAILED) {
@@ -4354,7 +4493,7 @@ function peg$parse(input, options) {
4354
4493
  } else {
4355
4494
  s4 = peg$FAILED;
4356
4495
  if (peg$silentFails === 0) {
4357
- peg$fail(peg$e43);
4496
+ peg$fail(peg$e49);
4358
4497
  }
4359
4498
  }
4360
4499
  while (s4 !== peg$FAILED) {
@@ -4365,23 +4504,23 @@ function peg$parse(input, options) {
4365
4504
  } else {
4366
4505
  s4 = peg$FAILED;
4367
4506
  if (peg$silentFails === 0) {
4368
- peg$fail(peg$e43);
4507
+ peg$fail(peg$e49);
4369
4508
  }
4370
4509
  }
4371
4510
  }
4372
4511
  s2 = input.substring(s2, peg$currPos);
4373
- if (input.substr(peg$currPos, 2) === peg$c41) {
4374
- s3 = peg$c41;
4512
+ if (input.substr(peg$currPos, 2) === peg$c47) {
4513
+ s3 = peg$c47;
4375
4514
  peg$currPos += 2;
4376
4515
  } else {
4377
4516
  s3 = peg$FAILED;
4378
4517
  if (peg$silentFails === 0) {
4379
- peg$fail(peg$e50);
4518
+ peg$fail(peg$e56);
4380
4519
  }
4381
4520
  }
4382
4521
  if (s3 !== peg$FAILED) {
4383
4522
  peg$savedPos = s0;
4384
- s0 = peg$f43(s2);
4523
+ s0 = peg$f49(s2);
4385
4524
  } else {
4386
4525
  peg$currPos = s0;
4387
4526
  s0 = peg$FAILED;
@@ -4392,13 +4531,13 @@ function peg$parse(input, options) {
4392
4531
  }
4393
4532
  if (s0 === peg$FAILED) {
4394
4533
  s0 = peg$currPos;
4395
- if (input.substr(peg$currPos, 2) === peg$c42) {
4396
- s1 = peg$c42;
4534
+ if (input.substr(peg$currPos, 2) === peg$c48) {
4535
+ s1 = peg$c48;
4397
4536
  peg$currPos += 2;
4398
4537
  } else {
4399
4538
  s1 = peg$FAILED;
4400
4539
  if (peg$silentFails === 0) {
4401
- peg$fail(peg$e51);
4540
+ peg$fail(peg$e57);
4402
4541
  }
4403
4542
  }
4404
4543
  if (s1 !== peg$FAILED) {
@@ -4410,7 +4549,7 @@ function peg$parse(input, options) {
4410
4549
  } else {
4411
4550
  s4 = peg$FAILED;
4412
4551
  if (peg$silentFails === 0) {
4413
- peg$fail(peg$e52);
4552
+ peg$fail(peg$e58);
4414
4553
  }
4415
4554
  }
4416
4555
  while (s4 !== peg$FAILED) {
@@ -4421,23 +4560,23 @@ function peg$parse(input, options) {
4421
4560
  } else {
4422
4561
  s4 = peg$FAILED;
4423
4562
  if (peg$silentFails === 0) {
4424
- peg$fail(peg$e52);
4563
+ peg$fail(peg$e58);
4425
4564
  }
4426
4565
  }
4427
4566
  }
4428
4567
  s2 = input.substring(s2, peg$currPos);
4429
- if (input.substr(peg$currPos, 2) === peg$c43) {
4430
- s3 = peg$c43;
4568
+ if (input.substr(peg$currPos, 2) === peg$c49) {
4569
+ s3 = peg$c49;
4431
4570
  peg$currPos += 2;
4432
4571
  } else {
4433
4572
  s3 = peg$FAILED;
4434
4573
  if (peg$silentFails === 0) {
4435
- peg$fail(peg$e53);
4574
+ peg$fail(peg$e59);
4436
4575
  }
4437
4576
  }
4438
4577
  if (s3 !== peg$FAILED) {
4439
4578
  peg$savedPos = s0;
4440
- s0 = peg$f44(s2);
4579
+ s0 = peg$f50(s2);
4441
4580
  } else {
4442
4581
  peg$currPos = s0;
4443
4582
  s0 = peg$FAILED;
@@ -4448,13 +4587,13 @@ function peg$parse(input, options) {
4448
4587
  }
4449
4588
  if (s0 === peg$FAILED) {
4450
4589
  s0 = peg$currPos;
4451
- if (input.substr(peg$currPos, 2) === peg$c44) {
4452
- s1 = peg$c44;
4590
+ if (input.substr(peg$currPos, 2) === peg$c50) {
4591
+ s1 = peg$c50;
4453
4592
  peg$currPos += 2;
4454
4593
  } else {
4455
4594
  s1 = peg$FAILED;
4456
4595
  if (peg$silentFails === 0) {
4457
- peg$fail(peg$e54);
4596
+ peg$fail(peg$e60);
4458
4597
  }
4459
4598
  }
4460
4599
  if (s1 !== peg$FAILED) {
@@ -4466,7 +4605,7 @@ function peg$parse(input, options) {
4466
4605
  } else {
4467
4606
  s4 = peg$FAILED;
4468
4607
  if (peg$silentFails === 0) {
4469
- peg$fail(peg$e55);
4608
+ peg$fail(peg$e61);
4470
4609
  }
4471
4610
  }
4472
4611
  while (s4 !== peg$FAILED) {
@@ -4477,23 +4616,23 @@ function peg$parse(input, options) {
4477
4616
  } else {
4478
4617
  s4 = peg$FAILED;
4479
4618
  if (peg$silentFails === 0) {
4480
- peg$fail(peg$e55);
4619
+ peg$fail(peg$e61);
4481
4620
  }
4482
4621
  }
4483
4622
  }
4484
4623
  s2 = input.substring(s2, peg$currPos);
4485
- if (input.substr(peg$currPos, 2) === peg$c45) {
4486
- s3 = peg$c45;
4624
+ if (input.substr(peg$currPos, 2) === peg$c51) {
4625
+ s3 = peg$c51;
4487
4626
  peg$currPos += 2;
4488
4627
  } else {
4489
4628
  s3 = peg$FAILED;
4490
4629
  if (peg$silentFails === 0) {
4491
- peg$fail(peg$e56);
4630
+ peg$fail(peg$e62);
4492
4631
  }
4493
4632
  }
4494
4633
  if (s3 !== peg$FAILED) {
4495
4634
  peg$savedPos = s0;
4496
- s0 = peg$f45(s2);
4635
+ s0 = peg$f51(s2);
4497
4636
  } else {
4498
4637
  peg$currPos = s0;
4499
4638
  s0 = peg$FAILED;
@@ -4504,13 +4643,13 @@ function peg$parse(input, options) {
4504
4643
  }
4505
4644
  if (s0 === peg$FAILED) {
4506
4645
  s0 = peg$currPos;
4507
- if (input.substr(peg$currPos, 2) === peg$c46) {
4508
- s1 = peg$c46;
4646
+ if (input.substr(peg$currPos, 2) === peg$c52) {
4647
+ s1 = peg$c52;
4509
4648
  peg$currPos += 2;
4510
4649
  } else {
4511
4650
  s1 = peg$FAILED;
4512
4651
  if (peg$silentFails === 0) {
4513
- peg$fail(peg$e57);
4652
+ peg$fail(peg$e63);
4514
4653
  }
4515
4654
  }
4516
4655
  if (s1 !== peg$FAILED) {
@@ -4522,7 +4661,7 @@ function peg$parse(input, options) {
4522
4661
  } else {
4523
4662
  s4 = peg$FAILED;
4524
4663
  if (peg$silentFails === 0) {
4525
- peg$fail(peg$e58);
4664
+ peg$fail(peg$e64);
4526
4665
  }
4527
4666
  }
4528
4667
  while (s4 !== peg$FAILED) {
@@ -4533,23 +4672,23 @@ function peg$parse(input, options) {
4533
4672
  } else {
4534
4673
  s4 = peg$FAILED;
4535
4674
  if (peg$silentFails === 0) {
4536
- peg$fail(peg$e58);
4675
+ peg$fail(peg$e64);
4537
4676
  }
4538
4677
  }
4539
4678
  }
4540
4679
  s2 = input.substring(s2, peg$currPos);
4541
- if (input.substr(peg$currPos, 2) === peg$c47) {
4542
- s3 = peg$c47;
4680
+ if (input.substr(peg$currPos, 2) === peg$c53) {
4681
+ s3 = peg$c53;
4543
4682
  peg$currPos += 2;
4544
4683
  } else {
4545
4684
  s3 = peg$FAILED;
4546
4685
  if (peg$silentFails === 0) {
4547
- peg$fail(peg$e59);
4686
+ peg$fail(peg$e65);
4548
4687
  }
4549
4688
  }
4550
4689
  if (s3 !== peg$FAILED) {
4551
4690
  peg$savedPos = s0;
4552
- s0 = peg$f46(s2);
4691
+ s0 = peg$f52(s2);
4553
4692
  } else {
4554
4693
  peg$currPos = s0;
4555
4694
  s0 = peg$FAILED;
@@ -4561,12 +4700,12 @@ function peg$parse(input, options) {
4561
4700
  if (s0 === peg$FAILED) {
4562
4701
  s0 = peg$currPos;
4563
4702
  if (input.charCodeAt(peg$currPos) === 62) {
4564
- s1 = peg$c48;
4703
+ s1 = peg$c54;
4565
4704
  peg$currPos++;
4566
4705
  } else {
4567
4706
  s1 = peg$FAILED;
4568
4707
  if (peg$silentFails === 0) {
4569
- peg$fail(peg$e60);
4708
+ peg$fail(peg$e66);
4570
4709
  }
4571
4710
  }
4572
4711
  if (s1 !== peg$FAILED) {
@@ -4605,7 +4744,7 @@ function peg$parse(input, options) {
4605
4744
  }
4606
4745
  if (s3 !== peg$FAILED) {
4607
4746
  peg$savedPos = s0;
4608
- s0 = peg$f47(s2);
4747
+ s0 = peg$f53(s2);
4609
4748
  } else {
4610
4749
  peg$currPos = s0;
4611
4750
  s0 = peg$FAILED;
@@ -4661,7 +4800,7 @@ function peg$parse(input, options) {
4661
4800
  }
4662
4801
  if (s3 !== peg$FAILED) {
4663
4802
  peg$savedPos = s0;
4664
- s0 = peg$f48(s2);
4803
+ s0 = peg$f54(s2);
4665
4804
  } else {
4666
4805
  peg$currPos = s0;
4667
4806
  s0 = peg$FAILED;
@@ -4673,12 +4812,12 @@ function peg$parse(input, options) {
4673
4812
  if (s0 === peg$FAILED) {
4674
4813
  s0 = peg$currPos;
4675
4814
  if (input.charCodeAt(peg$currPos) === 123) {
4676
- s1 = peg$c49;
4815
+ s1 = peg$c55;
4677
4816
  peg$currPos++;
4678
4817
  } else {
4679
4818
  s1 = peg$FAILED;
4680
4819
  if (peg$silentFails === 0) {
4681
- peg$fail(peg$e61);
4820
+ peg$fail(peg$e67);
4682
4821
  }
4683
4822
  }
4684
4823
  if (s1 !== peg$FAILED) {
@@ -4690,7 +4829,7 @@ function peg$parse(input, options) {
4690
4829
  } else {
4691
4830
  s4 = peg$FAILED;
4692
4831
  if (peg$silentFails === 0) {
4693
- peg$fail(peg$e52);
4832
+ peg$fail(peg$e58);
4694
4833
  }
4695
4834
  }
4696
4835
  while (s4 !== peg$FAILED) {
@@ -4701,23 +4840,23 @@ function peg$parse(input, options) {
4701
4840
  } else {
4702
4841
  s4 = peg$FAILED;
4703
4842
  if (peg$silentFails === 0) {
4704
- peg$fail(peg$e52);
4843
+ peg$fail(peg$e58);
4705
4844
  }
4706
4845
  }
4707
4846
  }
4708
4847
  s2 = input.substring(s2, peg$currPos);
4709
4848
  if (input.charCodeAt(peg$currPos) === 125) {
4710
- s3 = peg$c50;
4849
+ s3 = peg$c56;
4711
4850
  peg$currPos++;
4712
4851
  } else {
4713
4852
  s3 = peg$FAILED;
4714
4853
  if (peg$silentFails === 0) {
4715
- peg$fail(peg$e62);
4854
+ peg$fail(peg$e68);
4716
4855
  }
4717
4856
  }
4718
4857
  if (s3 !== peg$FAILED) {
4719
4858
  peg$savedPos = s0;
4720
- s0 = peg$f49(s2);
4859
+ s0 = peg$f55(s2);
4721
4860
  } else {
4722
4861
  peg$currPos = s0;
4723
4862
  s0 = peg$FAILED;
@@ -4729,12 +4868,12 @@ function peg$parse(input, options) {
4729
4868
  if (s0 === peg$FAILED) {
4730
4869
  s0 = peg$currPos;
4731
4870
  if (input.charCodeAt(peg$currPos) === 40) {
4732
- s1 = peg$c51;
4871
+ s1 = peg$c57;
4733
4872
  peg$currPos++;
4734
4873
  } else {
4735
4874
  s1 = peg$FAILED;
4736
4875
  if (peg$silentFails === 0) {
4737
- peg$fail(peg$e63);
4876
+ peg$fail(peg$e69);
4738
4877
  }
4739
4878
  }
4740
4879
  if (s1 !== peg$FAILED) {
@@ -4746,7 +4885,7 @@ function peg$parse(input, options) {
4746
4885
  } else {
4747
4886
  s4 = peg$FAILED;
4748
4887
  if (peg$silentFails === 0) {
4749
- peg$fail(peg$e43);
4888
+ peg$fail(peg$e49);
4750
4889
  }
4751
4890
  }
4752
4891
  while (s4 !== peg$FAILED) {
@@ -4757,23 +4896,23 @@ function peg$parse(input, options) {
4757
4896
  } else {
4758
4897
  s4 = peg$FAILED;
4759
4898
  if (peg$silentFails === 0) {
4760
- peg$fail(peg$e43);
4899
+ peg$fail(peg$e49);
4761
4900
  }
4762
4901
  }
4763
4902
  }
4764
4903
  s2 = input.substring(s2, peg$currPos);
4765
4904
  if (input.charCodeAt(peg$currPos) === 41) {
4766
- s3 = peg$c52;
4905
+ s3 = peg$c58;
4767
4906
  peg$currPos++;
4768
4907
  } else {
4769
4908
  s3 = peg$FAILED;
4770
4909
  if (peg$silentFails === 0) {
4771
- peg$fail(peg$e64);
4910
+ peg$fail(peg$e70);
4772
4911
  }
4773
4912
  }
4774
4913
  if (s3 !== peg$FAILED) {
4775
4914
  peg$savedPos = s0;
4776
- s0 = peg$f50(s2);
4915
+ s0 = peg$f56(s2);
4777
4916
  } else {
4778
4917
  peg$currPos = s0;
4779
4918
  s0 = peg$FAILED;
@@ -4797,13 +4936,13 @@ function peg$parse(input, options) {
4797
4936
  function peg$parseStyleDirective() {
4798
4937
  var s0, s1, s2, s3, s4, s5;
4799
4938
  s0 = peg$currPos;
4800
- if (input.substr(peg$currPos, 5) === peg$c53) {
4801
- s1 = peg$c53;
4939
+ if (input.substr(peg$currPos, 5) === peg$c59) {
4940
+ s1 = peg$c59;
4802
4941
  peg$currPos += 5;
4803
4942
  } else {
4804
4943
  s1 = peg$FAILED;
4805
4944
  if (peg$silentFails === 0) {
4806
- peg$fail(peg$e65);
4945
+ peg$fail(peg$e71);
4807
4946
  }
4808
4947
  }
4809
4948
  if (s1 !== peg$FAILED) {
@@ -4817,7 +4956,7 @@ function peg$parse(input, options) {
4817
4956
  } else {
4818
4957
  s5 = peg$FAILED;
4819
4958
  if (peg$silentFails === 0) {
4820
- peg$fail(peg$e66);
4959
+ peg$fail(peg$e72);
4821
4960
  }
4822
4961
  }
4823
4962
  if (s5 !== peg$FAILED) {
@@ -4829,7 +4968,7 @@ function peg$parse(input, options) {
4829
4968
  } else {
4830
4969
  s5 = peg$FAILED;
4831
4970
  if (peg$silentFails === 0) {
4832
- peg$fail(peg$e66);
4971
+ peg$fail(peg$e72);
4833
4972
  }
4834
4973
  }
4835
4974
  }
@@ -4843,7 +4982,7 @@ function peg$parse(input, options) {
4843
4982
  }
4844
4983
  if (s3 !== peg$FAILED) {
4845
4984
  peg$savedPos = s0;
4846
- s0 = peg$f51(s3);
4985
+ s0 = peg$f57(s3);
4847
4986
  } else {
4848
4987
  peg$currPos = s0;
4849
4988
  s0 = peg$FAILED;
@@ -4861,23 +5000,23 @@ function peg$parse(input, options) {
4861
5000
  function peg$parseClassDirective() {
4862
5001
  var s0, s1, s2, s3, s4, s5;
4863
5002
  s0 = peg$currPos;
4864
- if (input.substr(peg$currPos, 8) === peg$c54) {
4865
- s1 = peg$c54;
5003
+ if (input.substr(peg$currPos, 8) === peg$c60) {
5004
+ s1 = peg$c60;
4866
5005
  peg$currPos += 8;
4867
5006
  } else {
4868
5007
  s1 = peg$FAILED;
4869
5008
  if (peg$silentFails === 0) {
4870
- peg$fail(peg$e67);
5009
+ peg$fail(peg$e73);
4871
5010
  }
4872
5011
  }
4873
5012
  if (s1 === peg$FAILED) {
4874
- if (input.substr(peg$currPos, 5) === peg$c55) {
4875
- s1 = peg$c55;
5013
+ if (input.substr(peg$currPos, 5) === peg$c61) {
5014
+ s1 = peg$c61;
4876
5015
  peg$currPos += 5;
4877
5016
  } else {
4878
5017
  s1 = peg$FAILED;
4879
5018
  if (peg$silentFails === 0) {
4880
- peg$fail(peg$e68);
5019
+ peg$fail(peg$e74);
4881
5020
  }
4882
5021
  }
4883
5022
  }
@@ -4892,7 +5031,7 @@ function peg$parse(input, options) {
4892
5031
  } else {
4893
5032
  s5 = peg$FAILED;
4894
5033
  if (peg$silentFails === 0) {
4895
- peg$fail(peg$e66);
5034
+ peg$fail(peg$e72);
4896
5035
  }
4897
5036
  }
4898
5037
  if (s5 !== peg$FAILED) {
@@ -4904,7 +5043,7 @@ function peg$parse(input, options) {
4904
5043
  } else {
4905
5044
  s5 = peg$FAILED;
4906
5045
  if (peg$silentFails === 0) {
4907
- peg$fail(peg$e66);
5046
+ peg$fail(peg$e72);
4908
5047
  }
4909
5048
  }
4910
5049
  }
@@ -4918,7 +5057,7 @@ function peg$parse(input, options) {
4918
5057
  }
4919
5058
  if (s3 !== peg$FAILED) {
4920
5059
  peg$savedPos = s0;
4921
- s0 = peg$f52(s3);
5060
+ s0 = peg$f58(s3);
4922
5061
  } else {
4923
5062
  peg$currPos = s0;
4924
5063
  s0 = peg$FAILED;
@@ -4936,13 +5075,13 @@ function peg$parse(input, options) {
4936
5075
  function peg$parseClickDirective() {
4937
5076
  var s0, s1, s2, s3, s4, s5;
4938
5077
  s0 = peg$currPos;
4939
- if (input.substr(peg$currPos, 5) === peg$c56) {
4940
- s1 = peg$c56;
5078
+ if (input.substr(peg$currPos, 5) === peg$c62) {
5079
+ s1 = peg$c62;
4941
5080
  peg$currPos += 5;
4942
5081
  } else {
4943
5082
  s1 = peg$FAILED;
4944
5083
  if (peg$silentFails === 0) {
4945
- peg$fail(peg$e69);
5084
+ peg$fail(peg$e75);
4946
5085
  }
4947
5086
  }
4948
5087
  if (s1 !== peg$FAILED) {
@@ -4956,7 +5095,7 @@ function peg$parse(input, options) {
4956
5095
  } else {
4957
5096
  s5 = peg$FAILED;
4958
5097
  if (peg$silentFails === 0) {
4959
- peg$fail(peg$e66);
5098
+ peg$fail(peg$e72);
4960
5099
  }
4961
5100
  }
4962
5101
  if (s5 !== peg$FAILED) {
@@ -4968,7 +5107,7 @@ function peg$parse(input, options) {
4968
5107
  } else {
4969
5108
  s5 = peg$FAILED;
4970
5109
  if (peg$silentFails === 0) {
4971
- peg$fail(peg$e66);
5110
+ peg$fail(peg$e72);
4972
5111
  }
4973
5112
  }
4974
5113
  }
@@ -4982,7 +5121,7 @@ function peg$parse(input, options) {
4982
5121
  }
4983
5122
  if (s3 !== peg$FAILED) {
4984
5123
  peg$savedPos = s0;
4985
- s0 = peg$f53(s3);
5124
+ s0 = peg$f59(s3);
4986
5125
  } else {
4987
5126
  peg$currPos = s0;
4988
5127
  s0 = peg$FAILED;
@@ -5000,25 +5139,25 @@ function peg$parse(input, options) {
5000
5139
  function peg$parseNoteDirective() {
5001
5140
  var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
5002
5141
  s0 = peg$currPos;
5003
- if (input.substr(peg$currPos, 4) === peg$c57) {
5004
- s1 = peg$c57;
5142
+ if (input.substr(peg$currPos, 4) === peg$c63) {
5143
+ s1 = peg$c63;
5005
5144
  peg$currPos += 4;
5006
5145
  } else {
5007
5146
  s1 = peg$FAILED;
5008
5147
  if (peg$silentFails === 0) {
5009
- peg$fail(peg$e70);
5148
+ peg$fail(peg$e76);
5010
5149
  }
5011
5150
  }
5012
5151
  if (s1 !== peg$FAILED) {
5013
5152
  s2 = peg$parse__();
5014
5153
  if (s2 !== peg$FAILED) {
5015
5154
  if (input.charCodeAt(peg$currPos) === 34) {
5016
- s3 = peg$c58;
5155
+ s3 = peg$c64;
5017
5156
  peg$currPos++;
5018
5157
  } else {
5019
5158
  s3 = peg$FAILED;
5020
5159
  if (peg$silentFails === 0) {
5021
- peg$fail(peg$e71);
5160
+ peg$fail(peg$e77);
5022
5161
  }
5023
5162
  }
5024
5163
  if (s3 !== peg$FAILED) {
@@ -5030,7 +5169,7 @@ function peg$parse(input, options) {
5030
5169
  } else {
5031
5170
  s6 = peg$FAILED;
5032
5171
  if (peg$silentFails === 0) {
5033
- peg$fail(peg$e72);
5172
+ peg$fail(peg$e78);
5034
5173
  }
5035
5174
  }
5036
5175
  while (s6 !== peg$FAILED) {
@@ -5041,30 +5180,30 @@ function peg$parse(input, options) {
5041
5180
  } else {
5042
5181
  s6 = peg$FAILED;
5043
5182
  if (peg$silentFails === 0) {
5044
- peg$fail(peg$e72);
5183
+ peg$fail(peg$e78);
5045
5184
  }
5046
5185
  }
5047
5186
  }
5048
5187
  s4 = input.substring(s4, peg$currPos);
5049
5188
  if (input.charCodeAt(peg$currPos) === 34) {
5050
- s5 = peg$c58;
5189
+ s5 = peg$c64;
5051
5190
  peg$currPos++;
5052
5191
  } else {
5053
5192
  s5 = peg$FAILED;
5054
5193
  if (peg$silentFails === 0) {
5055
- peg$fail(peg$e71);
5194
+ peg$fail(peg$e77);
5056
5195
  }
5057
5196
  }
5058
5197
  if (s5 !== peg$FAILED) {
5059
5198
  s6 = peg$parse__();
5060
5199
  if (s6 !== peg$FAILED) {
5061
- if (input.substr(peg$currPos, 2) === peg$c59) {
5062
- s7 = peg$c59;
5200
+ if (input.substr(peg$currPos, 2) === peg$c65) {
5201
+ s7 = peg$c65;
5063
5202
  peg$currPos += 2;
5064
5203
  } else {
5065
5204
  s7 = peg$FAILED;
5066
5205
  if (peg$silentFails === 0) {
5067
- peg$fail(peg$e73);
5206
+ peg$fail(peg$e79);
5068
5207
  }
5069
5208
  }
5070
5209
  if (s7 !== peg$FAILED) {
@@ -5121,7 +5260,7 @@ function peg$parse(input, options) {
5121
5260
  s10 = null;
5122
5261
  }
5123
5262
  peg$savedPos = s0;
5124
- s0 = peg$f54(s4, s9, s10);
5263
+ s0 = peg$f60(s4, s9, s10);
5125
5264
  } else {
5126
5265
  peg$currPos = s0;
5127
5266
  s0 = peg$FAILED;
@@ -5161,13 +5300,13 @@ function peg$parse(input, options) {
5161
5300
  s0 = peg$currPos;
5162
5301
  s1 = peg$parse__();
5163
5302
  if (s1 !== peg$FAILED) {
5164
- if (input.substr(peg$currPos, 6) === peg$c60) {
5165
- s2 = peg$c60;
5303
+ if (input.substr(peg$currPos, 6) === peg$c66) {
5304
+ s2 = peg$c66;
5166
5305
  peg$currPos += 6;
5167
5306
  } else {
5168
5307
  s2 = peg$FAILED;
5169
5308
  if (peg$silentFails === 0) {
5170
- peg$fail(peg$e74);
5309
+ peg$fail(peg$e80);
5171
5310
  }
5172
5311
  }
5173
5312
  if (s2 !== peg$FAILED) {
@@ -5177,12 +5316,12 @@ function peg$parse(input, options) {
5177
5316
  if (s4 !== peg$FAILED) {
5178
5317
  s5 = peg$parse_();
5179
5318
  if (input.charCodeAt(peg$currPos) === 44) {
5180
- s6 = peg$c61;
5319
+ s6 = peg$c67;
5181
5320
  peg$currPos++;
5182
5321
  } else {
5183
5322
  s6 = peg$FAILED;
5184
5323
  if (peg$silentFails === 0) {
5185
- peg$fail(peg$e75);
5324
+ peg$fail(peg$e81);
5186
5325
  }
5187
5326
  }
5188
5327
  if (s6 !== peg$FAILED) {
@@ -5190,7 +5329,7 @@ function peg$parse(input, options) {
5190
5329
  s8 = peg$parseSignedInt();
5191
5330
  if (s8 !== peg$FAILED) {
5192
5331
  peg$savedPos = s0;
5193
- s0 = peg$f55(s4, s8);
5332
+ s0 = peg$f61(s4, s8);
5194
5333
  } else {
5195
5334
  peg$currPos = s0;
5196
5335
  s0 = peg$FAILED;
@@ -5221,12 +5360,12 @@ function peg$parse(input, options) {
5221
5360
  var s0, s1, s2, s3, s4;
5222
5361
  s0 = peg$currPos;
5223
5362
  if (input.charCodeAt(peg$currPos) === 45) {
5224
- s1 = peg$c62;
5363
+ s1 = peg$c68;
5225
5364
  peg$currPos++;
5226
5365
  } else {
5227
5366
  s1 = peg$FAILED;
5228
5367
  if (peg$silentFails === 0) {
5229
- peg$fail(peg$e76);
5368
+ peg$fail(peg$e82);
5230
5369
  }
5231
5370
  }
5232
5371
  if (s1 === peg$FAILED) {
@@ -5240,7 +5379,7 @@ function peg$parse(input, options) {
5240
5379
  } else {
5241
5380
  s4 = peg$FAILED;
5242
5381
  if (peg$silentFails === 0) {
5243
- peg$fail(peg$e77);
5382
+ peg$fail(peg$e83);
5244
5383
  }
5245
5384
  }
5246
5385
  if (s4 !== peg$FAILED) {
@@ -5252,7 +5391,7 @@ function peg$parse(input, options) {
5252
5391
  } else {
5253
5392
  s4 = peg$FAILED;
5254
5393
  if (peg$silentFails === 0) {
5255
- peg$fail(peg$e77);
5394
+ peg$fail(peg$e83);
5256
5395
  }
5257
5396
  }
5258
5397
  }
@@ -5266,7 +5405,7 @@ function peg$parse(input, options) {
5266
5405
  }
5267
5406
  if (s2 !== peg$FAILED) {
5268
5407
  peg$savedPos = s0;
5269
- s0 = peg$f56(s1, s2);
5408
+ s0 = peg$f62(s1, s2);
5270
5409
  } else {
5271
5410
  peg$currPos = s0;
5272
5411
  s0 = peg$FAILED;
@@ -5276,13 +5415,13 @@ function peg$parse(input, options) {
5276
5415
  function peg$parseLegendBlock() {
5277
5416
  var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
5278
5417
  s0 = peg$currPos;
5279
- if (input.substr(peg$currPos, 6) === peg$c63) {
5280
- s1 = peg$c63;
5418
+ if (input.substr(peg$currPos, 6) === peg$c69) {
5419
+ s1 = peg$c69;
5281
5420
  peg$currPos += 6;
5282
5421
  } else {
5283
5422
  s1 = peg$FAILED;
5284
5423
  if (peg$silentFails === 0) {
5285
- peg$fail(peg$e78);
5424
+ peg$fail(peg$e84);
5286
5425
  }
5287
5426
  }
5288
5427
  if (s1 !== peg$FAILED) {
@@ -5293,12 +5432,12 @@ function peg$parse(input, options) {
5293
5432
  s4 = peg$currPos;
5294
5433
  s5 = peg$parse_();
5295
5434
  if (input.charCodeAt(peg$currPos) === 34) {
5296
- s6 = peg$c58;
5435
+ s6 = peg$c64;
5297
5436
  peg$currPos++;
5298
5437
  } else {
5299
5438
  s6 = peg$FAILED;
5300
5439
  if (peg$silentFails === 0) {
5301
- peg$fail(peg$e71);
5440
+ peg$fail(peg$e77);
5302
5441
  }
5303
5442
  }
5304
5443
  if (s6 !== peg$FAILED) {
@@ -5310,7 +5449,7 @@ function peg$parse(input, options) {
5310
5449
  } else {
5311
5450
  s9 = peg$FAILED;
5312
5451
  if (peg$silentFails === 0) {
5313
- peg$fail(peg$e72);
5452
+ peg$fail(peg$e78);
5314
5453
  }
5315
5454
  }
5316
5455
  while (s9 !== peg$FAILED) {
@@ -5321,23 +5460,23 @@ function peg$parse(input, options) {
5321
5460
  } else {
5322
5461
  s9 = peg$FAILED;
5323
5462
  if (peg$silentFails === 0) {
5324
- peg$fail(peg$e72);
5463
+ peg$fail(peg$e78);
5325
5464
  }
5326
5465
  }
5327
5466
  }
5328
5467
  s7 = input.substring(s7, peg$currPos);
5329
5468
  if (input.charCodeAt(peg$currPos) === 34) {
5330
- s8 = peg$c58;
5469
+ s8 = peg$c64;
5331
5470
  peg$currPos++;
5332
5471
  } else {
5333
5472
  s8 = peg$FAILED;
5334
5473
  if (peg$silentFails === 0) {
5335
- peg$fail(peg$e71);
5474
+ peg$fail(peg$e77);
5336
5475
  }
5337
5476
  }
5338
5477
  if (s8 !== peg$FAILED) {
5339
5478
  peg$savedPos = s4;
5340
- s4 = peg$f57(s3, s7);
5479
+ s4 = peg$f63(s3, s7);
5341
5480
  } else {
5342
5481
  peg$currPos = s4;
5343
5482
  s4 = peg$FAILED;
@@ -5370,7 +5509,7 @@ function peg$parse(input, options) {
5370
5509
  }
5371
5510
  if (s9 !== peg$FAILED) {
5372
5511
  peg$savedPos = s0;
5373
- s0 = peg$f58(s3, s4, s7);
5512
+ s0 = peg$f64(s3, s4, s7);
5374
5513
  } else {
5375
5514
  peg$currPos = s0;
5376
5515
  s0 = peg$FAILED;
@@ -5395,43 +5534,43 @@ function peg$parse(input, options) {
5395
5534
  }
5396
5535
  function peg$parseLegendCorner() {
5397
5536
  var s0;
5398
- if (input.substr(peg$currPos, 12) === peg$c64) {
5399
- s0 = peg$c64;
5537
+ if (input.substr(peg$currPos, 12) === peg$c70) {
5538
+ s0 = peg$c70;
5400
5539
  peg$currPos += 12;
5401
5540
  } else {
5402
5541
  s0 = peg$FAILED;
5403
5542
  if (peg$silentFails === 0) {
5404
- peg$fail(peg$e79);
5543
+ peg$fail(peg$e85);
5405
5544
  }
5406
5545
  }
5407
5546
  if (s0 === peg$FAILED) {
5408
- if (input.substr(peg$currPos, 11) === peg$c65) {
5409
- s0 = peg$c65;
5547
+ if (input.substr(peg$currPos, 11) === peg$c71) {
5548
+ s0 = peg$c71;
5410
5549
  peg$currPos += 11;
5411
5550
  } else {
5412
5551
  s0 = peg$FAILED;
5413
5552
  if (peg$silentFails === 0) {
5414
- peg$fail(peg$e80);
5553
+ peg$fail(peg$e86);
5415
5554
  }
5416
5555
  }
5417
5556
  if (s0 === peg$FAILED) {
5418
- if (input.substr(peg$currPos, 9) === peg$c66) {
5419
- s0 = peg$c66;
5557
+ if (input.substr(peg$currPos, 9) === peg$c72) {
5558
+ s0 = peg$c72;
5420
5559
  peg$currPos += 9;
5421
5560
  } else {
5422
5561
  s0 = peg$FAILED;
5423
5562
  if (peg$silentFails === 0) {
5424
- peg$fail(peg$e81);
5563
+ peg$fail(peg$e87);
5425
5564
  }
5426
5565
  }
5427
5566
  if (s0 === peg$FAILED) {
5428
- if (input.substr(peg$currPos, 8) === peg$c67) {
5429
- s0 = peg$c67;
5567
+ if (input.substr(peg$currPos, 8) === peg$c73) {
5568
+ s0 = peg$c73;
5430
5569
  peg$currPos += 8;
5431
5570
  } else {
5432
5571
  s0 = peg$FAILED;
5433
5572
  if (peg$silentFails === 0) {
5434
- peg$fail(peg$e82);
5573
+ peg$fail(peg$e88);
5435
5574
  }
5436
5575
  }
5437
5576
  }
@@ -5501,7 +5640,7 @@ function peg$parse(input, options) {
5501
5640
  } else {
5502
5641
  s5 = peg$FAILED;
5503
5642
  if (peg$silentFails === 0) {
5504
- peg$fail(peg$e83);
5643
+ peg$fail(peg$e89);
5505
5644
  }
5506
5645
  }
5507
5646
  if (s5 !== peg$FAILED) {
@@ -5513,7 +5652,7 @@ function peg$parse(input, options) {
5513
5652
  } else {
5514
5653
  s5 = peg$FAILED;
5515
5654
  if (peg$silentFails === 0) {
5516
- peg$fail(peg$e83);
5655
+ peg$fail(peg$e89);
5517
5656
  }
5518
5657
  }
5519
5658
  }
@@ -5527,12 +5666,12 @@ function peg$parse(input, options) {
5527
5666
  }
5528
5667
  if (s3 !== peg$FAILED) {
5529
5668
  if (input.charCodeAt(peg$currPos) === 58) {
5530
- s4 = peg$c29;
5669
+ s4 = peg$c35;
5531
5670
  peg$currPos++;
5532
5671
  } else {
5533
5672
  s4 = peg$FAILED;
5534
5673
  if (peg$silentFails === 0) {
5535
- peg$fail(peg$e36);
5674
+ peg$fail(peg$e42);
5536
5675
  }
5537
5676
  }
5538
5677
  if (s4 !== peg$FAILED) {
@@ -5572,7 +5711,7 @@ function peg$parse(input, options) {
5572
5711
  s6 = peg$parseNL();
5573
5712
  if (s6 !== peg$FAILED) {
5574
5713
  peg$savedPos = s0;
5575
- s0 = peg$f59(s3, s5);
5714
+ s0 = peg$f65(s3, s5);
5576
5715
  } else {
5577
5716
  peg$currPos = s0;
5578
5717
  s0 = peg$FAILED;
@@ -5605,7 +5744,7 @@ function peg$parse(input, options) {
5605
5744
  } else {
5606
5745
  s1 = peg$FAILED;
5607
5746
  if (peg$silentFails === 0) {
5608
- peg$fail(peg$e85);
5747
+ peg$fail(peg$e91);
5609
5748
  }
5610
5749
  }
5611
5750
  while (s1 !== peg$FAILED) {
@@ -5616,14 +5755,14 @@ function peg$parse(input, options) {
5616
5755
  } else {
5617
5756
  s1 = peg$FAILED;
5618
5757
  if (peg$silentFails === 0) {
5619
- peg$fail(peg$e85);
5758
+ peg$fail(peg$e91);
5620
5759
  }
5621
5760
  }
5622
5761
  }
5623
5762
  peg$silentFails--;
5624
5763
  s1 = peg$FAILED;
5625
5764
  if (peg$silentFails === 0) {
5626
- peg$fail(peg$e84);
5765
+ peg$fail(peg$e90);
5627
5766
  }
5628
5767
  return s0;
5629
5768
  }
@@ -5637,7 +5776,7 @@ function peg$parse(input, options) {
5637
5776
  } else {
5638
5777
  s1 = peg$FAILED;
5639
5778
  if (peg$silentFails === 0) {
5640
- peg$fail(peg$e85);
5779
+ peg$fail(peg$e91);
5641
5780
  }
5642
5781
  }
5643
5782
  if (s1 !== peg$FAILED) {
@@ -5649,7 +5788,7 @@ function peg$parse(input, options) {
5649
5788
  } else {
5650
5789
  s1 = peg$FAILED;
5651
5790
  if (peg$silentFails === 0) {
5652
- peg$fail(peg$e85);
5791
+ peg$fail(peg$e91);
5653
5792
  }
5654
5793
  }
5655
5794
  }
@@ -5660,7 +5799,7 @@ function peg$parse(input, options) {
5660
5799
  if (s0 === peg$FAILED) {
5661
5800
  s1 = peg$FAILED;
5662
5801
  if (peg$silentFails === 0) {
5663
- peg$fail(peg$e86);
5802
+ peg$fail(peg$e92);
5664
5803
  }
5665
5804
  }
5666
5805
  return s0;
@@ -5668,13 +5807,13 @@ function peg$parse(input, options) {
5668
5807
  function peg$parseNL() {
5669
5808
  var s0, s1;
5670
5809
  peg$silentFails++;
5671
- if (input.substr(peg$currPos, 2) === peg$c68) {
5672
- s0 = peg$c68;
5810
+ if (input.substr(peg$currPos, 2) === peg$c74) {
5811
+ s0 = peg$c74;
5673
5812
  peg$currPos += 2;
5674
5813
  } else {
5675
5814
  s0 = peg$FAILED;
5676
5815
  if (peg$silentFails === 0) {
5677
- peg$fail(peg$e88);
5816
+ peg$fail(peg$e94);
5678
5817
  }
5679
5818
  }
5680
5819
  if (s0 === peg$FAILED) {
@@ -5684,7 +5823,7 @@ function peg$parse(input, options) {
5684
5823
  } else {
5685
5824
  s0 = peg$FAILED;
5686
5825
  if (peg$silentFails === 0) {
5687
- peg$fail(peg$e89);
5826
+ peg$fail(peg$e95);
5688
5827
  }
5689
5828
  }
5690
5829
  }
@@ -5692,7 +5831,7 @@ function peg$parse(input, options) {
5692
5831
  if (s0 === peg$FAILED) {
5693
5832
  s1 = peg$FAILED;
5694
5833
  if (peg$silentFails === 0) {
5695
- peg$fail(peg$e87);
5834
+ peg$fail(peg$e93);
5696
5835
  }
5697
5836
  }
5698
5837
  return s0;
@@ -6005,8 +6144,8 @@ function rhuInt(v) {
6005
6144
  return Math.floor(v + 0.5);
6006
6145
  }
6007
6146
  function rhu(v, decimals = 2) {
6008
- const f = 10 ** decimals;
6009
- return Math.floor(v * f + 0.5) / f;
6147
+ const f2 = 10 ** decimals;
6148
+ return Math.floor(v * f2 + 0.5) / f2;
6010
6149
  }
6011
6150
 
6012
6151
  // ../src/text/metrics.ts
@@ -9560,6 +9699,98 @@ var timeline = {
9560
9699
  }
9561
9700
  };
9562
9701
 
9702
+ // ../src/crosslink/render.ts
9703
+ function wavifyPath(points, amplitude, wavelength) {
9704
+ if (points.length < 2) {
9705
+ return points.map((p, i) => `${i === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ");
9706
+ }
9707
+ const sampleInterval = wavelength / 4;
9708
+ const arcLen = [0];
9709
+ for (let i = 1; i < points.length; i++) {
9710
+ const a = points[i - 1], b = points[i];
9711
+ const dx = b.x - a.x, dy = b.y - a.y;
9712
+ arcLen.push(arcLen[i - 1] + Math.sqrt(dx * dx + dy * dy));
9713
+ }
9714
+ const totalLen = arcLen[arcLen.length - 1];
9715
+ if (totalLen < 1) {
9716
+ return `M ${points[0].x} ${points[0].y}`;
9717
+ }
9718
+ const sampleCount = Math.max(2, Math.ceil(totalLen / sampleInterval) + 1);
9719
+ const samples = [];
9720
+ const sampleArcLens = [];
9721
+ function polylineAt(s) {
9722
+ s = Math.max(0, Math.min(s, totalLen));
9723
+ for (let i = 1; i < points.length; i++) {
9724
+ if (arcLen[i] >= s - 1e-9) {
9725
+ const segStart = arcLen[i - 1];
9726
+ const segEnd = arcLen[i];
9727
+ const segLen = segEnd - segStart;
9728
+ const t = segLen < 1e-9 ? 0 : (s - segStart) / segLen;
9729
+ const a = points[i - 1], b = points[i];
9730
+ const pt = { x: a.x + t * (b.x - a.x), y: a.y + t * (b.y - a.y) };
9731
+ const dx2 = b.x - a.x, dy2 = b.y - a.y;
9732
+ const len2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);
9733
+ const tx = len2 > 1e-9 ? dx2 / len2 : 1;
9734
+ const ty = len2 > 1e-9 ? dy2 / len2 : 0;
9735
+ return { pt, tangentX: tx, tangentY: ty };
9736
+ }
9737
+ }
9738
+ const last = points[points.length - 1], prev = points[points.length - 2];
9739
+ const dx = last.x - prev.x, dy = last.y - prev.y;
9740
+ const len = Math.sqrt(dx * dx + dy * dy);
9741
+ return { pt: last, tangentX: len > 1e-9 ? dx / len : 1, tangentY: len > 1e-9 ? dy / len : 0 };
9742
+ }
9743
+ const cornerArcLens = [];
9744
+ for (let i = 1; i < points.length - 1; i++) {
9745
+ const a = points[i - 1], b = points[i], c = points[i + 1];
9746
+ const d1x = b.x - a.x, d1y = b.y - a.y;
9747
+ const d2x = c.x - b.x, d2y = c.y - b.y;
9748
+ const len1 = Math.sqrt(d1x * d1x + d1y * d1y);
9749
+ const len2 = Math.sqrt(d2x * d2x + d2y * d2y);
9750
+ if (len1 < 1e-9 || len2 < 1e-9) continue;
9751
+ const dot = d1x / len1 * (d2x / len2) + d1y / len1 * (d2y / len2);
9752
+ if (dot < 0.7) {
9753
+ cornerArcLens.push(arcLen[i]);
9754
+ }
9755
+ }
9756
+ function cornerAmplitudeFactor(s) {
9757
+ let minDist = Infinity;
9758
+ for (const cs of cornerArcLens) {
9759
+ minDist = Math.min(minDist, Math.abs(s - cs));
9760
+ }
9761
+ if (minDist >= wavelength) return 1;
9762
+ return minDist / wavelength;
9763
+ }
9764
+ for (let k = 0; k < sampleCount; k++) {
9765
+ const s = k / (sampleCount - 1) * totalLen;
9766
+ const { pt, tangentX, tangentY } = polylineAt(s);
9767
+ const nx = -tangentY;
9768
+ const ny = tangentX;
9769
+ const phase = 2 * Math.PI * s / wavelength;
9770
+ const cornerFactor = cornerAmplitudeFactor(s);
9771
+ const displacement = amplitude * cornerFactor * Math.sin(phase);
9772
+ samples.push({ x: pt.x + nx * displacement, y: pt.y + ny * displacement });
9773
+ sampleArcLens.push(s);
9774
+ }
9775
+ const tension = 0.5;
9776
+ let d = `M ${f(samples[0].x)} ${f(samples[0].y)}`;
9777
+ for (let i = 1; i < samples.length; i++) {
9778
+ const p0 = samples[Math.max(0, i - 2)];
9779
+ const p1 = samples[i - 1];
9780
+ const p2 = samples[i];
9781
+ const p3 = samples[Math.min(samples.length - 1, i + 1)];
9782
+ const cp1x = p1.x + (p2.x - p0.x) * tension / 3;
9783
+ const cp1y = p1.y + (p2.y - p0.y) * tension / 3;
9784
+ const cp2x = p2.x - (p3.x - p1.x) * tension / 3;
9785
+ const cp2y = p2.y - (p3.y - p1.y) * tension / 3;
9786
+ d += ` C ${f(cp1x)} ${f(cp1y)} ${f(cp2x)} ${f(cp2y)} ${f(p2.x)} ${f(p2.y)}`;
9787
+ }
9788
+ return d;
9789
+ }
9790
+ function f(n) {
9791
+ return Math.round(n * 100) / 100 + "";
9792
+ }
9793
+
9563
9794
  // ../src/crosslink/engine3.ts
9564
9795
  var W_CROSS = 1e4;
9565
9796
  var W_INTER = 3e3;
@@ -9627,7 +9858,7 @@ function routeAndRenderCrossLinks3(links2, theme, anchors, intraPorts, occupiedR
9627
9858
  explicitColorIdx++;
9628
9859
  }
9629
9860
  const dash = edgeStyleToDash(link.style);
9630
- const animation = link.animation === "none" ? void 0 : isRenderedConnectorAnimation(link.animation) ? link.animation : dash ? "march" : void 0;
9861
+ const animation = link.animation === "none" ? void 0 : isRenderedConnectorAnimation(link.animation) ? link.animation : void 0;
9631
9862
  let markerEnd;
9632
9863
  let markerStart;
9633
9864
  if (link.direction === "directed") {
@@ -9636,12 +9867,18 @@ function routeAndRenderCrossLinks3(links2, theme, anchors, intraPorts, occupiedR
9636
9867
  markerEnd = ARROW_ID;
9637
9868
  markerStart = BI_ARROW_ID;
9638
9869
  }
9870
+ const strokeWidth = link.style === "thick" ? (edgeTheme.strokeWidth + 0.5) * 2 : void 0;
9871
+ const isWavy = link.style === "wavy";
9872
+ const wavyAmp = link.props?.amplitude ?? 3;
9873
+ const wavyLambda = link.props?.wavelength ?? 12;
9639
9874
  const origIdx = links2.indexOf(link);
9640
9875
  workingByOriginalIdx.set(origIdx >= 0 ? origIdx : workingByOriginalIdx.size, {
9641
9876
  points: [...best.rawPts],
9642
9877
  ...best.committed.isBezier ? { isBezier: true } : {},
9643
9878
  color,
9644
9879
  ...dash ? { dash } : {},
9880
+ ...strokeWidth ? { strokeWidth } : {},
9881
+ ...isWavy ? { isWavy: true, wavyAmplitude: wavyAmp, wavyWavelength: wavyLambda } : {},
9645
9882
  ...animation ? { animation } : {},
9646
9883
  ...markerEnd ? { markerEnd } : {},
9647
9884
  ...markerStart ? { markerStart } : {},
@@ -9691,14 +9928,17 @@ function routeAndRenderCrossLinks3(links2, theme, anchors, intraPorts, occupiedR
9691
9928
  const pendingLabels = [];
9692
9929
  for (let i = 0; i < workingRoutes.length; i++) {
9693
9930
  const wr = workingRoutes[i];
9694
- const path = wr.isBezier ? `M ${wr.points[0].x} ${wr.points[0].y} C ${wr.points[1].x} ${wr.points[1].y} ${wr.points[2].x} ${wr.points[2].y} ${wr.points[3].x} ${wr.points[3].y}` : wr.points.map((p, pi) => `${pi === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ");
9931
+ let path = wr.isBezier ? `M ${wr.points[0].x} ${wr.points[0].y} C ${wr.points[1].x} ${wr.points[1].y} ${wr.points[2].x} ${wr.points[2].y} ${wr.points[3].x} ${wr.points[3].y}` : wr.points.map((p, pi) => `${pi === 0 ? "M" : "L"} ${p.x} ${p.y}`).join(" ");
9932
+ if (wr.isWavy) {
9933
+ path = wavifyPath([...wr.points], wr.wavyAmplitude ?? 3, wr.wavyWavelength ?? 12);
9934
+ }
9695
9935
  if (wr.markerEnd === ARROW_ID) needsArrow = true;
9696
9936
  if (wr.markerStart === BI_ARROW_ID) needsBiArrow = true;
9697
9937
  elements.push({
9698
9938
  type: "path",
9699
9939
  d: path,
9700
9940
  stroke: wr.color,
9701
- strokeWidth: edgeTheme.strokeWidth + 0.5,
9941
+ strokeWidth: wr.strokeWidth ?? edgeTheme.strokeWidth + 0.5,
9702
9942
  ...wr.dash ? { strokeDasharray: wr.dash } : {},
9703
9943
  ...wr.animation ? { animated: wr.animation } : {},
9704
9944
  ...wr.markerEnd ? { markerEnd: wr.markerEnd } : {},
@@ -10240,8 +10480,8 @@ function labelAnchor(pts) {
10240
10480
  return hMid ?? anyMid;
10241
10481
  }
10242
10482
  function edgeStyleToDash(style) {
10483
+ if (style === "dotted") return "4 3";
10243
10484
  if (style === "dashed") return "8 4";
10244
- if (style === "dotted") return "3 4";
10245
10485
  return void 0;
10246
10486
  }
10247
10487
  function nudgeOffBorders(routes, borders) {
@@ -11117,6 +11357,14 @@ function layoutPoster(ir, theme) {
11117
11357
  for (const op of result.occupiedPorts ?? []) {
11118
11358
  allOccupiedPorts.push({ ...op, nodeKey: `${cellId}.${op.nodeKey}` });
11119
11359
  }
11360
+ for (const cr of result.chromeRects ?? []) {
11361
+ textOccupied.push({
11362
+ x: cr.x * scale + offsetX,
11363
+ y: cr.y * scale + offsetY,
11364
+ width: cr.width * scale,
11365
+ height: cr.height * scale
11366
+ });
11367
+ }
11120
11368
  }
11121
11369
  const totalW = padding * 2 + sumWithGaps(colWidths, 0, grid.columns, gap) - gap;
11122
11370
  const totalH = padding * 2 + headerH + sumWithGaps(rowHeights, 0, numRows, gap) - gap;
@@ -11603,26 +11851,45 @@ function peg$parse3(input, options) {
11603
11851
  var peg$c16 = "text";
11604
11852
  var peg$c17 = "link";
11605
11853
  var peg$c18 = "@";
11606
- var peg$c19 = ":";
11607
- var peg$c20 = "straight";
11608
- var peg$c21 = "orthogonal";
11609
- var peg$c22 = "bezier";
11610
- var peg$c23 = "polyline";
11611
- var peg$c24 = "{";
11612
- var peg$c25 = ",";
11613
- var peg$c26 = "}";
11614
- var peg$c27 = ".";
11615
- var peg$c28 = "<-->";
11616
- var peg$c29 = "<-.->";
11617
- var peg$c30 = "<..>";
11618
- var peg$c31 = "-->";
11619
- var peg$c32 = "-.->";
11620
- var peg$c33 = "..>";
11621
- var peg$c34 = "-.-";
11622
- var peg$c35 = "...";
11623
- var peg$c36 = '"';
11624
- var peg$c37 = "%%";
11625
- var peg$c38 = "\r\n";
11854
+ var peg$c19 = "anim:";
11855
+ var peg$c20 = ":";
11856
+ var peg$c21 = "march";
11857
+ var peg$c22 = "particle";
11858
+ var peg$c23 = "draw";
11859
+ var peg$c24 = "pulse";
11860
+ var peg$c25 = "glow";
11861
+ var peg$c26 = "comet";
11862
+ var peg$c27 = "stream";
11863
+ var peg$c28 = "colorcycle";
11864
+ var peg$c29 = "none";
11865
+ var peg$c30 = "straight";
11866
+ var peg$c31 = "orthogonal";
11867
+ var peg$c32 = "bezier";
11868
+ var peg$c33 = "polyline";
11869
+ var peg$c34 = "{";
11870
+ var peg$c35 = ",";
11871
+ var peg$c36 = "}";
11872
+ var peg$c37 = ".";
11873
+ var peg$c38 = "<-~->";
11874
+ var peg$c39 = "<-_->";
11875
+ var peg$c40 = "<-.->";
11876
+ var peg$c41 = "<==>";
11877
+ var peg$c42 = "<-->";
11878
+ var peg$c43 = "-~->";
11879
+ var peg$c44 = "-_->";
11880
+ var peg$c45 = "-..->";
11881
+ var peg$c46 = "-.->";
11882
+ var peg$c47 = "===>";
11883
+ var peg$c48 = "==>";
11884
+ var peg$c49 = "--->";
11885
+ var peg$c50 = "-->";
11886
+ var peg$c51 = "-~-";
11887
+ var peg$c52 = "-_-";
11888
+ var peg$c53 = "-.-";
11889
+ var peg$c54 = "===";
11890
+ var peg$c55 = '"';
11891
+ var peg$c56 = "%%";
11892
+ var peg$c57 = "\r\n";
11626
11893
  var peg$r0 = /^[^\n]/;
11627
11894
  var peg$r1 = /^[ENSW]/;
11628
11895
  var peg$r2 = /^[0-9]/;
@@ -11652,35 +11919,54 @@ function peg$parse3(input, options) {
11652
11919
  var peg$e17 = peg$literalExpectation("text", false);
11653
11920
  var peg$e18 = peg$literalExpectation("link", false);
11654
11921
  var peg$e19 = peg$literalExpectation("@", false);
11655
- var peg$e20 = peg$literalExpectation(":", false);
11656
- var peg$e21 = peg$literalExpectation("straight", false);
11657
- var peg$e22 = peg$literalExpectation("orthogonal", false);
11658
- var peg$e23 = peg$literalExpectation("bezier", false);
11659
- var peg$e24 = peg$literalExpectation("polyline", false);
11660
- var peg$e25 = peg$classExpectation(["E", "N", "S", "W"], false, false);
11661
- var peg$e26 = peg$literalExpectation("{", false);
11662
- var peg$e27 = peg$literalExpectation(",", false);
11663
- var peg$e28 = peg$literalExpectation("}", false);
11664
- var peg$e29 = peg$classExpectation([["0", "9"]], false, false);
11665
- var peg$e30 = peg$literalExpectation(".", false);
11666
- var peg$e31 = peg$literalExpectation("<-->", false);
11667
- var peg$e32 = peg$literalExpectation("<-.->", false);
11668
- var peg$e33 = peg$literalExpectation("<..>", false);
11669
- var peg$e34 = peg$literalExpectation("-->", false);
11670
- var peg$e35 = peg$literalExpectation("-.->", false);
11671
- var peg$e36 = peg$literalExpectation("..>", false);
11672
- var peg$e37 = peg$literalExpectation("-.-", false);
11673
- var peg$e38 = peg$literalExpectation("...", false);
11674
- var peg$e39 = peg$classExpectation([["a", "z"], ["A", "Z"], "_"], false, false);
11675
- var peg$e40 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "_", "-"], false, false);
11676
- var peg$e41 = peg$anyExpectation();
11677
- var peg$e42 = peg$literalExpectation('"', false);
11678
- var peg$e43 = peg$classExpectation(['"'], true, false);
11679
- var peg$e44 = peg$classExpectation(["+", "-"], false, false);
11680
- var peg$e45 = peg$literalExpectation("%%", false);
11681
- var peg$e46 = peg$classExpectation([" ", " "], false, false);
11682
- var peg$e47 = peg$literalExpectation("\r\n", false);
11683
- var peg$e48 = peg$classExpectation(["\n", "\r"], false, false);
11922
+ var peg$e20 = peg$literalExpectation("anim:", false);
11923
+ var peg$e21 = peg$literalExpectation(":", false);
11924
+ var peg$e22 = peg$literalExpectation("march", false);
11925
+ var peg$e23 = peg$literalExpectation("particle", false);
11926
+ var peg$e24 = peg$literalExpectation("draw", false);
11927
+ var peg$e25 = peg$literalExpectation("pulse", false);
11928
+ var peg$e26 = peg$literalExpectation("glow", false);
11929
+ var peg$e27 = peg$literalExpectation("comet", false);
11930
+ var peg$e28 = peg$literalExpectation("stream", false);
11931
+ var peg$e29 = peg$literalExpectation("colorcycle", false);
11932
+ var peg$e30 = peg$literalExpectation("none", false);
11933
+ var peg$e31 = peg$literalExpectation("straight", false);
11934
+ var peg$e32 = peg$literalExpectation("orthogonal", false);
11935
+ var peg$e33 = peg$literalExpectation("bezier", false);
11936
+ var peg$e34 = peg$literalExpectation("polyline", false);
11937
+ var peg$e35 = peg$classExpectation(["E", "N", "S", "W"], false, false);
11938
+ var peg$e36 = peg$literalExpectation("{", false);
11939
+ var peg$e37 = peg$literalExpectation(",", false);
11940
+ var peg$e38 = peg$literalExpectation("}", false);
11941
+ var peg$e39 = peg$classExpectation([["0", "9"]], false, false);
11942
+ var peg$e40 = peg$literalExpectation(".", false);
11943
+ var peg$e41 = peg$literalExpectation("<-~->", false);
11944
+ var peg$e42 = peg$literalExpectation("<-_->", false);
11945
+ var peg$e43 = peg$literalExpectation("<-.->", false);
11946
+ var peg$e44 = peg$literalExpectation("<==>", false);
11947
+ var peg$e45 = peg$literalExpectation("<-->", false);
11948
+ var peg$e46 = peg$literalExpectation("-~->", false);
11949
+ var peg$e47 = peg$literalExpectation("-_->", false);
11950
+ var peg$e48 = peg$literalExpectation("-..->", false);
11951
+ var peg$e49 = peg$literalExpectation("-.->", false);
11952
+ var peg$e50 = peg$literalExpectation("===>", false);
11953
+ var peg$e51 = peg$literalExpectation("==>", false);
11954
+ var peg$e52 = peg$literalExpectation("--->", false);
11955
+ var peg$e53 = peg$literalExpectation("-->", false);
11956
+ var peg$e54 = peg$literalExpectation("-~-", false);
11957
+ var peg$e55 = peg$literalExpectation("-_-", false);
11958
+ var peg$e56 = peg$literalExpectation("-.-", false);
11959
+ var peg$e57 = peg$literalExpectation("===", false);
11960
+ var peg$e58 = peg$classExpectation([["a", "z"], ["A", "Z"], "_"], false, false);
11961
+ var peg$e59 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "_", "-"], false, false);
11962
+ var peg$e60 = peg$anyExpectation();
11963
+ var peg$e61 = peg$literalExpectation('"', false);
11964
+ var peg$e62 = peg$classExpectation(['"'], true, false);
11965
+ var peg$e63 = peg$classExpectation(["+", "-"], false, false);
11966
+ var peg$e64 = peg$literalExpectation("%%", false);
11967
+ var peg$e65 = peg$classExpectation([" ", " "], false, false);
11968
+ var peg$e66 = peg$literalExpectation("\r\n", false);
11969
+ var peg$e67 = peg$classExpectation(["\n", "\r"], false, false);
11684
11970
  var peg$f0 = function(frontmatter, header, directives, body) {
11685
11971
  const columns = (directives.find((d) => d.key === "columns") || {}).value || 2;
11686
11972
  return {
@@ -11739,9 +12025,8 @@ function peg$parse3(input, options) {
11739
12025
  var peg$f14 = function(cols) {
11740
12026
  return { colSpan: cols, rowSpan: 1 };
11741
12027
  };
11742
- var peg$f15 = function(from, arrow, to, label, ann, block2) {
12028
+ var peg$f15 = function(from, arrow, to, label, anns, block2) {
11743
12029
  const result = {};
11744
- if (ann) Object.assign(result, ann[2]);
11745
12030
  if (block2) {
11746
12031
  const b = block2[1];
11747
12032
  if (b.route) {
@@ -11762,37 +12047,49 @@ function peg$parse3(input, options) {
11762
12047
  }
11763
12048
  if (Object.keys(b).length > 0) result.props = b;
11764
12049
  }
12050
+ for (const ann of anns) {
12051
+ Object.assign(result, ann[2]);
12052
+ }
11765
12053
  addLink(from, arrow, to, label ? label[1] : null, Object.keys(result).length > 0 ? result : null);
11766
12054
  return { type: "link" };
11767
12055
  };
11768
- var peg$f16 = function(route, walls) {
12056
+ var peg$f16 = function(value) {
12057
+ return { animation: value };
12058
+ };
12059
+ var peg$f17 = function(route, walls) {
11769
12060
  return { routing: route, ...walls ? walls[1] : {} };
11770
12061
  };
11771
- var peg$f17 = function(walls) {
12062
+ var peg$f18 = function(walls) {
11772
12063
  return walls;
11773
12064
  };
11774
- var peg$f18 = function() {
12065
+ var peg$f19 = function(route, walls) {
12066
+ return { routing: route, ...walls ? walls[1] : {} };
12067
+ };
12068
+ var peg$f20 = function(walls) {
12069
+ return walls;
12070
+ };
12071
+ var peg$f21 = function() {
11775
12072
  return "straight";
11776
12073
  };
11777
- var peg$f19 = function() {
12074
+ var peg$f22 = function() {
11778
12075
  return "orthogonal";
11779
12076
  };
11780
- var peg$f20 = function() {
12077
+ var peg$f23 = function() {
11781
12078
  return "bezier";
11782
12079
  };
11783
- var peg$f21 = function() {
12080
+ var peg$f24 = function() {
11784
12081
  return "polyline";
11785
12082
  };
11786
- var peg$f22 = function(exit, entry) {
12083
+ var peg$f25 = function(exit, entry) {
11787
12084
  return { exitWall: exit, entryWall: entry };
11788
12085
  };
11789
- var peg$f23 = function(exit) {
12086
+ var peg$f26 = function(exit) {
11790
12087
  return { exitWall: exit };
11791
12088
  };
11792
- var peg$f24 = function(w) {
12089
+ var peg$f27 = function(w) {
11793
12090
  return w;
11794
12091
  };
11795
- var peg$f25 = function(first, rest) {
12092
+ var peg$f28 = function(first, rest) {
11796
12093
  const result = {};
11797
12094
  result[first.key] = first.value;
11798
12095
  for (const r of rest) {
@@ -11800,61 +12097,88 @@ function peg$parse3(input, options) {
11800
12097
  }
11801
12098
  return result;
11802
12099
  };
11803
- var peg$f26 = function(key, value) {
12100
+ var peg$f29 = function(key, value) {
11804
12101
  return { key, value };
11805
12102
  };
11806
- var peg$f27 = function(num) {
12103
+ var peg$f30 = function(num) {
11807
12104
  return parseFloat(num);
11808
12105
  };
11809
- var peg$f28 = function() {
11810
- return { direction: "bidirectional", style: "solid" };
12106
+ var peg$f31 = function() {
12107
+ return { direction: "bidirectional", style: "wavy" };
11811
12108
  };
11812
- var peg$f29 = function() {
12109
+ var peg$f32 = function() {
11813
12110
  return { direction: "bidirectional", style: "dashed" };
11814
12111
  };
11815
- var peg$f30 = function() {
12112
+ var peg$f33 = function() {
11816
12113
  return { direction: "bidirectional", style: "dotted" };
11817
12114
  };
11818
- var peg$f31 = function() {
11819
- return { direction: "directed", style: "solid" };
12115
+ var peg$f34 = function() {
12116
+ return { direction: "bidirectional", style: "thick" };
11820
12117
  };
11821
- var peg$f32 = function() {
12118
+ var peg$f35 = function() {
12119
+ return { direction: "bidirectional", style: "solid" };
12120
+ };
12121
+ var peg$f36 = function() {
12122
+ return { direction: "directed", style: "wavy" };
12123
+ };
12124
+ var peg$f37 = function() {
11822
12125
  return { direction: "directed", style: "dashed" };
11823
12126
  };
11824
- var peg$f33 = function() {
12127
+ var peg$f38 = function() {
11825
12128
  return { direction: "directed", style: "dotted" };
11826
12129
  };
11827
- var peg$f34 = function() {
11828
- return { direction: "undirected", style: "solid" };
12130
+ var peg$f39 = function() {
12131
+ return { direction: "directed", style: "dotted" };
11829
12132
  };
11830
- var peg$f35 = function() {
12133
+ var peg$f40 = function() {
12134
+ return { direction: "directed", style: "thick" };
12135
+ };
12136
+ var peg$f41 = function() {
12137
+ return { direction: "directed", style: "thick" };
12138
+ };
12139
+ var peg$f42 = function() {
12140
+ return { direction: "directed", style: "solid" };
12141
+ };
12142
+ var peg$f43 = function() {
12143
+ return { direction: "directed", style: "solid" };
12144
+ };
12145
+ var peg$f44 = function() {
12146
+ return { direction: "undirected", style: "wavy" };
12147
+ };
12148
+ var peg$f45 = function() {
11831
12149
  return { direction: "undirected", style: "dashed" };
11832
12150
  };
11833
- var peg$f36 = function() {
12151
+ var peg$f46 = function() {
11834
12152
  return { direction: "undirected", style: "dotted" };
11835
12153
  };
11836
- var peg$f37 = function(cell, index) {
12154
+ var peg$f47 = function() {
12155
+ return { direction: "undirected", style: "thick" };
12156
+ };
12157
+ var peg$f48 = function() {
12158
+ return { direction: "undirected", style: "solid" };
12159
+ };
12160
+ var peg$f49 = function(cell, index) {
11837
12161
  return { cellPath: [cell], nodeId: "", elementIndex: index };
11838
12162
  };
11839
- var peg$f38 = function(cell, node) {
12163
+ var peg$f50 = function(cell, node) {
11840
12164
  return { cellPath: [cell], nodeId: node };
11841
12165
  };
11842
- var peg$f39 = function(line) {
12166
+ var peg$f51 = function(line) {
11843
12167
  return line;
11844
12168
  };
11845
- var peg$f40 = function(lines2) {
12169
+ var peg$f52 = function(lines2) {
11846
12170
  return lines2.join("\n");
11847
12171
  };
11848
- var peg$f41 = function(text2) {
12172
+ var peg$f53 = function(text2) {
11849
12173
  return text2;
11850
12174
  };
11851
- var peg$f42 = function(digits) {
12175
+ var peg$f54 = function(digits) {
11852
12176
  return parseInt(digits, 10);
11853
12177
  };
11854
- var peg$f43 = function(sign, digits) {
12178
+ var peg$f55 = function(sign, digits) {
11855
12179
  return parseInt((sign || "") + digits, 10);
11856
12180
  };
11857
- var peg$f44 = function() {
12181
+ var peg$f56 = function() {
11858
12182
  return null;
11859
12183
  };
11860
12184
  var peg$currPos = options.peg$currPos | 0;
@@ -12728,7 +13052,7 @@ function peg$parse3(input, options) {
12728
13052
  return s0;
12729
13053
  }
12730
13054
  function peg$parseLinkDecl() {
12731
- var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;
13055
+ var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
12732
13056
  s0 = peg$currPos;
12733
13057
  s1 = peg$parse_();
12734
13058
  if (input.substr(peg$currPos, 4) === peg$c17) {
@@ -12766,32 +13090,57 @@ function peg$parse3(input, options) {
12766
13090
  if (s9 === peg$FAILED) {
12767
13091
  s9 = null;
12768
13092
  }
12769
- s10 = peg$currPos;
12770
- s11 = peg$parse_();
13093
+ s10 = [];
13094
+ s11 = peg$currPos;
13095
+ s12 = peg$parse_();
12771
13096
  if (input.charCodeAt(peg$currPos) === 64) {
12772
- s12 = peg$c18;
13097
+ s13 = peg$c18;
12773
13098
  peg$currPos++;
12774
13099
  } else {
12775
- s12 = peg$FAILED;
13100
+ s13 = peg$FAILED;
12776
13101
  if (peg$silentFails === 0) {
12777
13102
  peg$fail(peg$e19);
12778
13103
  }
12779
13104
  }
12780
- if (s12 !== peg$FAILED) {
12781
- s13 = peg$parseRouteAnnotation();
12782
- if (s13 !== peg$FAILED) {
12783
- s11 = [s11, s12, s13];
12784
- s10 = s11;
13105
+ if (s13 !== peg$FAILED) {
13106
+ s14 = peg$parseAnnotation();
13107
+ if (s14 !== peg$FAILED) {
13108
+ s12 = [s12, s13, s14];
13109
+ s11 = s12;
12785
13110
  } else {
12786
- peg$currPos = s10;
12787
- s10 = peg$FAILED;
13111
+ peg$currPos = s11;
13112
+ s11 = peg$FAILED;
12788
13113
  }
12789
13114
  } else {
12790
- peg$currPos = s10;
12791
- s10 = peg$FAILED;
13115
+ peg$currPos = s11;
13116
+ s11 = peg$FAILED;
12792
13117
  }
12793
- if (s10 === peg$FAILED) {
12794
- s10 = null;
13118
+ while (s11 !== peg$FAILED) {
13119
+ s10.push(s11);
13120
+ s11 = peg$currPos;
13121
+ s12 = peg$parse_();
13122
+ if (input.charCodeAt(peg$currPos) === 64) {
13123
+ s13 = peg$c18;
13124
+ peg$currPos++;
13125
+ } else {
13126
+ s13 = peg$FAILED;
13127
+ if (peg$silentFails === 0) {
13128
+ peg$fail(peg$e19);
13129
+ }
13130
+ }
13131
+ if (s13 !== peg$FAILED) {
13132
+ s14 = peg$parseAnnotation();
13133
+ if (s14 !== peg$FAILED) {
13134
+ s12 = [s12, s13, s14];
13135
+ s11 = s12;
13136
+ } else {
13137
+ peg$currPos = s11;
13138
+ s11 = peg$FAILED;
13139
+ }
13140
+ } else {
13141
+ peg$currPos = s11;
13142
+ s11 = peg$FAILED;
13143
+ }
12795
13144
  }
12796
13145
  s11 = peg$currPos;
12797
13146
  s12 = peg$parse_();
@@ -12845,6 +13194,191 @@ function peg$parse3(input, options) {
12845
13194
  }
12846
13195
  return s0;
12847
13196
  }
13197
+ function peg$parseAnnotation() {
13198
+ var s0, s1, s2, s3, s4;
13199
+ s0 = peg$currPos;
13200
+ if (input.substr(peg$currPos, 5) === peg$c19) {
13201
+ s1 = peg$c19;
13202
+ peg$currPos += 5;
13203
+ } else {
13204
+ s1 = peg$FAILED;
13205
+ if (peg$silentFails === 0) {
13206
+ peg$fail(peg$e20);
13207
+ }
13208
+ }
13209
+ if (s1 !== peg$FAILED) {
13210
+ s2 = peg$parseAnimValue();
13211
+ if (s2 !== peg$FAILED) {
13212
+ peg$savedPos = s0;
13213
+ s0 = peg$f16(s2);
13214
+ } else {
13215
+ peg$currPos = s0;
13216
+ s0 = peg$FAILED;
13217
+ }
13218
+ } else {
13219
+ peg$currPos = s0;
13220
+ s0 = peg$FAILED;
13221
+ }
13222
+ if (s0 === peg$FAILED) {
13223
+ s0 = peg$currPos;
13224
+ s1 = peg$parseRouteWord();
13225
+ if (s1 !== peg$FAILED) {
13226
+ s2 = peg$currPos;
13227
+ if (input.charCodeAt(peg$currPos) === 58) {
13228
+ s3 = peg$c20;
13229
+ peg$currPos++;
13230
+ } else {
13231
+ s3 = peg$FAILED;
13232
+ if (peg$silentFails === 0) {
13233
+ peg$fail(peg$e21);
13234
+ }
13235
+ }
13236
+ if (s3 !== peg$FAILED) {
13237
+ s4 = peg$parseWallPair();
13238
+ if (s4 !== peg$FAILED) {
13239
+ s3 = [s3, s4];
13240
+ s2 = s3;
13241
+ } else {
13242
+ peg$currPos = s2;
13243
+ s2 = peg$FAILED;
13244
+ }
13245
+ } else {
13246
+ peg$currPos = s2;
13247
+ s2 = peg$FAILED;
13248
+ }
13249
+ if (s2 === peg$FAILED) {
13250
+ s2 = null;
13251
+ }
13252
+ peg$savedPos = s0;
13253
+ s0 = peg$f17(s1, s2);
13254
+ } else {
13255
+ peg$currPos = s0;
13256
+ s0 = peg$FAILED;
13257
+ }
13258
+ if (s0 === peg$FAILED) {
13259
+ s0 = peg$currPos;
13260
+ s1 = peg$parseWallPair();
13261
+ if (s1 !== peg$FAILED) {
13262
+ peg$savedPos = s0;
13263
+ s1 = peg$f18(s1);
13264
+ }
13265
+ s0 = s1;
13266
+ }
13267
+ }
13268
+ return s0;
13269
+ }
13270
+ function peg$parseAnimValue() {
13271
+ var s0;
13272
+ if (input.substr(peg$currPos, 5) === peg$c21) {
13273
+ s0 = peg$c21;
13274
+ peg$currPos += 5;
13275
+ } else {
13276
+ s0 = peg$FAILED;
13277
+ if (peg$silentFails === 0) {
13278
+ peg$fail(peg$e22);
13279
+ }
13280
+ }
13281
+ if (s0 === peg$FAILED) {
13282
+ if (input.substr(peg$currPos, 8) === peg$c22) {
13283
+ s0 = peg$c22;
13284
+ peg$currPos += 8;
13285
+ } else {
13286
+ s0 = peg$FAILED;
13287
+ if (peg$silentFails === 0) {
13288
+ peg$fail(peg$e23);
13289
+ }
13290
+ }
13291
+ if (s0 === peg$FAILED) {
13292
+ if (input.substr(peg$currPos, 4) === peg$c23) {
13293
+ s0 = peg$c23;
13294
+ peg$currPos += 4;
13295
+ } else {
13296
+ s0 = peg$FAILED;
13297
+ if (peg$silentFails === 0) {
13298
+ peg$fail(peg$e24);
13299
+ }
13300
+ }
13301
+ if (s0 === peg$FAILED) {
13302
+ if (input.substr(peg$currPos, 5) === peg$c24) {
13303
+ s0 = peg$c24;
13304
+ peg$currPos += 5;
13305
+ } else {
13306
+ s0 = peg$FAILED;
13307
+ if (peg$silentFails === 0) {
13308
+ peg$fail(peg$e25);
13309
+ }
13310
+ }
13311
+ if (s0 === peg$FAILED) {
13312
+ if (input.substr(peg$currPos, 4) === peg$c25) {
13313
+ s0 = peg$c25;
13314
+ peg$currPos += 4;
13315
+ } else {
13316
+ s0 = peg$FAILED;
13317
+ if (peg$silentFails === 0) {
13318
+ peg$fail(peg$e26);
13319
+ }
13320
+ }
13321
+ if (s0 === peg$FAILED) {
13322
+ if (input.substr(peg$currPos, 5) === peg$c26) {
13323
+ s0 = peg$c26;
13324
+ peg$currPos += 5;
13325
+ } else {
13326
+ s0 = peg$FAILED;
13327
+ if (peg$silentFails === 0) {
13328
+ peg$fail(peg$e27);
13329
+ }
13330
+ }
13331
+ if (s0 === peg$FAILED) {
13332
+ if (input.substr(peg$currPos, 6) === peg$c27) {
13333
+ s0 = peg$c27;
13334
+ peg$currPos += 6;
13335
+ } else {
13336
+ s0 = peg$FAILED;
13337
+ if (peg$silentFails === 0) {
13338
+ peg$fail(peg$e28);
13339
+ }
13340
+ }
13341
+ if (s0 === peg$FAILED) {
13342
+ if (input.substr(peg$currPos, 4) === peg$c13) {
13343
+ s0 = peg$c13;
13344
+ peg$currPos += 4;
13345
+ } else {
13346
+ s0 = peg$FAILED;
13347
+ if (peg$silentFails === 0) {
13348
+ peg$fail(peg$e14);
13349
+ }
13350
+ }
13351
+ if (s0 === peg$FAILED) {
13352
+ if (input.substr(peg$currPos, 10) === peg$c28) {
13353
+ s0 = peg$c28;
13354
+ peg$currPos += 10;
13355
+ } else {
13356
+ s0 = peg$FAILED;
13357
+ if (peg$silentFails === 0) {
13358
+ peg$fail(peg$e29);
13359
+ }
13360
+ }
13361
+ if (s0 === peg$FAILED) {
13362
+ if (input.substr(peg$currPos, 4) === peg$c29) {
13363
+ s0 = peg$c29;
13364
+ peg$currPos += 4;
13365
+ } else {
13366
+ s0 = peg$FAILED;
13367
+ if (peg$silentFails === 0) {
13368
+ peg$fail(peg$e30);
13369
+ }
13370
+ }
13371
+ }
13372
+ }
13373
+ }
13374
+ }
13375
+ }
13376
+ }
13377
+ }
13378
+ }
13379
+ }
13380
+ return s0;
13381
+ }
12848
13382
  function peg$parseRouteAnnotation() {
12849
13383
  var s0, s1, s2, s3, s4;
12850
13384
  s0 = peg$currPos;
@@ -12852,12 +13386,12 @@ function peg$parse3(input, options) {
12852
13386
  if (s1 !== peg$FAILED) {
12853
13387
  s2 = peg$currPos;
12854
13388
  if (input.charCodeAt(peg$currPos) === 58) {
12855
- s3 = peg$c19;
13389
+ s3 = peg$c20;
12856
13390
  peg$currPos++;
12857
13391
  } else {
12858
13392
  s3 = peg$FAILED;
12859
13393
  if (peg$silentFails === 0) {
12860
- peg$fail(peg$e20);
13394
+ peg$fail(peg$e21);
12861
13395
  }
12862
13396
  }
12863
13397
  if (s3 !== peg$FAILED) {
@@ -12877,7 +13411,7 @@ function peg$parse3(input, options) {
12877
13411
  s2 = null;
12878
13412
  }
12879
13413
  peg$savedPos = s0;
12880
- s0 = peg$f16(s1, s2);
13414
+ s0 = peg$f19(s1, s2);
12881
13415
  } else {
12882
13416
  peg$currPos = s0;
12883
13417
  s0 = peg$FAILED;
@@ -12887,7 +13421,7 @@ function peg$parse3(input, options) {
12887
13421
  s1 = peg$parseWallPair();
12888
13422
  if (s1 !== peg$FAILED) {
12889
13423
  peg$savedPos = s0;
12890
- s1 = peg$f17(s1);
13424
+ s1 = peg$f20(s1);
12891
13425
  }
12892
13426
  s0 = s1;
12893
13427
  }
@@ -12896,66 +13430,66 @@ function peg$parse3(input, options) {
12896
13430
  function peg$parseRouteWord() {
12897
13431
  var s0, s1;
12898
13432
  s0 = peg$currPos;
12899
- if (input.substr(peg$currPos, 8) === peg$c20) {
12900
- s1 = peg$c20;
13433
+ if (input.substr(peg$currPos, 8) === peg$c30) {
13434
+ s1 = peg$c30;
12901
13435
  peg$currPos += 8;
12902
13436
  } else {
12903
13437
  s1 = peg$FAILED;
12904
13438
  if (peg$silentFails === 0) {
12905
- peg$fail(peg$e21);
13439
+ peg$fail(peg$e31);
12906
13440
  }
12907
13441
  }
12908
13442
  if (s1 !== peg$FAILED) {
12909
13443
  peg$savedPos = s0;
12910
- s1 = peg$f18();
13444
+ s1 = peg$f21();
12911
13445
  }
12912
13446
  s0 = s1;
12913
13447
  if (s0 === peg$FAILED) {
12914
13448
  s0 = peg$currPos;
12915
- if (input.substr(peg$currPos, 10) === peg$c21) {
12916
- s1 = peg$c21;
13449
+ if (input.substr(peg$currPos, 10) === peg$c31) {
13450
+ s1 = peg$c31;
12917
13451
  peg$currPos += 10;
12918
13452
  } else {
12919
13453
  s1 = peg$FAILED;
12920
13454
  if (peg$silentFails === 0) {
12921
- peg$fail(peg$e22);
13455
+ peg$fail(peg$e32);
12922
13456
  }
12923
13457
  }
12924
13458
  if (s1 !== peg$FAILED) {
12925
13459
  peg$savedPos = s0;
12926
- s1 = peg$f19();
13460
+ s1 = peg$f22();
12927
13461
  }
12928
13462
  s0 = s1;
12929
13463
  if (s0 === peg$FAILED) {
12930
13464
  s0 = peg$currPos;
12931
- if (input.substr(peg$currPos, 6) === peg$c22) {
12932
- s1 = peg$c22;
13465
+ if (input.substr(peg$currPos, 6) === peg$c32) {
13466
+ s1 = peg$c32;
12933
13467
  peg$currPos += 6;
12934
13468
  } else {
12935
13469
  s1 = peg$FAILED;
12936
13470
  if (peg$silentFails === 0) {
12937
- peg$fail(peg$e23);
13471
+ peg$fail(peg$e33);
12938
13472
  }
12939
13473
  }
12940
13474
  if (s1 !== peg$FAILED) {
12941
13475
  peg$savedPos = s0;
12942
- s1 = peg$f20();
13476
+ s1 = peg$f23();
12943
13477
  }
12944
13478
  s0 = s1;
12945
13479
  if (s0 === peg$FAILED) {
12946
13480
  s0 = peg$currPos;
12947
- if (input.substr(peg$currPos, 8) === peg$c23) {
12948
- s1 = peg$c23;
13481
+ if (input.substr(peg$currPos, 8) === peg$c33) {
13482
+ s1 = peg$c33;
12949
13483
  peg$currPos += 8;
12950
13484
  } else {
12951
13485
  s1 = peg$FAILED;
12952
13486
  if (peg$silentFails === 0) {
12953
- peg$fail(peg$e24);
13487
+ peg$fail(peg$e34);
12954
13488
  }
12955
13489
  }
12956
13490
  if (s1 !== peg$FAILED) {
12957
13491
  peg$savedPos = s0;
12958
- s1 = peg$f21();
13492
+ s1 = peg$f24();
12959
13493
  }
12960
13494
  s0 = s1;
12961
13495
  }
@@ -12971,7 +13505,7 @@ function peg$parse3(input, options) {
12971
13505
  s2 = peg$parseWall();
12972
13506
  if (s2 !== peg$FAILED) {
12973
13507
  peg$savedPos = s0;
12974
- s0 = peg$f22(s1, s2);
13508
+ s0 = peg$f25(s1, s2);
12975
13509
  } else {
12976
13510
  peg$currPos = s0;
12977
13511
  s0 = peg$FAILED;
@@ -12985,7 +13519,7 @@ function peg$parse3(input, options) {
12985
13519
  s1 = peg$parseWall();
12986
13520
  if (s1 !== peg$FAILED) {
12987
13521
  peg$savedPos = s0;
12988
- s1 = peg$f23(s1);
13522
+ s1 = peg$f26(s1);
12989
13523
  }
12990
13524
  s0 = s1;
12991
13525
  }
@@ -13000,12 +13534,12 @@ function peg$parse3(input, options) {
13000
13534
  } else {
13001
13535
  s1 = peg$FAILED;
13002
13536
  if (peg$silentFails === 0) {
13003
- peg$fail(peg$e25);
13537
+ peg$fail(peg$e35);
13004
13538
  }
13005
13539
  }
13006
13540
  if (s1 !== peg$FAILED) {
13007
13541
  peg$savedPos = s0;
13008
- s1 = peg$f24(s1);
13542
+ s1 = peg$f27(s1);
13009
13543
  }
13010
13544
  s0 = s1;
13011
13545
  return s0;
@@ -13014,12 +13548,12 @@ function peg$parse3(input, options) {
13014
13548
  var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
13015
13549
  s0 = peg$currPos;
13016
13550
  if (input.charCodeAt(peg$currPos) === 123) {
13017
- s1 = peg$c24;
13551
+ s1 = peg$c34;
13018
13552
  peg$currPos++;
13019
13553
  } else {
13020
13554
  s1 = peg$FAILED;
13021
13555
  if (peg$silentFails === 0) {
13022
- peg$fail(peg$e26);
13556
+ peg$fail(peg$e36);
13023
13557
  }
13024
13558
  }
13025
13559
  if (s1 !== peg$FAILED) {
@@ -13030,12 +13564,12 @@ function peg$parse3(input, options) {
13030
13564
  s5 = peg$currPos;
13031
13565
  s6 = peg$parse_();
13032
13566
  if (input.charCodeAt(peg$currPos) === 44) {
13033
- s7 = peg$c25;
13567
+ s7 = peg$c35;
13034
13568
  peg$currPos++;
13035
13569
  } else {
13036
13570
  s7 = peg$FAILED;
13037
13571
  if (peg$silentFails === 0) {
13038
- peg$fail(peg$e27);
13572
+ peg$fail(peg$e37);
13039
13573
  }
13040
13574
  }
13041
13575
  if (s7 !== peg$FAILED) {
@@ -13057,12 +13591,12 @@ function peg$parse3(input, options) {
13057
13591
  s5 = peg$currPos;
13058
13592
  s6 = peg$parse_();
13059
13593
  if (input.charCodeAt(peg$currPos) === 44) {
13060
- s7 = peg$c25;
13594
+ s7 = peg$c35;
13061
13595
  peg$currPos++;
13062
13596
  } else {
13063
13597
  s7 = peg$FAILED;
13064
13598
  if (peg$silentFails === 0) {
13065
- peg$fail(peg$e27);
13599
+ peg$fail(peg$e37);
13066
13600
  }
13067
13601
  }
13068
13602
  if (s7 !== peg$FAILED) {
@@ -13082,17 +13616,17 @@ function peg$parse3(input, options) {
13082
13616
  }
13083
13617
  s5 = peg$parse_();
13084
13618
  if (input.charCodeAt(peg$currPos) === 125) {
13085
- s6 = peg$c26;
13619
+ s6 = peg$c36;
13086
13620
  peg$currPos++;
13087
13621
  } else {
13088
13622
  s6 = peg$FAILED;
13089
13623
  if (peg$silentFails === 0) {
13090
- peg$fail(peg$e28);
13624
+ peg$fail(peg$e38);
13091
13625
  }
13092
13626
  }
13093
13627
  if (s6 !== peg$FAILED) {
13094
13628
  peg$savedPos = s0;
13095
- s0 = peg$f25(s3, s4);
13629
+ s0 = peg$f28(s3, s4);
13096
13630
  } else {
13097
13631
  peg$currPos = s0;
13098
13632
  s0 = peg$FAILED;
@@ -13114,12 +13648,12 @@ function peg$parse3(input, options) {
13114
13648
  if (s1 !== peg$FAILED) {
13115
13649
  s2 = peg$parse_();
13116
13650
  if (input.charCodeAt(peg$currPos) === 58) {
13117
- s3 = peg$c19;
13651
+ s3 = peg$c20;
13118
13652
  peg$currPos++;
13119
13653
  } else {
13120
13654
  s3 = peg$FAILED;
13121
13655
  if (peg$silentFails === 0) {
13122
- peg$fail(peg$e20);
13656
+ peg$fail(peg$e21);
13123
13657
  }
13124
13658
  }
13125
13659
  if (s3 !== peg$FAILED) {
@@ -13127,7 +13661,7 @@ function peg$parse3(input, options) {
13127
13661
  s5 = peg$parsePropValue();
13128
13662
  if (s5 !== peg$FAILED) {
13129
13663
  peg$savedPos = s0;
13130
- s0 = peg$f26(s1, s5);
13664
+ s0 = peg$f29(s1, s5);
13131
13665
  } else {
13132
13666
  peg$currPos = s0;
13133
13667
  s0 = peg$FAILED;
@@ -13154,7 +13688,7 @@ function peg$parse3(input, options) {
13154
13688
  } else {
13155
13689
  s4 = peg$FAILED;
13156
13690
  if (peg$silentFails === 0) {
13157
- peg$fail(peg$e29);
13691
+ peg$fail(peg$e39);
13158
13692
  }
13159
13693
  }
13160
13694
  if (s4 !== peg$FAILED) {
@@ -13166,7 +13700,7 @@ function peg$parse3(input, options) {
13166
13700
  } else {
13167
13701
  s4 = peg$FAILED;
13168
13702
  if (peg$silentFails === 0) {
13169
- peg$fail(peg$e29);
13703
+ peg$fail(peg$e39);
13170
13704
  }
13171
13705
  }
13172
13706
  }
@@ -13176,12 +13710,12 @@ function peg$parse3(input, options) {
13176
13710
  if (s3 !== peg$FAILED) {
13177
13711
  s4 = peg$currPos;
13178
13712
  if (input.charCodeAt(peg$currPos) === 46) {
13179
- s5 = peg$c27;
13713
+ s5 = peg$c37;
13180
13714
  peg$currPos++;
13181
13715
  } else {
13182
13716
  s5 = peg$FAILED;
13183
13717
  if (peg$silentFails === 0) {
13184
- peg$fail(peg$e30);
13718
+ peg$fail(peg$e40);
13185
13719
  }
13186
13720
  }
13187
13721
  if (s5 !== peg$FAILED) {
@@ -13192,7 +13726,7 @@ function peg$parse3(input, options) {
13192
13726
  } else {
13193
13727
  s7 = peg$FAILED;
13194
13728
  if (peg$silentFails === 0) {
13195
- peg$fail(peg$e29);
13729
+ peg$fail(peg$e39);
13196
13730
  }
13197
13731
  }
13198
13732
  if (s7 !== peg$FAILED) {
@@ -13204,7 +13738,7 @@ function peg$parse3(input, options) {
13204
13738
  } else {
13205
13739
  s7 = peg$FAILED;
13206
13740
  if (peg$silentFails === 0) {
13207
- peg$fail(peg$e29);
13741
+ peg$fail(peg$e39);
13208
13742
  }
13209
13743
  }
13210
13744
  }
@@ -13238,7 +13772,7 @@ function peg$parse3(input, options) {
13238
13772
  }
13239
13773
  if (s1 !== peg$FAILED) {
13240
13774
  peg$savedPos = s0;
13241
- s1 = peg$f27(s1);
13775
+ s1 = peg$f30(s1);
13242
13776
  }
13243
13777
  s0 = s1;
13244
13778
  if (s0 === peg$FAILED) {
@@ -13252,148 +13786,301 @@ function peg$parse3(input, options) {
13252
13786
  function peg$parseArrow() {
13253
13787
  var s0, s1;
13254
13788
  s0 = peg$currPos;
13255
- if (input.substr(peg$currPos, 4) === peg$c28) {
13256
- s1 = peg$c28;
13257
- peg$currPos += 4;
13789
+ if (input.substr(peg$currPos, 5) === peg$c38) {
13790
+ s1 = peg$c38;
13791
+ peg$currPos += 5;
13258
13792
  } else {
13259
13793
  s1 = peg$FAILED;
13260
13794
  if (peg$silentFails === 0) {
13261
- peg$fail(peg$e31);
13795
+ peg$fail(peg$e41);
13262
13796
  }
13263
13797
  }
13264
13798
  if (s1 !== peg$FAILED) {
13265
13799
  peg$savedPos = s0;
13266
- s1 = peg$f28();
13800
+ s1 = peg$f31();
13267
13801
  }
13268
13802
  s0 = s1;
13269
13803
  if (s0 === peg$FAILED) {
13270
13804
  s0 = peg$currPos;
13271
- if (input.substr(peg$currPos, 5) === peg$c29) {
13272
- s1 = peg$c29;
13805
+ if (input.substr(peg$currPos, 5) === peg$c39) {
13806
+ s1 = peg$c39;
13273
13807
  peg$currPos += 5;
13274
13808
  } else {
13275
13809
  s1 = peg$FAILED;
13276
13810
  if (peg$silentFails === 0) {
13277
- peg$fail(peg$e32);
13811
+ peg$fail(peg$e42);
13278
13812
  }
13279
13813
  }
13280
13814
  if (s1 !== peg$FAILED) {
13281
13815
  peg$savedPos = s0;
13282
- s1 = peg$f29();
13816
+ s1 = peg$f32();
13283
13817
  }
13284
13818
  s0 = s1;
13285
13819
  if (s0 === peg$FAILED) {
13286
13820
  s0 = peg$currPos;
13287
- if (input.substr(peg$currPos, 4) === peg$c30) {
13288
- s1 = peg$c30;
13289
- peg$currPos += 4;
13821
+ if (input.substr(peg$currPos, 5) === peg$c40) {
13822
+ s1 = peg$c40;
13823
+ peg$currPos += 5;
13290
13824
  } else {
13291
13825
  s1 = peg$FAILED;
13292
13826
  if (peg$silentFails === 0) {
13293
- peg$fail(peg$e33);
13827
+ peg$fail(peg$e43);
13294
13828
  }
13295
13829
  }
13296
13830
  if (s1 !== peg$FAILED) {
13297
13831
  peg$savedPos = s0;
13298
- s1 = peg$f30();
13832
+ s1 = peg$f33();
13299
13833
  }
13300
13834
  s0 = s1;
13301
13835
  if (s0 === peg$FAILED) {
13302
13836
  s0 = peg$currPos;
13303
- if (input.substr(peg$currPos, 3) === peg$c31) {
13304
- s1 = peg$c31;
13305
- peg$currPos += 3;
13837
+ if (input.substr(peg$currPos, 4) === peg$c41) {
13838
+ s1 = peg$c41;
13839
+ peg$currPos += 4;
13306
13840
  } else {
13307
13841
  s1 = peg$FAILED;
13308
13842
  if (peg$silentFails === 0) {
13309
- peg$fail(peg$e34);
13843
+ peg$fail(peg$e44);
13310
13844
  }
13311
13845
  }
13312
13846
  if (s1 !== peg$FAILED) {
13313
13847
  peg$savedPos = s0;
13314
- s1 = peg$f31();
13848
+ s1 = peg$f34();
13315
13849
  }
13316
13850
  s0 = s1;
13317
13851
  if (s0 === peg$FAILED) {
13318
13852
  s0 = peg$currPos;
13319
- if (input.substr(peg$currPos, 4) === peg$c32) {
13320
- s1 = peg$c32;
13853
+ if (input.substr(peg$currPos, 4) === peg$c42) {
13854
+ s1 = peg$c42;
13321
13855
  peg$currPos += 4;
13322
13856
  } else {
13323
13857
  s1 = peg$FAILED;
13324
13858
  if (peg$silentFails === 0) {
13325
- peg$fail(peg$e35);
13859
+ peg$fail(peg$e45);
13326
13860
  }
13327
13861
  }
13328
13862
  if (s1 !== peg$FAILED) {
13329
13863
  peg$savedPos = s0;
13330
- s1 = peg$f32();
13864
+ s1 = peg$f35();
13331
13865
  }
13332
13866
  s0 = s1;
13333
13867
  if (s0 === peg$FAILED) {
13334
13868
  s0 = peg$currPos;
13335
- if (input.substr(peg$currPos, 3) === peg$c33) {
13336
- s1 = peg$c33;
13337
- peg$currPos += 3;
13869
+ if (input.substr(peg$currPos, 4) === peg$c43) {
13870
+ s1 = peg$c43;
13871
+ peg$currPos += 4;
13338
13872
  } else {
13339
13873
  s1 = peg$FAILED;
13340
13874
  if (peg$silentFails === 0) {
13341
- peg$fail(peg$e36);
13875
+ peg$fail(peg$e46);
13342
13876
  }
13343
13877
  }
13344
13878
  if (s1 !== peg$FAILED) {
13345
13879
  peg$savedPos = s0;
13346
- s1 = peg$f33();
13880
+ s1 = peg$f36();
13347
13881
  }
13348
13882
  s0 = s1;
13349
13883
  if (s0 === peg$FAILED) {
13350
13884
  s0 = peg$currPos;
13351
- if (input.substr(peg$currPos, 3) === peg$c0) {
13352
- s1 = peg$c0;
13353
- peg$currPos += 3;
13885
+ if (input.substr(peg$currPos, 4) === peg$c44) {
13886
+ s1 = peg$c44;
13887
+ peg$currPos += 4;
13354
13888
  } else {
13355
13889
  s1 = peg$FAILED;
13356
13890
  if (peg$silentFails === 0) {
13357
- peg$fail(peg$e0);
13891
+ peg$fail(peg$e47);
13358
13892
  }
13359
13893
  }
13360
13894
  if (s1 !== peg$FAILED) {
13361
13895
  peg$savedPos = s0;
13362
- s1 = peg$f34();
13896
+ s1 = peg$f37();
13363
13897
  }
13364
13898
  s0 = s1;
13365
13899
  if (s0 === peg$FAILED) {
13366
13900
  s0 = peg$currPos;
13367
- if (input.substr(peg$currPos, 3) === peg$c34) {
13368
- s1 = peg$c34;
13369
- peg$currPos += 3;
13901
+ if (input.substr(peg$currPos, 5) === peg$c45) {
13902
+ s1 = peg$c45;
13903
+ peg$currPos += 5;
13370
13904
  } else {
13371
13905
  s1 = peg$FAILED;
13372
13906
  if (peg$silentFails === 0) {
13373
- peg$fail(peg$e37);
13907
+ peg$fail(peg$e48);
13374
13908
  }
13375
13909
  }
13376
13910
  if (s1 !== peg$FAILED) {
13377
13911
  peg$savedPos = s0;
13378
- s1 = peg$f35();
13912
+ s1 = peg$f38();
13379
13913
  }
13380
13914
  s0 = s1;
13381
13915
  if (s0 === peg$FAILED) {
13382
13916
  s0 = peg$currPos;
13383
- if (input.substr(peg$currPos, 3) === peg$c35) {
13384
- s1 = peg$c35;
13385
- peg$currPos += 3;
13917
+ if (input.substr(peg$currPos, 4) === peg$c46) {
13918
+ s1 = peg$c46;
13919
+ peg$currPos += 4;
13386
13920
  } else {
13387
13921
  s1 = peg$FAILED;
13388
13922
  if (peg$silentFails === 0) {
13389
- peg$fail(peg$e38);
13923
+ peg$fail(peg$e49);
13390
13924
  }
13391
13925
  }
13392
13926
  if (s1 !== peg$FAILED) {
13393
13927
  peg$savedPos = s0;
13394
- s1 = peg$f36();
13928
+ s1 = peg$f39();
13395
13929
  }
13396
13930
  s0 = s1;
13931
+ if (s0 === peg$FAILED) {
13932
+ s0 = peg$currPos;
13933
+ if (input.substr(peg$currPos, 4) === peg$c47) {
13934
+ s1 = peg$c47;
13935
+ peg$currPos += 4;
13936
+ } else {
13937
+ s1 = peg$FAILED;
13938
+ if (peg$silentFails === 0) {
13939
+ peg$fail(peg$e50);
13940
+ }
13941
+ }
13942
+ if (s1 !== peg$FAILED) {
13943
+ peg$savedPos = s0;
13944
+ s1 = peg$f40();
13945
+ }
13946
+ s0 = s1;
13947
+ if (s0 === peg$FAILED) {
13948
+ s0 = peg$currPos;
13949
+ if (input.substr(peg$currPos, 3) === peg$c48) {
13950
+ s1 = peg$c48;
13951
+ peg$currPos += 3;
13952
+ } else {
13953
+ s1 = peg$FAILED;
13954
+ if (peg$silentFails === 0) {
13955
+ peg$fail(peg$e51);
13956
+ }
13957
+ }
13958
+ if (s1 !== peg$FAILED) {
13959
+ peg$savedPos = s0;
13960
+ s1 = peg$f41();
13961
+ }
13962
+ s0 = s1;
13963
+ if (s0 === peg$FAILED) {
13964
+ s0 = peg$currPos;
13965
+ if (input.substr(peg$currPos, 4) === peg$c49) {
13966
+ s1 = peg$c49;
13967
+ peg$currPos += 4;
13968
+ } else {
13969
+ s1 = peg$FAILED;
13970
+ if (peg$silentFails === 0) {
13971
+ peg$fail(peg$e52);
13972
+ }
13973
+ }
13974
+ if (s1 !== peg$FAILED) {
13975
+ peg$savedPos = s0;
13976
+ s1 = peg$f42();
13977
+ }
13978
+ s0 = s1;
13979
+ if (s0 === peg$FAILED) {
13980
+ s0 = peg$currPos;
13981
+ if (input.substr(peg$currPos, 3) === peg$c50) {
13982
+ s1 = peg$c50;
13983
+ peg$currPos += 3;
13984
+ } else {
13985
+ s1 = peg$FAILED;
13986
+ if (peg$silentFails === 0) {
13987
+ peg$fail(peg$e53);
13988
+ }
13989
+ }
13990
+ if (s1 !== peg$FAILED) {
13991
+ peg$savedPos = s0;
13992
+ s1 = peg$f43();
13993
+ }
13994
+ s0 = s1;
13995
+ if (s0 === peg$FAILED) {
13996
+ s0 = peg$currPos;
13997
+ if (input.substr(peg$currPos, 3) === peg$c51) {
13998
+ s1 = peg$c51;
13999
+ peg$currPos += 3;
14000
+ } else {
14001
+ s1 = peg$FAILED;
14002
+ if (peg$silentFails === 0) {
14003
+ peg$fail(peg$e54);
14004
+ }
14005
+ }
14006
+ if (s1 !== peg$FAILED) {
14007
+ peg$savedPos = s0;
14008
+ s1 = peg$f44();
14009
+ }
14010
+ s0 = s1;
14011
+ if (s0 === peg$FAILED) {
14012
+ s0 = peg$currPos;
14013
+ if (input.substr(peg$currPos, 3) === peg$c52) {
14014
+ s1 = peg$c52;
14015
+ peg$currPos += 3;
14016
+ } else {
14017
+ s1 = peg$FAILED;
14018
+ if (peg$silentFails === 0) {
14019
+ peg$fail(peg$e55);
14020
+ }
14021
+ }
14022
+ if (s1 !== peg$FAILED) {
14023
+ peg$savedPos = s0;
14024
+ s1 = peg$f45();
14025
+ }
14026
+ s0 = s1;
14027
+ if (s0 === peg$FAILED) {
14028
+ s0 = peg$currPos;
14029
+ if (input.substr(peg$currPos, 3) === peg$c53) {
14030
+ s1 = peg$c53;
14031
+ peg$currPos += 3;
14032
+ } else {
14033
+ s1 = peg$FAILED;
14034
+ if (peg$silentFails === 0) {
14035
+ peg$fail(peg$e56);
14036
+ }
14037
+ }
14038
+ if (s1 !== peg$FAILED) {
14039
+ peg$savedPos = s0;
14040
+ s1 = peg$f46();
14041
+ }
14042
+ s0 = s1;
14043
+ if (s0 === peg$FAILED) {
14044
+ s0 = peg$currPos;
14045
+ if (input.substr(peg$currPos, 3) === peg$c54) {
14046
+ s1 = peg$c54;
14047
+ peg$currPos += 3;
14048
+ } else {
14049
+ s1 = peg$FAILED;
14050
+ if (peg$silentFails === 0) {
14051
+ peg$fail(peg$e57);
14052
+ }
14053
+ }
14054
+ if (s1 !== peg$FAILED) {
14055
+ peg$savedPos = s0;
14056
+ s1 = peg$f47();
14057
+ }
14058
+ s0 = s1;
14059
+ if (s0 === peg$FAILED) {
14060
+ s0 = peg$currPos;
14061
+ if (input.substr(peg$currPos, 3) === peg$c0) {
14062
+ s1 = peg$c0;
14063
+ peg$currPos += 3;
14064
+ } else {
14065
+ s1 = peg$FAILED;
14066
+ if (peg$silentFails === 0) {
14067
+ peg$fail(peg$e0);
14068
+ }
14069
+ }
14070
+ if (s1 !== peg$FAILED) {
14071
+ peg$savedPos = s0;
14072
+ s1 = peg$f48();
14073
+ }
14074
+ s0 = s1;
14075
+ }
14076
+ }
14077
+ }
14078
+ }
14079
+ }
14080
+ }
14081
+ }
14082
+ }
14083
+ }
13397
14084
  }
13398
14085
  }
13399
14086
  }
@@ -13432,7 +14119,7 @@ function peg$parse3(input, options) {
13432
14119
  }
13433
14120
  if (s4 !== peg$FAILED) {
13434
14121
  peg$savedPos = s0;
13435
- s0 = peg$f37(s1, s3);
14122
+ s0 = peg$f49(s1, s3);
13436
14123
  } else {
13437
14124
  peg$currPos = s0;
13438
14125
  s0 = peg$FAILED;
@@ -13454,19 +14141,19 @@ function peg$parse3(input, options) {
13454
14141
  s1 = peg$parseIdentifier();
13455
14142
  if (s1 !== peg$FAILED) {
13456
14143
  if (input.charCodeAt(peg$currPos) === 46) {
13457
- s2 = peg$c27;
14144
+ s2 = peg$c37;
13458
14145
  peg$currPos++;
13459
14146
  } else {
13460
14147
  s2 = peg$FAILED;
13461
14148
  if (peg$silentFails === 0) {
13462
- peg$fail(peg$e30);
14149
+ peg$fail(peg$e40);
13463
14150
  }
13464
14151
  }
13465
14152
  if (s2 !== peg$FAILED) {
13466
14153
  s3 = peg$parseIdentifier();
13467
14154
  if (s3 !== peg$FAILED) {
13468
14155
  peg$savedPos = s0;
13469
- s0 = peg$f38(s1, s3);
14156
+ s0 = peg$f50(s1, s3);
13470
14157
  } else {
13471
14158
  peg$currPos = s0;
13472
14159
  s0 = peg$FAILED;
@@ -13492,7 +14179,7 @@ function peg$parse3(input, options) {
13492
14179
  } else {
13493
14180
  s2 = peg$FAILED;
13494
14181
  if (peg$silentFails === 0) {
13495
- peg$fail(peg$e39);
14182
+ peg$fail(peg$e58);
13496
14183
  }
13497
14184
  }
13498
14185
  if (s2 !== peg$FAILED) {
@@ -13503,7 +14190,7 @@ function peg$parse3(input, options) {
13503
14190
  } else {
13504
14191
  s4 = peg$FAILED;
13505
14192
  if (peg$silentFails === 0) {
13506
- peg$fail(peg$e40);
14193
+ peg$fail(peg$e59);
13507
14194
  }
13508
14195
  }
13509
14196
  while (s4 !== peg$FAILED) {
@@ -13514,7 +14201,7 @@ function peg$parse3(input, options) {
13514
14201
  } else {
13515
14202
  s4 = peg$FAILED;
13516
14203
  if (peg$silentFails === 0) {
13517
- peg$fail(peg$e40);
14204
+ peg$fail(peg$e59);
13518
14205
  }
13519
14206
  }
13520
14207
  }
@@ -13561,7 +14248,7 @@ function peg$parse3(input, options) {
13561
14248
  } else {
13562
14249
  s9 = peg$FAILED;
13563
14250
  if (peg$silentFails === 0) {
13564
- peg$fail(peg$e41);
14251
+ peg$fail(peg$e60);
13565
14252
  }
13566
14253
  }
13567
14254
  peg$silentFails--;
@@ -13618,7 +14305,7 @@ function peg$parse3(input, options) {
13618
14305
  s5 = peg$parseNL();
13619
14306
  if (s5 !== peg$FAILED) {
13620
14307
  peg$savedPos = s2;
13621
- s2 = peg$f39(s4);
14308
+ s2 = peg$f51(s4);
13622
14309
  } else {
13623
14310
  peg$currPos = s2;
13624
14311
  s2 = peg$FAILED;
@@ -13655,7 +14342,7 @@ function peg$parse3(input, options) {
13655
14342
  } else {
13656
14343
  s9 = peg$FAILED;
13657
14344
  if (peg$silentFails === 0) {
13658
- peg$fail(peg$e41);
14345
+ peg$fail(peg$e60);
13659
14346
  }
13660
14347
  }
13661
14348
  peg$silentFails--;
@@ -13712,7 +14399,7 @@ function peg$parse3(input, options) {
13712
14399
  s5 = peg$parseNL();
13713
14400
  if (s5 !== peg$FAILED) {
13714
14401
  peg$savedPos = s2;
13715
- s2 = peg$f39(s4);
14402
+ s2 = peg$f51(s4);
13716
14403
  } else {
13717
14404
  peg$currPos = s2;
13718
14405
  s2 = peg$FAILED;
@@ -13723,7 +14410,7 @@ function peg$parse3(input, options) {
13723
14410
  }
13724
14411
  }
13725
14412
  peg$savedPos = s0;
13726
- s1 = peg$f40(s1);
14413
+ s1 = peg$f52(s1);
13727
14414
  s0 = s1;
13728
14415
  return s0;
13729
14416
  }
@@ -13731,12 +14418,12 @@ function peg$parse3(input, options) {
13731
14418
  var s0, s1, s2, s3, s4;
13732
14419
  s0 = peg$currPos;
13733
14420
  if (input.charCodeAt(peg$currPos) === 34) {
13734
- s1 = peg$c36;
14421
+ s1 = peg$c55;
13735
14422
  peg$currPos++;
13736
14423
  } else {
13737
14424
  s1 = peg$FAILED;
13738
14425
  if (peg$silentFails === 0) {
13739
- peg$fail(peg$e42);
14426
+ peg$fail(peg$e61);
13740
14427
  }
13741
14428
  }
13742
14429
  if (s1 !== peg$FAILED) {
@@ -13748,7 +14435,7 @@ function peg$parse3(input, options) {
13748
14435
  } else {
13749
14436
  s4 = peg$FAILED;
13750
14437
  if (peg$silentFails === 0) {
13751
- peg$fail(peg$e43);
14438
+ peg$fail(peg$e62);
13752
14439
  }
13753
14440
  }
13754
14441
  while (s4 !== peg$FAILED) {
@@ -13759,23 +14446,23 @@ function peg$parse3(input, options) {
13759
14446
  } else {
13760
14447
  s4 = peg$FAILED;
13761
14448
  if (peg$silentFails === 0) {
13762
- peg$fail(peg$e43);
14449
+ peg$fail(peg$e62);
13763
14450
  }
13764
14451
  }
13765
14452
  }
13766
14453
  s2 = input.substring(s2, peg$currPos);
13767
14454
  if (input.charCodeAt(peg$currPos) === 34) {
13768
- s3 = peg$c36;
14455
+ s3 = peg$c55;
13769
14456
  peg$currPos++;
13770
14457
  } else {
13771
14458
  s3 = peg$FAILED;
13772
14459
  if (peg$silentFails === 0) {
13773
- peg$fail(peg$e42);
14460
+ peg$fail(peg$e61);
13774
14461
  }
13775
14462
  }
13776
14463
  if (s3 !== peg$FAILED) {
13777
14464
  peg$savedPos = s0;
13778
- s0 = peg$f41(s2);
14465
+ s0 = peg$f53(s2);
13779
14466
  } else {
13780
14467
  peg$currPos = s0;
13781
14468
  s0 = peg$FAILED;
@@ -13797,7 +14484,7 @@ function peg$parse3(input, options) {
13797
14484
  } else {
13798
14485
  s3 = peg$FAILED;
13799
14486
  if (peg$silentFails === 0) {
13800
- peg$fail(peg$e29);
14487
+ peg$fail(peg$e39);
13801
14488
  }
13802
14489
  }
13803
14490
  if (s3 !== peg$FAILED) {
@@ -13809,7 +14496,7 @@ function peg$parse3(input, options) {
13809
14496
  } else {
13810
14497
  s3 = peg$FAILED;
13811
14498
  if (peg$silentFails === 0) {
13812
- peg$fail(peg$e29);
14499
+ peg$fail(peg$e39);
13813
14500
  }
13814
14501
  }
13815
14502
  }
@@ -13823,7 +14510,7 @@ function peg$parse3(input, options) {
13823
14510
  }
13824
14511
  if (s1 !== peg$FAILED) {
13825
14512
  peg$savedPos = s0;
13826
- s1 = peg$f42(s1);
14513
+ s1 = peg$f54(s1);
13827
14514
  }
13828
14515
  s0 = s1;
13829
14516
  return s0;
@@ -13837,7 +14524,7 @@ function peg$parse3(input, options) {
13837
14524
  } else {
13838
14525
  s1 = peg$FAILED;
13839
14526
  if (peg$silentFails === 0) {
13840
- peg$fail(peg$e44);
14527
+ peg$fail(peg$e63);
13841
14528
  }
13842
14529
  }
13843
14530
  if (s1 === peg$FAILED) {
@@ -13851,7 +14538,7 @@ function peg$parse3(input, options) {
13851
14538
  } else {
13852
14539
  s4 = peg$FAILED;
13853
14540
  if (peg$silentFails === 0) {
13854
- peg$fail(peg$e29);
14541
+ peg$fail(peg$e39);
13855
14542
  }
13856
14543
  }
13857
14544
  if (s4 !== peg$FAILED) {
@@ -13863,7 +14550,7 @@ function peg$parse3(input, options) {
13863
14550
  } else {
13864
14551
  s4 = peg$FAILED;
13865
14552
  if (peg$silentFails === 0) {
13866
- peg$fail(peg$e29);
14553
+ peg$fail(peg$e39);
13867
14554
  }
13868
14555
  }
13869
14556
  }
@@ -13877,7 +14564,7 @@ function peg$parse3(input, options) {
13877
14564
  }
13878
14565
  if (s2 !== peg$FAILED) {
13879
14566
  peg$savedPos = s0;
13880
- s0 = peg$f43(s1, s2);
14567
+ s0 = peg$f55(s1, s2);
13881
14568
  } else {
13882
14569
  peg$currPos = s0;
13883
14570
  s0 = peg$FAILED;
@@ -13895,7 +14582,7 @@ function peg$parse3(input, options) {
13895
14582
  s3 = peg$parseNL();
13896
14583
  if (s3 !== peg$FAILED) {
13897
14584
  peg$savedPos = s0;
13898
- s0 = peg$f44();
14585
+ s0 = peg$f56();
13899
14586
  } else {
13900
14587
  peg$currPos = s0;
13901
14588
  s0 = peg$FAILED;
@@ -13905,13 +14592,13 @@ function peg$parse3(input, options) {
13905
14592
  function peg$parseComment() {
13906
14593
  var s0, s1, s2, s3;
13907
14594
  s0 = peg$currPos;
13908
- if (input.substr(peg$currPos, 2) === peg$c37) {
13909
- s1 = peg$c37;
14595
+ if (input.substr(peg$currPos, 2) === peg$c56) {
14596
+ s1 = peg$c56;
13910
14597
  peg$currPos += 2;
13911
14598
  } else {
13912
14599
  s1 = peg$FAILED;
13913
14600
  if (peg$silentFails === 0) {
13914
- peg$fail(peg$e45);
14601
+ peg$fail(peg$e64);
13915
14602
  }
13916
14603
  }
13917
14604
  if (s1 !== peg$FAILED) {
@@ -13954,7 +14641,7 @@ function peg$parse3(input, options) {
13954
14641
  } else {
13955
14642
  s1 = peg$FAILED;
13956
14643
  if (peg$silentFails === 0) {
13957
- peg$fail(peg$e46);
14644
+ peg$fail(peg$e65);
13958
14645
  }
13959
14646
  }
13960
14647
  while (s1 !== peg$FAILED) {
@@ -13965,7 +14652,7 @@ function peg$parse3(input, options) {
13965
14652
  } else {
13966
14653
  s1 = peg$FAILED;
13967
14654
  if (peg$silentFails === 0) {
13968
- peg$fail(peg$e46);
14655
+ peg$fail(peg$e65);
13969
14656
  }
13970
14657
  }
13971
14658
  }
@@ -13980,7 +14667,7 @@ function peg$parse3(input, options) {
13980
14667
  } else {
13981
14668
  s1 = peg$FAILED;
13982
14669
  if (peg$silentFails === 0) {
13983
- peg$fail(peg$e46);
14670
+ peg$fail(peg$e65);
13984
14671
  }
13985
14672
  }
13986
14673
  if (s1 !== peg$FAILED) {
@@ -13992,7 +14679,7 @@ function peg$parse3(input, options) {
13992
14679
  } else {
13993
14680
  s1 = peg$FAILED;
13994
14681
  if (peg$silentFails === 0) {
13995
- peg$fail(peg$e46);
14682
+ peg$fail(peg$e65);
13996
14683
  }
13997
14684
  }
13998
14685
  }
@@ -14003,13 +14690,13 @@ function peg$parse3(input, options) {
14003
14690
  }
14004
14691
  function peg$parseNL() {
14005
14692
  var s0;
14006
- if (input.substr(peg$currPos, 2) === peg$c38) {
14007
- s0 = peg$c38;
14693
+ if (input.substr(peg$currPos, 2) === peg$c57) {
14694
+ s0 = peg$c57;
14008
14695
  peg$currPos += 2;
14009
14696
  } else {
14010
14697
  s0 = peg$FAILED;
14011
14698
  if (peg$silentFails === 0) {
14012
- peg$fail(peg$e47);
14699
+ peg$fail(peg$e66);
14013
14700
  }
14014
14701
  }
14015
14702
  if (s0 === peg$FAILED) {
@@ -14019,7 +14706,7 @@ function peg$parse3(input, options) {
14019
14706
  } else {
14020
14707
  s0 = peg$FAILED;
14021
14708
  if (peg$silentFails === 0) {
14022
- peg$fail(peg$e48);
14709
+ peg$fail(peg$e67);
14023
14710
  }
14024
14711
  }
14025
14712
  }
@@ -20237,7 +20924,7 @@ function layoutJourney(ir, theme) {
20237
20924
  elements.push(p.text(String(s), plotLeft - 10, y + typography.smallFontSize * 0.35, typography.smallFontSize, palette.textMuted, { anchor: "end" }));
20238
20925
  }
20239
20926
  ir.sections.forEach((sec, si) => {
20240
- const idxs = flat2.map((f, i) => ({ f, i })).filter(({ f }) => f.section === si).map(({ i }) => i);
20927
+ const idxs = flat2.map((f2, i) => ({ f: f2, i })).filter(({ f: f2 }) => f2.section === si).map(({ i }) => i);
20241
20928
  if (idxs.length === 0) return;
20242
20929
  const x0 = taskX(idxs[0]) - step / 2;
20243
20930
  const x1 = taskX(idxs[idxs.length - 1]) + step / 2;
@@ -20245,21 +20932,21 @@ function layoutJourney(ir, theme) {
20245
20932
  elements.push(p.rect({ x: rhu(x0), y: margin + titleH, width: rhu(x1 - x0 - 6), height: sectionBandH }, hue, hue, 0, { rx: 6 }));
20246
20933
  elements.push(p.text(sec.label, rhuInt((x0 + x1) / 2 - 3), margin + titleH + sectionBandH / 2 + typography.baseFontSize * 0.35, typography.baseFontSize, "#FFFFFF", { weight: "bold", anchor: "middle" }));
20247
20934
  });
20248
- const nodePts = flat2.map((f, i) => ({ x: rhu(taskX(i)), y: scoreY(f.score) }));
20935
+ const nodePts = flat2.map((f2, i) => ({ x: rhu(taskX(i)), y: scoreY(f2.score) }));
20249
20936
  if (nodePts.length > 1) {
20250
20937
  elements.push(p.path(`M ${nodePts.map((pt) => `${pt.x} ${pt.y}`).join(" L ")}`, palette.textMuted, 2, { opacity: 0.6 }));
20251
20938
  }
20252
- flat2.forEach((f, i) => {
20253
- const x = rhu(taskX(i)), y = scoreY(f.score);
20254
- const color = scoreColor(f.score);
20939
+ flat2.forEach((f2, i) => {
20940
+ const x = rhu(taskX(i)), y = scoreY(f2.score);
20941
+ const color = scoreColor(f2.score);
20255
20942
  elements.push(p.circle({ x, y }, 16, color, palette.background, 2));
20256
- elements.push(p.text(String(f.score), x, y + typography.baseFontSize * 0.35, typography.baseFontSize, "#FFFFFF", { weight: "bold", anchor: "middle" }));
20257
- elements.push(p.text(f.label, x, plotBottom + typography.smallFontSize + 10, typography.smallFontSize, palette.text, { anchor: "middle", weight: "bold" }));
20258
- f.actors.forEach((a, ai) => {
20943
+ elements.push(p.text(String(f2.score), x, y + typography.baseFontSize * 0.35, typography.baseFontSize, "#FFFFFF", { weight: "bold", anchor: "middle" }));
20944
+ elements.push(p.text(f2.label, x, plotBottom + typography.smallFontSize + 10, typography.smallFontSize, palette.text, { anchor: "middle", weight: "bold" }));
20945
+ f2.actors.forEach((a, ai) => {
20259
20946
  elements.push(p.text(a, x, plotBottom + typography.smallFontSize + 10 + (ai + 1) * (typography.smallFontSize + 4), typography.smallFontSize, palette.textMuted, { anchor: "middle" }));
20260
20947
  });
20261
20948
  });
20262
- const maxActors = Math.max(1, ...flat2.map((f) => f.actors.length));
20949
+ const maxActors = Math.max(1, ...flat2.map((f2) => f2.actors.length));
20263
20950
  const totalW = rhuInt(plotRight + margin);
20264
20951
  const totalH = rhuInt(plotBottom + typography.smallFontSize + 10 + (maxActors + 1) * (typography.smallFontSize + 4) + margin);
20265
20952
  const scene = applyOverlays({
@@ -22051,14 +22738,14 @@ function layoutSequence(ir, theme) {
22051
22738
  fragStack.push({ type: ev.type, label: ev.label, top: y - 24, left: minX, right: maxX, elses: [] });
22052
22739
  y += 14;
22053
22740
  } else if (ev.kind === "frag-else") {
22054
- const f = fragStack[fragStack.length - 1];
22055
- if (f) f.elses.push({ y: y - 18, label: ev.label });
22741
+ const f2 = fragStack[fragStack.length - 1];
22742
+ if (f2) f2.elses.push({ y: y - 18, label: ev.label });
22056
22743
  y += 10;
22057
22744
  } else if (ev.kind === "frag-end") {
22058
- const f = fragStack.pop();
22059
- if (f) {
22060
- f.right = maxX;
22061
- fragBoxes.push({ ...f, top: f.top, left: minX - colW / 2 - 16, right: maxX + colW / 2 + 16 });
22745
+ const f2 = fragStack.pop();
22746
+ if (f2) {
22747
+ f2.right = maxX;
22748
+ fragBoxes.push({ ...f2, top: f2.top, left: minX - colW / 2 - 16, right: maxX + colW / 2 + 16 });
22062
22749
  }
22063
22750
  y += 6;
22064
22751
  }
@@ -22069,14 +22756,14 @@ function layoutSequence(ir, theme) {
22069
22756
  }
22070
22757
  const bodyBottom = y + 6;
22071
22758
  const fragEls = [];
22072
- for (const f of fragBoxes) {
22073
- const top = f.top, left = f.left, right = f.right;
22759
+ for (const f2 of fragBoxes) {
22760
+ const top = f2.top, left = f2.left, right = f2.right;
22074
22761
  fragEls.push(p.rect({ x: rhu(left), y: rhu(top), width: rhu(right - left), height: rhu(bodyBottom - top) }, "none", palette.border, 1.2, { rx: 4 }));
22075
- const tabW = measureText(f.type.toUpperCase(), typography.smallFontSize).width + 16;
22762
+ const tabW = measureText(f2.type.toUpperCase(), typography.smallFontSize).width + 16;
22076
22763
  fragEls.push(p.rect({ x: rhu(left), y: rhu(top), width: rhu(tabW), height: 18 }, palette.border, palette.border, 0));
22077
- fragEls.push(p.text(f.type.toUpperCase(), rhu(left + 8), rhu(top + 13), typography.smallFontSize, palette.background, { weight: "bold" }));
22078
- if (f.label) fragEls.push(p.text(`[${f.label}]`, rhu(left + tabW + 8), rhu(top + 13), typography.smallFontSize, palette.text, { weight: "bold" }));
22079
- for (const e of f.elses) {
22764
+ fragEls.push(p.text(f2.type.toUpperCase(), rhu(left + 8), rhu(top + 13), typography.smallFontSize, palette.background, { weight: "bold" }));
22765
+ if (f2.label) fragEls.push(p.text(`[${f2.label}]`, rhu(left + tabW + 8), rhu(top + 13), typography.smallFontSize, palette.text, { weight: "bold" }));
22766
+ for (const e of f2.elses) {
22080
22767
  fragEls.push(p.path(`M ${rhu(left)} ${rhu(e.y)} L ${rhu(right)} ${rhu(e.y)}`, palette.border, 1, { dash: "4 3" }));
22081
22768
  if (e.label) fragEls.push(p.text(`[${e.label}]`, rhu(left + 8), rhu(e.y + 13), typography.smallFontSize, palette.text));
22082
22769
  }
@@ -27065,9 +27752,9 @@ function collect(stmts, states, transitions, composites) {
27065
27752
  ensure(st.id, st.label || st.id, "normal");
27066
27753
  localIds.add(st.id);
27067
27754
  } else if (st.t === "trans") {
27068
- const f = ref(st.from, "from"), to = ref(st.to, "to");
27069
- transitions.push({ from: f, to, ...st.label ? { label: st.label } : {} });
27070
- if (f !== "__start__" && f !== "__end__") localIds.add(f);
27755
+ const f2 = ref(st.from, "from"), to = ref(st.to, "to");
27756
+ transitions.push({ from: f2, to, ...st.label ? { label: st.label } : {} });
27757
+ if (f2 !== "__start__" && f2 !== "__end__") localIds.add(f2);
27071
27758
  if (to !== "__start__" && to !== "__end__") localIds.add(to);
27072
27759
  } else if (st.t === "block") {
27073
27760
  ensure(st.name, st.name, "normal");
@@ -31085,8 +31772,8 @@ function layoutRequirement(ir, theme) {
31085
31772
  const prepared = /* @__PURE__ */ new Map();
31086
31773
  const sizeOf = (n) => {
31087
31774
  const lines2 = [];
31088
- for (const f of n.fields) {
31089
- const wrapped = wrapText2(`${f.key}: ${f.value}`, fieldFont, BOX_W - 20, 3).lines;
31775
+ for (const f2 of n.fields) {
31776
+ const wrapped = wrapText2(`${f2.key}: ${f2.value}`, fieldFont, BOX_W - 20, 3).lines;
31090
31777
  lines2.push(...wrapped);
31091
31778
  }
31092
31779
  const headH = rhuInt(nameFont * 1.5) + fieldFont + 8;
@@ -38301,7 +38988,7 @@ function layoutPacket(ir, theme) {
38301
38988
  const p = pen(theme);
38302
38989
  const margin = spacing.diagramMargin;
38303
38990
  const fields = [...ir.fields].sort((a, b) => a.start - b.start);
38304
- const maxBit = Math.max(0, ...fields.map((f) => f.end));
38991
+ const maxBit = Math.max(0, ...fields.map((f2) => f2.end));
38305
38992
  const numRows = Math.floor(maxBit / BITS_PER_ROW) + 1;
38306
38993
  const bitW = 26;
38307
38994
  const rowH = 46;
@@ -38322,19 +39009,19 @@ function layoutPacket(ir, theme) {
38322
39009
  if (c < BITS_PER_ROW) elements.push(p.text(String(bit), rhu(x + 2), rhu(rowTop(r) - 6), bitFont, palette.textMuted));
38323
39010
  }
38324
39011
  }
38325
- fields.forEach((f, i) => {
39012
+ fields.forEach((f2, i) => {
38326
39013
  const hue = categoricalHue(i);
38327
- for (let r = Math.floor(f.start / BITS_PER_ROW); r <= Math.floor(f.end / BITS_PER_ROW); r++) {
39014
+ for (let r = Math.floor(f2.start / BITS_PER_ROW); r <= Math.floor(f2.end / BITS_PER_ROW); r++) {
38328
39015
  const rowStartBit = r * BITS_PER_ROW;
38329
- const cStart = Math.max(f.start, rowStartBit) - rowStartBit;
38330
- const cEnd = Math.min(f.end, rowStartBit + BITS_PER_ROW - 1) - rowStartBit;
39016
+ const cStart = Math.max(f2.start, rowStartBit) - rowStartBit;
39017
+ const cEnd = Math.min(f2.end, rowStartBit + BITS_PER_ROW - 1) - rowStartBit;
38331
39018
  const x = gridLeft + cStart * bitW;
38332
39019
  const w = (cEnd - cStart + 1) * bitW;
38333
39020
  const y = rowTop(r);
38334
39021
  elements.push(p.rect({ x: rhu(x), y: rhu(y), width: rhu(w), height: rowH }, hue + "33", hue, 1.4, { rx: 3 }));
38335
- const label = truncateText(f.label, labelFont, w - 6);
39022
+ const label = truncateText(f2.label, labelFont, w - 6);
38336
39023
  elements.push(p.text(label, rhuInt(x + w / 2), rhu(y + rowH / 2 + labelFont * 0.35), labelFont, palette.text, { weight: "bold", anchor: "middle" }));
38337
- elements.push(p.text(String(f.start), rhu(x + 3), rhu(y + bitFont + 1), bitFont, palette.textMuted));
39024
+ elements.push(p.text(String(f2.start), rhu(x + 3), rhu(y + bitFont + 1), bitFont, palette.textMuted));
38338
39025
  }
38339
39026
  });
38340
39027
  const totalW = rhuInt(gridLeft + BITS_PER_ROW * bitW + margin);
@@ -41560,7 +42247,7 @@ function layoutMemory(doc, theme) {
41560
42247
  return { w: Math.max(130, measureText(item.name, font).width + 56), h: 34 };
41561
42248
  }
41562
42249
  const titleW = measureText(item.title, font).width;
41563
- const fieldW = Math.max(0, ...item.fields.map((f) => measureText(`${f.k}: ${f.v}`, small).width));
42250
+ const fieldW = Math.max(0, ...item.fields.map((f2) => measureText(`${f2.k}: ${f2.v}`, small).width));
41564
42251
  return { w: Math.max(120, titleW + 24, fieldW + 24), h: 24 + item.fields.length * 20 + 8 };
41565
42252
  };
41566
42253
  const elements = [];
@@ -41601,8 +42288,8 @@ function layoutMemory(doc, theme) {
41601
42288
  } else {
41602
42289
  elements.push(p.rect(box, palette.surface, palette.primary, 2, { rx: 6, fillOpacity: OBJECT_FILL_OPACITY }));
41603
42290
  elements.push(p.text(item.title, box.x + 12, box.y + 18, font, palette.primary, { weight: "bold" }));
41604
- item.fields.forEach((f, fi) => {
41605
- elements.push(p.text(`${f.k}: ${f.v}`, box.x + 12, box.y + 24 + (fi + 1) * 18, small, palette.text));
42291
+ item.fields.forEach((f2, fi) => {
42292
+ elements.push(p.text(`${f2.k}: ${f2.v}`, box.x + 12, box.y + 24 + (fi + 1) * 18, small, palette.text));
41606
42293
  });
41607
42294
  idBox.set(item.id, box);
41608
42295
  anchors[item.id] = { bounds: box };
@@ -41736,7 +42423,8 @@ function layoutPage(doc, theme) {
41736
42423
  elements,
41737
42424
  defs: [arrowDef(palette.textMuted)]
41738
42425
  };
41739
- return { scene, anchors };
42426
+ const chromeRects = [{ x: px, y: py, width: pageW, height: HEADER }];
42427
+ return { scene, anchors, chromeRects };
41740
42428
  }
41741
42429
  function pxForCenteredContent(innerLeft, innerW, contentW) {
41742
42430
  return innerLeft + Math.max(0, (innerW - contentW) / 2);
@@ -42107,13 +42795,13 @@ function parse6(input) {
42107
42795
  const firstFilled = padded.findIndex((c) => c !== null);
42108
42796
  let lastFilled = -1;
42109
42797
  for (let i = 0; i < padded.length; i++) if (padded[i] !== null) lastFilled = i;
42110
- const f = front ?? (firstFilled >= 0 ? firstFilled : 0);
42798
+ const f2 = front ?? (firstFilled >= 0 ? firstFilled : 0);
42111
42799
  const r = rear ?? (lastFilled >= 0 ? lastFilled : 0);
42112
42800
  return {
42113
42801
  ...title !== void 0 ? { title } : {},
42114
42802
  capacity: cap,
42115
42803
  cells: padded,
42116
- front: f,
42804
+ front: f2,
42117
42805
  rear: r,
42118
42806
  axis
42119
42807
  };
@@ -43610,9 +44298,9 @@ async function renderFile(inputPath, outPath, themeName, scale) {
43610
44298
  }
43611
44299
  async function renderDir(srcDir, outDir, themeName, scale) {
43612
44300
  (0, import_node_fs.mkdirSync)(outDir, { recursive: true });
43613
- const entries = (0, import_node_fs.readdirSync)(srcDir).filter((f) => {
43614
- const full = (0, import_node_path.join)(srcDir, f);
43615
- return (0, import_node_fs.statSync)(full).isFile() && DIAGRAM_EXTS.has((0, import_node_path.extname)(f).toLowerCase());
44301
+ const entries = (0, import_node_fs.readdirSync)(srcDir).filter((f2) => {
44302
+ const full = (0, import_node_path.join)(srcDir, f2);
44303
+ return (0, import_node_fs.statSync)(full).isFile() && DIAGRAM_EXTS.has((0, import_node_path.extname)(f2).toLowerCase());
43616
44304
  });
43617
44305
  let rendered = 0;
43618
44306
  const failed = [];