@knowvah/dot-engine 2.3.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/arith.d.ts +12 -0
- package/dist/common/arith.d.ts.map +1 -1
- package/dist/common/edge-in-box.d.ts +31 -0
- package/dist/common/edge-in-box.d.ts.map +1 -0
- package/dist/common/htmltable-emit.d.ts +1 -1
- package/dist/common/htmltable-emit.d.ts.map +1 -1
- package/dist/common/make-label.d.ts +3 -1
- package/dist/common/make-label.d.ts.map +1 -1
- package/dist/common/poly-gencode.d.ts +12 -1
- package/dist/common/poly-gencode.d.ts.map +1 -1
- package/dist/gvc/device.d.ts.map +1 -1
- package/dist/gvc/emit-gates.d.ts +35 -0
- package/dist/gvc/emit-gates.d.ts.map +1 -0
- package/dist/gvc/job.d.ts +4 -0
- package/dist/gvc/job.d.ts.map +1 -1
- package/dist/gvc/viewport.d.ts +13 -0
- package/dist/gvc/viewport.d.ts.map +1 -1
- package/dist/index.js +813 -542
- package/dist/index.js.map +4 -4
- package/dist/layout/circo/blockpath.d.ts +1 -38
- package/dist/layout/circo/blockpath.d.ts.map +1 -1
- package/dist/layout/circo/crossings.d.ts +59 -0
- package/dist/layout/circo/crossings.d.ts.map +1 -0
- package/dist/layout/dot/edge-route-chain.d.ts +5 -3
- package/dist/layout/dot/edge-route-chain.d.ts.map +1 -1
- package/dist/layout/dot/edge-route.d.ts.map +1 -1
- package/dist/layout/dot/index.d.ts +10 -2
- package/dist/layout/dot/index.d.ts.map +1 -1
- package/dist/layout/dot/ortho-adapter.d.ts +6 -2
- package/dist/layout/dot/ortho-adapter.d.ts.map +1 -1
- package/dist/layout/dot/pack-components.d.ts +4 -1
- package/dist/layout/dot/pack-components.d.ts.map +1 -1
- package/dist/layout/dot/splines-flat-multi.d.ts +4 -4
- package/dist/layout/dot/splines-flat.d.ts +1 -11
- package/dist/layout/dot/splines-flat.d.ts.map +1 -1
- package/dist/layout/dot/splines-route.d.ts.map +1 -1
- package/dist/layout/neato/constraint-adjust.d.ts +32 -0
- package/dist/layout/neato/constraint-adjust.d.ts.map +1 -1
- package/dist/layout/neato/multispline.d.ts.map +1 -1
- package/dist/layout/neato/splines.d.ts.map +1 -1
- package/dist/layout/pack/poly-place.d.ts.map +1 -1
- package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts +23 -0
- package/dist/layout/sfdp/__fixtures__/pcp-rotate-native.d.ts.map +1 -0
- package/dist/layout/sfdp/spring-driver.d.ts +6 -0
- package/dist/layout/sfdp/spring-driver.d.ts.map +1 -1
- package/dist/ortho/index.d.ts +4 -1
- package/dist/ortho/index.d.ts.map +1 -1
- package/dist/ortho/maze.d.ts +5 -2
- package/dist/ortho/maze.d.ts.map +1 -1
- package/dist/ortho/partition.d.ts +8 -1
- package/dist/ortho/partition.d.ts.map +1 -1
- package/dist/ortho/trap-segment.d.ts +2 -1
- package/dist/ortho/trap-segment.d.ts.map +1 -1
- package/dist/ortho/trapezoid.d.ts.map +1 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/number-scan.d.ts +31 -0
- package/dist/parser/number-scan.d.ts.map +1 -0
- package/dist/render/dot/edge-draw.d.ts +12 -0
- package/dist/render/dot/edge-draw.d.ts.map +1 -1
- package/dist/render/svg-graph.d.ts +6 -5
- package/dist/render/svg-graph.d.ts.map +1 -1
- package/dist/render/svg.d.ts +2 -21
- package/dist/render/svg.d.ts.map +1 -1
- package/dist/render.js +813 -542
- package/dist/render.js.map +4 -4
- package/dist/xdot/parse.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/common/arith.ts +25 -0
- package/src/common/edge-in-box.ts +54 -0
- package/src/common/graph-init.ts +3 -3
- package/src/common/htmltable-emit.ts +4 -2
- package/src/common/make-label.ts +3 -1
- package/src/common/poly-gencode.ts +18 -4
- package/src/gvc/device.ts +8 -41
- package/src/gvc/edge-labels.ts +30 -13
- package/src/gvc/emit-gates.ts +89 -0
- package/src/gvc/job.ts +4 -0
- package/src/gvc/viewport.ts +29 -0
- package/src/layout/circo/blockpath.ts +6 -125
- package/src/layout/circo/crossings.ts +171 -0
- package/src/layout/dot/__fixtures__/2784.dot +1 -0
- package/src/layout/dot/__fixtures__/2784.native-16.1.svg +48 -0
- package/src/layout/dot/edge-route-chain.ts +11 -5
- package/src/layout/dot/edge-route.ts +2 -1
- package/src/layout/dot/index.ts +14 -4
- package/src/layout/dot/ortho-adapter.ts +7 -3
- package/src/layout/dot/pack-components.ts +11 -4
- package/src/layout/dot/splines-flat-multi.ts +4 -4
- package/src/layout/dot/splines-flat.ts +5 -32
- package/src/layout/dot/splines-route.ts +10 -2
- package/src/layout/dot/splines.ts +6 -6
- package/src/layout/neato/constraint-adjust.ts +10 -4
- package/src/layout/neato/multispline.ts +26 -9
- package/src/layout/neato/splines.ts +7 -7
- package/src/layout/pack/poly-place.ts +9 -2
- package/src/layout/sfdp/__fixtures__/pcp-rotate-native.ts +94 -0
- package/src/layout/sfdp/spring-driver.ts +45 -13
- package/src/ortho/index.ts +22 -13
- package/src/ortho/maze.ts +8 -2
- package/src/ortho/partition.ts +17 -2
- package/src/ortho/trap-segment.ts +47 -24
- package/src/ortho/trapezoid.ts +24 -15
- package/src/parser/dot.js +334 -343
- package/src/parser/dot.pegjs +19 -5
- package/src/parser/index.ts +15 -0
- package/src/parser/number-scan.ts +118 -0
- package/src/render/dot/edge-draw.ts +25 -0
- package/src/render/svg-graph.ts +77 -47
- package/src/render/svg-helpers.ts +2 -2
- package/src/render/svg.ts +4 -41
- package/src/xdot/parse.ts +19 -5
package/dist/render.js
CHANGED
|
@@ -5086,8 +5086,8 @@ function normalizeFontName(name) {
|
|
|
5086
5086
|
for (let i = 0; i < name.length; i++) {
|
|
5087
5087
|
const ch = name[i];
|
|
5088
5088
|
const code = ch.charCodeAt(0);
|
|
5089
|
-
const
|
|
5090
|
-
if (
|
|
5089
|
+
const isLetter2 = code >= 65 && code <= 90 || code >= 97 && code <= 122;
|
|
5090
|
+
if (isLetter2) result += ch.toLowerCase();
|
|
5091
5091
|
}
|
|
5092
5092
|
return result;
|
|
5093
5093
|
}
|
|
@@ -7338,7 +7338,7 @@ function interpretCRNL(str) {
|
|
|
7338
7338
|
|
|
7339
7339
|
// src/common/make-label.ts
|
|
7340
7340
|
var DEFAULT_FONTSIZE2 = 14;
|
|
7341
|
-
var DEFAULT_FONTNAME = "Times
|
|
7341
|
+
var DEFAULT_FONTNAME = "Times-Roman";
|
|
7342
7342
|
var DEFAULT_COLOR = "black";
|
|
7343
7343
|
function getPenColor(obj) {
|
|
7344
7344
|
if (obj === void 0) return void 0;
|
|
@@ -8765,6 +8765,10 @@ var RenderJob = class {
|
|
|
8765
8765
|
format;
|
|
8766
8766
|
bb = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
8767
8767
|
pad = { x: 0, y: 0 };
|
|
8768
|
+
/** Current page clip in graph units, as setup_page computes it from the
|
|
8769
|
+
* viewport focus/view (see setupPageClip). Read by the SVG page translate and
|
|
8770
|
+
* background. @see lib/gvc/gvcjob.h:GVJ_s.clip; lib/common/emit.c:setup_page */
|
|
8771
|
+
clip = { ll: { x: 0, y: 0 }, ur: { x: 0, y: 0 } };
|
|
8768
8772
|
/** Graph-level `margin=` (init_job_margin); page-pagination margin, distinct
|
|
8769
8773
|
* from node/cluster label margin. @see lib/common/emit.c:3309-3331 */
|
|
8770
8774
|
margin = { x: 0, y: 0 };
|
|
@@ -10317,11 +10321,11 @@ function emitHtmlLabel(placed, pos, renderer, job) {
|
|
|
10317
10321
|
style: placed.style
|
|
10318
10322
|
});
|
|
10319
10323
|
}
|
|
10320
|
-
for (const cell2 of placed.cells) emitHtmlCell(cell2, pos, renderer, job);
|
|
10321
10324
|
emitTableRules(placed, pos, renderer, job);
|
|
10322
10325
|
if (placed.border > 0) {
|
|
10323
10326
|
emitBorder({ box: placed.box, pos, border: placed.border, color: placed.color, sides: placed.sides, style: placed.style }, renderer, job);
|
|
10324
10327
|
}
|
|
10328
|
+
for (const cell2 of placed.cells) emitHtmlCell(cell2, pos, renderer, job);
|
|
10325
10329
|
}
|
|
10326
10330
|
if (inAnchor) endHtmlAnchor(renderer, job);
|
|
10327
10331
|
if (clustersLast && initHtmlAnchor(anchorData, tblBox, renderer, job)) {
|
|
@@ -10509,6 +10513,18 @@ function fms(a, b, c) {
|
|
|
10509
10513
|
function cround(v) {
|
|
10510
10514
|
return v >= 0 ? Math.floor(v + 0.5) : Math.ceil(v - 0.5);
|
|
10511
10515
|
}
|
|
10516
|
+
var INT64_MAX = 2n ** 63n - 1n;
|
|
10517
|
+
var INT64_MIN = -(2n ** 63n);
|
|
10518
|
+
var TWO_POW_63 = 2 ** 63;
|
|
10519
|
+
function croundNarrow32(v) {
|
|
10520
|
+
const r = cround(v);
|
|
10521
|
+
let i64;
|
|
10522
|
+
if (Number.isNaN(r)) i64 = 0n;
|
|
10523
|
+
else if (r >= TWO_POW_63) i64 = INT64_MAX;
|
|
10524
|
+
else if (r < -TWO_POW_63) i64 = INT64_MIN;
|
|
10525
|
+
else i64 = BigInt(r);
|
|
10526
|
+
return Number(BigInt.asIntN(32, i64));
|
|
10527
|
+
}
|
|
10512
10528
|
function RADIANS(deg) {
|
|
10513
10529
|
return deg / 180 * Math.PI;
|
|
10514
10530
|
}
|
|
@@ -11346,6 +11362,8 @@ function parseSegs(colorlist) {
|
|
|
11346
11362
|
}
|
|
11347
11363
|
|
|
11348
11364
|
// src/util/math.ts
|
|
11365
|
+
var INT32_MAX = 2147483647;
|
|
11366
|
+
var INT32_MIN = -2147483648;
|
|
11349
11367
|
function isExactlyEqual(a, b) {
|
|
11350
11368
|
const buf = new ArrayBuffer(16);
|
|
11351
11369
|
const dv = new DataView(buf);
|
|
@@ -11357,6 +11375,11 @@ function isExactlyEqual(a, b) {
|
|
|
11357
11375
|
}
|
|
11358
11376
|
return true;
|
|
11359
11377
|
}
|
|
11378
|
+
function d2i(v) {
|
|
11379
|
+
if (v > INT32_MAX) return INT32_MAX;
|
|
11380
|
+
if (v < INT32_MIN) return INT32_MIN;
|
|
11381
|
+
return Math.trunc(v);
|
|
11382
|
+
}
|
|
11360
11383
|
|
|
11361
11384
|
// src/common/colorData.ts
|
|
11362
11385
|
var COLOR_LIB = [
|
|
@@ -14568,9 +14591,12 @@ function isMulticolor(fillcolor) {
|
|
|
14568
14591
|
return fillcolor.includes(":");
|
|
14569
14592
|
}
|
|
14570
14593
|
function renderEllipse(ring, coord, renderer, job, filled) {
|
|
14571
|
-
const
|
|
14572
|
-
const
|
|
14573
|
-
const
|
|
14594
|
+
const af0 = { x: ring[0].x + coord.x, y: ring[0].y + coord.y };
|
|
14595
|
+
const af1 = { x: ring[1].x + coord.x, y: ring[1].y + coord.y };
|
|
14596
|
+
const mid = { x: (af0.x + af1.x) / 2, y: (af0.y + af1.y) / 2 };
|
|
14597
|
+
const rx = af1.x - mid.x;
|
|
14598
|
+
const ry = af1.y - mid.y;
|
|
14599
|
+
const center = transformPoint(mid, job);
|
|
14574
14600
|
renderer.ellipse(center, rx, ry, filled, job);
|
|
14575
14601
|
}
|
|
14576
14602
|
function renderPolygon(ring, coord, renderer, job, filled) {
|
|
@@ -18173,7 +18199,7 @@ var BGCOLOR_TRANSPARENT = "\0transparent";
|
|
|
18173
18199
|
function formatG(n) {
|
|
18174
18200
|
return String(parseFloat(n.toPrecision(6)));
|
|
18175
18201
|
}
|
|
18176
|
-
function emitSvgTag(job) {
|
|
18202
|
+
function emitSvgTag(job, svgid = "") {
|
|
18177
18203
|
const bb = job.bb;
|
|
18178
18204
|
const szx = bb.ur.x - bb.ll.x + 2 * job.pad.x;
|
|
18179
18205
|
const szy = bb.ur.y - bb.ll.y + 2 * job.pad.y;
|
|
@@ -18182,16 +18208,20 @@ function emitSvgTag(job) {
|
|
|
18182
18208
|
const rotated = job.rotation !== 0;
|
|
18183
18209
|
const pageX = rotated ? viewY : viewX;
|
|
18184
18210
|
const pageY = rotated ? viewX : viewY;
|
|
18185
|
-
const w =
|
|
18186
|
-
const h =
|
|
18211
|
+
const w = croundNarrow32(pageX + 2 * job.margin.x);
|
|
18212
|
+
const h = croundNarrow32(pageY + 2 * job.margin.y);
|
|
18187
18213
|
job.write('<svg width="' + String(w) + 'pt" height="' + String(h) + 'pt"\n');
|
|
18188
|
-
const vbLLx =
|
|
18189
|
-
const vbLLy =
|
|
18190
|
-
const vbURx =
|
|
18191
|
-
const vbURy =
|
|
18214
|
+
const vbLLx = croundNarrow32(job.margin.x);
|
|
18215
|
+
const vbLLy = croundNarrow32(job.margin.y);
|
|
18216
|
+
const vbURx = croundNarrow32(job.margin.x + pageX);
|
|
18217
|
+
const vbURy = croundNarrow32(job.margin.y + pageY);
|
|
18192
18218
|
job.write(' viewBox="' + String(vbLLx) + ".00 " + String(vbLLy) + ".00 " + String(vbURx) + ".00 " + String(vbURy) + '.00"\n');
|
|
18193
18219
|
job.write(' xmlns="http://www.w3.org/2000/svg"');
|
|
18194
|
-
job.write(' xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
18220
|
+
job.write(' xmlns:xlink="http://www.w3.org/1999/xlink"');
|
|
18221
|
+
if (svgid !== void 0 && svgid.length > 0) {
|
|
18222
|
+
job.write(' id="' + escapeXmlTitle(svgid) + '"');
|
|
18223
|
+
}
|
|
18224
|
+
job.write(">\n");
|
|
18195
18225
|
}
|
|
18196
18226
|
function emitGraphGroupOpen(graphId, classStr, tx, ty, job) {
|
|
18197
18227
|
const sx = formatG(job.scale.x);
|
|
@@ -18215,12 +18245,12 @@ function resolveGraphBgcolor(bgcolorAttr) {
|
|
|
18215
18245
|
const solid = grad !== null ? grad[0] : bgcolorAttr;
|
|
18216
18246
|
return colorPaint(resolveRenderColor(solid));
|
|
18217
18247
|
}
|
|
18218
|
-
function emitGraphBackground(
|
|
18248
|
+
function emitGraphBackground(clip, resolvedColor, job) {
|
|
18219
18249
|
if (resolvedColor === BGCOLOR_TRANSPARENT) return;
|
|
18220
|
-
const left2 =
|
|
18221
|
-
const right2 =
|
|
18222
|
-
const top = -
|
|
18223
|
-
const bottom = -
|
|
18250
|
+
const left2 = clip.ll.x;
|
|
18251
|
+
const right2 = clip.ur.x;
|
|
18252
|
+
const top = -clip.ur.y;
|
|
18253
|
+
const bottom = -clip.ll.y;
|
|
18224
18254
|
const corners = [
|
|
18225
18255
|
[left2, bottom],
|
|
18226
18256
|
[left2, top],
|
|
@@ -18237,11 +18267,11 @@ function emitGraphBackground(bb, resolvedColor, job) {
|
|
|
18237
18267
|
});
|
|
18238
18268
|
job.write('"/>\n');
|
|
18239
18269
|
}
|
|
18240
|
-
function bgGradientPts(
|
|
18241
|
-
const left2 =
|
|
18242
|
-
const right2 =
|
|
18243
|
-
const bottom =
|
|
18244
|
-
const top =
|
|
18270
|
+
function bgGradientPts(clip) {
|
|
18271
|
+
const left2 = clip.ll.x;
|
|
18272
|
+
const right2 = clip.ur.x;
|
|
18273
|
+
const bottom = clip.ll.y;
|
|
18274
|
+
const top = clip.ur.y;
|
|
18245
18275
|
return [
|
|
18246
18276
|
{ x: left2, y: bottom },
|
|
18247
18277
|
{ x: left2, y: top },
|
|
@@ -18249,11 +18279,11 @@ function bgGradientPts(bb, pad) {
|
|
|
18249
18279
|
{ x: right2, y: bottom }
|
|
18250
18280
|
];
|
|
18251
18281
|
}
|
|
18252
|
-
function writeGradientPolygon(
|
|
18253
|
-
const left2 =
|
|
18254
|
-
const right2 =
|
|
18255
|
-
const top = -
|
|
18256
|
-
const bottom = -
|
|
18282
|
+
function writeGradientPolygon(clip, id, job) {
|
|
18283
|
+
const left2 = clip.ll.x;
|
|
18284
|
+
const right2 = clip.ur.x;
|
|
18285
|
+
const top = -clip.ur.y;
|
|
18286
|
+
const bottom = -clip.ll.y;
|
|
18257
18287
|
const corners = [
|
|
18258
18288
|
[left2, bottom],
|
|
18259
18289
|
[left2, top],
|
|
@@ -18270,7 +18300,7 @@ function writeGradientPolygon(bb, id, job) {
|
|
|
18270
18300
|
});
|
|
18271
18301
|
job.write('"/>\n');
|
|
18272
18302
|
}
|
|
18273
|
-
function emitGradientBackground(
|
|
18303
|
+
function emitGradientBackground(clip, spec, job) {
|
|
18274
18304
|
const obj = createObjState(0 /* RootGraph */);
|
|
18275
18305
|
obj.id = "graph0";
|
|
18276
18306
|
obj.fillColor = resolveRenderColor(spec.fillColor);
|
|
@@ -18285,10 +18315,10 @@ function emitGradientBackground(bb, spec, job) {
|
|
|
18285
18315
|
emitRadialGradient(job, gid);
|
|
18286
18316
|
} else {
|
|
18287
18317
|
gid = gradientId("graph0", "l", job.linearGradId++);
|
|
18288
|
-
emitLinearGradient(job, bgGradientPts(
|
|
18318
|
+
emitLinearGradient(job, bgGradientPts(clip), gid);
|
|
18289
18319
|
}
|
|
18290
18320
|
job.popObj();
|
|
18291
|
-
writeGradientPolygon(
|
|
18321
|
+
writeGradientPolygon(clip, gid, job);
|
|
18292
18322
|
}
|
|
18293
18323
|
function resolveBgGradientSpec(g, bgcolorAttr) {
|
|
18294
18324
|
const stop = findStopColor(bgcolorAttr);
|
|
@@ -18298,17 +18328,17 @@ function resolveBgGradientSpec(g, bgcolorAttr) {
|
|
|
18298
18328
|
const angle = angleStr ? parseInt(angleStr, 10) || 0 : 0;
|
|
18299
18329
|
return { fillColor: stop.fillColor, stopColor: stop.stopColor, frac: stop.frac, angle, radial: flags.radial };
|
|
18300
18330
|
}
|
|
18301
|
-
function emitBgcolorBackground(g,
|
|
18331
|
+
function emitBgcolorBackground(g, clip, bgcolorAttr, job) {
|
|
18302
18332
|
if (!bgcolorAttr || bgcolorAttr.length === 0 || bgcolorAttr === "transparent") {
|
|
18303
|
-
emitGraphBackground(
|
|
18333
|
+
emitGraphBackground(clip, resolveGraphBgcolor(bgcolorAttr), job);
|
|
18304
18334
|
return;
|
|
18305
18335
|
}
|
|
18306
18336
|
const spec = resolveBgGradientSpec(g, bgcolorAttr);
|
|
18307
18337
|
if (spec !== null) {
|
|
18308
|
-
emitGradientBackground(
|
|
18338
|
+
emitGradientBackground(clip, spec, job);
|
|
18309
18339
|
return;
|
|
18310
18340
|
}
|
|
18311
|
-
emitGraphBackground(
|
|
18341
|
+
emitGraphBackground(clip, resolveGraphBgcolor(bgcolorAttr), job);
|
|
18312
18342
|
}
|
|
18313
18343
|
function svgBeginGraph(g, job) {
|
|
18314
18344
|
job.devscale = { x: 1, y: -1 };
|
|
@@ -18322,13 +18352,23 @@ function svgBeginGraph(g, job) {
|
|
|
18322
18352
|
}
|
|
18323
18353
|
job.write(SVG_DOCTYPE);
|
|
18324
18354
|
job.write(SVG_GENERATOR_COMMENT);
|
|
18325
|
-
|
|
18355
|
+
const comment = g.attrs.get("comment");
|
|
18356
|
+
if (comment !== void 0 && comment.length > 0) svgComment(comment, job);
|
|
18357
|
+
emitTitlePagesComment(g, job);
|
|
18358
|
+
emitSvgTag(job, g.attrs.get("svgid"));
|
|
18359
|
+
}
|
|
18360
|
+
function emitTitlePagesComment(g, job) {
|
|
18361
|
+
job.write("<!--");
|
|
18362
|
+
if (g.name.length > 0 && g.name[0] !== "%") {
|
|
18363
|
+
job.write(" Title: " + escapeXmlTitle(g.name));
|
|
18364
|
+
}
|
|
18365
|
+
job.write(" Pages: 1 -->\n");
|
|
18326
18366
|
}
|
|
18327
18367
|
function svgBeginPage(g, job) {
|
|
18328
|
-
const
|
|
18368
|
+
const clip = job.clip;
|
|
18329
18369
|
const z = job.scale.x;
|
|
18330
|
-
const tx = job.rotation !== 0 ? -
|
|
18331
|
-
const ty =
|
|
18370
|
+
const tx = job.rotation !== 0 ? -clip.ur.x - job.margin.x / z : -clip.ll.x + job.margin.x / z;
|
|
18371
|
+
const ty = clip.ur.y + job.margin.y / z;
|
|
18332
18372
|
emitGraphGroupOpen(
|
|
18333
18373
|
job.idLayerPrefix() + svgGraphId(g, job),
|
|
18334
18374
|
svgGraphClass(g),
|
|
@@ -18339,7 +18379,7 @@ function svgBeginPage(g, job) {
|
|
|
18339
18379
|
emitGraphTitle(g, job);
|
|
18340
18380
|
}
|
|
18341
18381
|
function svgPageBackground(g, job) {
|
|
18342
|
-
emitBgcolorBackground(g, job.
|
|
18382
|
+
emitBgcolorBackground(g, job.clip, g.attrs.get("bgcolor"), job);
|
|
18343
18383
|
}
|
|
18344
18384
|
function svgEndPage(job) {
|
|
18345
18385
|
job.write("</g>\n");
|
|
@@ -18675,7 +18715,7 @@ function svgPolyline(pts, job) {
|
|
|
18675
18715
|
job.write('"/>\n');
|
|
18676
18716
|
}
|
|
18677
18717
|
function svgComment(text, job) {
|
|
18678
|
-
job.write("<!-- " +
|
|
18718
|
+
job.write("<!-- " + escapeXmlTitle(text) + " -->\n");
|
|
18679
18719
|
}
|
|
18680
18720
|
function svgEdgePath(e, job) {
|
|
18681
18721
|
const spl = e.info.spl;
|
|
@@ -18862,6 +18902,22 @@ function initJobViewportZoom(bb, size, pad) {
|
|
|
18862
18902
|
if (drawingNeedsFit(size, szx, szy)) return Math.min(size.x / szx, size.y / szy);
|
|
18863
18903
|
return 1;
|
|
18864
18904
|
}
|
|
18905
|
+
function setupPageClip(bb, size, pad, z) {
|
|
18906
|
+
const jbLL = { x: bb.ll.x - pad.x, y: bb.ll.y - pad.y };
|
|
18907
|
+
const jbUR = { x: bb.ur.x + pad.x, y: bb.ur.y + pad.y };
|
|
18908
|
+
const sz = { x: jbUR.x - jbLL.x, y: jbUR.y - jbLL.y };
|
|
18909
|
+
if (size !== null && size.x > 1e-3 && size.y > 1e-3) {
|
|
18910
|
+
if (sz.x <= 1e-3) sz.x = size.x;
|
|
18911
|
+
if (sz.y <= 1e-3) sz.y = size.y;
|
|
18912
|
+
}
|
|
18913
|
+
const focus = { x: 0.5 * (bb.ll.x + bb.ur.x), y: 0.5 * (bb.ll.y + bb.ur.y) };
|
|
18914
|
+
const pageSize = { x: z * sz.x / z, y: z * sz.y / z };
|
|
18915
|
+
const ll = {
|
|
18916
|
+
x: focus.x + pageSize.x * (0 - 1 / 2),
|
|
18917
|
+
y: focus.y + pageSize.y * (0 - 1 / 2)
|
|
18918
|
+
};
|
|
18919
|
+
return { ll, ur: { x: ll.x + pageSize.x, y: ll.y + pageSize.y } };
|
|
18920
|
+
}
|
|
18865
18921
|
|
|
18866
18922
|
// src/gvc/anchor.ts
|
|
18867
18923
|
function attr(attrs, key) {
|
|
@@ -19373,10 +19429,22 @@ function renderClusterLabel(sg, renderer, job) {
|
|
|
19373
19429
|
renderOneLabel(sg.info.label, renderer, job, false);
|
|
19374
19430
|
}
|
|
19375
19431
|
|
|
19376
|
-
// src/
|
|
19377
|
-
function
|
|
19378
|
-
|
|
19432
|
+
// src/common/edge-in-box.ts
|
|
19433
|
+
function overlapLabel(lp, b) {
|
|
19434
|
+
const sx = lp.dimen.x / 2;
|
|
19435
|
+
const sy = lp.dimen.y / 2;
|
|
19436
|
+
const bb = {
|
|
19437
|
+
ll: { x: lp.pos.x - sx, y: lp.pos.y - sy },
|
|
19438
|
+
ur: { x: lp.pos.x + sx, y: lp.pos.y + sy }
|
|
19439
|
+
};
|
|
19440
|
+
return boxOverlap(b, bb);
|
|
19379
19441
|
}
|
|
19442
|
+
function edgeHasDrawableContent(e, clip) {
|
|
19443
|
+
const i = e.info;
|
|
19444
|
+
return i.spl !== void 0 || i.label !== void 0 && i.label.set && overlapLabel(i.label, clip) || i.xlabel !== void 0 || i.head_label !== void 0 || i.tail_label !== void 0;
|
|
19445
|
+
}
|
|
19446
|
+
|
|
19447
|
+
// src/gvc/emit-gates.ts
|
|
19380
19448
|
function nodeBBox(n) {
|
|
19381
19449
|
const { coord, lw, rw, ht } = n.info;
|
|
19382
19450
|
return {
|
|
@@ -19391,6 +19459,26 @@ function nodeInBox(n, job) {
|
|
|
19391
19459
|
};
|
|
19392
19460
|
return boxOverlap(nodeBBox(n), clip);
|
|
19393
19461
|
}
|
|
19462
|
+
function gvrenderComment(renderer, job, str) {
|
|
19463
|
+
if (str === void 0 || str.length === 0) return;
|
|
19464
|
+
renderer.comment?.(str, job);
|
|
19465
|
+
}
|
|
19466
|
+
function emitNodeComments(n, renderer, job) {
|
|
19467
|
+
gvrenderComment(renderer, job, n.name);
|
|
19468
|
+
gvrenderComment(renderer, job, nodeAttr(n, n.root, "comment"));
|
|
19469
|
+
}
|
|
19470
|
+
function emitEdgeComments(e, renderer, job) {
|
|
19471
|
+
if (!edgeHasDrawableContent(e, job.bb)) return;
|
|
19472
|
+
const kind = e.head.root.kind;
|
|
19473
|
+
const op = kind === "directed" || kind === "strict-directed" ? "->" : "--";
|
|
19474
|
+
gvrenderComment(renderer, job, e.tail.name + op + e.head.name);
|
|
19475
|
+
gvrenderComment(renderer, job, e.attrs.get("comment"));
|
|
19476
|
+
}
|
|
19477
|
+
|
|
19478
|
+
// src/gvc/device.ts
|
|
19479
|
+
function labelTextOf2(lp) {
|
|
19480
|
+
return lp?.text ?? null;
|
|
19481
|
+
}
|
|
19394
19482
|
function emitNodeBody(n, renderer, job) {
|
|
19395
19483
|
setHtmlAnchorObj(svgNodeId(n, job), labelTextOf2(n.info.label), job.obj ?? void 0);
|
|
19396
19484
|
setHtmlObjImgscale(nodeAttr(n, n.root, "imagescale"));
|
|
@@ -19406,6 +19494,7 @@ function renderNode(n, renderer, job, done) {
|
|
|
19406
19494
|
if (done.has(n)) return;
|
|
19407
19495
|
done.add(n);
|
|
19408
19496
|
if (!nodeInBox(n, job)) return;
|
|
19497
|
+
emitNodeComments(n, renderer, job);
|
|
19409
19498
|
const nodeStyle = nodeAttr(n, n.root, "style");
|
|
19410
19499
|
if (parseStyleFlags(nodeStyle).invis) return;
|
|
19411
19500
|
if (!isPointNode(n) && styleHasInvisibleAlias(nodeStyle)) return;
|
|
@@ -19431,6 +19520,7 @@ function setEdgePen(e, job) {
|
|
|
19431
19520
|
obj.rawStyle = styleTokens(e.attrs.get("style"));
|
|
19432
19521
|
}
|
|
19433
19522
|
function renderEdge(e, renderer, job) {
|
|
19523
|
+
emitEdgeComments(e, renderer, job);
|
|
19434
19524
|
const edgeStyle = e.attrs.get("style");
|
|
19435
19525
|
if (parseStyleFlags(edgeStyle).invis || styleHasInvisibleAlias(edgeStyle)) return;
|
|
19436
19526
|
const obj = createObjState(3 /* Edge */);
|
|
@@ -19544,7 +19634,9 @@ function render(ctx, g, format, inlineImages = false) {
|
|
|
19544
19634
|
job.bb = g.info.bb;
|
|
19545
19635
|
job.pad = parseGraphPad(g.attrs.get("pad"));
|
|
19546
19636
|
job.margin = parseGraphMargin(g.attrs.get("margin"));
|
|
19547
|
-
const
|
|
19637
|
+
const drawingSize = parseDrawingSize(g.attrs.get("size"));
|
|
19638
|
+
const z = initJobViewportZoom(job.bb, drawingSize, job.pad);
|
|
19639
|
+
job.clip = setupPageClip(job.bb, drawingSize, job.pad, z);
|
|
19548
19640
|
const drawingDpi = lateDouble(
|
|
19549
19641
|
g.attrs.get("dpi"),
|
|
19550
19642
|
lateDouble(g.attrs.get("resolution"), 0, 0),
|
|
@@ -27199,7 +27291,7 @@ function routeMultiRankEdgeFaithful(g, e) {
|
|
|
27199
27291
|
}
|
|
27200
27292
|
const segs = chainSegments(e);
|
|
27201
27293
|
if (segs.length === 0 || segs[segs.length - 1].head !== e.head) return null;
|
|
27202
|
-
return routeChainSegmented(g, segs[0], segs[segs.length - 1], segs);
|
|
27294
|
+
return routeChainSegmented(g, segs[0], segs[segs.length - 1], segs) ?? "lost";
|
|
27203
27295
|
}
|
|
27204
27296
|
function entryRunSegments(e) {
|
|
27205
27297
|
const segs = [e];
|
|
@@ -27271,7 +27363,10 @@ function routeBackEdge(e, _tailBox, _headBox, g) {
|
|
|
27271
27363
|
if (segs.length < 2 || segs[segs.length - 1].head !== e.tail) return;
|
|
27272
27364
|
const fwdEdge = makeFwdEdge(e);
|
|
27273
27365
|
const fwd = routeChainSegmented(g, segs[0], segs[segs.length - 1], segs);
|
|
27274
|
-
if (fwd === null)
|
|
27366
|
+
if (fwd === null) {
|
|
27367
|
+
e.info.lost = true;
|
|
27368
|
+
return;
|
|
27369
|
+
}
|
|
27275
27370
|
clipAndInstall(fwdEdge, fwdEdge.head, fwd, fwd.length, buildDotSinfo());
|
|
27276
27371
|
if (swapEndsP(e)) swapEdgeSpline(e);
|
|
27277
27372
|
}
|
|
@@ -27423,7 +27518,7 @@ function baseSplineForGroup(g, e0) {
|
|
|
27423
27518
|
const orig = resolveOrigEdge(e0);
|
|
27424
27519
|
const fe = isBackEdgeMember(orig) ? makeFwdEdge(orig) : orig;
|
|
27425
27520
|
const pts = routeRegularEdgeFaithful(g, fe);
|
|
27426
|
-
if (pts === "lost") return
|
|
27521
|
+
if (pts === "lost") return "lost";
|
|
27427
27522
|
return pts ?? routeMultiRankEdgeFaithful(g, fe);
|
|
27428
27523
|
}
|
|
27429
27524
|
function isBackEdgeMember(e) {
|
|
@@ -27452,6 +27547,10 @@ function routeParallelEdgeGroup(g, edges, multisep) {
|
|
|
27452
27547
|
return o.info.head_port?.defined || o.info.tail_port?.defined;
|
|
27453
27548
|
}) ?? edges[0];
|
|
27454
27549
|
const base = baseSplineForGroup(g, baseEdge);
|
|
27550
|
+
if (base === "lost") {
|
|
27551
|
+
for (const e of edges) resolveOrigEdge(e).info.lost = true;
|
|
27552
|
+
return;
|
|
27553
|
+
}
|
|
27455
27554
|
if (base === null) return;
|
|
27456
27555
|
if (cnt === 1) {
|
|
27457
27556
|
installShiftedEdge(edges[0], base);
|
|
@@ -30357,6 +30456,10 @@ function routeOneEdge(e, g) {
|
|
|
30357
30456
|
function routeFaithfulMultiRank(e, g) {
|
|
30358
30457
|
const pts = routeMultiRankEdgeFaithful(g, e);
|
|
30359
30458
|
if (pts === null) return false;
|
|
30459
|
+
if (pts === "lost") {
|
|
30460
|
+
e.info.lost = true;
|
|
30461
|
+
return true;
|
|
30462
|
+
}
|
|
30360
30463
|
clipAndInstall(e, e.head, pts, pts.length, buildDotSinfo());
|
|
30361
30464
|
return true;
|
|
30362
30465
|
}
|
|
@@ -30865,24 +30968,28 @@ function addSegment(segnum, seg2, tr, qs) {
|
|
|
30865
30968
|
swapSegEndpoints(s);
|
|
30866
30969
|
isSwapped = true;
|
|
30867
30970
|
}
|
|
30868
|
-
|
|
30869
|
-
|
|
30870
|
-
|
|
30871
|
-
|
|
30872
|
-
|
|
30971
|
+
const ctx = { s, seg: seg2, tr, qs, segnum, tribot: false, isSwapped };
|
|
30972
|
+
const tfirst = firstTrap(ctx);
|
|
30973
|
+
const tlast = lastTrap(ctx);
|
|
30974
|
+
if (threadSegment(ctx, tfirst, tlast) !== 0) return -1;
|
|
30975
|
+
seg2[segnum].isInserted = true;
|
|
30976
|
+
return 0;
|
|
30977
|
+
}
|
|
30978
|
+
function firstTrap(c) {
|
|
30979
|
+
if (!inserted(c.segnum, c.seg, c.isSwapped ? LASTPT : FIRSTPT)) {
|
|
30980
|
+
return insertV0(c.s, c.seg, c.tr, c.qs, c.segnum);
|
|
30873
30981
|
}
|
|
30874
|
-
|
|
30875
|
-
|
|
30876
|
-
|
|
30877
|
-
|
|
30878
|
-
|
|
30879
|
-
tlast = locateEndpoint(s.v1, s.v0, s.root1, seg2, qs);
|
|
30880
|
-
tribot = true;
|
|
30982
|
+
return locateEndpoint(c.s.v0, c.s.v1, c.s.root0, c.seg, c.qs);
|
|
30983
|
+
}
|
|
30984
|
+
function lastTrap(c) {
|
|
30985
|
+
if (!inserted(c.segnum, c.seg, c.isSwapped ? FIRSTPT : LASTPT)) {
|
|
30986
|
+
return insertV1(c.s, c.seg, c.tr, c.qs, c.segnum);
|
|
30881
30987
|
}
|
|
30882
|
-
|
|
30883
|
-
|
|
30988
|
+
c.tribot = true;
|
|
30989
|
+
return locateEndpoint(c.s.v1, c.s.v0, c.s.root1, c.seg, c.qs);
|
|
30884
30990
|
}
|
|
30885
|
-
function threadSegment(
|
|
30991
|
+
function threadSegment(c, tfirst, tlast) {
|
|
30992
|
+
const { s, seg: seg2, tr, qs, segnum, tribot, isSwapped } = c;
|
|
30886
30993
|
let tfirstr = INVALID_TRAP;
|
|
30887
30994
|
let tlastr = INVALID_TRAP;
|
|
30888
30995
|
let t = tfirst;
|
|
@@ -30909,17 +31016,20 @@ function threadSegment(s, seg2, tr, qs, segnum, tfirst, tlast, tribot, isSwapped
|
|
|
30909
31016
|
if (equalTo(tr[t].lo, tr[tlast].lo)) tlastr = tn;
|
|
30910
31017
|
const tSav = t;
|
|
30911
31018
|
const tnSav = tn;
|
|
31019
|
+
if (!isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
31020
|
+
console.error("trapezoid segment construction failed");
|
|
31021
|
+
return -1;
|
|
31022
|
+
}
|
|
30912
31023
|
t = advanceT(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot);
|
|
30913
31024
|
tr[tSav].rseg = segnum;
|
|
30914
31025
|
tr[tnSav].lseg = segnum;
|
|
30915
31026
|
}
|
|
30916
31027
|
mergeTrapezoids(segnum, tfirst, tlast, S_LEFT, tr, qs);
|
|
30917
31028
|
mergeTrapezoids(segnum, tfirstr, tlastr, S_RIGHT, tr, qs);
|
|
31029
|
+
return 0;
|
|
30918
31030
|
}
|
|
30919
31031
|
function advanceT(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot) {
|
|
30920
|
-
if (
|
|
30921
|
-
return INVALID_TRAP;
|
|
30922
|
-
} else if (isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
31032
|
+
if (isValidTrap(tr[t].d0) && !isValidTrap(tr[t].d1)) {
|
|
30923
31033
|
handleD0Only(s, seg2, tr, t, tn, tlast, segnum, isSwapped, tribot);
|
|
30924
31034
|
return tr[t].d0;
|
|
30925
31035
|
} else if (!isValidTrap(tr[t].d0) && isValidTrap(tr[t].d1)) {
|
|
@@ -30939,33 +31049,16 @@ function findNewRoots(segnum, seg2, tr, qs) {
|
|
|
30939
31049
|
// src/ortho/trapezoid.ts
|
|
30940
31050
|
function constructTrapezoids(nseg, seg2, permute) {
|
|
30941
31051
|
const qs = [];
|
|
30942
|
-
const tr = [];
|
|
30943
|
-
tr.push({
|
|
30944
|
-
lseg: 0,
|
|
30945
|
-
rseg: 0,
|
|
30946
|
-
hi: { x: 0, y: 0 },
|
|
30947
|
-
lo: { x: 0, y: 0 },
|
|
30948
|
-
u0: 0,
|
|
30949
|
-
u1: 0,
|
|
30950
|
-
d0: 0,
|
|
30951
|
-
d1: 0,
|
|
30952
|
-
sink: 0,
|
|
30953
|
-
usave: 0,
|
|
30954
|
-
uside: 0,
|
|
30955
|
-
isValid: false
|
|
30956
|
-
});
|
|
31052
|
+
const tr = [sentinelTrap()];
|
|
30957
31053
|
let segi = 0;
|
|
30958
31054
|
const root = initQueryStructure(permute[segi++], seg2, tr, qs);
|
|
30959
|
-
|
|
30960
|
-
seg2[i].root0 = root;
|
|
30961
|
-
seg2[i].root1 = root;
|
|
30962
|
-
}
|
|
31055
|
+
seedRoots(nseg, seg2, root);
|
|
30963
31056
|
const logstar = mathLogstarN(nseg);
|
|
30964
31057
|
for (let h = 1; h <= logstar; h++) {
|
|
30965
31058
|
const lo = mathN(nseg, h - 1) + 1;
|
|
30966
31059
|
const hi = mathN(nseg, h);
|
|
30967
31060
|
for (let i = lo; i <= hi; i++) {
|
|
30968
|
-
addSegment(permute[segi++], seg2, tr, qs);
|
|
31061
|
+
if (addSegment(permute[segi++], seg2, tr, qs) !== 0) return [];
|
|
30969
31062
|
}
|
|
30970
31063
|
for (let i = 1; i <= nseg; i++) {
|
|
30971
31064
|
findNewRoots(i, seg2, tr, qs);
|
|
@@ -30973,10 +31066,32 @@ function constructTrapezoids(nseg, seg2, permute) {
|
|
|
30973
31066
|
}
|
|
30974
31067
|
const remaining = mathN(nseg, logstar) + 1;
|
|
30975
31068
|
for (let i = remaining; i <= nseg; i++) {
|
|
30976
|
-
addSegment(permute[segi++], seg2, tr, qs);
|
|
31069
|
+
if (addSegment(permute[segi++], seg2, tr, qs) !== 0) return [];
|
|
30977
31070
|
}
|
|
30978
31071
|
return tr;
|
|
30979
31072
|
}
|
|
31073
|
+
function sentinelTrap() {
|
|
31074
|
+
return {
|
|
31075
|
+
lseg: 0,
|
|
31076
|
+
rseg: 0,
|
|
31077
|
+
hi: { x: 0, y: 0 },
|
|
31078
|
+
lo: { x: 0, y: 0 },
|
|
31079
|
+
u0: 0,
|
|
31080
|
+
u1: 0,
|
|
31081
|
+
d0: 0,
|
|
31082
|
+
d1: 0,
|
|
31083
|
+
sink: 0,
|
|
31084
|
+
usave: 0,
|
|
31085
|
+
uside: 0,
|
|
31086
|
+
isValid: false
|
|
31087
|
+
};
|
|
31088
|
+
}
|
|
31089
|
+
function seedRoots(nseg, seg2, root) {
|
|
31090
|
+
for (let i = 1; i <= nseg; i++) {
|
|
31091
|
+
seg2[i].root0 = root;
|
|
31092
|
+
seg2[i].root1 = root;
|
|
31093
|
+
}
|
|
31094
|
+
}
|
|
30980
31095
|
function initQueryStructure(segnum, seg2, tr, qs) {
|
|
30981
31096
|
const s = seg2[segnum];
|
|
30982
31097
|
const i1 = newQNode(qs);
|
|
@@ -31280,10 +31395,18 @@ function partition(cells, bb) {
|
|
|
31280
31395
|
const hSeg = h.genSegments(cells, bb, false);
|
|
31281
31396
|
const hPerm = h.generateRandomOrdering(nsegs);
|
|
31282
31397
|
const hTr = constructTrapezoids(nsegs, hSeg, hPerm);
|
|
31398
|
+
if (hTr.length === 0) {
|
|
31399
|
+
console.error("horizontal trapezoid construction failed");
|
|
31400
|
+
return null;
|
|
31401
|
+
}
|
|
31283
31402
|
const hDecomp = h.monotonateTrapezoids(hTr, hSeg, false);
|
|
31284
31403
|
const vSeg = h.genSegments(cells, bb, true);
|
|
31285
31404
|
const vPerm = h.generateRandomOrdering(nsegs);
|
|
31286
31405
|
const vTr = constructTrapezoids(nsegs, vSeg, vPerm);
|
|
31406
|
+
if (vTr.length === 0) {
|
|
31407
|
+
console.error("vertical trapezoid construction failed");
|
|
31408
|
+
return null;
|
|
31409
|
+
}
|
|
31287
31410
|
const vDecomp = h.monotonateTrapezoids(vTr, vSeg, true);
|
|
31288
31411
|
const result = [];
|
|
31289
31412
|
for (const v of vDecomp) {
|
|
@@ -31292,7 +31415,7 @@ function partition(cells, bb) {
|
|
|
31292
31415
|
if (isect) result.push(isect);
|
|
31293
31416
|
}
|
|
31294
31417
|
}
|
|
31295
|
-
return result;
|
|
31418
|
+
return result.length === 0 ? null : result;
|
|
31296
31419
|
}
|
|
31297
31420
|
|
|
31298
31421
|
// src/ortho/rawgraph.ts
|
|
@@ -32140,6 +32263,7 @@ function mkMaze(g) {
|
|
|
32140
32263
|
UR: { x: BB.UR.x + MARGIN, y: BB.UR.y + MARGIN }
|
|
32141
32264
|
};
|
|
32142
32265
|
const rects = partition(gcells, BB);
|
|
32266
|
+
if (rects === null) return null;
|
|
32143
32267
|
const cells = rects.map((bb) => ({
|
|
32144
32268
|
flags: 0,
|
|
32145
32269
|
nedges: 0,
|
|
@@ -32621,6 +32745,24 @@ function buildSpline(e, rte, mp) {
|
|
|
32621
32745
|
pts.push({ ...p });
|
|
32622
32746
|
return pts;
|
|
32623
32747
|
}
|
|
32748
|
+
function ensureDummyNodes(sg, gstart) {
|
|
32749
|
+
while (sg.nodes.length < gstart + 2) {
|
|
32750
|
+
sg.nodes.push({
|
|
32751
|
+
nVal: 0,
|
|
32752
|
+
nIdx: 0,
|
|
32753
|
+
nDad: null,
|
|
32754
|
+
nEdge: null,
|
|
32755
|
+
nAdj: 0,
|
|
32756
|
+
saveNAdj: 0,
|
|
32757
|
+
cells: [null, null],
|
|
32758
|
+
adjEdgeList: [],
|
|
32759
|
+
index: sg.nodes.length,
|
|
32760
|
+
isVert: false,
|
|
32761
|
+
x: 0,
|
|
32762
|
+
y: 0
|
|
32763
|
+
});
|
|
32764
|
+
}
|
|
32765
|
+
}
|
|
32624
32766
|
function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
32625
32767
|
if (useLbls) {
|
|
32626
32768
|
console.warn(
|
|
@@ -32630,6 +32772,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32630
32772
|
}
|
|
32631
32773
|
void useLbls;
|
|
32632
32774
|
const mp = mkMaze(g);
|
|
32775
|
+
if (mp === null) return -1;
|
|
32633
32776
|
const sg = mp.sg;
|
|
32634
32777
|
const es = g.edges.map((e) => ({ e, d: edgeLen(e) }));
|
|
32635
32778
|
gvQsort(es, edgeCmp);
|
|
@@ -32639,22 +32782,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32639
32782
|
const pq = pqGenForGraph(sg);
|
|
32640
32783
|
const sn = sg.nodes[gstart];
|
|
32641
32784
|
const dn = sg.nodes[gstart + 1];
|
|
32642
|
-
|
|
32643
|
-
sg.nodes.push({
|
|
32644
|
-
nVal: 0,
|
|
32645
|
-
nIdx: 0,
|
|
32646
|
-
nDad: null,
|
|
32647
|
-
nEdge: null,
|
|
32648
|
-
nAdj: 0,
|
|
32649
|
-
saveNAdj: 0,
|
|
32650
|
-
cells: [null, null],
|
|
32651
|
-
adjEdgeList: [],
|
|
32652
|
-
index: sg.nodes.length,
|
|
32653
|
-
isVert: false,
|
|
32654
|
-
x: 0,
|
|
32655
|
-
y: 0
|
|
32656
|
-
});
|
|
32657
|
-
}
|
|
32785
|
+
ensureDummyNodes(sg, gstart);
|
|
32658
32786
|
for (let i = 0; i < nEdges; i++) {
|
|
32659
32787
|
const e = es[i].e;
|
|
32660
32788
|
const start = mp.gcells[g.nodes.indexOf(e.tail)];
|
|
@@ -32668,7 +32796,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32668
32796
|
if (shortPath(pq, sg, dn, sn) !== 0) {
|
|
32669
32797
|
pqFree(pq);
|
|
32670
32798
|
freeMaze(mp);
|
|
32671
|
-
return;
|
|
32799
|
+
return 0;
|
|
32672
32800
|
}
|
|
32673
32801
|
routeList[i] = convertSPtoRoute(sg, sn, dn);
|
|
32674
32802
|
reset(sg);
|
|
@@ -32679,7 +32807,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32679
32807
|
assignSegs(routeList, mp);
|
|
32680
32808
|
if (assignTracks(mp) !== 0) {
|
|
32681
32809
|
freeMaze(mp);
|
|
32682
|
-
return;
|
|
32810
|
+
return 0;
|
|
32683
32811
|
}
|
|
32684
32812
|
if (clipAndInstall2) {
|
|
32685
32813
|
for (let i = 0; i < nEdges; i++) {
|
|
@@ -32690,6 +32818,7 @@ function orthoEdges(g, useLbls, clipAndInstall2) {
|
|
|
32690
32818
|
}
|
|
32691
32819
|
}
|
|
32692
32820
|
freeMaze(mp);
|
|
32821
|
+
return 0;
|
|
32693
32822
|
}
|
|
32694
32823
|
|
|
32695
32824
|
// src/layout/dot/ortho-adapter.ts
|
|
@@ -32760,7 +32889,7 @@ function installOrthoResult(oe, pts) {
|
|
|
32760
32889
|
clipAndInstall(origEdge, origEdge.head, pts, pts.length, ORTHO_SINFO);
|
|
32761
32890
|
}
|
|
32762
32891
|
function dispatchOrthoEdges(g, useLbls) {
|
|
32763
|
-
orthoEdges(
|
|
32892
|
+
return orthoEdges(
|
|
32764
32893
|
buildOrthoGraph(g),
|
|
32765
32894
|
useLbls,
|
|
32766
32895
|
(_og, oe, pts) => installOrthoResult(oe, pts)
|
|
@@ -33297,12 +33426,12 @@ function resetRW(g) {
|
|
|
33297
33426
|
}
|
|
33298
33427
|
function orthoDispatch(g) {
|
|
33299
33428
|
resetRW(g);
|
|
33429
|
+
let rc;
|
|
33300
33430
|
if (((g.root.info.has_labels ?? 0) & EDGE_LABEL) !== 0) {
|
|
33301
33431
|
setEdgeLabelPos(g);
|
|
33302
|
-
dispatchOrthoEdges(g, true);
|
|
33303
|
-
} else
|
|
33304
|
-
|
|
33305
|
-
}
|
|
33432
|
+
rc = dispatchOrthoEdges(g, true);
|
|
33433
|
+
} else rc = dispatchOrthoEdges(g, false);
|
|
33434
|
+
if (rc !== 0) return rc;
|
|
33306
33435
|
placePortLabels(g);
|
|
33307
33436
|
g.info.edgeLabelsDone = true;
|
|
33308
33437
|
return 0;
|
|
@@ -33958,7 +34087,7 @@ function computeStep2(bbs, margin) {
|
|
|
33958
34087
|
c -= W * H;
|
|
33959
34088
|
}
|
|
33960
34089
|
const r = Math.sqrt(b * b - 4 * a * c);
|
|
33961
|
-
const root =
|
|
34090
|
+
const root = d2i((-b + r) / (2 * a));
|
|
33962
34091
|
return root === 0 ? 1 : root;
|
|
33963
34092
|
}
|
|
33964
34093
|
function lineXDominant(st, ps) {
|
|
@@ -34104,7 +34233,7 @@ function fits2(x, y, info, ctx) {
|
|
|
34104
34233
|
}
|
|
34105
34234
|
const bb = ctx.bbs[info.index];
|
|
34106
34235
|
const LL = { x: cround(bb.ll.x), y: cround(bb.ll.y) };
|
|
34107
|
-
ctx.places[info.index] = { x: ctx.step
|
|
34236
|
+
ctx.places[info.index] = { x: Math.imul(ctx.step, x) - LL.x, y: Math.imul(ctx.step, y) - LL.y };
|
|
34108
34237
|
for (const c of info.cells) ctx.ps.add(c.x + x, c.y + y);
|
|
34109
34238
|
return true;
|
|
34110
34239
|
}
|
|
@@ -34590,7 +34719,7 @@ function dotLayoutComponent(sg, root) {
|
|
|
34590
34719
|
dotRank(sg);
|
|
34591
34720
|
dotMincross(sg);
|
|
34592
34721
|
dotPosition(sg);
|
|
34593
|
-
dotPhasePostNoFinish(sg);
|
|
34722
|
+
return dotPhasePostNoFinish(sg);
|
|
34594
34723
|
}
|
|
34595
34724
|
function mapClust(clone, origOf) {
|
|
34596
34725
|
const orig = origOf.get(clone);
|
|
@@ -34676,7 +34805,9 @@ function packComponentsClusterAware(root, comps, pinfo) {
|
|
|
34676
34805
|
}
|
|
34677
34806
|
function layoutAndPack(root, comps, pinfo, origOf) {
|
|
34678
34807
|
dotGraphInit(root);
|
|
34679
|
-
for (const sg of comps)
|
|
34808
|
+
for (const sg of comps) {
|
|
34809
|
+
if (dotLayoutComponent(sg, root) !== 0) return;
|
|
34810
|
+
}
|
|
34680
34811
|
packComponentsClusterAware(root, comps, pinfo);
|
|
34681
34812
|
copyClusterInfo(comps, root, origOf);
|
|
34682
34813
|
expandRootBbForClusters(root);
|
|
@@ -34708,11 +34839,13 @@ function dotPhaseInit(g) {
|
|
|
34708
34839
|
function dotPhasePostNoFinish(g) {
|
|
34709
34840
|
removeFill(g);
|
|
34710
34841
|
dotSameports(g);
|
|
34711
|
-
dotSplines(g);
|
|
34842
|
+
const r = dotSplines(g);
|
|
34843
|
+
if (r !== 0) return r;
|
|
34712
34844
|
if (mapbool2(g.attrs.get("compound") ?? g.root.attrs.get("compound"))) dotCompoundEdges(g);
|
|
34845
|
+
return 0;
|
|
34713
34846
|
}
|
|
34714
34847
|
function dotPhasePost(g) {
|
|
34715
|
-
dotPhasePostNoFinish(g);
|
|
34848
|
+
if (dotPhasePostNoFinish(g) !== 0) return;
|
|
34716
34849
|
gvPostprocess(g);
|
|
34717
34850
|
}
|
|
34718
34851
|
function graphPhase(g) {
|
|
@@ -37598,10 +37731,10 @@ function raySegIntersect(v, w, a, b) {
|
|
|
37598
37731
|
const mv = { x: w.x - v.x, y: w.y - v.y };
|
|
37599
37732
|
const lv = { x: b.x - a.x, y: b.y - a.y };
|
|
37600
37733
|
const ln = { x: -lv.y, y: lv.x };
|
|
37601
|
-
const lc = -(ln.x
|
|
37602
|
-
const dt = ln.x
|
|
37734
|
+
const lc = -fma(ln.x, a.x, ln.y * a.y);
|
|
37735
|
+
const dt = fma(ln.x, mv.x, ln.y * mv.y);
|
|
37603
37736
|
if (Math.abs(dt) < SMALL3) return null;
|
|
37604
|
-
const s = (ln.x
|
|
37737
|
+
const s = (fma(ln.x, v.x, ln.y * v.y) + lc) / dt;
|
|
37605
37738
|
return { x: v.x - s * mv.x, y: v.y - s * mv.y };
|
|
37606
37739
|
}
|
|
37607
37740
|
function triPoint(trip, vx, v, w) {
|
|
@@ -37619,36 +37752,44 @@ function ctrlPtIdx(v, ps) {
|
|
|
37619
37752
|
return -1;
|
|
37620
37753
|
}
|
|
37621
37754
|
var SEP = 15;
|
|
37755
|
+
function bisectorTarget(v, cosTheta, sinTheta) {
|
|
37756
|
+
return { x: fma(cosTheta, 100, v.x), y: fma(sinTheta, 100, v.y) };
|
|
37757
|
+
}
|
|
37758
|
+
function distFused(p, q) {
|
|
37759
|
+
const dx = p.x - q.x;
|
|
37760
|
+
const dy = p.y - q.y;
|
|
37761
|
+
return Math.sqrt(fma(dx, dx, dy * dy));
|
|
37762
|
+
}
|
|
37622
37763
|
function mkCtrlPts(s, mult, prev, v, nxt, trip) {
|
|
37623
37764
|
const idx = ctrlPtIdx(v, trip.ps);
|
|
37624
37765
|
if (idx < 0) return null;
|
|
37625
37766
|
const theta = bisect(prev, v, nxt);
|
|
37626
37767
|
let sinTheta = Math.sin(theta);
|
|
37627
37768
|
let cosTheta = Math.cos(theta);
|
|
37628
|
-
let w =
|
|
37769
|
+
let w = bisectorTarget(v, cosTheta, sinTheta);
|
|
37629
37770
|
if (idx > s) {
|
|
37630
37771
|
if (wind(prev, v, w) !== 1) {
|
|
37631
37772
|
sinTheta *= -1;
|
|
37632
37773
|
cosTheta *= -1;
|
|
37633
|
-
w =
|
|
37774
|
+
w = bisectorTarget(v, cosTheta, sinTheta);
|
|
37634
37775
|
}
|
|
37635
37776
|
} else if (wind(prev, v, w) !== -1) {
|
|
37636
37777
|
sinTheta *= -1;
|
|
37637
37778
|
cosTheta *= -1;
|
|
37638
|
-
w =
|
|
37779
|
+
w = bisectorTarget(v, cosTheta, sinTheta);
|
|
37639
37780
|
}
|
|
37640
37781
|
const q = triPoint(trip, idx, v, w);
|
|
37641
37782
|
if (q === null) return null;
|
|
37642
|
-
const d =
|
|
37783
|
+
const d = distFused(q, v);
|
|
37643
37784
|
const sep = d >= mult * SEP ? SEP : d / mult;
|
|
37644
37785
|
const ps = new Array(mult);
|
|
37645
37786
|
if (idx < s) {
|
|
37646
37787
|
for (let i = 0; i < mult; i++) {
|
|
37647
|
-
ps[i] = { x:
|
|
37788
|
+
ps[i] = { x: fma(i * sep, cosTheta, v.x), y: fma(i * sep, sinTheta, v.y) };
|
|
37648
37789
|
}
|
|
37649
37790
|
} else {
|
|
37650
37791
|
for (let i = 0; i < mult; i++) {
|
|
37651
|
-
ps[mult - i - 1] = { x:
|
|
37792
|
+
ps[mult - i - 1] = { x: fma(i * sep, cosTheta, v.x), y: fma(i * sep, sinTheta, v.y) };
|
|
37652
37793
|
}
|
|
37653
37794
|
}
|
|
37654
37795
|
return ps;
|
|
@@ -38082,7 +38223,7 @@ var ObstacleHelper = class {
|
|
|
38082
38223
|
};
|
|
38083
38224
|
function ellipseTangentSlope(a, b, p) {
|
|
38084
38225
|
const signY = p.y >= 0 ? 1 : -1;
|
|
38085
|
-
return -signY * (b * p.x) / (a * Math.sqrt(a
|
|
38226
|
+
return -signY * (b * p.x) / (a * Math.sqrt(fma(a, a, -(p.x * p.x))));
|
|
38086
38227
|
}
|
|
38087
38228
|
function circumscribedCorner(a, b, i, nsides) {
|
|
38088
38229
|
const angle0 = 2 * Math.PI * (i - 0.5) / nsides;
|
|
@@ -38091,8 +38232,8 @@ function circumscribedCorner(a, b, i, nsides) {
|
|
|
38091
38232
|
const p1 = { x: a * Math.cos(angle1), y: b * Math.sin(angle1) };
|
|
38092
38233
|
const m0 = ellipseTangentSlope(a, b, p0);
|
|
38093
38234
|
const m1 = ellipseTangentSlope(a, b, p1);
|
|
38094
|
-
const x = (m0
|
|
38095
|
-
const y =
|
|
38235
|
+
const x = (fms(p1.x, m1, fma(m0, p0.x, -p0.y)) + p1.y) / (m0 - m1);
|
|
38236
|
+
const y = fma(m0, x - p0.x, p0.y);
|
|
38096
38237
|
return { x, y };
|
|
38097
38238
|
}
|
|
38098
38239
|
function boxCornerMargin(j, m) {
|
|
@@ -42169,8 +42310,8 @@ function initItem(n, margin) {
|
|
|
42169
42310
|
let w2;
|
|
42170
42311
|
let h2;
|
|
42171
42312
|
if (margin.doAdd) {
|
|
42172
|
-
w2 =
|
|
42173
|
-
h2 =
|
|
42313
|
+
w2 = d2i(SCALE * (cround(width / 2 * POINTS_PER_INCH6) + margin.x));
|
|
42314
|
+
h2 = d2i(SCALE * (cround(height / 2 * POINTS_PER_INCH6) + margin.y));
|
|
42174
42315
|
} else {
|
|
42175
42316
|
w2 = cround(margin.x * SCALE2 * width * POINTS_PER_INCH6);
|
|
42176
42317
|
h2 = cround(margin.y * SCALE2 * height * POINTS_PER_INCH6);
|
|
@@ -46178,6 +46319,20 @@ function powerLawGraph(A3) {
|
|
|
46178
46319
|
}
|
|
46179
46320
|
return mask[1] > 0.8 * max && mask[1] > 0.3 * m;
|
|
46180
46321
|
}
|
|
46322
|
+
var PCP_COVARIANCE_LANES = 4;
|
|
46323
|
+
function pcpCovariance(n, dim, x, y) {
|
|
46324
|
+
const nUnfused = n - n % PCP_COVARIANCE_LANES;
|
|
46325
|
+
for (let i = 0; i < n; i++) {
|
|
46326
|
+
for (let k = 0; k < dim; k++) {
|
|
46327
|
+
for (let l = 0; l < dim; l++) {
|
|
46328
|
+
const a = x[i * dim + k];
|
|
46329
|
+
const b = x[i * dim + l];
|
|
46330
|
+
const acc = y[dim * k + l];
|
|
46331
|
+
y[dim * k + l] = i < nUnfused ? acc + a * b : fma(a, b, acc);
|
|
46332
|
+
}
|
|
46333
|
+
}
|
|
46334
|
+
}
|
|
46335
|
+
}
|
|
46181
46336
|
function pcpRotate(n, dim, x) {
|
|
46182
46337
|
const y = [0, 0, 0, 0];
|
|
46183
46338
|
const center = [0, 0];
|
|
@@ -46188,24 +46343,23 @@ function pcpRotate(n, dim, x) {
|
|
|
46188
46343
|
for (let i = 0; i < n; i++) {
|
|
46189
46344
|
for (let k = 0; k < dim; k++) x[dim * i + k] -= center[k];
|
|
46190
46345
|
}
|
|
46191
|
-
|
|
46192
|
-
for (let k = 0; k < dim; k++) {
|
|
46193
|
-
for (let l = 0; l < dim; l++) {
|
|
46194
|
-
y[dim * k + l] = fma(x[i * dim + k], x[i * dim + l], y[dim * k + l]);
|
|
46195
|
-
}
|
|
46196
|
-
}
|
|
46197
|
-
}
|
|
46346
|
+
pcpCovariance(n, dim, x, y);
|
|
46198
46347
|
const axis = [0, 1];
|
|
46199
46348
|
if (y[1] !== 0) {
|
|
46200
|
-
|
|
46349
|
+
const radicand = fma(
|
|
46350
|
+
y[3],
|
|
46351
|
+
y[3],
|
|
46352
|
+
fma(-2 * y[0], y[3], fma(y[0], y[0], 4 * y[1] * y[1]))
|
|
46353
|
+
);
|
|
46354
|
+
axis[0] = -(-y[0] + y[3] - Math.sqrt(radicand)) / (2 * y[1]);
|
|
46201
46355
|
axis[1] = 1;
|
|
46202
46356
|
}
|
|
46203
|
-
const dist4 = Math.sqrt(
|
|
46357
|
+
const dist4 = Math.sqrt(fma(axis[0], axis[0], 1));
|
|
46204
46358
|
axis[0] = axis[0] / dist4;
|
|
46205
46359
|
axis[1] = axis[1] / dist4;
|
|
46206
46360
|
for (let i = 0; i < n; i++) {
|
|
46207
|
-
const x0 = x[dim * i]
|
|
46208
|
-
const x1 = -x[dim * i]
|
|
46361
|
+
const x0 = fma(x[dim * i], axis[0], x[dim * i + 1] * axis[1]);
|
|
46362
|
+
const x1 = fma(-x[dim * i], axis[1], x[dim * i + 1] * axis[0]);
|
|
46209
46363
|
x[dim * i] = x0;
|
|
46210
46364
|
x[dim * i + 1] = x1;
|
|
46211
46365
|
}
|
|
@@ -46468,16 +46622,7 @@ function makeCData(dn) {
|
|
|
46468
46622
|
};
|
|
46469
46623
|
}
|
|
46470
46624
|
|
|
46471
|
-
// src/layout/circo/
|
|
46472
|
-
function blockGraph(allEdges3, sn) {
|
|
46473
|
-
const ns = new Set(sn.subGraph.nodes);
|
|
46474
|
-
for (const n of sn.subGraph.nodes) {
|
|
46475
|
-
for (const e of allEdges3) {
|
|
46476
|
-
if (e.tail === n && ns.has(e.head) && !sn.subGraph.edges.includes(e))
|
|
46477
|
-
sn.subGraph.edges.push(e);
|
|
46478
|
-
}
|
|
46479
|
-
}
|
|
46480
|
-
}
|
|
46625
|
+
// src/layout/circo/crossings.ts
|
|
46481
46626
|
function derivedOf(n) {
|
|
46482
46627
|
return n.info.alg?.derivedNode ?? null;
|
|
46483
46628
|
}
|
|
@@ -46488,27 +46633,51 @@ function closeOpenEdge(e, d, opened) {
|
|
|
46488
46633
|
}
|
|
46489
46634
|
return cross2;
|
|
46490
46635
|
}
|
|
46491
|
-
function
|
|
46636
|
+
function agfstedgeLists(edges) {
|
|
46637
|
+
const seq2 = /* @__PURE__ */ new Map();
|
|
46638
|
+
edges.forEach((e, i) => seq2.set(e, i));
|
|
46639
|
+
const by = (end) => (a, b) => end(a).orig.id - end(b).orig.id || seq2.get(a) - seq2.get(b);
|
|
46640
|
+
const out = /* @__PURE__ */ new Map();
|
|
46641
|
+
const inn = /* @__PURE__ */ new Map();
|
|
46492
46642
|
for (const e of edges) {
|
|
46493
|
-
|
|
46494
|
-
|
|
46495
|
-
opened.push(e);
|
|
46496
|
-
}
|
|
46643
|
+
out.set(e.tail, [...out.get(e.tail) ?? [], e]);
|
|
46644
|
+
inn.set(e.head, [...inn.get(e.head) ?? [], e]);
|
|
46497
46645
|
}
|
|
46646
|
+
const lists = /* @__PURE__ */ new Map();
|
|
46647
|
+
for (const d of /* @__PURE__ */ new Set([...out.keys(), ...inn.keys()])) {
|
|
46648
|
+
const o = (out.get(d) ?? []).sort(by((e) => e.head));
|
|
46649
|
+
const i = (inn.get(d) ?? []).sort(by((e) => e.tail));
|
|
46650
|
+
lists.set(d, [...o, ...i]);
|
|
46651
|
+
}
|
|
46652
|
+
return lists;
|
|
46498
46653
|
}
|
|
46499
46654
|
function countCrossings(list, edges) {
|
|
46500
46655
|
for (const e of edges) e.order = 0;
|
|
46501
|
-
const
|
|
46656
|
+
const incident = agfstedgeLists(edges);
|
|
46657
|
+
const opened = /* @__PURE__ */ new Map();
|
|
46502
46658
|
let crossings = 0;
|
|
46503
46659
|
let order = 1;
|
|
46504
46660
|
for (const n of list) {
|
|
46505
46661
|
const d = derivedOf(n);
|
|
46506
46662
|
if (!d) continue;
|
|
46507
|
-
|
|
46508
|
-
|
|
46509
|
-
|
|
46663
|
+
const es = incident.get(d) ?? [];
|
|
46664
|
+
crossings += closeEdgesAt(d, es, opened);
|
|
46665
|
+
for (const e of es) {
|
|
46666
|
+
if (e.order === 0) {
|
|
46667
|
+
e.order = order;
|
|
46668
|
+
opened.set(e, d);
|
|
46669
|
+
}
|
|
46510
46670
|
}
|
|
46511
|
-
|
|
46671
|
+
order++;
|
|
46672
|
+
}
|
|
46673
|
+
return crossings;
|
|
46674
|
+
}
|
|
46675
|
+
function closeEdgesAt(d, es, opened) {
|
|
46676
|
+
let crossings = 0;
|
|
46677
|
+
for (const e of es) {
|
|
46678
|
+
if (e.order === 0) continue;
|
|
46679
|
+
crossings += closeOpenEdge(e, d, opened.keys());
|
|
46680
|
+
if (opened.get(e) === d) opened.delete(e);
|
|
46512
46681
|
}
|
|
46513
46682
|
return crossings;
|
|
46514
46683
|
}
|
|
@@ -46561,6 +46730,17 @@ function spanIncident(dn, edges, ord, seq2) {
|
|
|
46561
46730
|
const inn = edges.filter((e) => e.head === dn).sort((a, b) => (ord.get(a.tail) ?? 0) - (ord.get(b.tail) ?? 0) || (seq2.get(a) ?? 0) - (seq2.get(b) ?? 0));
|
|
46562
46731
|
return [...out, ...inn];
|
|
46563
46732
|
}
|
|
46733
|
+
|
|
46734
|
+
// src/layout/circo/blockpath.ts
|
|
46735
|
+
function blockGraph(allEdges3, sn) {
|
|
46736
|
+
const ns = new Set(sn.subGraph.nodes);
|
|
46737
|
+
for (const n of sn.subGraph.nodes) {
|
|
46738
|
+
for (const e of allEdges3) {
|
|
46739
|
+
if (e.tail === n && ns.has(e.head) && !sn.subGraph.edges.includes(e))
|
|
46740
|
+
sn.subGraph.edges.push(e);
|
|
46741
|
+
}
|
|
46742
|
+
}
|
|
46743
|
+
}
|
|
46564
46744
|
function dfsSpan(sn, map, edges, ord, seq2) {
|
|
46565
46745
|
sn.visited = true;
|
|
46566
46746
|
for (const e of spanIncident(sn.dn, edges, ord, seq2)) {
|
|
@@ -48039,17 +48219,30 @@ function renderEdgeLabels(e, renderer, job) {
|
|
|
48039
48219
|
}
|
|
48040
48220
|
function emitEdgeLabel(lp, id, hs, renderer, job, spl, emitState) {
|
|
48041
48221
|
if (!lp?.set) return;
|
|
48042
|
-
|
|
48043
|
-
|
|
48044
|
-
|
|
48045
|
-
|
|
48046
|
-
|
|
48047
|
-
|
|
48048
|
-
|
|
48049
|
-
|
|
48222
|
+
withObjEmitState(job, emitState ?? 11 /* ELabel */, () => {
|
|
48223
|
+
const open = hs.url !== null || hs.explicit;
|
|
48224
|
+
if (open) openAnchorWith(renderer, job, hs.url, hs.tooltip, hs.target, id);
|
|
48225
|
+
const savedOverride = job.labelEmitOverride;
|
|
48226
|
+
if (emitState !== void 0) job.labelEmitOverride = emitState;
|
|
48227
|
+
try {
|
|
48228
|
+
renderOneLabel(lp, renderer, job);
|
|
48229
|
+
} finally {
|
|
48230
|
+
job.labelEmitOverride = savedOverride;
|
|
48231
|
+
}
|
|
48232
|
+
if (spl) emitAttachment(lp, spl, renderer, job);
|
|
48233
|
+
if (open) renderer.endAnchor?.(job);
|
|
48234
|
+
});
|
|
48235
|
+
}
|
|
48236
|
+
function withObjEmitState(job, lkind, fn) {
|
|
48237
|
+
const obj = job.obj;
|
|
48238
|
+
if (obj === null) {
|
|
48239
|
+
fn();
|
|
48240
|
+
return;
|
|
48050
48241
|
}
|
|
48051
|
-
|
|
48052
|
-
|
|
48242
|
+
const oldEmitState = obj.emitState;
|
|
48243
|
+
obj.emitState = lkind;
|
|
48244
|
+
fn();
|
|
48245
|
+
obj.emitState = oldEmitState;
|
|
48053
48246
|
}
|
|
48054
48247
|
function emitAttachment(lp, spl, renderer, job) {
|
|
48055
48248
|
if (!lp?.set) return;
|
|
@@ -49635,6 +49828,7 @@ var DotWriterBase = class {
|
|
|
49635
49828
|
|
|
49636
49829
|
// src/render/dot/edge-draw.ts
|
|
49637
49830
|
var DEFAULT_COLOR5 = "black";
|
|
49831
|
+
var DEFAULT_LINE_STYLE = ["solid", "setlinewidth(1)"];
|
|
49638
49832
|
function emitArrowOp(buf, op, pen) {
|
|
49639
49833
|
switch (op.kind) {
|
|
49640
49834
|
case "polygon":
|
|
@@ -49658,6 +49852,25 @@ function emitArrowOp(buf, op, pen) {
|
|
|
49658
49852
|
var EdgeDrawBase = class extends DotWriterBase {
|
|
49659
49853
|
/** setlinewidth state per emit_state. @see gvrender_core_dot.c penwidth[] */
|
|
49660
49854
|
penwidth = new Array(12).fill(1);
|
|
49855
|
+
/**
|
|
49856
|
+
* emit_attachment's draw calls (decorate=true): gvrender_set_style with the
|
|
49857
|
+
* default line style sets the obj's rawstyle/pen/penwidth (setlinewidth 1),
|
|
49858
|
+
* gvrender_set_pencolor sets the pen to the label fontcolor (first entry of
|
|
49859
|
+
* a color list), then gvrender_polyline → xdot_polyline emits the style ops
|
|
49860
|
+
* (`S 5 -solid`; setlinewidth is filtered), the pen color and `L 3`.
|
|
49861
|
+
* @see lib/common/emit.c:emit_attachment (1886-1893)
|
|
49862
|
+
* @see lib/gvc/gvrender.c:gvrender_set_style / gvrender_set_pencolor
|
|
49863
|
+
*/
|
|
49864
|
+
attachmentPolyline(pts, pencolor, job) {
|
|
49865
|
+
const obj = job.obj;
|
|
49866
|
+
if (obj !== null) {
|
|
49867
|
+
obj.rawStyle = [...DEFAULT_LINE_STYLE];
|
|
49868
|
+
obj.pen = 3 /* Solid */;
|
|
49869
|
+
obj.penWidth = 1;
|
|
49870
|
+
obj.penColor = resolveRenderColor(pencolor.split(":")[0]);
|
|
49871
|
+
}
|
|
49872
|
+
this.polyline(pts, job);
|
|
49873
|
+
}
|
|
49661
49874
|
/**
|
|
49662
49875
|
* The plain single-colour spline branch of beginEdge — lifted verbatim so the
|
|
49663
49876
|
* four-way spline-kind chain above stays readable; no branch was reordered or
|
|
@@ -50191,19 +50404,6 @@ function emitMulticolorArrows(e, job, headColor, tailColor) {
|
|
|
50191
50404
|
emitArrowOps(headOps, headColor, job, pw, colorOpacity(resolveRenderColor(headColor)));
|
|
50192
50405
|
}
|
|
50193
50406
|
}
|
|
50194
|
-
function overlapLabel(lp, b) {
|
|
50195
|
-
const sx = lp.dimen.x / 2;
|
|
50196
|
-
const sy = lp.dimen.y / 2;
|
|
50197
|
-
const bb = {
|
|
50198
|
-
ll: { x: lp.pos.x - sx, y: lp.pos.y - sy },
|
|
50199
|
-
ur: { x: lp.pos.x + sx, y: lp.pos.y + sy }
|
|
50200
|
-
};
|
|
50201
|
-
return boxOverlap(b, bb);
|
|
50202
|
-
}
|
|
50203
|
-
function edgeHasDrawableContent(e, clip) {
|
|
50204
|
-
const i = e.info;
|
|
50205
|
-
return i.spl !== void 0 || i.label !== void 0 && i.label.set && overlapLabel(i.label, clip) || i.xlabel !== void 0 || i.head_label !== void 0 || i.tail_label !== void 0;
|
|
50206
|
-
}
|
|
50207
50407
|
var SvgRenderer = class {
|
|
50208
50408
|
type = "svg";
|
|
50209
50409
|
/** @see plugin/core/gvplugin_core.c registration table */
|
|
@@ -50468,9 +50668,9 @@ function peg$parse(input, options) {
|
|
|
50468
50668
|
const peg$c0 = "{";
|
|
50469
50669
|
const peg$c1 = "}";
|
|
50470
50670
|
const peg$c2 = ";";
|
|
50471
|
-
const peg$c3 = "
|
|
50472
|
-
const peg$c4 = "
|
|
50473
|
-
const peg$c5 = "
|
|
50671
|
+
const peg$c3 = "=";
|
|
50672
|
+
const peg$c4 = "[";
|
|
50673
|
+
const peg$c5 = "]";
|
|
50474
50674
|
const peg$c6 = ":";
|
|
50475
50675
|
const peg$c7 = "->";
|
|
50476
50676
|
const peg$c8 = "--";
|
|
@@ -50494,32 +50694,30 @@ function peg$parse(input, options) {
|
|
|
50494
50694
|
const peg$r3 = /^[A-Za-z_\x80-\uFFFF]/;
|
|
50495
50695
|
const peg$r4 = /^[A-Za-z_0-9\x80-\uFFFF]/;
|
|
50496
50696
|
const peg$r5 = /^[0-9]/;
|
|
50497
|
-
const peg$r6 = /^[
|
|
50498
|
-
const peg$r7 = /^[
|
|
50499
|
-
const peg$r8 = /^[
|
|
50500
|
-
const peg$r9 = /^[
|
|
50501
|
-
const peg$r10 = /^[
|
|
50502
|
-
const peg$r11 = /^[
|
|
50503
|
-
const peg$r12 = /^[
|
|
50504
|
-
const peg$r13 = /^[
|
|
50505
|
-
const peg$r14 = /^[
|
|
50506
|
-
const peg$r15 = /^[
|
|
50507
|
-
const peg$r16 = /^[
|
|
50508
|
-
const peg$r17 = /^[
|
|
50509
|
-
const peg$r18 = /^[
|
|
50510
|
-
const peg$r19 = /^[
|
|
50511
|
-
const peg$r20 = /^[
|
|
50512
|
-
const peg$r21 = /^[
|
|
50513
|
-
const peg$r22 = /^[
|
|
50514
|
-
const peg$r23 = /^[ \t\r\n]/;
|
|
50515
|
-
const peg$r24 = /^[^\n]/;
|
|
50697
|
+
const peg$r6 = /^[Ss]/;
|
|
50698
|
+
const peg$r7 = /^[Tt]/;
|
|
50699
|
+
const peg$r8 = /^[Rr]/;
|
|
50700
|
+
const peg$r9 = /^[Ii]/;
|
|
50701
|
+
const peg$r10 = /^[Cc]/;
|
|
50702
|
+
const peg$r11 = /^[Gg]/;
|
|
50703
|
+
const peg$r12 = /^[Aa]/;
|
|
50704
|
+
const peg$r13 = /^[Pp]/;
|
|
50705
|
+
const peg$r14 = /^[Hh]/;
|
|
50706
|
+
const peg$r15 = /^[Dd]/;
|
|
50707
|
+
const peg$r16 = /^[Nn]/;
|
|
50708
|
+
const peg$r17 = /^[Oo]/;
|
|
50709
|
+
const peg$r18 = /^[Ee]/;
|
|
50710
|
+
const peg$r19 = /^[Uu]/;
|
|
50711
|
+
const peg$r20 = /^[Bb]/;
|
|
50712
|
+
const peg$r21 = /^[ \t\r\n]/;
|
|
50713
|
+
const peg$r22 = /^[^\n]/;
|
|
50516
50714
|
const peg$e0 = peg$literalExpectation("{", false);
|
|
50517
50715
|
const peg$e1 = peg$literalExpectation("}", false);
|
|
50518
50716
|
const peg$e2 = peg$literalExpectation(";", false);
|
|
50519
|
-
const peg$e3 = peg$literalExpectation("
|
|
50520
|
-
const peg$e4 = peg$literalExpectation("
|
|
50521
|
-
const peg$e5 = peg$
|
|
50522
|
-
const peg$e6 = peg$
|
|
50717
|
+
const peg$e3 = peg$literalExpectation("=", false);
|
|
50718
|
+
const peg$e4 = peg$literalExpectation("[", false);
|
|
50719
|
+
const peg$e5 = peg$literalExpectation("]", false);
|
|
50720
|
+
const peg$e6 = peg$classExpectation([";", ","], false, false, false);
|
|
50523
50721
|
const peg$e7 = peg$literalExpectation(":", false);
|
|
50524
50722
|
const peg$e8 = peg$otherExpectation("edge operator");
|
|
50525
50723
|
const peg$e9 = peg$literalExpectation("->", false);
|
|
@@ -50539,30 +50737,28 @@ function peg$parse(input, options) {
|
|
|
50539
50737
|
const peg$e23 = peg$literalExpectation("-", false);
|
|
50540
50738
|
const peg$e24 = peg$classExpectation([["0", "9"]], false, false, false);
|
|
50541
50739
|
const peg$e25 = peg$literalExpectation(".", false);
|
|
50542
|
-
const peg$e26 = peg$classExpectation(["
|
|
50543
|
-
const peg$e27 = peg$classExpectation(["
|
|
50544
|
-
const peg$e28 = peg$classExpectation(["
|
|
50545
|
-
const peg$e29 = peg$classExpectation(["
|
|
50546
|
-
const peg$e30 = peg$classExpectation(["
|
|
50547
|
-
const peg$e31 = peg$classExpectation(["
|
|
50548
|
-
const peg$e32 = peg$classExpectation(["
|
|
50549
|
-
const peg$e33 = peg$classExpectation(["
|
|
50550
|
-
const peg$e34 = peg$classExpectation(["
|
|
50551
|
-
const peg$e35 = peg$classExpectation(["
|
|
50552
|
-
const peg$e36 = peg$classExpectation(["
|
|
50553
|
-
const peg$e37 = peg$classExpectation(["
|
|
50554
|
-
const peg$e38 = peg$classExpectation(["
|
|
50555
|
-
const peg$e39 = peg$classExpectation(["
|
|
50556
|
-
const peg$e40 = peg$classExpectation(["
|
|
50557
|
-
const peg$e41 = peg$classExpectation(["
|
|
50558
|
-
const peg$e42 = peg$
|
|
50559
|
-
const peg$e43 = peg$
|
|
50560
|
-
const peg$e44 = peg$literalExpectation("
|
|
50561
|
-
const peg$e45 = peg$
|
|
50562
|
-
const peg$e46 = peg$literalExpectation("
|
|
50563
|
-
const peg$e47 = peg$
|
|
50564
|
-
const peg$e48 = peg$literalExpectation("\n", false);
|
|
50565
|
-
const peg$e49 = peg$literalExpectation("#", false);
|
|
50740
|
+
const peg$e26 = peg$classExpectation(["S", "s"], false, false, false);
|
|
50741
|
+
const peg$e27 = peg$classExpectation(["T", "t"], false, false, false);
|
|
50742
|
+
const peg$e28 = peg$classExpectation(["R", "r"], false, false, false);
|
|
50743
|
+
const peg$e29 = peg$classExpectation(["I", "i"], false, false, false);
|
|
50744
|
+
const peg$e30 = peg$classExpectation(["C", "c"], false, false, false);
|
|
50745
|
+
const peg$e31 = peg$classExpectation(["G", "g"], false, false, false);
|
|
50746
|
+
const peg$e32 = peg$classExpectation(["A", "a"], false, false, false);
|
|
50747
|
+
const peg$e33 = peg$classExpectation(["P", "p"], false, false, false);
|
|
50748
|
+
const peg$e34 = peg$classExpectation(["H", "h"], false, false, false);
|
|
50749
|
+
const peg$e35 = peg$classExpectation(["D", "d"], false, false, false);
|
|
50750
|
+
const peg$e36 = peg$classExpectation(["N", "n"], false, false, false);
|
|
50751
|
+
const peg$e37 = peg$classExpectation(["O", "o"], false, false, false);
|
|
50752
|
+
const peg$e38 = peg$classExpectation(["E", "e"], false, false, false);
|
|
50753
|
+
const peg$e39 = peg$classExpectation(["U", "u"], false, false, false);
|
|
50754
|
+
const peg$e40 = peg$classExpectation(["B", "b"], false, false, false);
|
|
50755
|
+
const peg$e41 = peg$classExpectation([" ", " ", "\r", "\n"], false, false, false);
|
|
50756
|
+
const peg$e42 = peg$literalExpectation("/*", false);
|
|
50757
|
+
const peg$e43 = peg$literalExpectation("*/", false);
|
|
50758
|
+
const peg$e44 = peg$literalExpectation("//", false);
|
|
50759
|
+
const peg$e45 = peg$classExpectation(["\n"], true, false, false);
|
|
50760
|
+
const peg$e46 = peg$literalExpectation("\n", false);
|
|
50761
|
+
const peg$e47 = peg$literalExpectation("#", false);
|
|
50566
50762
|
function peg$f0(s, t, id, stmts) {
|
|
50567
50763
|
return {
|
|
50568
50764
|
type: "graph",
|
|
@@ -50605,37 +50801,44 @@ function peg$parse(input, options) {
|
|
|
50605
50801
|
function peg$f11(s) {
|
|
50606
50802
|
return s;
|
|
50607
50803
|
}
|
|
50608
|
-
function peg$f12(t, attrs) {
|
|
50804
|
+
function peg$f12(t, m, attrs) {
|
|
50805
|
+
if (m) console.error("Warning: attribute macros not implemented");
|
|
50609
50806
|
return { type: "attr", target: t, attrs };
|
|
50610
50807
|
}
|
|
50611
50808
|
function peg$f13(a) {
|
|
50612
50809
|
return { type: "assign", key: a.key, value: a.value };
|
|
50613
50810
|
}
|
|
50614
50811
|
function peg$f14() {
|
|
50615
|
-
return
|
|
50812
|
+
return true;
|
|
50616
50813
|
}
|
|
50617
50814
|
function peg$f15() {
|
|
50618
|
-
return
|
|
50815
|
+
return false;
|
|
50619
50816
|
}
|
|
50620
50817
|
function peg$f16() {
|
|
50818
|
+
return "graph";
|
|
50819
|
+
}
|
|
50820
|
+
function peg$f17() {
|
|
50821
|
+
return "node";
|
|
50822
|
+
}
|
|
50823
|
+
function peg$f18() {
|
|
50621
50824
|
return "edge";
|
|
50622
50825
|
}
|
|
50623
|
-
function peg$
|
|
50826
|
+
function peg$f19(defs, rest) {
|
|
50624
50827
|
return defs.concat(rest);
|
|
50625
50828
|
}
|
|
50626
|
-
function peg$
|
|
50829
|
+
function peg$f20() {
|
|
50627
50830
|
return [];
|
|
50628
50831
|
}
|
|
50629
|
-
function peg$
|
|
50832
|
+
function peg$f21(a) {
|
|
50630
50833
|
return a;
|
|
50631
50834
|
}
|
|
50632
|
-
function peg$
|
|
50835
|
+
function peg$f22(pairs) {
|
|
50633
50836
|
return pairs;
|
|
50634
50837
|
}
|
|
50635
|
-
function peg$
|
|
50838
|
+
function peg$f23(k, v) {
|
|
50636
50839
|
return { key: k, value: v };
|
|
50637
50840
|
}
|
|
50638
|
-
function peg$
|
|
50841
|
+
function peg$f24(head, chain, attrs) {
|
|
50639
50842
|
if (chain.length > 0) {
|
|
50640
50843
|
const nodes = [head].concat(chain);
|
|
50641
50844
|
return { type: "edge", nodes, attrs };
|
|
@@ -50646,70 +50849,70 @@ function peg$parse(input, options) {
|
|
|
50646
50849
|
return { type: "node", id: head, attrs };
|
|
50647
50850
|
}
|
|
50648
50851
|
}
|
|
50649
|
-
function peg$
|
|
50852
|
+
function peg$f25(s) {
|
|
50650
50853
|
return s;
|
|
50651
50854
|
}
|
|
50652
|
-
function peg$
|
|
50855
|
+
function peg$f26(n) {
|
|
50653
50856
|
return n;
|
|
50654
50857
|
}
|
|
50655
|
-
function peg$
|
|
50858
|
+
function peg$f27(id, port, compass) {
|
|
50656
50859
|
return { id, port, compass };
|
|
50657
50860
|
}
|
|
50658
|
-
function peg$
|
|
50861
|
+
function peg$f28(id, port) {
|
|
50659
50862
|
return { id, port, compass: null };
|
|
50660
50863
|
}
|
|
50661
|
-
function peg$
|
|
50864
|
+
function peg$f29(id) {
|
|
50662
50865
|
return { id, port: null, compass: null };
|
|
50663
50866
|
}
|
|
50664
|
-
function peg$
|
|
50867
|
+
function peg$f30(s, rest) {
|
|
50665
50868
|
return [s].concat(rest);
|
|
50666
50869
|
}
|
|
50667
|
-
function peg$
|
|
50870
|
+
function peg$f31() {
|
|
50668
50871
|
return [];
|
|
50669
50872
|
}
|
|
50670
|
-
function peg$
|
|
50873
|
+
function peg$f32(id, stmts) {
|
|
50671
50874
|
return { type: "subgraph", id, stmts };
|
|
50672
50875
|
}
|
|
50673
|
-
function peg$
|
|
50876
|
+
function peg$f33(stmts) {
|
|
50674
50877
|
return { type: "subgraph", id: null, stmts };
|
|
50675
50878
|
}
|
|
50676
|
-
function peg$
|
|
50879
|
+
function peg$f34(stmts) {
|
|
50677
50880
|
return { type: "subgraph", id: null, stmts };
|
|
50678
50881
|
}
|
|
50679
|
-
function peg$
|
|
50882
|
+
function peg$f35(first, s) {
|
|
50680
50883
|
return s;
|
|
50681
50884
|
}
|
|
50682
|
-
function peg$
|
|
50885
|
+
function peg$f36(first, rest) {
|
|
50683
50886
|
return rest.length > 0 ? first + rest.join("") : first;
|
|
50684
50887
|
}
|
|
50685
|
-
function peg$
|
|
50888
|
+
function peg$f37(chars) {
|
|
50686
50889
|
return chars.join("");
|
|
50687
50890
|
}
|
|
50688
|
-
function peg$
|
|
50891
|
+
function peg$f38() {
|
|
50689
50892
|
return '"';
|
|
50690
50893
|
}
|
|
50691
|
-
function peg$
|
|
50894
|
+
function peg$f39() {
|
|
50692
50895
|
return "";
|
|
50693
50896
|
}
|
|
50694
|
-
function peg$
|
|
50897
|
+
function peg$f40(c) {
|
|
50695
50898
|
return "\\" + c;
|
|
50696
50899
|
}
|
|
50697
|
-
function peg$
|
|
50900
|
+
function peg$f41(content) {
|
|
50698
50901
|
return "" + content;
|
|
50699
50902
|
}
|
|
50700
|
-
function peg$
|
|
50903
|
+
function peg$f42(chars) {
|
|
50701
50904
|
return chars.join("");
|
|
50702
50905
|
}
|
|
50703
|
-
function peg$
|
|
50906
|
+
function peg$f43(nested2, content) {
|
|
50704
50907
|
return "<" + content + ">";
|
|
50705
50908
|
}
|
|
50706
|
-
function peg$
|
|
50909
|
+
function peg$f44(n) {
|
|
50707
50910
|
return n;
|
|
50708
50911
|
}
|
|
50709
|
-
function peg$
|
|
50912
|
+
function peg$f45(first, rest) {
|
|
50710
50913
|
return first + rest.join("");
|
|
50711
50914
|
}
|
|
50712
|
-
function peg$
|
|
50915
|
+
function peg$f46(s) {
|
|
50713
50916
|
return Array.isArray(s) ? s.flat(Infinity).filter((x) => x !== null && x !== void 0).join("") : String(s);
|
|
50714
50917
|
}
|
|
50715
50918
|
let peg$currPos = options.peg$currPos | 0;
|
|
@@ -51080,15 +51283,21 @@ function peg$parse(input, options) {
|
|
|
51080
51283
|
return s0;
|
|
51081
51284
|
}
|
|
51082
51285
|
function peg$parseAttrStmt() {
|
|
51083
|
-
let s0, s12, s2, s3;
|
|
51286
|
+
let s0, s12, s2, s3, s4;
|
|
51084
51287
|
s0 = peg$currPos;
|
|
51085
51288
|
s12 = peg$parseAttrType();
|
|
51086
51289
|
if (s12 !== peg$FAILED) {
|
|
51087
51290
|
s2 = peg$parse_();
|
|
51088
|
-
s3 = peg$
|
|
51291
|
+
s3 = peg$parseOptMacroName();
|
|
51089
51292
|
if (s3 !== peg$FAILED) {
|
|
51090
|
-
|
|
51091
|
-
|
|
51293
|
+
s4 = peg$parseAttrListReq();
|
|
51294
|
+
if (s4 !== peg$FAILED) {
|
|
51295
|
+
peg$savedPos = s0;
|
|
51296
|
+
s0 = peg$f12(s12, s3, s4);
|
|
51297
|
+
} else {
|
|
51298
|
+
peg$currPos = s0;
|
|
51299
|
+
s0 = peg$FAILED;
|
|
51300
|
+
}
|
|
51092
51301
|
} else {
|
|
51093
51302
|
peg$currPos = s0;
|
|
51094
51303
|
s0 = peg$FAILED;
|
|
@@ -51108,13 +51317,49 @@ function peg$parse(input, options) {
|
|
|
51108
51317
|
}
|
|
51109
51318
|
return s0;
|
|
51110
51319
|
}
|
|
51320
|
+
function peg$parseOptMacroName() {
|
|
51321
|
+
let s0, s12, s2, s3, s4;
|
|
51322
|
+
s0 = peg$currPos;
|
|
51323
|
+
s12 = peg$parseAtom();
|
|
51324
|
+
if (s12 !== peg$FAILED) {
|
|
51325
|
+
s2 = peg$parse_();
|
|
51326
|
+
if (input.charCodeAt(peg$currPos) === 61) {
|
|
51327
|
+
s3 = peg$c3;
|
|
51328
|
+
peg$currPos++;
|
|
51329
|
+
} else {
|
|
51330
|
+
s3 = peg$FAILED;
|
|
51331
|
+
if (peg$silentFails === 0) {
|
|
51332
|
+
peg$fail(peg$e3);
|
|
51333
|
+
}
|
|
51334
|
+
}
|
|
51335
|
+
if (s3 !== peg$FAILED) {
|
|
51336
|
+
s4 = peg$parse_();
|
|
51337
|
+
peg$savedPos = s0;
|
|
51338
|
+
s0 = peg$f14();
|
|
51339
|
+
} else {
|
|
51340
|
+
peg$currPos = s0;
|
|
51341
|
+
s0 = peg$FAILED;
|
|
51342
|
+
}
|
|
51343
|
+
} else {
|
|
51344
|
+
peg$currPos = s0;
|
|
51345
|
+
s0 = peg$FAILED;
|
|
51346
|
+
}
|
|
51347
|
+
if (s0 === peg$FAILED) {
|
|
51348
|
+
s0 = peg$currPos;
|
|
51349
|
+
s12 = "";
|
|
51350
|
+
peg$savedPos = s0;
|
|
51351
|
+
s12 = peg$f15();
|
|
51352
|
+
s0 = s12;
|
|
51353
|
+
}
|
|
51354
|
+
return s0;
|
|
51355
|
+
}
|
|
51111
51356
|
function peg$parseAttrType() {
|
|
51112
51357
|
let s0, s12;
|
|
51113
51358
|
s0 = peg$currPos;
|
|
51114
51359
|
s12 = peg$parseGraphKw();
|
|
51115
51360
|
if (s12 !== peg$FAILED) {
|
|
51116
51361
|
peg$savedPos = s0;
|
|
51117
|
-
s12 = peg$
|
|
51362
|
+
s12 = peg$f16();
|
|
51118
51363
|
}
|
|
51119
51364
|
s0 = s12;
|
|
51120
51365
|
if (s0 === peg$FAILED) {
|
|
@@ -51122,7 +51367,7 @@ function peg$parse(input, options) {
|
|
|
51122
51367
|
s12 = peg$parseNodeKw();
|
|
51123
51368
|
if (s12 !== peg$FAILED) {
|
|
51124
51369
|
peg$savedPos = s0;
|
|
51125
|
-
s12 = peg$
|
|
51370
|
+
s12 = peg$f17();
|
|
51126
51371
|
}
|
|
51127
51372
|
s0 = s12;
|
|
51128
51373
|
if (s0 === peg$FAILED) {
|
|
@@ -51130,7 +51375,7 @@ function peg$parse(input, options) {
|
|
|
51130
51375
|
s12 = peg$parseEdgeKw();
|
|
51131
51376
|
if (s12 !== peg$FAILED) {
|
|
51132
51377
|
peg$savedPos = s0;
|
|
51133
|
-
s12 = peg$
|
|
51378
|
+
s12 = peg$f18();
|
|
51134
51379
|
}
|
|
51135
51380
|
s0 = s12;
|
|
51136
51381
|
}
|
|
@@ -51142,12 +51387,12 @@ function peg$parse(input, options) {
|
|
|
51142
51387
|
s0 = peg$currPos;
|
|
51143
51388
|
s12 = peg$parse_();
|
|
51144
51389
|
if (input.charCodeAt(peg$currPos) === 91) {
|
|
51145
|
-
s2 = peg$
|
|
51390
|
+
s2 = peg$c4;
|
|
51146
51391
|
peg$currPos++;
|
|
51147
51392
|
} else {
|
|
51148
51393
|
s2 = peg$FAILED;
|
|
51149
51394
|
if (peg$silentFails === 0) {
|
|
51150
|
-
peg$fail(peg$
|
|
51395
|
+
peg$fail(peg$e4);
|
|
51151
51396
|
}
|
|
51152
51397
|
}
|
|
51153
51398
|
if (s2 !== peg$FAILED) {
|
|
@@ -51155,19 +51400,19 @@ function peg$parse(input, options) {
|
|
|
51155
51400
|
s4 = peg$parseAttrDefs();
|
|
51156
51401
|
s5 = peg$parse_();
|
|
51157
51402
|
if (input.charCodeAt(peg$currPos) === 93) {
|
|
51158
|
-
s6 = peg$
|
|
51403
|
+
s6 = peg$c5;
|
|
51159
51404
|
peg$currPos++;
|
|
51160
51405
|
} else {
|
|
51161
51406
|
s6 = peg$FAILED;
|
|
51162
51407
|
if (peg$silentFails === 0) {
|
|
51163
|
-
peg$fail(peg$
|
|
51408
|
+
peg$fail(peg$e5);
|
|
51164
51409
|
}
|
|
51165
51410
|
}
|
|
51166
51411
|
if (s6 !== peg$FAILED) {
|
|
51167
51412
|
s7 = peg$parseAttrList();
|
|
51168
51413
|
if (s7 !== peg$FAILED) {
|
|
51169
51414
|
peg$savedPos = s0;
|
|
51170
|
-
s0 = peg$
|
|
51415
|
+
s0 = peg$f19(s4, s7);
|
|
51171
51416
|
} else {
|
|
51172
51417
|
peg$currPos = s0;
|
|
51173
51418
|
s0 = peg$FAILED;
|
|
@@ -51189,7 +51434,7 @@ function peg$parse(input, options) {
|
|
|
51189
51434
|
s0 = peg$currPos;
|
|
51190
51435
|
s12 = "";
|
|
51191
51436
|
peg$savedPos = s0;
|
|
51192
|
-
s12 = peg$
|
|
51437
|
+
s12 = peg$f20();
|
|
51193
51438
|
s0 = s12;
|
|
51194
51439
|
}
|
|
51195
51440
|
return s0;
|
|
@@ -51209,7 +51454,7 @@ function peg$parse(input, options) {
|
|
|
51209
51454
|
} else {
|
|
51210
51455
|
s6 = peg$FAILED;
|
|
51211
51456
|
if (peg$silentFails === 0) {
|
|
51212
|
-
peg$fail(peg$
|
|
51457
|
+
peg$fail(peg$e6);
|
|
51213
51458
|
}
|
|
51214
51459
|
}
|
|
51215
51460
|
if (s6 !== peg$FAILED) {
|
|
@@ -51224,7 +51469,7 @@ function peg$parse(input, options) {
|
|
|
51224
51469
|
s5 = null;
|
|
51225
51470
|
}
|
|
51226
51471
|
peg$savedPos = s2;
|
|
51227
|
-
s2 = peg$
|
|
51472
|
+
s2 = peg$f21(s3);
|
|
51228
51473
|
} else {
|
|
51229
51474
|
peg$currPos = s2;
|
|
51230
51475
|
s2 = peg$FAILED;
|
|
@@ -51242,7 +51487,7 @@ function peg$parse(input, options) {
|
|
|
51242
51487
|
} else {
|
|
51243
51488
|
s6 = peg$FAILED;
|
|
51244
51489
|
if (peg$silentFails === 0) {
|
|
51245
|
-
peg$fail(peg$
|
|
51490
|
+
peg$fail(peg$e6);
|
|
51246
51491
|
}
|
|
51247
51492
|
}
|
|
51248
51493
|
if (s6 !== peg$FAILED) {
|
|
@@ -51257,14 +51502,14 @@ function peg$parse(input, options) {
|
|
|
51257
51502
|
s5 = null;
|
|
51258
51503
|
}
|
|
51259
51504
|
peg$savedPos = s2;
|
|
51260
|
-
s2 = peg$
|
|
51505
|
+
s2 = peg$f21(s3);
|
|
51261
51506
|
} else {
|
|
51262
51507
|
peg$currPos = s2;
|
|
51263
51508
|
s2 = peg$FAILED;
|
|
51264
51509
|
}
|
|
51265
51510
|
}
|
|
51266
51511
|
peg$savedPos = s0;
|
|
51267
|
-
s12 = peg$
|
|
51512
|
+
s12 = peg$f22(s12);
|
|
51268
51513
|
s0 = s12;
|
|
51269
51514
|
return s0;
|
|
51270
51515
|
}
|
|
@@ -51275,12 +51520,12 @@ function peg$parse(input, options) {
|
|
|
51275
51520
|
if (s12 !== peg$FAILED) {
|
|
51276
51521
|
s2 = peg$parse_();
|
|
51277
51522
|
if (input.charCodeAt(peg$currPos) === 61) {
|
|
51278
|
-
s3 = peg$
|
|
51523
|
+
s3 = peg$c3;
|
|
51279
51524
|
peg$currPos++;
|
|
51280
51525
|
} else {
|
|
51281
51526
|
s3 = peg$FAILED;
|
|
51282
51527
|
if (peg$silentFails === 0) {
|
|
51283
|
-
peg$fail(peg$
|
|
51528
|
+
peg$fail(peg$e3);
|
|
51284
51529
|
}
|
|
51285
51530
|
}
|
|
51286
51531
|
if (s3 !== peg$FAILED) {
|
|
@@ -51288,7 +51533,7 @@ function peg$parse(input, options) {
|
|
|
51288
51533
|
s5 = peg$parseAtom();
|
|
51289
51534
|
if (s5 !== peg$FAILED) {
|
|
51290
51535
|
peg$savedPos = s0;
|
|
51291
|
-
s0 = peg$
|
|
51536
|
+
s0 = peg$f23(s12, s5);
|
|
51292
51537
|
} else {
|
|
51293
51538
|
peg$currPos = s0;
|
|
51294
51539
|
s0 = peg$FAILED;
|
|
@@ -51315,7 +51560,7 @@ function peg$parse(input, options) {
|
|
|
51315
51560
|
s5 = peg$parseAttrList();
|
|
51316
51561
|
if (s5 !== peg$FAILED) {
|
|
51317
51562
|
peg$savedPos = s0;
|
|
51318
|
-
s0 = peg$
|
|
51563
|
+
s0 = peg$f24(s12, s3, s5);
|
|
51319
51564
|
} else {
|
|
51320
51565
|
peg$currPos = s0;
|
|
51321
51566
|
s0 = peg$FAILED;
|
|
@@ -51336,7 +51581,7 @@ function peg$parse(input, options) {
|
|
|
51336
51581
|
s12 = peg$parseSubgraph();
|
|
51337
51582
|
if (s12 !== peg$FAILED) {
|
|
51338
51583
|
peg$savedPos = s0;
|
|
51339
|
-
s12 = peg$
|
|
51584
|
+
s12 = peg$f25(s12);
|
|
51340
51585
|
}
|
|
51341
51586
|
s0 = s12;
|
|
51342
51587
|
if (s0 === peg$FAILED) {
|
|
@@ -51344,7 +51589,7 @@ function peg$parse(input, options) {
|
|
|
51344
51589
|
s12 = peg$parseNode();
|
|
51345
51590
|
if (s12 !== peg$FAILED) {
|
|
51346
51591
|
peg$savedPos = s0;
|
|
51347
|
-
s12 = peg$
|
|
51592
|
+
s12 = peg$f26(s12);
|
|
51348
51593
|
}
|
|
51349
51594
|
s0 = s12;
|
|
51350
51595
|
}
|
|
@@ -51384,7 +51629,7 @@ function peg$parse(input, options) {
|
|
|
51384
51629
|
s9 = peg$parseAtom();
|
|
51385
51630
|
if (s9 !== peg$FAILED) {
|
|
51386
51631
|
peg$savedPos = s0;
|
|
51387
|
-
s0 = peg$
|
|
51632
|
+
s0 = peg$f27(s12, s5, s9);
|
|
51388
51633
|
} else {
|
|
51389
51634
|
peg$currPos = s0;
|
|
51390
51635
|
s0 = peg$FAILED;
|
|
@@ -51424,7 +51669,7 @@ function peg$parse(input, options) {
|
|
|
51424
51669
|
s5 = peg$parseAtom();
|
|
51425
51670
|
if (s5 !== peg$FAILED) {
|
|
51426
51671
|
peg$savedPos = s0;
|
|
51427
|
-
s0 = peg$
|
|
51672
|
+
s0 = peg$f28(s12, s5);
|
|
51428
51673
|
} else {
|
|
51429
51674
|
peg$currPos = s0;
|
|
51430
51675
|
s0 = peg$FAILED;
|
|
@@ -51442,7 +51687,7 @@ function peg$parse(input, options) {
|
|
|
51442
51687
|
s12 = peg$parseAtom();
|
|
51443
51688
|
if (s12 !== peg$FAILED) {
|
|
51444
51689
|
peg$savedPos = s0;
|
|
51445
|
-
s12 = peg$
|
|
51690
|
+
s12 = peg$f29(s12);
|
|
51446
51691
|
}
|
|
51447
51692
|
s0 = s12;
|
|
51448
51693
|
}
|
|
@@ -51461,7 +51706,7 @@ function peg$parse(input, options) {
|
|
|
51461
51706
|
s5 = peg$parseEdgeChain();
|
|
51462
51707
|
if (s5 !== peg$FAILED) {
|
|
51463
51708
|
peg$savedPos = s0;
|
|
51464
|
-
s0 = peg$
|
|
51709
|
+
s0 = peg$f30(s3, s5);
|
|
51465
51710
|
} else {
|
|
51466
51711
|
peg$currPos = s0;
|
|
51467
51712
|
s0 = peg$FAILED;
|
|
@@ -51478,7 +51723,7 @@ function peg$parse(input, options) {
|
|
|
51478
51723
|
s0 = peg$currPos;
|
|
51479
51724
|
s12 = "";
|
|
51480
51725
|
peg$savedPos = s0;
|
|
51481
|
-
s12 = peg$
|
|
51726
|
+
s12 = peg$f31();
|
|
51482
51727
|
s0 = s12;
|
|
51483
51728
|
}
|
|
51484
51729
|
return s0;
|
|
@@ -51549,7 +51794,7 @@ function peg$parse(input, options) {
|
|
|
51549
51794
|
}
|
|
51550
51795
|
if (s9 !== peg$FAILED) {
|
|
51551
51796
|
peg$savedPos = s0;
|
|
51552
|
-
s0 = peg$
|
|
51797
|
+
s0 = peg$f32(s3, s7);
|
|
51553
51798
|
} else {
|
|
51554
51799
|
peg$currPos = s0;
|
|
51555
51800
|
s0 = peg$FAILED;
|
|
@@ -51600,7 +51845,7 @@ function peg$parse(input, options) {
|
|
|
51600
51845
|
}
|
|
51601
51846
|
if (s7 !== peg$FAILED) {
|
|
51602
51847
|
peg$savedPos = s0;
|
|
51603
|
-
s0 = peg$
|
|
51848
|
+
s0 = peg$f33(s5);
|
|
51604
51849
|
} else {
|
|
51605
51850
|
peg$currPos = s0;
|
|
51606
51851
|
s0 = peg$FAILED;
|
|
@@ -51644,7 +51889,7 @@ function peg$parse(input, options) {
|
|
|
51644
51889
|
}
|
|
51645
51890
|
if (s5 !== peg$FAILED) {
|
|
51646
51891
|
peg$savedPos = s0;
|
|
51647
|
-
s0 = peg$
|
|
51892
|
+
s0 = peg$f34(s3);
|
|
51648
51893
|
} else {
|
|
51649
51894
|
peg$currPos = s0;
|
|
51650
51895
|
s0 = peg$FAILED;
|
|
@@ -51683,7 +51928,7 @@ function peg$parse(input, options) {
|
|
|
51683
51928
|
s7 = peg$parseQAtom();
|
|
51684
51929
|
if (s7 !== peg$FAILED) {
|
|
51685
51930
|
peg$savedPos = s3;
|
|
51686
|
-
s3 = peg$
|
|
51931
|
+
s3 = peg$f35(s12, s7);
|
|
51687
51932
|
} else {
|
|
51688
51933
|
peg$currPos = s3;
|
|
51689
51934
|
s3 = peg$FAILED;
|
|
@@ -51710,7 +51955,7 @@ function peg$parse(input, options) {
|
|
|
51710
51955
|
s7 = peg$parseQAtom();
|
|
51711
51956
|
if (s7 !== peg$FAILED) {
|
|
51712
51957
|
peg$savedPos = s3;
|
|
51713
|
-
s3 = peg$
|
|
51958
|
+
s3 = peg$f35(s12, s7);
|
|
51714
51959
|
} else {
|
|
51715
51960
|
peg$currPos = s3;
|
|
51716
51961
|
s3 = peg$FAILED;
|
|
@@ -51721,7 +51966,7 @@ function peg$parse(input, options) {
|
|
|
51721
51966
|
}
|
|
51722
51967
|
}
|
|
51723
51968
|
peg$savedPos = s0;
|
|
51724
|
-
s0 = peg$
|
|
51969
|
+
s0 = peg$f36(s12, s2);
|
|
51725
51970
|
} else {
|
|
51726
51971
|
peg$currPos = s0;
|
|
51727
51972
|
s0 = peg$FAILED;
|
|
@@ -51769,7 +52014,7 @@ function peg$parse(input, options) {
|
|
|
51769
52014
|
}
|
|
51770
52015
|
if (s3 !== peg$FAILED) {
|
|
51771
52016
|
peg$savedPos = s0;
|
|
51772
|
-
s0 = peg$
|
|
52017
|
+
s0 = peg$f37(s2);
|
|
51773
52018
|
} else {
|
|
51774
52019
|
peg$currPos = s0;
|
|
51775
52020
|
s0 = peg$FAILED;
|
|
@@ -51794,7 +52039,7 @@ function peg$parse(input, options) {
|
|
|
51794
52039
|
}
|
|
51795
52040
|
if (s12 !== peg$FAILED) {
|
|
51796
52041
|
peg$savedPos = s0;
|
|
51797
|
-
s12 = peg$
|
|
52042
|
+
s12 = peg$f38();
|
|
51798
52043
|
}
|
|
51799
52044
|
s0 = s12;
|
|
51800
52045
|
if (s0 === peg$FAILED) {
|
|
@@ -51810,7 +52055,7 @@ function peg$parse(input, options) {
|
|
|
51810
52055
|
}
|
|
51811
52056
|
if (s12 !== peg$FAILED) {
|
|
51812
52057
|
peg$savedPos = s0;
|
|
51813
|
-
s12 = peg$
|
|
52058
|
+
s12 = peg$f39();
|
|
51814
52059
|
}
|
|
51815
52060
|
s0 = s12;
|
|
51816
52061
|
if (s0 === peg$FAILED) {
|
|
@@ -51836,7 +52081,7 @@ function peg$parse(input, options) {
|
|
|
51836
52081
|
}
|
|
51837
52082
|
if (s2 !== peg$FAILED) {
|
|
51838
52083
|
peg$savedPos = s0;
|
|
51839
|
-
s0 = peg$
|
|
52084
|
+
s0 = peg$f40(s2);
|
|
51840
52085
|
} else {
|
|
51841
52086
|
peg$currPos = s0;
|
|
51842
52087
|
s0 = peg$FAILED;
|
|
@@ -51885,7 +52130,7 @@ function peg$parse(input, options) {
|
|
|
51885
52130
|
}
|
|
51886
52131
|
if (s3 !== peg$FAILED) {
|
|
51887
52132
|
peg$savedPos = s0;
|
|
51888
|
-
s0 = peg$
|
|
52133
|
+
s0 = peg$f41(s2);
|
|
51889
52134
|
} else {
|
|
51890
52135
|
peg$currPos = s0;
|
|
51891
52136
|
s0 = peg$FAILED;
|
|
@@ -51906,7 +52151,7 @@ function peg$parse(input, options) {
|
|
|
51906
52151
|
s2 = peg$parseHtmlChar();
|
|
51907
52152
|
}
|
|
51908
52153
|
peg$savedPos = s0;
|
|
51909
|
-
s12 = peg$
|
|
52154
|
+
s12 = peg$f42(s12);
|
|
51910
52155
|
s0 = s12;
|
|
51911
52156
|
return s0;
|
|
51912
52157
|
}
|
|
@@ -51936,7 +52181,7 @@ function peg$parse(input, options) {
|
|
|
51936
52181
|
}
|
|
51937
52182
|
if (s3 !== peg$FAILED) {
|
|
51938
52183
|
peg$savedPos = s0;
|
|
51939
|
-
s0 = peg$
|
|
52184
|
+
s0 = peg$f43(s12, s2);
|
|
51940
52185
|
} else {
|
|
51941
52186
|
peg$currPos = s0;
|
|
51942
52187
|
s0 = peg$FAILED;
|
|
@@ -51981,7 +52226,7 @@ function peg$parse(input, options) {
|
|
|
51981
52226
|
s2 = peg$parseName();
|
|
51982
52227
|
if (s2 !== peg$FAILED) {
|
|
51983
52228
|
peg$savedPos = s0;
|
|
51984
|
-
s0 = peg$
|
|
52229
|
+
s0 = peg$f44(s2);
|
|
51985
52230
|
} else {
|
|
51986
52231
|
peg$currPos = s0;
|
|
51987
52232
|
s0 = peg$FAILED;
|
|
@@ -52029,7 +52274,7 @@ function peg$parse(input, options) {
|
|
|
52029
52274
|
}
|
|
52030
52275
|
}
|
|
52031
52276
|
peg$savedPos = s0;
|
|
52032
|
-
s0 = peg$
|
|
52277
|
+
s0 = peg$f45(s12, s2);
|
|
52033
52278
|
} else {
|
|
52034
52279
|
peg$currPos = s0;
|
|
52035
52280
|
s0 = peg$FAILED;
|
|
@@ -52179,70 +52424,7 @@ function peg$parse(input, options) {
|
|
|
52179
52424
|
}
|
|
52180
52425
|
}
|
|
52181
52426
|
if (s3 !== peg$FAILED) {
|
|
52182
|
-
|
|
52183
|
-
s5 = input.charAt(peg$currPos);
|
|
52184
|
-
if (peg$r6.test(s5)) {
|
|
52185
|
-
peg$currPos++;
|
|
52186
|
-
} else {
|
|
52187
|
-
s5 = peg$FAILED;
|
|
52188
|
-
if (peg$silentFails === 0) {
|
|
52189
|
-
peg$fail(peg$e26);
|
|
52190
|
-
}
|
|
52191
|
-
}
|
|
52192
|
-
if (s5 !== peg$FAILED) {
|
|
52193
|
-
s6 = input.charAt(peg$currPos);
|
|
52194
|
-
if (peg$r7.test(s6)) {
|
|
52195
|
-
peg$currPos++;
|
|
52196
|
-
} else {
|
|
52197
|
-
s6 = peg$FAILED;
|
|
52198
|
-
if (peg$silentFails === 0) {
|
|
52199
|
-
peg$fail(peg$e27);
|
|
52200
|
-
}
|
|
52201
|
-
}
|
|
52202
|
-
if (s6 === peg$FAILED) {
|
|
52203
|
-
s6 = null;
|
|
52204
|
-
}
|
|
52205
|
-
s7 = [];
|
|
52206
|
-
s8 = input.charAt(peg$currPos);
|
|
52207
|
-
if (peg$r5.test(s8)) {
|
|
52208
|
-
peg$currPos++;
|
|
52209
|
-
} else {
|
|
52210
|
-
s8 = peg$FAILED;
|
|
52211
|
-
if (peg$silentFails === 0) {
|
|
52212
|
-
peg$fail(peg$e24);
|
|
52213
|
-
}
|
|
52214
|
-
}
|
|
52215
|
-
if (s8 !== peg$FAILED) {
|
|
52216
|
-
while (s8 !== peg$FAILED) {
|
|
52217
|
-
s7.push(s8);
|
|
52218
|
-
s8 = input.charAt(peg$currPos);
|
|
52219
|
-
if (peg$r5.test(s8)) {
|
|
52220
|
-
peg$currPos++;
|
|
52221
|
-
} else {
|
|
52222
|
-
s8 = peg$FAILED;
|
|
52223
|
-
if (peg$silentFails === 0) {
|
|
52224
|
-
peg$fail(peg$e24);
|
|
52225
|
-
}
|
|
52226
|
-
}
|
|
52227
|
-
}
|
|
52228
|
-
} else {
|
|
52229
|
-
s7 = peg$FAILED;
|
|
52230
|
-
}
|
|
52231
|
-
if (s7 !== peg$FAILED) {
|
|
52232
|
-
s5 = [s5, s6, s7];
|
|
52233
|
-
s4 = s5;
|
|
52234
|
-
} else {
|
|
52235
|
-
peg$currPos = s4;
|
|
52236
|
-
s4 = peg$FAILED;
|
|
52237
|
-
}
|
|
52238
|
-
} else {
|
|
52239
|
-
peg$currPos = s4;
|
|
52240
|
-
s4 = peg$FAILED;
|
|
52241
|
-
}
|
|
52242
|
-
if (s4 === peg$FAILED) {
|
|
52243
|
-
s4 = null;
|
|
52244
|
-
}
|
|
52245
|
-
s2 = [s2, s3, s4];
|
|
52427
|
+
s2 = [s2, s3];
|
|
52246
52428
|
s12 = s2;
|
|
52247
52429
|
} else {
|
|
52248
52430
|
peg$currPos = s12;
|
|
@@ -52250,7 +52432,7 @@ function peg$parse(input, options) {
|
|
|
52250
52432
|
}
|
|
52251
52433
|
if (s12 !== peg$FAILED) {
|
|
52252
52434
|
peg$savedPos = s0;
|
|
52253
|
-
s12 = peg$
|
|
52435
|
+
s12 = peg$f46(s12);
|
|
52254
52436
|
}
|
|
52255
52437
|
s0 = s12;
|
|
52256
52438
|
return s0;
|
|
@@ -52259,62 +52441,62 @@ function peg$parse(input, options) {
|
|
|
52259
52441
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8;
|
|
52260
52442
|
s0 = peg$currPos;
|
|
52261
52443
|
s12 = input.charAt(peg$currPos);
|
|
52262
|
-
if (peg$
|
|
52444
|
+
if (peg$r6.test(s12)) {
|
|
52263
52445
|
peg$currPos++;
|
|
52264
52446
|
} else {
|
|
52265
52447
|
s12 = peg$FAILED;
|
|
52266
52448
|
if (peg$silentFails === 0) {
|
|
52267
|
-
peg$fail(peg$
|
|
52449
|
+
peg$fail(peg$e26);
|
|
52268
52450
|
}
|
|
52269
52451
|
}
|
|
52270
52452
|
if (s12 !== peg$FAILED) {
|
|
52271
52453
|
s2 = input.charAt(peg$currPos);
|
|
52272
|
-
if (peg$
|
|
52454
|
+
if (peg$r7.test(s2)) {
|
|
52273
52455
|
peg$currPos++;
|
|
52274
52456
|
} else {
|
|
52275
52457
|
s2 = peg$FAILED;
|
|
52276
52458
|
if (peg$silentFails === 0) {
|
|
52277
|
-
peg$fail(peg$
|
|
52459
|
+
peg$fail(peg$e27);
|
|
52278
52460
|
}
|
|
52279
52461
|
}
|
|
52280
52462
|
if (s2 !== peg$FAILED) {
|
|
52281
52463
|
s3 = input.charAt(peg$currPos);
|
|
52282
|
-
if (peg$
|
|
52464
|
+
if (peg$r8.test(s3)) {
|
|
52283
52465
|
peg$currPos++;
|
|
52284
52466
|
} else {
|
|
52285
52467
|
s3 = peg$FAILED;
|
|
52286
52468
|
if (peg$silentFails === 0) {
|
|
52287
|
-
peg$fail(peg$
|
|
52469
|
+
peg$fail(peg$e28);
|
|
52288
52470
|
}
|
|
52289
52471
|
}
|
|
52290
52472
|
if (s3 !== peg$FAILED) {
|
|
52291
52473
|
s4 = input.charAt(peg$currPos);
|
|
52292
|
-
if (peg$
|
|
52474
|
+
if (peg$r9.test(s4)) {
|
|
52293
52475
|
peg$currPos++;
|
|
52294
52476
|
} else {
|
|
52295
52477
|
s4 = peg$FAILED;
|
|
52296
52478
|
if (peg$silentFails === 0) {
|
|
52297
|
-
peg$fail(peg$
|
|
52479
|
+
peg$fail(peg$e29);
|
|
52298
52480
|
}
|
|
52299
52481
|
}
|
|
52300
52482
|
if (s4 !== peg$FAILED) {
|
|
52301
52483
|
s5 = input.charAt(peg$currPos);
|
|
52302
|
-
if (peg$
|
|
52484
|
+
if (peg$r10.test(s5)) {
|
|
52303
52485
|
peg$currPos++;
|
|
52304
52486
|
} else {
|
|
52305
52487
|
s5 = peg$FAILED;
|
|
52306
52488
|
if (peg$silentFails === 0) {
|
|
52307
|
-
peg$fail(peg$
|
|
52489
|
+
peg$fail(peg$e30);
|
|
52308
52490
|
}
|
|
52309
52491
|
}
|
|
52310
52492
|
if (s5 !== peg$FAILED) {
|
|
52311
52493
|
s6 = input.charAt(peg$currPos);
|
|
52312
|
-
if (peg$
|
|
52494
|
+
if (peg$r7.test(s6)) {
|
|
52313
52495
|
peg$currPos++;
|
|
52314
52496
|
} else {
|
|
52315
52497
|
s6 = peg$FAILED;
|
|
52316
52498
|
if (peg$silentFails === 0) {
|
|
52317
|
-
peg$fail(peg$
|
|
52499
|
+
peg$fail(peg$e27);
|
|
52318
52500
|
}
|
|
52319
52501
|
}
|
|
52320
52502
|
if (s6 !== peg$FAILED) {
|
|
@@ -52365,52 +52547,52 @@ function peg$parse(input, options) {
|
|
|
52365
52547
|
let s0, s12, s2, s3, s4, s5, s6, s7;
|
|
52366
52548
|
s0 = peg$currPos;
|
|
52367
52549
|
s12 = input.charAt(peg$currPos);
|
|
52368
|
-
if (peg$
|
|
52550
|
+
if (peg$r11.test(s12)) {
|
|
52369
52551
|
peg$currPos++;
|
|
52370
52552
|
} else {
|
|
52371
52553
|
s12 = peg$FAILED;
|
|
52372
52554
|
if (peg$silentFails === 0) {
|
|
52373
|
-
peg$fail(peg$
|
|
52555
|
+
peg$fail(peg$e31);
|
|
52374
52556
|
}
|
|
52375
52557
|
}
|
|
52376
52558
|
if (s12 !== peg$FAILED) {
|
|
52377
52559
|
s2 = input.charAt(peg$currPos);
|
|
52378
|
-
if (peg$
|
|
52560
|
+
if (peg$r8.test(s2)) {
|
|
52379
52561
|
peg$currPos++;
|
|
52380
52562
|
} else {
|
|
52381
52563
|
s2 = peg$FAILED;
|
|
52382
52564
|
if (peg$silentFails === 0) {
|
|
52383
|
-
peg$fail(peg$
|
|
52565
|
+
peg$fail(peg$e28);
|
|
52384
52566
|
}
|
|
52385
52567
|
}
|
|
52386
52568
|
if (s2 !== peg$FAILED) {
|
|
52387
52569
|
s3 = input.charAt(peg$currPos);
|
|
52388
|
-
if (peg$
|
|
52570
|
+
if (peg$r12.test(s3)) {
|
|
52389
52571
|
peg$currPos++;
|
|
52390
52572
|
} else {
|
|
52391
52573
|
s3 = peg$FAILED;
|
|
52392
52574
|
if (peg$silentFails === 0) {
|
|
52393
|
-
peg$fail(peg$
|
|
52575
|
+
peg$fail(peg$e32);
|
|
52394
52576
|
}
|
|
52395
52577
|
}
|
|
52396
52578
|
if (s3 !== peg$FAILED) {
|
|
52397
52579
|
s4 = input.charAt(peg$currPos);
|
|
52398
|
-
if (peg$
|
|
52580
|
+
if (peg$r13.test(s4)) {
|
|
52399
52581
|
peg$currPos++;
|
|
52400
52582
|
} else {
|
|
52401
52583
|
s4 = peg$FAILED;
|
|
52402
52584
|
if (peg$silentFails === 0) {
|
|
52403
|
-
peg$fail(peg$
|
|
52585
|
+
peg$fail(peg$e33);
|
|
52404
52586
|
}
|
|
52405
52587
|
}
|
|
52406
52588
|
if (s4 !== peg$FAILED) {
|
|
52407
52589
|
s5 = input.charAt(peg$currPos);
|
|
52408
|
-
if (peg$
|
|
52590
|
+
if (peg$r14.test(s5)) {
|
|
52409
52591
|
peg$currPos++;
|
|
52410
52592
|
} else {
|
|
52411
52593
|
s5 = peg$FAILED;
|
|
52412
52594
|
if (peg$silentFails === 0) {
|
|
52413
|
-
peg$fail(peg$
|
|
52595
|
+
peg$fail(peg$e34);
|
|
52414
52596
|
}
|
|
52415
52597
|
}
|
|
52416
52598
|
if (s5 !== peg$FAILED) {
|
|
@@ -52457,72 +52639,72 @@ function peg$parse(input, options) {
|
|
|
52457
52639
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8, s9;
|
|
52458
52640
|
s0 = peg$currPos;
|
|
52459
52641
|
s12 = input.charAt(peg$currPos);
|
|
52460
|
-
if (peg$
|
|
52642
|
+
if (peg$r15.test(s12)) {
|
|
52461
52643
|
peg$currPos++;
|
|
52462
52644
|
} else {
|
|
52463
52645
|
s12 = peg$FAILED;
|
|
52464
52646
|
if (peg$silentFails === 0) {
|
|
52465
|
-
peg$fail(peg$
|
|
52647
|
+
peg$fail(peg$e35);
|
|
52466
52648
|
}
|
|
52467
52649
|
}
|
|
52468
52650
|
if (s12 !== peg$FAILED) {
|
|
52469
52651
|
s2 = input.charAt(peg$currPos);
|
|
52470
|
-
if (peg$
|
|
52652
|
+
if (peg$r9.test(s2)) {
|
|
52471
52653
|
peg$currPos++;
|
|
52472
52654
|
} else {
|
|
52473
52655
|
s2 = peg$FAILED;
|
|
52474
52656
|
if (peg$silentFails === 0) {
|
|
52475
|
-
peg$fail(peg$
|
|
52657
|
+
peg$fail(peg$e29);
|
|
52476
52658
|
}
|
|
52477
52659
|
}
|
|
52478
52660
|
if (s2 !== peg$FAILED) {
|
|
52479
52661
|
s3 = input.charAt(peg$currPos);
|
|
52480
|
-
if (peg$
|
|
52662
|
+
if (peg$r11.test(s3)) {
|
|
52481
52663
|
peg$currPos++;
|
|
52482
52664
|
} else {
|
|
52483
52665
|
s3 = peg$FAILED;
|
|
52484
52666
|
if (peg$silentFails === 0) {
|
|
52485
|
-
peg$fail(peg$
|
|
52667
|
+
peg$fail(peg$e31);
|
|
52486
52668
|
}
|
|
52487
52669
|
}
|
|
52488
52670
|
if (s3 !== peg$FAILED) {
|
|
52489
52671
|
s4 = input.charAt(peg$currPos);
|
|
52490
|
-
if (peg$
|
|
52672
|
+
if (peg$r8.test(s4)) {
|
|
52491
52673
|
peg$currPos++;
|
|
52492
52674
|
} else {
|
|
52493
52675
|
s4 = peg$FAILED;
|
|
52494
52676
|
if (peg$silentFails === 0) {
|
|
52495
|
-
peg$fail(peg$
|
|
52677
|
+
peg$fail(peg$e28);
|
|
52496
52678
|
}
|
|
52497
52679
|
}
|
|
52498
52680
|
if (s4 !== peg$FAILED) {
|
|
52499
52681
|
s5 = input.charAt(peg$currPos);
|
|
52500
|
-
if (peg$
|
|
52682
|
+
if (peg$r12.test(s5)) {
|
|
52501
52683
|
peg$currPos++;
|
|
52502
52684
|
} else {
|
|
52503
52685
|
s5 = peg$FAILED;
|
|
52504
52686
|
if (peg$silentFails === 0) {
|
|
52505
|
-
peg$fail(peg$
|
|
52687
|
+
peg$fail(peg$e32);
|
|
52506
52688
|
}
|
|
52507
52689
|
}
|
|
52508
52690
|
if (s5 !== peg$FAILED) {
|
|
52509
52691
|
s6 = input.charAt(peg$currPos);
|
|
52510
|
-
if (peg$
|
|
52692
|
+
if (peg$r13.test(s6)) {
|
|
52511
52693
|
peg$currPos++;
|
|
52512
52694
|
} else {
|
|
52513
52695
|
s6 = peg$FAILED;
|
|
52514
52696
|
if (peg$silentFails === 0) {
|
|
52515
|
-
peg$fail(peg$
|
|
52697
|
+
peg$fail(peg$e33);
|
|
52516
52698
|
}
|
|
52517
52699
|
}
|
|
52518
52700
|
if (s6 !== peg$FAILED) {
|
|
52519
52701
|
s7 = input.charAt(peg$currPos);
|
|
52520
|
-
if (peg$
|
|
52702
|
+
if (peg$r14.test(s7)) {
|
|
52521
52703
|
peg$currPos++;
|
|
52522
52704
|
} else {
|
|
52523
52705
|
s7 = peg$FAILED;
|
|
52524
52706
|
if (peg$silentFails === 0) {
|
|
52525
|
-
peg$fail(peg$
|
|
52707
|
+
peg$fail(peg$e34);
|
|
52526
52708
|
}
|
|
52527
52709
|
}
|
|
52528
52710
|
if (s7 !== peg$FAILED) {
|
|
@@ -52577,42 +52759,42 @@ function peg$parse(input, options) {
|
|
|
52577
52759
|
let s0, s12, s2, s3, s4, s5, s6;
|
|
52578
52760
|
s0 = peg$currPos;
|
|
52579
52761
|
s12 = input.charAt(peg$currPos);
|
|
52580
|
-
if (peg$
|
|
52762
|
+
if (peg$r16.test(s12)) {
|
|
52581
52763
|
peg$currPos++;
|
|
52582
52764
|
} else {
|
|
52583
52765
|
s12 = peg$FAILED;
|
|
52584
52766
|
if (peg$silentFails === 0) {
|
|
52585
|
-
peg$fail(peg$
|
|
52767
|
+
peg$fail(peg$e36);
|
|
52586
52768
|
}
|
|
52587
52769
|
}
|
|
52588
52770
|
if (s12 !== peg$FAILED) {
|
|
52589
52771
|
s2 = input.charAt(peg$currPos);
|
|
52590
|
-
if (peg$
|
|
52772
|
+
if (peg$r17.test(s2)) {
|
|
52591
52773
|
peg$currPos++;
|
|
52592
52774
|
} else {
|
|
52593
52775
|
s2 = peg$FAILED;
|
|
52594
52776
|
if (peg$silentFails === 0) {
|
|
52595
|
-
peg$fail(peg$
|
|
52777
|
+
peg$fail(peg$e37);
|
|
52596
52778
|
}
|
|
52597
52779
|
}
|
|
52598
52780
|
if (s2 !== peg$FAILED) {
|
|
52599
52781
|
s3 = input.charAt(peg$currPos);
|
|
52600
|
-
if (peg$
|
|
52782
|
+
if (peg$r15.test(s3)) {
|
|
52601
52783
|
peg$currPos++;
|
|
52602
52784
|
} else {
|
|
52603
52785
|
s3 = peg$FAILED;
|
|
52604
52786
|
if (peg$silentFails === 0) {
|
|
52605
|
-
peg$fail(peg$
|
|
52787
|
+
peg$fail(peg$e35);
|
|
52606
52788
|
}
|
|
52607
52789
|
}
|
|
52608
52790
|
if (s3 !== peg$FAILED) {
|
|
52609
52791
|
s4 = input.charAt(peg$currPos);
|
|
52610
|
-
if (peg$
|
|
52792
|
+
if (peg$r18.test(s4)) {
|
|
52611
52793
|
peg$currPos++;
|
|
52612
52794
|
} else {
|
|
52613
52795
|
s4 = peg$FAILED;
|
|
52614
52796
|
if (peg$silentFails === 0) {
|
|
52615
|
-
peg$fail(peg$
|
|
52797
|
+
peg$fail(peg$e38);
|
|
52616
52798
|
}
|
|
52617
52799
|
}
|
|
52618
52800
|
if (s4 !== peg$FAILED) {
|
|
@@ -52655,42 +52837,42 @@ function peg$parse(input, options) {
|
|
|
52655
52837
|
let s0, s12, s2, s3, s4, s5, s6;
|
|
52656
52838
|
s0 = peg$currPos;
|
|
52657
52839
|
s12 = input.charAt(peg$currPos);
|
|
52658
|
-
if (peg$
|
|
52840
|
+
if (peg$r18.test(s12)) {
|
|
52659
52841
|
peg$currPos++;
|
|
52660
52842
|
} else {
|
|
52661
52843
|
s12 = peg$FAILED;
|
|
52662
52844
|
if (peg$silentFails === 0) {
|
|
52663
|
-
peg$fail(peg$
|
|
52845
|
+
peg$fail(peg$e38);
|
|
52664
52846
|
}
|
|
52665
52847
|
}
|
|
52666
52848
|
if (s12 !== peg$FAILED) {
|
|
52667
52849
|
s2 = input.charAt(peg$currPos);
|
|
52668
|
-
if (peg$
|
|
52850
|
+
if (peg$r15.test(s2)) {
|
|
52669
52851
|
peg$currPos++;
|
|
52670
52852
|
} else {
|
|
52671
52853
|
s2 = peg$FAILED;
|
|
52672
52854
|
if (peg$silentFails === 0) {
|
|
52673
|
-
peg$fail(peg$
|
|
52855
|
+
peg$fail(peg$e35);
|
|
52674
52856
|
}
|
|
52675
52857
|
}
|
|
52676
52858
|
if (s2 !== peg$FAILED) {
|
|
52677
52859
|
s3 = input.charAt(peg$currPos);
|
|
52678
|
-
if (peg$
|
|
52860
|
+
if (peg$r11.test(s3)) {
|
|
52679
52861
|
peg$currPos++;
|
|
52680
52862
|
} else {
|
|
52681
52863
|
s3 = peg$FAILED;
|
|
52682
52864
|
if (peg$silentFails === 0) {
|
|
52683
|
-
peg$fail(peg$
|
|
52865
|
+
peg$fail(peg$e31);
|
|
52684
52866
|
}
|
|
52685
52867
|
}
|
|
52686
52868
|
if (s3 !== peg$FAILED) {
|
|
52687
52869
|
s4 = input.charAt(peg$currPos);
|
|
52688
|
-
if (peg$
|
|
52870
|
+
if (peg$r18.test(s4)) {
|
|
52689
52871
|
peg$currPos++;
|
|
52690
52872
|
} else {
|
|
52691
52873
|
s4 = peg$FAILED;
|
|
52692
52874
|
if (peg$silentFails === 0) {
|
|
52693
|
-
peg$fail(peg$
|
|
52875
|
+
peg$fail(peg$e38);
|
|
52694
52876
|
}
|
|
52695
52877
|
}
|
|
52696
52878
|
if (s4 !== peg$FAILED) {
|
|
@@ -52733,82 +52915,82 @@ function peg$parse(input, options) {
|
|
|
52733
52915
|
let s0, s12, s2, s3, s4, s5, s6, s7, s8, s9, s10;
|
|
52734
52916
|
s0 = peg$currPos;
|
|
52735
52917
|
s12 = input.charAt(peg$currPos);
|
|
52736
|
-
if (peg$
|
|
52918
|
+
if (peg$r6.test(s12)) {
|
|
52737
52919
|
peg$currPos++;
|
|
52738
52920
|
} else {
|
|
52739
52921
|
s12 = peg$FAILED;
|
|
52740
52922
|
if (peg$silentFails === 0) {
|
|
52741
|
-
peg$fail(peg$
|
|
52923
|
+
peg$fail(peg$e26);
|
|
52742
52924
|
}
|
|
52743
52925
|
}
|
|
52744
52926
|
if (s12 !== peg$FAILED) {
|
|
52745
52927
|
s2 = input.charAt(peg$currPos);
|
|
52746
|
-
if (peg$
|
|
52928
|
+
if (peg$r19.test(s2)) {
|
|
52747
52929
|
peg$currPos++;
|
|
52748
52930
|
} else {
|
|
52749
52931
|
s2 = peg$FAILED;
|
|
52750
52932
|
if (peg$silentFails === 0) {
|
|
52751
|
-
peg$fail(peg$
|
|
52933
|
+
peg$fail(peg$e39);
|
|
52752
52934
|
}
|
|
52753
52935
|
}
|
|
52754
52936
|
if (s2 !== peg$FAILED) {
|
|
52755
52937
|
s3 = input.charAt(peg$currPos);
|
|
52756
|
-
if (peg$
|
|
52938
|
+
if (peg$r20.test(s3)) {
|
|
52757
52939
|
peg$currPos++;
|
|
52758
52940
|
} else {
|
|
52759
52941
|
s3 = peg$FAILED;
|
|
52760
52942
|
if (peg$silentFails === 0) {
|
|
52761
|
-
peg$fail(peg$
|
|
52943
|
+
peg$fail(peg$e40);
|
|
52762
52944
|
}
|
|
52763
52945
|
}
|
|
52764
52946
|
if (s3 !== peg$FAILED) {
|
|
52765
52947
|
s4 = input.charAt(peg$currPos);
|
|
52766
|
-
if (peg$
|
|
52948
|
+
if (peg$r11.test(s4)) {
|
|
52767
52949
|
peg$currPos++;
|
|
52768
52950
|
} else {
|
|
52769
52951
|
s4 = peg$FAILED;
|
|
52770
52952
|
if (peg$silentFails === 0) {
|
|
52771
|
-
peg$fail(peg$
|
|
52953
|
+
peg$fail(peg$e31);
|
|
52772
52954
|
}
|
|
52773
52955
|
}
|
|
52774
52956
|
if (s4 !== peg$FAILED) {
|
|
52775
52957
|
s5 = input.charAt(peg$currPos);
|
|
52776
|
-
if (peg$
|
|
52958
|
+
if (peg$r8.test(s5)) {
|
|
52777
52959
|
peg$currPos++;
|
|
52778
52960
|
} else {
|
|
52779
52961
|
s5 = peg$FAILED;
|
|
52780
52962
|
if (peg$silentFails === 0) {
|
|
52781
|
-
peg$fail(peg$
|
|
52963
|
+
peg$fail(peg$e28);
|
|
52782
52964
|
}
|
|
52783
52965
|
}
|
|
52784
52966
|
if (s5 !== peg$FAILED) {
|
|
52785
52967
|
s6 = input.charAt(peg$currPos);
|
|
52786
|
-
if (peg$
|
|
52968
|
+
if (peg$r12.test(s6)) {
|
|
52787
52969
|
peg$currPos++;
|
|
52788
52970
|
} else {
|
|
52789
52971
|
s6 = peg$FAILED;
|
|
52790
52972
|
if (peg$silentFails === 0) {
|
|
52791
|
-
peg$fail(peg$
|
|
52973
|
+
peg$fail(peg$e32);
|
|
52792
52974
|
}
|
|
52793
52975
|
}
|
|
52794
52976
|
if (s6 !== peg$FAILED) {
|
|
52795
52977
|
s7 = input.charAt(peg$currPos);
|
|
52796
|
-
if (peg$
|
|
52978
|
+
if (peg$r13.test(s7)) {
|
|
52797
52979
|
peg$currPos++;
|
|
52798
52980
|
} else {
|
|
52799
52981
|
s7 = peg$FAILED;
|
|
52800
52982
|
if (peg$silentFails === 0) {
|
|
52801
|
-
peg$fail(peg$
|
|
52983
|
+
peg$fail(peg$e33);
|
|
52802
52984
|
}
|
|
52803
52985
|
}
|
|
52804
52986
|
if (s7 !== peg$FAILED) {
|
|
52805
52987
|
s8 = input.charAt(peg$currPos);
|
|
52806
|
-
if (peg$
|
|
52988
|
+
if (peg$r14.test(s8)) {
|
|
52807
52989
|
peg$currPos++;
|
|
52808
52990
|
} else {
|
|
52809
52991
|
s8 = peg$FAILED;
|
|
52810
52992
|
if (peg$silentFails === 0) {
|
|
52811
|
-
peg$fail(peg$
|
|
52993
|
+
peg$fail(peg$e34);
|
|
52812
52994
|
}
|
|
52813
52995
|
}
|
|
52814
52996
|
if (s8 !== peg$FAILED) {
|
|
@@ -52881,62 +53063,62 @@ function peg$parse(input, options) {
|
|
|
52881
53063
|
s0 = peg$currPos;
|
|
52882
53064
|
s12 = peg$currPos;
|
|
52883
53065
|
s2 = input.charAt(peg$currPos);
|
|
52884
|
-
if (peg$
|
|
53066
|
+
if (peg$r6.test(s2)) {
|
|
52885
53067
|
peg$currPos++;
|
|
52886
53068
|
} else {
|
|
52887
53069
|
s2 = peg$FAILED;
|
|
52888
53070
|
if (peg$silentFails === 0) {
|
|
52889
|
-
peg$fail(peg$
|
|
53071
|
+
peg$fail(peg$e26);
|
|
52890
53072
|
}
|
|
52891
53073
|
}
|
|
52892
53074
|
if (s2 !== peg$FAILED) {
|
|
52893
53075
|
s3 = input.charAt(peg$currPos);
|
|
52894
|
-
if (peg$
|
|
53076
|
+
if (peg$r7.test(s3)) {
|
|
52895
53077
|
peg$currPos++;
|
|
52896
53078
|
} else {
|
|
52897
53079
|
s3 = peg$FAILED;
|
|
52898
53080
|
if (peg$silentFails === 0) {
|
|
52899
|
-
peg$fail(peg$
|
|
53081
|
+
peg$fail(peg$e27);
|
|
52900
53082
|
}
|
|
52901
53083
|
}
|
|
52902
53084
|
if (s3 !== peg$FAILED) {
|
|
52903
53085
|
s4 = input.charAt(peg$currPos);
|
|
52904
|
-
if (peg$
|
|
53086
|
+
if (peg$r8.test(s4)) {
|
|
52905
53087
|
peg$currPos++;
|
|
52906
53088
|
} else {
|
|
52907
53089
|
s4 = peg$FAILED;
|
|
52908
53090
|
if (peg$silentFails === 0) {
|
|
52909
|
-
peg$fail(peg$
|
|
53091
|
+
peg$fail(peg$e28);
|
|
52910
53092
|
}
|
|
52911
53093
|
}
|
|
52912
53094
|
if (s4 !== peg$FAILED) {
|
|
52913
53095
|
s5 = input.charAt(peg$currPos);
|
|
52914
|
-
if (peg$
|
|
53096
|
+
if (peg$r9.test(s5)) {
|
|
52915
53097
|
peg$currPos++;
|
|
52916
53098
|
} else {
|
|
52917
53099
|
s5 = peg$FAILED;
|
|
52918
53100
|
if (peg$silentFails === 0) {
|
|
52919
|
-
peg$fail(peg$
|
|
53101
|
+
peg$fail(peg$e29);
|
|
52920
53102
|
}
|
|
52921
53103
|
}
|
|
52922
53104
|
if (s5 !== peg$FAILED) {
|
|
52923
53105
|
s6 = input.charAt(peg$currPos);
|
|
52924
|
-
if (peg$
|
|
53106
|
+
if (peg$r10.test(s6)) {
|
|
52925
53107
|
peg$currPos++;
|
|
52926
53108
|
} else {
|
|
52927
53109
|
s6 = peg$FAILED;
|
|
52928
53110
|
if (peg$silentFails === 0) {
|
|
52929
|
-
peg$fail(peg$
|
|
53111
|
+
peg$fail(peg$e30);
|
|
52930
53112
|
}
|
|
52931
53113
|
}
|
|
52932
53114
|
if (s6 !== peg$FAILED) {
|
|
52933
53115
|
s7 = input.charAt(peg$currPos);
|
|
52934
|
-
if (peg$
|
|
53116
|
+
if (peg$r7.test(s7)) {
|
|
52935
53117
|
peg$currPos++;
|
|
52936
53118
|
} else {
|
|
52937
53119
|
s7 = peg$FAILED;
|
|
52938
53120
|
if (peg$silentFails === 0) {
|
|
52939
|
-
peg$fail(peg$
|
|
53121
|
+
peg$fail(peg$e27);
|
|
52940
53122
|
}
|
|
52941
53123
|
}
|
|
52942
53124
|
if (s7 !== peg$FAILED) {
|
|
@@ -52969,72 +53151,72 @@ function peg$parse(input, options) {
|
|
|
52969
53151
|
if (s12 === peg$FAILED) {
|
|
52970
53152
|
s12 = peg$currPos;
|
|
52971
53153
|
s2 = input.charAt(peg$currPos);
|
|
52972
|
-
if (peg$
|
|
53154
|
+
if (peg$r15.test(s2)) {
|
|
52973
53155
|
peg$currPos++;
|
|
52974
53156
|
} else {
|
|
52975
53157
|
s2 = peg$FAILED;
|
|
52976
53158
|
if (peg$silentFails === 0) {
|
|
52977
|
-
peg$fail(peg$
|
|
53159
|
+
peg$fail(peg$e35);
|
|
52978
53160
|
}
|
|
52979
53161
|
}
|
|
52980
53162
|
if (s2 !== peg$FAILED) {
|
|
52981
53163
|
s3 = input.charAt(peg$currPos);
|
|
52982
|
-
if (peg$
|
|
53164
|
+
if (peg$r9.test(s3)) {
|
|
52983
53165
|
peg$currPos++;
|
|
52984
53166
|
} else {
|
|
52985
53167
|
s3 = peg$FAILED;
|
|
52986
53168
|
if (peg$silentFails === 0) {
|
|
52987
|
-
peg$fail(peg$
|
|
53169
|
+
peg$fail(peg$e29);
|
|
52988
53170
|
}
|
|
52989
53171
|
}
|
|
52990
53172
|
if (s3 !== peg$FAILED) {
|
|
52991
53173
|
s4 = input.charAt(peg$currPos);
|
|
52992
|
-
if (peg$
|
|
53174
|
+
if (peg$r11.test(s4)) {
|
|
52993
53175
|
peg$currPos++;
|
|
52994
53176
|
} else {
|
|
52995
53177
|
s4 = peg$FAILED;
|
|
52996
53178
|
if (peg$silentFails === 0) {
|
|
52997
|
-
peg$fail(peg$
|
|
53179
|
+
peg$fail(peg$e31);
|
|
52998
53180
|
}
|
|
52999
53181
|
}
|
|
53000
53182
|
if (s4 !== peg$FAILED) {
|
|
53001
53183
|
s5 = input.charAt(peg$currPos);
|
|
53002
|
-
if (peg$
|
|
53184
|
+
if (peg$r8.test(s5)) {
|
|
53003
53185
|
peg$currPos++;
|
|
53004
53186
|
} else {
|
|
53005
53187
|
s5 = peg$FAILED;
|
|
53006
53188
|
if (peg$silentFails === 0) {
|
|
53007
|
-
peg$fail(peg$
|
|
53189
|
+
peg$fail(peg$e28);
|
|
53008
53190
|
}
|
|
53009
53191
|
}
|
|
53010
53192
|
if (s5 !== peg$FAILED) {
|
|
53011
53193
|
s6 = input.charAt(peg$currPos);
|
|
53012
|
-
if (peg$
|
|
53194
|
+
if (peg$r12.test(s6)) {
|
|
53013
53195
|
peg$currPos++;
|
|
53014
53196
|
} else {
|
|
53015
53197
|
s6 = peg$FAILED;
|
|
53016
53198
|
if (peg$silentFails === 0) {
|
|
53017
|
-
peg$fail(peg$
|
|
53199
|
+
peg$fail(peg$e32);
|
|
53018
53200
|
}
|
|
53019
53201
|
}
|
|
53020
53202
|
if (s6 !== peg$FAILED) {
|
|
53021
53203
|
s7 = input.charAt(peg$currPos);
|
|
53022
|
-
if (peg$
|
|
53204
|
+
if (peg$r13.test(s7)) {
|
|
53023
53205
|
peg$currPos++;
|
|
53024
53206
|
} else {
|
|
53025
53207
|
s7 = peg$FAILED;
|
|
53026
53208
|
if (peg$silentFails === 0) {
|
|
53027
|
-
peg$fail(peg$
|
|
53209
|
+
peg$fail(peg$e33);
|
|
53028
53210
|
}
|
|
53029
53211
|
}
|
|
53030
53212
|
if (s7 !== peg$FAILED) {
|
|
53031
53213
|
s8 = input.charAt(peg$currPos);
|
|
53032
|
-
if (peg$
|
|
53214
|
+
if (peg$r14.test(s8)) {
|
|
53033
53215
|
peg$currPos++;
|
|
53034
53216
|
} else {
|
|
53035
53217
|
s8 = peg$FAILED;
|
|
53036
53218
|
if (peg$silentFails === 0) {
|
|
53037
|
-
peg$fail(peg$
|
|
53219
|
+
peg$fail(peg$e34);
|
|
53038
53220
|
}
|
|
53039
53221
|
}
|
|
53040
53222
|
if (s8 !== peg$FAILED) {
|
|
@@ -53071,52 +53253,52 @@ function peg$parse(input, options) {
|
|
|
53071
53253
|
if (s12 === peg$FAILED) {
|
|
53072
53254
|
s12 = peg$currPos;
|
|
53073
53255
|
s2 = input.charAt(peg$currPos);
|
|
53074
|
-
if (peg$
|
|
53256
|
+
if (peg$r11.test(s2)) {
|
|
53075
53257
|
peg$currPos++;
|
|
53076
53258
|
} else {
|
|
53077
53259
|
s2 = peg$FAILED;
|
|
53078
53260
|
if (peg$silentFails === 0) {
|
|
53079
|
-
peg$fail(peg$
|
|
53261
|
+
peg$fail(peg$e31);
|
|
53080
53262
|
}
|
|
53081
53263
|
}
|
|
53082
53264
|
if (s2 !== peg$FAILED) {
|
|
53083
53265
|
s3 = input.charAt(peg$currPos);
|
|
53084
|
-
if (peg$
|
|
53266
|
+
if (peg$r8.test(s3)) {
|
|
53085
53267
|
peg$currPos++;
|
|
53086
53268
|
} else {
|
|
53087
53269
|
s3 = peg$FAILED;
|
|
53088
53270
|
if (peg$silentFails === 0) {
|
|
53089
|
-
peg$fail(peg$
|
|
53271
|
+
peg$fail(peg$e28);
|
|
53090
53272
|
}
|
|
53091
53273
|
}
|
|
53092
53274
|
if (s3 !== peg$FAILED) {
|
|
53093
53275
|
s4 = input.charAt(peg$currPos);
|
|
53094
|
-
if (peg$
|
|
53276
|
+
if (peg$r12.test(s4)) {
|
|
53095
53277
|
peg$currPos++;
|
|
53096
53278
|
} else {
|
|
53097
53279
|
s4 = peg$FAILED;
|
|
53098
53280
|
if (peg$silentFails === 0) {
|
|
53099
|
-
peg$fail(peg$
|
|
53281
|
+
peg$fail(peg$e32);
|
|
53100
53282
|
}
|
|
53101
53283
|
}
|
|
53102
53284
|
if (s4 !== peg$FAILED) {
|
|
53103
53285
|
s5 = input.charAt(peg$currPos);
|
|
53104
|
-
if (peg$
|
|
53286
|
+
if (peg$r13.test(s5)) {
|
|
53105
53287
|
peg$currPos++;
|
|
53106
53288
|
} else {
|
|
53107
53289
|
s5 = peg$FAILED;
|
|
53108
53290
|
if (peg$silentFails === 0) {
|
|
53109
|
-
peg$fail(peg$
|
|
53291
|
+
peg$fail(peg$e33);
|
|
53110
53292
|
}
|
|
53111
53293
|
}
|
|
53112
53294
|
if (s5 !== peg$FAILED) {
|
|
53113
53295
|
s6 = input.charAt(peg$currPos);
|
|
53114
|
-
if (peg$
|
|
53296
|
+
if (peg$r14.test(s6)) {
|
|
53115
53297
|
peg$currPos++;
|
|
53116
53298
|
} else {
|
|
53117
53299
|
s6 = peg$FAILED;
|
|
53118
53300
|
if (peg$silentFails === 0) {
|
|
53119
|
-
peg$fail(peg$
|
|
53301
|
+
peg$fail(peg$e34);
|
|
53120
53302
|
}
|
|
53121
53303
|
}
|
|
53122
53304
|
if (s6 !== peg$FAILED) {
|
|
@@ -53145,42 +53327,42 @@ function peg$parse(input, options) {
|
|
|
53145
53327
|
if (s12 === peg$FAILED) {
|
|
53146
53328
|
s12 = peg$currPos;
|
|
53147
53329
|
s2 = input.charAt(peg$currPos);
|
|
53148
|
-
if (peg$
|
|
53330
|
+
if (peg$r16.test(s2)) {
|
|
53149
53331
|
peg$currPos++;
|
|
53150
53332
|
} else {
|
|
53151
53333
|
s2 = peg$FAILED;
|
|
53152
53334
|
if (peg$silentFails === 0) {
|
|
53153
|
-
peg$fail(peg$
|
|
53335
|
+
peg$fail(peg$e36);
|
|
53154
53336
|
}
|
|
53155
53337
|
}
|
|
53156
53338
|
if (s2 !== peg$FAILED) {
|
|
53157
53339
|
s3 = input.charAt(peg$currPos);
|
|
53158
|
-
if (peg$
|
|
53340
|
+
if (peg$r17.test(s3)) {
|
|
53159
53341
|
peg$currPos++;
|
|
53160
53342
|
} else {
|
|
53161
53343
|
s3 = peg$FAILED;
|
|
53162
53344
|
if (peg$silentFails === 0) {
|
|
53163
|
-
peg$fail(peg$
|
|
53345
|
+
peg$fail(peg$e37);
|
|
53164
53346
|
}
|
|
53165
53347
|
}
|
|
53166
53348
|
if (s3 !== peg$FAILED) {
|
|
53167
53349
|
s4 = input.charAt(peg$currPos);
|
|
53168
|
-
if (peg$
|
|
53350
|
+
if (peg$r15.test(s4)) {
|
|
53169
53351
|
peg$currPos++;
|
|
53170
53352
|
} else {
|
|
53171
53353
|
s4 = peg$FAILED;
|
|
53172
53354
|
if (peg$silentFails === 0) {
|
|
53173
|
-
peg$fail(peg$
|
|
53355
|
+
peg$fail(peg$e35);
|
|
53174
53356
|
}
|
|
53175
53357
|
}
|
|
53176
53358
|
if (s4 !== peg$FAILED) {
|
|
53177
53359
|
s5 = input.charAt(peg$currPos);
|
|
53178
|
-
if (peg$
|
|
53360
|
+
if (peg$r18.test(s5)) {
|
|
53179
53361
|
peg$currPos++;
|
|
53180
53362
|
} else {
|
|
53181
53363
|
s5 = peg$FAILED;
|
|
53182
53364
|
if (peg$silentFails === 0) {
|
|
53183
|
-
peg$fail(peg$
|
|
53365
|
+
peg$fail(peg$e38);
|
|
53184
53366
|
}
|
|
53185
53367
|
}
|
|
53186
53368
|
if (s5 !== peg$FAILED) {
|
|
@@ -53205,42 +53387,42 @@ function peg$parse(input, options) {
|
|
|
53205
53387
|
if (s12 === peg$FAILED) {
|
|
53206
53388
|
s12 = peg$currPos;
|
|
53207
53389
|
s2 = input.charAt(peg$currPos);
|
|
53208
|
-
if (peg$
|
|
53390
|
+
if (peg$r18.test(s2)) {
|
|
53209
53391
|
peg$currPos++;
|
|
53210
53392
|
} else {
|
|
53211
53393
|
s2 = peg$FAILED;
|
|
53212
53394
|
if (peg$silentFails === 0) {
|
|
53213
|
-
peg$fail(peg$
|
|
53395
|
+
peg$fail(peg$e38);
|
|
53214
53396
|
}
|
|
53215
53397
|
}
|
|
53216
53398
|
if (s2 !== peg$FAILED) {
|
|
53217
53399
|
s3 = input.charAt(peg$currPos);
|
|
53218
|
-
if (peg$
|
|
53400
|
+
if (peg$r15.test(s3)) {
|
|
53219
53401
|
peg$currPos++;
|
|
53220
53402
|
} else {
|
|
53221
53403
|
s3 = peg$FAILED;
|
|
53222
53404
|
if (peg$silentFails === 0) {
|
|
53223
|
-
peg$fail(peg$
|
|
53405
|
+
peg$fail(peg$e35);
|
|
53224
53406
|
}
|
|
53225
53407
|
}
|
|
53226
53408
|
if (s3 !== peg$FAILED) {
|
|
53227
53409
|
s4 = input.charAt(peg$currPos);
|
|
53228
|
-
if (peg$
|
|
53410
|
+
if (peg$r11.test(s4)) {
|
|
53229
53411
|
peg$currPos++;
|
|
53230
53412
|
} else {
|
|
53231
53413
|
s4 = peg$FAILED;
|
|
53232
53414
|
if (peg$silentFails === 0) {
|
|
53233
|
-
peg$fail(peg$
|
|
53415
|
+
peg$fail(peg$e31);
|
|
53234
53416
|
}
|
|
53235
53417
|
}
|
|
53236
53418
|
if (s4 !== peg$FAILED) {
|
|
53237
53419
|
s5 = input.charAt(peg$currPos);
|
|
53238
|
-
if (peg$
|
|
53420
|
+
if (peg$r18.test(s5)) {
|
|
53239
53421
|
peg$currPos++;
|
|
53240
53422
|
} else {
|
|
53241
53423
|
s5 = peg$FAILED;
|
|
53242
53424
|
if (peg$silentFails === 0) {
|
|
53243
|
-
peg$fail(peg$
|
|
53425
|
+
peg$fail(peg$e38);
|
|
53244
53426
|
}
|
|
53245
53427
|
}
|
|
53246
53428
|
if (s5 !== peg$FAILED) {
|
|
@@ -53265,82 +53447,82 @@ function peg$parse(input, options) {
|
|
|
53265
53447
|
if (s12 === peg$FAILED) {
|
|
53266
53448
|
s12 = peg$currPos;
|
|
53267
53449
|
s2 = input.charAt(peg$currPos);
|
|
53268
|
-
if (peg$
|
|
53450
|
+
if (peg$r6.test(s2)) {
|
|
53269
53451
|
peg$currPos++;
|
|
53270
53452
|
} else {
|
|
53271
53453
|
s2 = peg$FAILED;
|
|
53272
53454
|
if (peg$silentFails === 0) {
|
|
53273
|
-
peg$fail(peg$
|
|
53455
|
+
peg$fail(peg$e26);
|
|
53274
53456
|
}
|
|
53275
53457
|
}
|
|
53276
53458
|
if (s2 !== peg$FAILED) {
|
|
53277
53459
|
s3 = input.charAt(peg$currPos);
|
|
53278
|
-
if (peg$
|
|
53460
|
+
if (peg$r19.test(s3)) {
|
|
53279
53461
|
peg$currPos++;
|
|
53280
53462
|
} else {
|
|
53281
53463
|
s3 = peg$FAILED;
|
|
53282
53464
|
if (peg$silentFails === 0) {
|
|
53283
|
-
peg$fail(peg$
|
|
53465
|
+
peg$fail(peg$e39);
|
|
53284
53466
|
}
|
|
53285
53467
|
}
|
|
53286
53468
|
if (s3 !== peg$FAILED) {
|
|
53287
53469
|
s4 = input.charAt(peg$currPos);
|
|
53288
|
-
if (peg$
|
|
53470
|
+
if (peg$r20.test(s4)) {
|
|
53289
53471
|
peg$currPos++;
|
|
53290
53472
|
} else {
|
|
53291
53473
|
s4 = peg$FAILED;
|
|
53292
53474
|
if (peg$silentFails === 0) {
|
|
53293
|
-
peg$fail(peg$
|
|
53475
|
+
peg$fail(peg$e40);
|
|
53294
53476
|
}
|
|
53295
53477
|
}
|
|
53296
53478
|
if (s4 !== peg$FAILED) {
|
|
53297
53479
|
s5 = input.charAt(peg$currPos);
|
|
53298
|
-
if (peg$
|
|
53480
|
+
if (peg$r11.test(s5)) {
|
|
53299
53481
|
peg$currPos++;
|
|
53300
53482
|
} else {
|
|
53301
53483
|
s5 = peg$FAILED;
|
|
53302
53484
|
if (peg$silentFails === 0) {
|
|
53303
|
-
peg$fail(peg$
|
|
53485
|
+
peg$fail(peg$e31);
|
|
53304
53486
|
}
|
|
53305
53487
|
}
|
|
53306
53488
|
if (s5 !== peg$FAILED) {
|
|
53307
53489
|
s6 = input.charAt(peg$currPos);
|
|
53308
|
-
if (peg$
|
|
53490
|
+
if (peg$r8.test(s6)) {
|
|
53309
53491
|
peg$currPos++;
|
|
53310
53492
|
} else {
|
|
53311
53493
|
s6 = peg$FAILED;
|
|
53312
53494
|
if (peg$silentFails === 0) {
|
|
53313
|
-
peg$fail(peg$
|
|
53495
|
+
peg$fail(peg$e28);
|
|
53314
53496
|
}
|
|
53315
53497
|
}
|
|
53316
53498
|
if (s6 !== peg$FAILED) {
|
|
53317
53499
|
s7 = input.charAt(peg$currPos);
|
|
53318
|
-
if (peg$
|
|
53500
|
+
if (peg$r12.test(s7)) {
|
|
53319
53501
|
peg$currPos++;
|
|
53320
53502
|
} else {
|
|
53321
53503
|
s7 = peg$FAILED;
|
|
53322
53504
|
if (peg$silentFails === 0) {
|
|
53323
|
-
peg$fail(peg$
|
|
53505
|
+
peg$fail(peg$e32);
|
|
53324
53506
|
}
|
|
53325
53507
|
}
|
|
53326
53508
|
if (s7 !== peg$FAILED) {
|
|
53327
53509
|
s8 = input.charAt(peg$currPos);
|
|
53328
|
-
if (peg$
|
|
53510
|
+
if (peg$r13.test(s8)) {
|
|
53329
53511
|
peg$currPos++;
|
|
53330
53512
|
} else {
|
|
53331
53513
|
s8 = peg$FAILED;
|
|
53332
53514
|
if (peg$silentFails === 0) {
|
|
53333
|
-
peg$fail(peg$
|
|
53515
|
+
peg$fail(peg$e33);
|
|
53334
53516
|
}
|
|
53335
53517
|
}
|
|
53336
53518
|
if (s8 !== peg$FAILED) {
|
|
53337
53519
|
s9 = input.charAt(peg$currPos);
|
|
53338
|
-
if (peg$
|
|
53520
|
+
if (peg$r14.test(s9)) {
|
|
53339
53521
|
peg$currPos++;
|
|
53340
53522
|
} else {
|
|
53341
53523
|
s9 = peg$FAILED;
|
|
53342
53524
|
if (peg$silentFails === 0) {
|
|
53343
|
-
peg$fail(peg$
|
|
53525
|
+
peg$fail(peg$e34);
|
|
53344
53526
|
}
|
|
53345
53527
|
}
|
|
53346
53528
|
if (s9 !== peg$FAILED) {
|
|
@@ -53412,24 +53594,24 @@ function peg$parse(input, options) {
|
|
|
53412
53594
|
s0 = [];
|
|
53413
53595
|
s12 = [];
|
|
53414
53596
|
s2 = input.charAt(peg$currPos);
|
|
53415
|
-
if (peg$
|
|
53597
|
+
if (peg$r21.test(s2)) {
|
|
53416
53598
|
peg$currPos++;
|
|
53417
53599
|
} else {
|
|
53418
53600
|
s2 = peg$FAILED;
|
|
53419
53601
|
if (peg$silentFails === 0) {
|
|
53420
|
-
peg$fail(peg$
|
|
53602
|
+
peg$fail(peg$e41);
|
|
53421
53603
|
}
|
|
53422
53604
|
}
|
|
53423
53605
|
if (s2 !== peg$FAILED) {
|
|
53424
53606
|
while (s2 !== peg$FAILED) {
|
|
53425
53607
|
s12.push(s2);
|
|
53426
53608
|
s2 = input.charAt(peg$currPos);
|
|
53427
|
-
if (peg$
|
|
53609
|
+
if (peg$r21.test(s2)) {
|
|
53428
53610
|
peg$currPos++;
|
|
53429
53611
|
} else {
|
|
53430
53612
|
s2 = peg$FAILED;
|
|
53431
53613
|
if (peg$silentFails === 0) {
|
|
53432
|
-
peg$fail(peg$
|
|
53614
|
+
peg$fail(peg$e41);
|
|
53433
53615
|
}
|
|
53434
53616
|
}
|
|
53435
53617
|
}
|
|
@@ -53449,24 +53631,24 @@ function peg$parse(input, options) {
|
|
|
53449
53631
|
s0.push(s12);
|
|
53450
53632
|
s12 = [];
|
|
53451
53633
|
s2 = input.charAt(peg$currPos);
|
|
53452
|
-
if (peg$
|
|
53634
|
+
if (peg$r21.test(s2)) {
|
|
53453
53635
|
peg$currPos++;
|
|
53454
53636
|
} else {
|
|
53455
53637
|
s2 = peg$FAILED;
|
|
53456
53638
|
if (peg$silentFails === 0) {
|
|
53457
|
-
peg$fail(peg$
|
|
53639
|
+
peg$fail(peg$e41);
|
|
53458
53640
|
}
|
|
53459
53641
|
}
|
|
53460
53642
|
if (s2 !== peg$FAILED) {
|
|
53461
53643
|
while (s2 !== peg$FAILED) {
|
|
53462
53644
|
s12.push(s2);
|
|
53463
53645
|
s2 = input.charAt(peg$currPos);
|
|
53464
|
-
if (peg$
|
|
53646
|
+
if (peg$r21.test(s2)) {
|
|
53465
53647
|
peg$currPos++;
|
|
53466
53648
|
} else {
|
|
53467
53649
|
s2 = peg$FAILED;
|
|
53468
53650
|
if (peg$silentFails === 0) {
|
|
53469
|
-
peg$fail(peg$
|
|
53651
|
+
peg$fail(peg$e41);
|
|
53470
53652
|
}
|
|
53471
53653
|
}
|
|
53472
53654
|
}
|
|
@@ -53494,7 +53676,7 @@ function peg$parse(input, options) {
|
|
|
53494
53676
|
} else {
|
|
53495
53677
|
s12 = peg$FAILED;
|
|
53496
53678
|
if (peg$silentFails === 0) {
|
|
53497
|
-
peg$fail(peg$
|
|
53679
|
+
peg$fail(peg$e42);
|
|
53498
53680
|
}
|
|
53499
53681
|
}
|
|
53500
53682
|
if (s12 !== peg$FAILED) {
|
|
@@ -53508,7 +53690,7 @@ function peg$parse(input, options) {
|
|
|
53508
53690
|
} else {
|
|
53509
53691
|
s5 = peg$FAILED;
|
|
53510
53692
|
if (peg$silentFails === 0) {
|
|
53511
|
-
peg$fail(peg$
|
|
53693
|
+
peg$fail(peg$e43);
|
|
53512
53694
|
}
|
|
53513
53695
|
}
|
|
53514
53696
|
peg$silentFails--;
|
|
@@ -53550,7 +53732,7 @@ function peg$parse(input, options) {
|
|
|
53550
53732
|
} else {
|
|
53551
53733
|
s5 = peg$FAILED;
|
|
53552
53734
|
if (peg$silentFails === 0) {
|
|
53553
|
-
peg$fail(peg$
|
|
53735
|
+
peg$fail(peg$e43);
|
|
53554
53736
|
}
|
|
53555
53737
|
}
|
|
53556
53738
|
peg$silentFails--;
|
|
@@ -53588,7 +53770,7 @@ function peg$parse(input, options) {
|
|
|
53588
53770
|
} else {
|
|
53589
53771
|
s3 = peg$FAILED;
|
|
53590
53772
|
if (peg$silentFails === 0) {
|
|
53591
|
-
peg$fail(peg$
|
|
53773
|
+
peg$fail(peg$e43);
|
|
53592
53774
|
}
|
|
53593
53775
|
}
|
|
53594
53776
|
if (s3 !== peg$FAILED) {
|
|
@@ -53613,29 +53795,29 @@ function peg$parse(input, options) {
|
|
|
53613
53795
|
} else {
|
|
53614
53796
|
s12 = peg$FAILED;
|
|
53615
53797
|
if (peg$silentFails === 0) {
|
|
53616
|
-
peg$fail(peg$
|
|
53798
|
+
peg$fail(peg$e44);
|
|
53617
53799
|
}
|
|
53618
53800
|
}
|
|
53619
53801
|
if (s12 !== peg$FAILED) {
|
|
53620
53802
|
s2 = [];
|
|
53621
53803
|
s3 = input.charAt(peg$currPos);
|
|
53622
|
-
if (peg$
|
|
53804
|
+
if (peg$r22.test(s3)) {
|
|
53623
53805
|
peg$currPos++;
|
|
53624
53806
|
} else {
|
|
53625
53807
|
s3 = peg$FAILED;
|
|
53626
53808
|
if (peg$silentFails === 0) {
|
|
53627
|
-
peg$fail(peg$
|
|
53809
|
+
peg$fail(peg$e45);
|
|
53628
53810
|
}
|
|
53629
53811
|
}
|
|
53630
53812
|
while (s3 !== peg$FAILED) {
|
|
53631
53813
|
s2.push(s3);
|
|
53632
53814
|
s3 = input.charAt(peg$currPos);
|
|
53633
|
-
if (peg$
|
|
53815
|
+
if (peg$r22.test(s3)) {
|
|
53634
53816
|
peg$currPos++;
|
|
53635
53817
|
} else {
|
|
53636
53818
|
s3 = peg$FAILED;
|
|
53637
53819
|
if (peg$silentFails === 0) {
|
|
53638
|
-
peg$fail(peg$
|
|
53820
|
+
peg$fail(peg$e45);
|
|
53639
53821
|
}
|
|
53640
53822
|
}
|
|
53641
53823
|
}
|
|
@@ -53645,7 +53827,7 @@ function peg$parse(input, options) {
|
|
|
53645
53827
|
} else {
|
|
53646
53828
|
s3 = peg$FAILED;
|
|
53647
53829
|
if (peg$silentFails === 0) {
|
|
53648
|
-
peg$fail(peg$
|
|
53830
|
+
peg$fail(peg$e46);
|
|
53649
53831
|
}
|
|
53650
53832
|
}
|
|
53651
53833
|
if (s3 === peg$FAILED) {
|
|
@@ -53690,29 +53872,29 @@ function peg$parse(input, options) {
|
|
|
53690
53872
|
} else {
|
|
53691
53873
|
s12 = peg$FAILED;
|
|
53692
53874
|
if (peg$silentFails === 0) {
|
|
53693
|
-
peg$fail(peg$
|
|
53875
|
+
peg$fail(peg$e47);
|
|
53694
53876
|
}
|
|
53695
53877
|
}
|
|
53696
53878
|
if (s12 !== peg$FAILED) {
|
|
53697
53879
|
s2 = [];
|
|
53698
53880
|
s3 = input.charAt(peg$currPos);
|
|
53699
|
-
if (peg$
|
|
53881
|
+
if (peg$r22.test(s3)) {
|
|
53700
53882
|
peg$currPos++;
|
|
53701
53883
|
} else {
|
|
53702
53884
|
s3 = peg$FAILED;
|
|
53703
53885
|
if (peg$silentFails === 0) {
|
|
53704
|
-
peg$fail(peg$
|
|
53886
|
+
peg$fail(peg$e45);
|
|
53705
53887
|
}
|
|
53706
53888
|
}
|
|
53707
53889
|
while (s3 !== peg$FAILED) {
|
|
53708
53890
|
s2.push(s3);
|
|
53709
53891
|
s3 = input.charAt(peg$currPos);
|
|
53710
|
-
if (peg$
|
|
53892
|
+
if (peg$r22.test(s3)) {
|
|
53711
53893
|
peg$currPos++;
|
|
53712
53894
|
} else {
|
|
53713
53895
|
s3 = peg$FAILED;
|
|
53714
53896
|
if (peg$silentFails === 0) {
|
|
53715
|
-
peg$fail(peg$
|
|
53897
|
+
peg$fail(peg$e45);
|
|
53716
53898
|
}
|
|
53717
53899
|
}
|
|
53718
53900
|
}
|
|
@@ -53722,7 +53904,7 @@ function peg$parse(input, options) {
|
|
|
53722
53904
|
} else {
|
|
53723
53905
|
s3 = peg$FAILED;
|
|
53724
53906
|
if (peg$silentFails === 0) {
|
|
53725
|
-
peg$fail(peg$
|
|
53907
|
+
peg$fail(peg$e46);
|
|
53726
53908
|
}
|
|
53727
53909
|
}
|
|
53728
53910
|
if (s3 === peg$FAILED) {
|
|
@@ -54085,6 +54267,75 @@ function buildFromAst(ast) {
|
|
|
54085
54267
|
return graph;
|
|
54086
54268
|
}
|
|
54087
54269
|
|
|
54270
|
+
// src/parser/number-scan.ts
|
|
54271
|
+
var ASCII_DEL = 127;
|
|
54272
|
+
function isLetter(c) {
|
|
54273
|
+
if (c === void 0) return false;
|
|
54274
|
+
return c >= "A" && c <= "Z" || c >= "a" && c <= "z" || c === "_" || c.charCodeAt(0) > ASCII_DEL;
|
|
54275
|
+
}
|
|
54276
|
+
function isDigit(c) {
|
|
54277
|
+
return c !== void 0 && c >= "0" && c <= "9";
|
|
54278
|
+
}
|
|
54279
|
+
function startsNumber(s, i) {
|
|
54280
|
+
const c = s[i];
|
|
54281
|
+
if (isDigit(c)) return true;
|
|
54282
|
+
if (c === ".") return isDigit(s[i + 1]);
|
|
54283
|
+
if (c !== "-") return false;
|
|
54284
|
+
return isDigit(s[i + 1]) || s[i + 1] === "." && isDigit(s[i + 2]);
|
|
54285
|
+
}
|
|
54286
|
+
function matchNumber(s, i) {
|
|
54287
|
+
let j = s[i] === "-" ? i + 1 : i;
|
|
54288
|
+
if (s[j] === ".") {
|
|
54289
|
+
j++;
|
|
54290
|
+
while (isDigit(s[j])) j++;
|
|
54291
|
+
} else {
|
|
54292
|
+
while (isDigit(s[j])) j++;
|
|
54293
|
+
if (s[j] === ".") {
|
|
54294
|
+
j++;
|
|
54295
|
+
while (isDigit(s[j])) j++;
|
|
54296
|
+
}
|
|
54297
|
+
}
|
|
54298
|
+
if (s[j] === "." || isLetter(s[j])) j++;
|
|
54299
|
+
return j;
|
|
54300
|
+
}
|
|
54301
|
+
function twoDots(text) {
|
|
54302
|
+
const dot = text.indexOf(".");
|
|
54303
|
+
return dot !== -1 && dot !== text.length - 1;
|
|
54304
|
+
}
|
|
54305
|
+
function chkNum(text) {
|
|
54306
|
+
const c = text[text.length - 1];
|
|
54307
|
+
return !isDigit(c) && c !== "." || c === "." && twoDots(text);
|
|
54308
|
+
}
|
|
54309
|
+
function lexToken(s, i) {
|
|
54310
|
+
if (isLetter(s[i])) {
|
|
54311
|
+
let j2 = i + 1;
|
|
54312
|
+
while (isLetter(s[j2]) || isDigit(s[j2])) j2++;
|
|
54313
|
+
return { next: j2, bad: null };
|
|
54314
|
+
}
|
|
54315
|
+
if (s[i] === "-" && (s[i + 1] === "-" || s[i + 1] === ">")) return { next: i + 2, bad: null };
|
|
54316
|
+
if (!startsNumber(s, i)) return { next: i + 1, bad: null };
|
|
54317
|
+
const j = matchNumber(s, i);
|
|
54318
|
+
const text = s.slice(i, j);
|
|
54319
|
+
return chkNum(text) ? { next: j - 1, bad: text } : { next: j, bad: null };
|
|
54320
|
+
}
|
|
54321
|
+
function scanNumberAmbiguities(src, stripped) {
|
|
54322
|
+
const out = [];
|
|
54323
|
+
let line = 1;
|
|
54324
|
+
let lineAt = 0;
|
|
54325
|
+
for (let i = 0; i < stripped.length; ) {
|
|
54326
|
+
const { next, bad } = lexToken(stripped, i);
|
|
54327
|
+
if (bad !== null) {
|
|
54328
|
+
for (; lineAt < i; lineAt++) if (src[lineAt] === "\n") line++;
|
|
54329
|
+
out.push({ text: bad, line, offset: i });
|
|
54330
|
+
}
|
|
54331
|
+
i = next;
|
|
54332
|
+
}
|
|
54333
|
+
return out;
|
|
54334
|
+
}
|
|
54335
|
+
function numberAmbiguityMessage(a) {
|
|
54336
|
+
return `Warning: syntax ambiguity - badly delimited number '${a.text}' in line ${a.line} of input splits into two tokens`;
|
|
54337
|
+
}
|
|
54338
|
+
|
|
54088
54339
|
// src/parser/index.ts
|
|
54089
54340
|
var ParseError = class extends DotEngineError {
|
|
54090
54341
|
type = "syntax";
|
|
@@ -54244,6 +54495,12 @@ function isPeggyError(err) {
|
|
|
54244
54495
|
if (typeof e["location"] !== "object" || e["location"] === null) return false;
|
|
54245
54496
|
return "start" in e["location"];
|
|
54246
54497
|
}
|
|
54498
|
+
function warnNumberAmbiguities(src, upTo) {
|
|
54499
|
+
for (const a of scanNumberAmbiguities(src, Stripper.strip(src))) {
|
|
54500
|
+
if (a.offset > upTo) break;
|
|
54501
|
+
console.error(numberAmbiguityMessage(a));
|
|
54502
|
+
}
|
|
54503
|
+
}
|
|
54247
54504
|
function parse(src) {
|
|
54248
54505
|
if (typeof src !== "string") {
|
|
54249
54506
|
throw invalidArgType("dotSource", "string", src);
|
|
@@ -54254,6 +54511,7 @@ function parse(src) {
|
|
|
54254
54511
|
} catch (err) {
|
|
54255
54512
|
if (isPeggyError(err)) {
|
|
54256
54513
|
const start = err.location.start;
|
|
54514
|
+
warnNumberAmbiguities(src, start.offset);
|
|
54257
54515
|
const code = err.found === null ? "SYNTAX_UNEXPECTED_EOF" : "SYNTAX_ERROR";
|
|
54258
54516
|
throw new ParseError(
|
|
54259
54517
|
err instanceof Error ? err.message : String(err),
|
|
@@ -54271,6 +54529,7 @@ function parse(src) {
|
|
|
54271
54529
|
}
|
|
54272
54530
|
throw err;
|
|
54273
54531
|
}
|
|
54532
|
+
warnNumberAmbiguities(src, src.length);
|
|
54274
54533
|
validateEdgeOperators(src, ast.directed);
|
|
54275
54534
|
return buildFromAst(ast);
|
|
54276
54535
|
}
|
|
@@ -54279,6 +54538,7 @@ function parse(src) {
|
|
|
54279
54538
|
var XDOT_PARSE_ERROR = 1;
|
|
54280
54539
|
|
|
54281
54540
|
// src/xdot/parse.ts
|
|
54541
|
+
var ULONG_MAX = 0xffffffffffffffffn;
|
|
54282
54542
|
var XdotParser = class _XdotParser {
|
|
54283
54543
|
static isWs(c) {
|
|
54284
54544
|
return c === " " || c === " " || c === "\n" || c === "\r";
|
|
@@ -54322,12 +54582,23 @@ var XdotParser = class _XdotParser {
|
|
|
54322
54582
|
if (i === digStart) return null;
|
|
54323
54583
|
return { val: parseInt(s.slice(start, i), 10), pos: i };
|
|
54324
54584
|
}
|
|
54585
|
+
/**
|
|
54586
|
+
* strtoul(s, &endp, 10) cast to unsigned int: optional sign, a leading "-"
|
|
54587
|
+
* negates modulo 2^64, magnitude overflow saturates to ULONG_MAX, and the
|
|
54588
|
+
* result keeps the low 32 bits.
|
|
54589
|
+
* @see lib/xdot/xdot.c:parseUInt
|
|
54590
|
+
*/
|
|
54325
54591
|
static parseUInt_(s, pos) {
|
|
54326
54592
|
const i = _XdotParser.skipWs(s, pos);
|
|
54327
|
-
|
|
54328
|
-
const
|
|
54593
|
+
let start = i;
|
|
54594
|
+
const negative = i < s.length && s[i] === "-";
|
|
54595
|
+
if (i < s.length && (s[i] === "-" || s[i] === "+")) start++;
|
|
54596
|
+
const end = _XdotParser.consumeDigits(s, start);
|
|
54329
54597
|
if (end === start) return null;
|
|
54330
|
-
|
|
54598
|
+
const mag = BigInt(s.slice(start, end));
|
|
54599
|
+
const clamped = mag > ULONG_MAX ? ULONG_MAX : mag;
|
|
54600
|
+
const wrapped = negative && mag <= ULONG_MAX ? BigInt.asUintN(64, -clamped) : clamped;
|
|
54601
|
+
return { val: Number(BigInt.asUintN(32, wrapped)), pos: end };
|
|
54331
54602
|
}
|
|
54332
54603
|
static parseRect(s, pos) {
|
|
54333
54604
|
const rx = _XdotParser.parseReal(s, pos);
|
|
@@ -54424,7 +54695,7 @@ var XdotParser = class _XdotParser {
|
|
|
54424
54695
|
if (!rx1) return null;
|
|
54425
54696
|
const ry1 = _XdotParser.parseReal(s, rx1.pos);
|
|
54426
54697
|
if (!ry1) return null;
|
|
54427
|
-
const rn = _XdotParser.
|
|
54698
|
+
const rn = _XdotParser.parseUInt_(s, ry1.pos);
|
|
54428
54699
|
if (!rn) return null;
|
|
54429
54700
|
const rs = _XdotParser.parseStops(s, rn.pos, rn.val);
|
|
54430
54701
|
if (!rs) return null;
|
|
@@ -54443,7 +54714,7 @@ var XdotParser = class _XdotParser {
|
|
|
54443
54714
|
if (!ry1) return null;
|
|
54444
54715
|
const rr1 = _XdotParser.parseReal(s, ry1.pos);
|
|
54445
54716
|
if (!rr1) return null;
|
|
54446
|
-
const rn = _XdotParser.
|
|
54717
|
+
const rn = _XdotParser.parseUInt_(s, rr1.pos);
|
|
54447
54718
|
if (!rn) return null;
|
|
54448
54719
|
const rs = _XdotParser.parseStops(s, rn.pos, rn.val);
|
|
54449
54720
|
if (!rs) return null;
|