@dpuse/dpuse-tool-d3 0.0.9 → 0.0.10

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.
@@ -0,0 +1,1932 @@
1
+ import { a as e, c as t, d as n, i as r, n as i, o as a, r as o, u as s } from "./bump-S1d-3Q8P.js";
2
+ //#region node_modules/d3-shape/src/line.js
3
+ function c(n, i) {
4
+ var c = s(!0), l = null, u = e, d = null, f = t(p);
5
+ n = typeof n == "function" ? n : n === void 0 ? o : s(n), i = typeof i == "function" ? i : i === void 0 ? r : s(i);
6
+ function p(e) {
7
+ var t, r = (e = a(e)).length, o, s = !1, p;
8
+ for (l ?? (d = u(p = f())), t = 0; t <= r; ++t) !(t < r && c(o = e[t], t, e)) === s && ((s = !s) ? d.lineStart() : d.lineEnd()), s && d.point(+n(o, t, e), +i(o, t, e));
9
+ if (p) return d = null, p + "" || null;
10
+ }
11
+ return p.x = function(e) {
12
+ return arguments.length ? (n = typeof e == "function" ? e : s(+e), p) : n;
13
+ }, p.y = function(e) {
14
+ return arguments.length ? (i = typeof e == "function" ? e : s(+e), p) : i;
15
+ }, p.defined = function(e) {
16
+ return arguments.length ? (c = typeof e == "function" ? e : s(!!e), p) : c;
17
+ }, p.curve = function(e) {
18
+ return arguments.length ? (u = e, l != null && (d = u(l)), p) : u;
19
+ }, p.context = function(e) {
20
+ return arguments.length ? (e == null ? l = d = null : d = u(l = e), p) : l;
21
+ }, p;
22
+ }
23
+ //#endregion
24
+ //#region node_modules/@dagrejs/dagre/dist/dagre.esm.js
25
+ var l = Object.defineProperty, u = (e, t, n) => t in e ? l(e, t, {
26
+ enumerable: !0,
27
+ configurable: !0,
28
+ writable: !0,
29
+ value: n
30
+ }) : e[t] = n, d = (e, t) => {
31
+ for (var n in t) l(e, n, {
32
+ get: t[n],
33
+ enumerable: !0
34
+ });
35
+ }, f = (e, t, n) => u(e, typeof t == "symbol" ? t : t + "", n), p = {};
36
+ d(p, {
37
+ Graph: () => g,
38
+ alg: () => S,
39
+ json: () => te,
40
+ version: () => ee
41
+ });
42
+ var m = Object.defineProperty, h = (e, t) => {
43
+ for (var n in t) m(e, n, {
44
+ get: t[n],
45
+ enumerable: !0
46
+ });
47
+ }, g = class {
48
+ constructor(e) {
49
+ this._isDirected = !0, this._isMultigraph = !1, this._isCompound = !1, this._nodes = {}, this._in = {}, this._preds = {}, this._out = {}, this._sucs = {}, this._edgeObjs = {}, this._edgeLabels = {}, this._nodeCount = 0, this._edgeCount = 0, this._defaultNodeLabelFn = () => {}, this._defaultEdgeLabelFn = () => {}, e && (this._isDirected = "directed" in e ? e.directed : !0, this._isMultigraph = "multigraph" in e && e.multigraph, this._isCompound = "compound" in e && e.compound), this._isCompound && (this._parent = {}, this._children = {}, this._children["\0"] = {});
50
+ }
51
+ isDirected() {
52
+ return this._isDirected;
53
+ }
54
+ isMultigraph() {
55
+ return this._isMultigraph;
56
+ }
57
+ isCompound() {
58
+ return this._isCompound;
59
+ }
60
+ setGraph(e) {
61
+ return this._label = e, this;
62
+ }
63
+ graph() {
64
+ return this._label;
65
+ }
66
+ setDefaultNodeLabel(e) {
67
+ return this._defaultNodeLabelFn = typeof e == "function" ? e : () => e, this;
68
+ }
69
+ nodeCount() {
70
+ return this._nodeCount;
71
+ }
72
+ nodes() {
73
+ return Object.keys(this._nodes);
74
+ }
75
+ sources() {
76
+ return this.nodes().filter((e) => Object.keys(this._in[e]).length === 0);
77
+ }
78
+ sinks() {
79
+ return this.nodes().filter((e) => Object.keys(this._out[e]).length === 0);
80
+ }
81
+ setNodes(e, t) {
82
+ return e.forEach((e) => {
83
+ t === void 0 ? this.setNode(e) : this.setNode(e, t);
84
+ }), this;
85
+ }
86
+ setNode(e, t) {
87
+ return e in this._nodes ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = "\0", this._children[e] = {}, this._children["\0"][e] = !0), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this);
88
+ }
89
+ node(e) {
90
+ return this._nodes[e];
91
+ }
92
+ hasNode(e) {
93
+ return e in this._nodes;
94
+ }
95
+ removeNode(e) {
96
+ if (e in this._nodes) {
97
+ let t = (e) => this.removeEdge(this._edgeObjs[e]);
98
+ delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], this.children(e).forEach((e) => {
99
+ this.setParent(e);
100
+ }), delete this._children[e]), Object.keys(this._in[e]).forEach(t), delete this._in[e], delete this._preds[e], Object.keys(this._out[e]).forEach(t), delete this._out[e], delete this._sucs[e], --this._nodeCount;
101
+ }
102
+ return this;
103
+ }
104
+ setParent(e, t) {
105
+ if (!this._isCompound) throw Error("Cannot set parent in a non-compound graph");
106
+ if (t === void 0) t = "\0";
107
+ else {
108
+ t += "";
109
+ for (let n = t; n !== void 0; n = this.parent(n)) if (n === e) throw Error("Setting " + t + " as parent of " + e + " would create a cycle");
110
+ this.setNode(t);
111
+ }
112
+ return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = !0, this;
113
+ }
114
+ parent(e) {
115
+ if (this._isCompound) {
116
+ let t = this._parent[e];
117
+ if (t !== "\0") return t;
118
+ }
119
+ }
120
+ children(e = "\0") {
121
+ if (this._isCompound) {
122
+ let t = this._children[e];
123
+ if (t) return Object.keys(t);
124
+ } else {
125
+ if (e === "\0") return this.nodes();
126
+ if (this.hasNode(e)) return [];
127
+ }
128
+ return [];
129
+ }
130
+ predecessors(e) {
131
+ let t = this._preds[e];
132
+ if (t) return Object.keys(t);
133
+ }
134
+ successors(e) {
135
+ let t = this._sucs[e];
136
+ if (t) return Object.keys(t);
137
+ }
138
+ neighbors(e) {
139
+ let t = this.predecessors(e);
140
+ if (t) {
141
+ let n = new Set(t);
142
+ for (let t of this.successors(e)) n.add(t);
143
+ return Array.from(n.values());
144
+ }
145
+ }
146
+ isLeaf(e) {
147
+ let t;
148
+ return t = this.isDirected() ? this.successors(e) : this.neighbors(e), t.length === 0;
149
+ }
150
+ filterNodes(e) {
151
+ let t = new this.constructor({
152
+ directed: this._isDirected,
153
+ multigraph: this._isMultigraph,
154
+ compound: this._isCompound
155
+ });
156
+ t.setGraph(this.graph()), Object.entries(this._nodes).forEach(([n, r]) => {
157
+ e(n) && t.setNode(n, r);
158
+ }), Object.values(this._edgeObjs).forEach((e) => {
159
+ t.hasNode(e.v) && t.hasNode(e.w) && t.setEdge(e, this.edge(e));
160
+ });
161
+ let n = {}, r = (e) => {
162
+ let i = this.parent(e);
163
+ return !i || t.hasNode(i) ? (n[e] = i ?? void 0, i ?? void 0) : i in n ? n[i] : r(i);
164
+ };
165
+ return this._isCompound && t.nodes().forEach((e) => t.setParent(e, r(e))), t;
166
+ }
167
+ setDefaultEdgeLabel(e) {
168
+ return this._defaultEdgeLabelFn = typeof e == "function" ? e : () => e, this;
169
+ }
170
+ edgeCount() {
171
+ return this._edgeCount;
172
+ }
173
+ edges() {
174
+ return Object.values(this._edgeObjs);
175
+ }
176
+ setPath(e, t) {
177
+ return e.reduce((e, n) => (t === void 0 ? this.setEdge(e, n) : this.setEdge(e, n, t), n)), this;
178
+ }
179
+ setEdge(e, t, n, r) {
180
+ let i, a, o, s, c = !1;
181
+ typeof e == "object" && e && "v" in e ? (i = e.v, a = e.w, o = e.name, arguments.length === 2 && (s = t, c = !0)) : (i = e, a = t, o = r, arguments.length > 2 && (s = n, c = !0)), i = "" + i, a = "" + a, o !== void 0 && (o = "" + o);
182
+ let l = y(this._isDirected, i, a, o);
183
+ if (l in this._edgeLabels) return c && (this._edgeLabels[l] = s), this;
184
+ if (o !== void 0 && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
185
+ this.setNode(i), this.setNode(a), this._edgeLabels[l] = c ? s : this._defaultEdgeLabelFn(i, a, o);
186
+ let u = b(this._isDirected, i, a, o);
187
+ return i = u.v, a = u.w, Object.freeze(u), this._edgeObjs[l] = u, _(this._preds[a], i), _(this._sucs[i], a), this._in[a][l] = u, this._out[i][l] = u, this._edgeCount++, this;
188
+ }
189
+ edge(e, t, n) {
190
+ let r = arguments.length === 1 ? x(this._isDirected, e) : y(this._isDirected, e, t, n);
191
+ return this._edgeLabels[r];
192
+ }
193
+ edgeAsObj(e, t, n) {
194
+ let r = arguments.length === 1 ? this.edge(e) : this.edge(e, t, n);
195
+ return typeof r == "object" ? r : { label: r };
196
+ }
197
+ hasEdge(e, t, n) {
198
+ return (arguments.length === 1 ? x(this._isDirected, e) : y(this._isDirected, e, t, n)) in this._edgeLabels;
199
+ }
200
+ removeEdge(e, t, n) {
201
+ let r = arguments.length === 1 ? x(this._isDirected, e) : y(this._isDirected, e, t, n), i = this._edgeObjs[r];
202
+ if (i) {
203
+ let e = i.v, t = i.w;
204
+ delete this._edgeLabels[r], delete this._edgeObjs[r], v(this._preds[t], e), v(this._sucs[e], t), delete this._in[t][r], delete this._out[e][r], this._edgeCount--;
205
+ }
206
+ return this;
207
+ }
208
+ inEdges(e, t) {
209
+ return this.isDirected() ? this.filterEdges(this._in[e], e, t) : this.nodeEdges(e, t);
210
+ }
211
+ outEdges(e, t) {
212
+ return this.isDirected() ? this.filterEdges(this._out[e], e, t) : this.nodeEdges(e, t);
213
+ }
214
+ nodeEdges(e, t) {
215
+ if (e in this._nodes) return this.filterEdges({
216
+ ...this._in[e],
217
+ ...this._out[e]
218
+ }, e, t);
219
+ }
220
+ _removeFromParentsChildList(e) {
221
+ delete this._children[this._parent[e]][e];
222
+ }
223
+ filterEdges(e, t, n) {
224
+ if (!e) return;
225
+ let r = Object.values(e);
226
+ return n ? r.filter((e) => e.v === t && e.w === n || e.v === n && e.w === t) : r;
227
+ }
228
+ };
229
+ function _(e, t) {
230
+ e[t] ? e[t]++ : e[t] = 1;
231
+ }
232
+ function v(e, t) {
233
+ e[t] !== void 0 && !--e[t] && delete e[t];
234
+ }
235
+ function y(e, t, n, r) {
236
+ let i = "" + t, a = "" + n;
237
+ if (!e && i > a) {
238
+ let e = i;
239
+ i = a, a = e;
240
+ }
241
+ return i + "" + a + "" + (r === void 0 ? "\0" : r);
242
+ }
243
+ function b(e, t, n, r) {
244
+ let i = "" + t, a = "" + n;
245
+ if (!e && i > a) {
246
+ let e = i;
247
+ i = a, a = e;
248
+ }
249
+ let o = {
250
+ v: i,
251
+ w: a
252
+ };
253
+ return r && (o.name = r), o;
254
+ }
255
+ function x(e, t) {
256
+ return y(e, t.v, t.w, t.name);
257
+ }
258
+ var ee = "4.0.1", te = {};
259
+ h(te, {
260
+ read: () => ae,
261
+ write: () => ne
262
+ });
263
+ function ne(e) {
264
+ let t = {
265
+ options: {
266
+ directed: e.isDirected(),
267
+ multigraph: e.isMultigraph(),
268
+ compound: e.isCompound()
269
+ },
270
+ nodes: re(e),
271
+ edges: ie(e)
272
+ }, n = e.graph();
273
+ return n !== void 0 && (t.value = structuredClone(n)), t;
274
+ }
275
+ function re(e) {
276
+ return e.nodes().map((t) => {
277
+ let n = e.node(t), r = e.parent(t), i = { v: t };
278
+ return n !== void 0 && (i.value = n), r !== void 0 && (i.parent = r), i;
279
+ });
280
+ }
281
+ function ie(e) {
282
+ return e.edges().map((t) => {
283
+ let n = e.edge(t), r = {
284
+ v: t.v,
285
+ w: t.w
286
+ };
287
+ return t.name !== void 0 && (r.name = t.name), n !== void 0 && (r.value = n), r;
288
+ });
289
+ }
290
+ function ae(e) {
291
+ let t = new g(e.options);
292
+ return e.value !== void 0 && t.setGraph(e.value), e.nodes.forEach((e) => {
293
+ t.setNode(e.v, e.value), e.parent && t.setParent(e.v, e.parent);
294
+ }), e.edges.forEach((e) => {
295
+ t.setEdge({
296
+ v: e.v,
297
+ w: e.w,
298
+ name: e.name
299
+ }, e.value);
300
+ }), t;
301
+ }
302
+ var S = {};
303
+ h(S, {
304
+ CycleException: () => T,
305
+ bellmanFord: () => C,
306
+ components: () => ce,
307
+ dijkstra: () => w,
308
+ dijkstraAll: () => fe,
309
+ findCycles: () => me,
310
+ floydWarshall: () => ge,
311
+ isAcyclic: () => ye,
312
+ postorder: () => xe,
313
+ preorder: () => Se,
314
+ prim: () => Ce,
315
+ shortestPaths: () => we,
316
+ tarjan: () => pe,
317
+ topsort: () => ve
318
+ });
319
+ var oe = () => 1;
320
+ function C(e, t, n, r) {
321
+ return se(e, String(t), n || oe, r || function(t) {
322
+ return e.outEdges(t);
323
+ });
324
+ }
325
+ function se(e, t, n, r) {
326
+ let i = {}, a, o = 0, s = e.nodes(), c = function(e) {
327
+ let t = n(e);
328
+ i[e.v].distance + t < i[e.w].distance && (i[e.w] = {
329
+ distance: i[e.v].distance + t,
330
+ predecessor: e.v
331
+ }, a = !0);
332
+ }, l = function() {
333
+ s.forEach(function(e) {
334
+ r(e).forEach(function(t) {
335
+ let n = t.v === e ? t.v : t.w, r = n === t.v ? t.w : t.v;
336
+ c({
337
+ v: n,
338
+ w: r
339
+ });
340
+ });
341
+ });
342
+ };
343
+ s.forEach(function(e) {
344
+ i[e] = {
345
+ distance: e === t ? 0 : Infinity,
346
+ predecessor: ""
347
+ };
348
+ });
349
+ let u = s.length;
350
+ for (let e = 1; e < u && (a = !1, o++, l(), a); e++);
351
+ if (o === u - 1 && (a = !1, l(), a)) throw Error("The graph contains a negative weight cycle");
352
+ return i;
353
+ }
354
+ function ce(e) {
355
+ let t = {}, n = [], r;
356
+ function i(n) {
357
+ n in t || (t[n] = !0, r.push(n), e.successors(n).forEach(i), e.predecessors(n).forEach(i));
358
+ }
359
+ return e.nodes().forEach(function(e) {
360
+ r = [], i(e), r.length && n.push(r);
361
+ }), n;
362
+ }
363
+ var le = class {
364
+ constructor() {
365
+ this._arr = [], this._keyIndices = {};
366
+ }
367
+ size() {
368
+ return this._arr.length;
369
+ }
370
+ keys() {
371
+ return this._arr.map((e) => e.key);
372
+ }
373
+ has(e) {
374
+ return e in this._keyIndices;
375
+ }
376
+ priority(e) {
377
+ let t = this._keyIndices[e];
378
+ if (t !== void 0) return this._arr[t].priority;
379
+ }
380
+ min() {
381
+ if (this.size() === 0) throw Error("Queue underflow");
382
+ return this._arr[0].key;
383
+ }
384
+ add(e, t) {
385
+ let n = this._keyIndices, r = String(e);
386
+ if (!(r in n)) {
387
+ let e = this._arr, i = e.length;
388
+ return n[r] = i, e.push({
389
+ key: r,
390
+ priority: t
391
+ }), this._decrease(i), !0;
392
+ }
393
+ return !1;
394
+ }
395
+ removeMin() {
396
+ this._swap(0, this._arr.length - 1);
397
+ let e = this._arr.pop();
398
+ return delete this._keyIndices[e.key], this._heapify(0), e.key;
399
+ }
400
+ decrease(e, t) {
401
+ let n = this._keyIndices[e];
402
+ if (n === void 0) throw Error(`Key not found: ${e}`);
403
+ let r = this._arr[n].priority;
404
+ if (t > r) throw Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${t}`);
405
+ this._arr[n].priority = t, this._decrease(n);
406
+ }
407
+ _heapify(e) {
408
+ let t = this._arr, n = 2 * e, r = n + 1, i = e;
409
+ n < t.length && (i = t[n].priority < t[i].priority ? n : i, r < t.length && (i = t[r].priority < t[i].priority ? r : i), i !== e && (this._swap(e, i), this._heapify(i)));
410
+ }
411
+ _decrease(e) {
412
+ let t = this._arr, n = t[e].priority, r;
413
+ for (; e !== 0 && (r = e >> 1, !(t[r].priority < n));) this._swap(e, r), e = r;
414
+ }
415
+ _swap(e, t) {
416
+ let n = this._arr, r = this._keyIndices, i = n[e], a = n[t];
417
+ n[e] = a, n[t] = i, r[a.key] = e, r[i.key] = t;
418
+ }
419
+ }, ue = () => 1;
420
+ function w(e, t, n, r) {
421
+ return de(e, String(t), n || ue, r || function(t) {
422
+ return e.outEdges(t);
423
+ });
424
+ }
425
+ function de(e, t, n, r) {
426
+ let i = {}, a = new le(), o, s, c = function(e) {
427
+ let t = e.v === o ? e.w : e.v, r = i[t], c = n(e), l = s.distance + c;
428
+ if (c < 0) throw Error("dijkstra does not allow negative edge weights. Bad edge: " + e + " Weight: " + c);
429
+ l < r.distance && (r.distance = l, r.predecessor = o, a.decrease(t, l));
430
+ };
431
+ for (e.nodes().forEach(function(e) {
432
+ let n = e === t ? 0 : Infinity;
433
+ i[e] = {
434
+ distance: n,
435
+ predecessor: ""
436
+ }, a.add(e, n);
437
+ }); a.size() > 0 && (o = a.removeMin(), s = i[o], s.distance !== Infinity);) r(o).forEach(c);
438
+ return i;
439
+ }
440
+ function fe(e, t, n) {
441
+ return e.nodes().reduce(function(r, i) {
442
+ return r[i] = w(e, i, t, n), r;
443
+ }, {});
444
+ }
445
+ function pe(e) {
446
+ let t = 0, n = [], r = {}, i = [];
447
+ function a(o) {
448
+ let s = r[o] = {
449
+ onStack: !0,
450
+ lowlink: t,
451
+ index: t++
452
+ };
453
+ if (n.push(o), e.successors(o).forEach(function(e) {
454
+ e in r ? r[e].onStack && (s.lowlink = Math.min(s.lowlink, r[e].index)) : (a(e), s.lowlink = Math.min(s.lowlink, r[e].lowlink));
455
+ }), s.lowlink === s.index) {
456
+ let e = [], t;
457
+ do
458
+ t = n.pop(), r[t].onStack = !1, e.push(t);
459
+ while (o !== t);
460
+ i.push(e);
461
+ }
462
+ }
463
+ return e.nodes().forEach(function(e) {
464
+ e in r || a(e);
465
+ }), i;
466
+ }
467
+ function me(e) {
468
+ return pe(e).filter(function(t) {
469
+ return t.length > 1 || t.length === 1 && e.hasEdge(t[0], t[0]);
470
+ });
471
+ }
472
+ var he = () => 1;
473
+ function ge(e, t, n) {
474
+ return _e(e, t || he, n || function(t) {
475
+ return e.outEdges(t);
476
+ });
477
+ }
478
+ function _e(e, t, n) {
479
+ let r = {}, i = e.nodes();
480
+ return i.forEach(function(e) {
481
+ r[e] = {}, r[e][e] = {
482
+ distance: 0,
483
+ predecessor: ""
484
+ }, i.forEach(function(t) {
485
+ e !== t && (r[e][t] = {
486
+ distance: Infinity,
487
+ predecessor: ""
488
+ });
489
+ }), n(e).forEach(function(n) {
490
+ let i = n.v === e ? n.w : n.v, a = t(n);
491
+ r[e][i] = {
492
+ distance: a,
493
+ predecessor: e
494
+ };
495
+ });
496
+ }), i.forEach(function(e) {
497
+ let t = r[e];
498
+ i.forEach(function(n) {
499
+ let a = r[n];
500
+ i.forEach(function(n) {
501
+ let r = a[e], i = t[n], o = a[n], s = r.distance + i.distance;
502
+ s < o.distance && (o.distance = s, o.predecessor = i.predecessor);
503
+ });
504
+ });
505
+ }), r;
506
+ }
507
+ var T = class extends Error {
508
+ constructor(...e) {
509
+ super(...e);
510
+ }
511
+ };
512
+ function ve(e) {
513
+ let t = {}, n = {}, r = [];
514
+ function i(a) {
515
+ if (a in n) throw new T();
516
+ a in t || (n[a] = !0, t[a] = !0, e.predecessors(a).forEach(i), delete n[a], r.push(a));
517
+ }
518
+ if (e.sinks().forEach(i), Object.keys(t).length !== e.nodeCount()) throw new T();
519
+ return r;
520
+ }
521
+ function ye(e) {
522
+ try {
523
+ ve(e);
524
+ } catch (e) {
525
+ if (e instanceof T) return !1;
526
+ throw e;
527
+ }
528
+ return !0;
529
+ }
530
+ function be(e, t, n, r, i) {
531
+ Array.isArray(t) || (t = [t]);
532
+ let a = ((t) => (e.isDirected() ? e.successors(t) : e.neighbors(t)) ?? []), o = {};
533
+ return t.forEach(function(t) {
534
+ if (!e.hasNode(t)) throw Error("Graph does not have node: " + t);
535
+ i = E(e, t, n === "post", o, a, r, i);
536
+ }), i;
537
+ }
538
+ function E(e, t, n, r, i, a, o) {
539
+ return t in r || (r[t] = !0, n || (o = a(o, t)), i(t).forEach(function(t) {
540
+ o = E(e, t, n, r, i, a, o);
541
+ }), n && (o = a(o, t))), o;
542
+ }
543
+ function D(e, t, n) {
544
+ return be(e, t, n, function(e, t) {
545
+ return e.push(t), e;
546
+ }, []);
547
+ }
548
+ function xe(e, t) {
549
+ return D(e, t, "post");
550
+ }
551
+ function Se(e, t) {
552
+ return D(e, t, "pre");
553
+ }
554
+ function Ce(e, t) {
555
+ let n = new g(), r = {}, i = new le(), a;
556
+ function o(e) {
557
+ let n = e.v === a ? e.w : e.v, o = i.priority(n);
558
+ if (o !== void 0) {
559
+ let s = t(e);
560
+ s < o && (r[n] = a, i.decrease(n, s));
561
+ }
562
+ }
563
+ if (e.nodeCount() === 0) return n;
564
+ e.nodes().forEach(function(e) {
565
+ i.add(e, Infinity), n.setNode(e);
566
+ }), i.decrease(e.nodes()[0], 0);
567
+ let s = !1;
568
+ for (; i.size() > 0;) {
569
+ if (a = i.removeMin(), a in r) n.setEdge(a, r[a]);
570
+ else {
571
+ if (s) throw Error("Input graph is not connected: " + e);
572
+ s = !0;
573
+ }
574
+ e.nodeEdges(a).forEach(o);
575
+ }
576
+ return n;
577
+ }
578
+ function we(e, t, n, r) {
579
+ return Te(e, t, n, r ?? ((t) => e.outEdges(t) ?? []));
580
+ }
581
+ function Te(e, t, n, r) {
582
+ if (n === void 0) return w(e, t, n, r);
583
+ let i = !1, a = e.nodes();
584
+ for (let o = 0; o < a.length; o++) {
585
+ let s = r(a[o]);
586
+ for (let e = 0; e < s.length; e++) {
587
+ let t = s[e], r = t.v === a[o] ? t.v : t.w;
588
+ n({
589
+ v: r,
590
+ w: r === t.v ? t.w : t.v
591
+ }) < 0 && (i = !0);
592
+ }
593
+ if (i) return C(e, t, n, r);
594
+ }
595
+ return w(e, t, n, r);
596
+ }
597
+ function O(e, t, n, r) {
598
+ let i = r;
599
+ for (; e.hasNode(i);) i = I(r);
600
+ return n.dummy = t, e.setNode(i, n), i;
601
+ }
602
+ function Ee(e) {
603
+ let t = new g().setGraph(e.graph());
604
+ return e.nodes().forEach((n) => t.setNode(n, e.node(n))), e.edges().forEach((n) => {
605
+ let r = t.edge(n.v, n.w) || {
606
+ weight: 0,
607
+ minlen: 1
608
+ }, i = e.edge(n);
609
+ t.setEdge(n.v, n.w, {
610
+ weight: r.weight + i.weight,
611
+ minlen: Math.max(r.minlen, i.minlen)
612
+ });
613
+ }), t;
614
+ }
615
+ function k(e) {
616
+ let t = new g({ multigraph: e.isMultigraph() }).setGraph(e.graph());
617
+ return e.nodes().forEach((n) => {
618
+ e.children(n).length || t.setNode(n, e.node(n));
619
+ }), e.edges().forEach((n) => {
620
+ t.setEdge(n, e.edge(n));
621
+ }), t;
622
+ }
623
+ function A(e, t) {
624
+ let n = e.x, r = e.y, i = t.x - n, a = t.y - r, o = e.width / 2, s = e.height / 2;
625
+ if (!i && !a) throw Error("Not possible to find intersection inside of the rectangle");
626
+ let c, l;
627
+ return Math.abs(a) * o > Math.abs(i) * s ? (a < 0 && (s = -s), c = s * i / a, l = s) : (i < 0 && (o = -o), c = o, l = o * a / i), {
628
+ x: n + c,
629
+ y: r + l
630
+ };
631
+ }
632
+ function j(e) {
633
+ let t = L(F(e) + 1).map(() => []);
634
+ return e.nodes().forEach((n) => {
635
+ let r = e.node(n), i = r.rank;
636
+ i !== void 0 && (t[i] || (t[i] = []), t[i][r.order] = n);
637
+ }), t;
638
+ }
639
+ function De(e) {
640
+ let t = e.nodes().map((t) => {
641
+ let n = e.node(t).rank;
642
+ return n === void 0 ? Number.MAX_VALUE : n;
643
+ }), n = P(Math.min, t);
644
+ e.nodes().forEach((t) => {
645
+ let r = e.node(t);
646
+ Object.hasOwn(r, "rank") && (r.rank -= n);
647
+ });
648
+ }
649
+ function Oe(e) {
650
+ let t = e.nodes().map((t) => e.node(t).rank).filter((e) => e !== void 0), n = P(Math.min, t), r = [];
651
+ e.nodes().forEach((t) => {
652
+ let i = e.node(t).rank - n;
653
+ r[i] || (r[i] = []), r[i].push(t);
654
+ });
655
+ let i = 0, a = e.graph().nodeRankFactor;
656
+ Array.from(r).forEach((t, n) => {
657
+ t === void 0 && n % a !== 0 ? --i : t !== void 0 && i && t.forEach((t) => e.node(t).rank += i);
658
+ });
659
+ }
660
+ function M(e, t, n, r) {
661
+ let i = {
662
+ width: 0,
663
+ height: 0
664
+ };
665
+ return arguments.length >= 4 && (i.rank = n, i.order = r), O(e, "border", i, t);
666
+ }
667
+ function ke(e, t = N) {
668
+ let n = [];
669
+ for (let r = 0; r < e.length; r += t) {
670
+ let i = e.slice(r, r + t);
671
+ n.push(i);
672
+ }
673
+ return n;
674
+ }
675
+ var N = 65535;
676
+ function P(e, t) {
677
+ return t.length > N ? e(...ke(t).map((t) => e(...t))) : e(...t);
678
+ }
679
+ function F(e) {
680
+ let t = e.nodes().map((t) => {
681
+ let n = e.node(t).rank;
682
+ return n === void 0 ? Number.MIN_VALUE : n;
683
+ });
684
+ return P(Math.max, t);
685
+ }
686
+ function Ae(e, t) {
687
+ let n = {
688
+ lhs: [],
689
+ rhs: []
690
+ };
691
+ return e.forEach((e) => {
692
+ t(e) ? n.lhs.push(e) : n.rhs.push(e);
693
+ }), n;
694
+ }
695
+ function je(e, t) {
696
+ let n = Date.now();
697
+ try {
698
+ return t();
699
+ } finally {
700
+ console.log(e + " time: " + (Date.now() - n) + "ms");
701
+ }
702
+ }
703
+ function Me(e, t) {
704
+ return t();
705
+ }
706
+ var Ne = 0;
707
+ function I(e) {
708
+ return e + ("" + ++Ne);
709
+ }
710
+ function L(e, t, n = 1) {
711
+ t ?? (t = e, e = 0);
712
+ let r = (e) => e < t;
713
+ n < 0 && (r = (e) => t < e);
714
+ let i = [];
715
+ for (let t = e; r(t); t += n) i.push(t);
716
+ return i;
717
+ }
718
+ function R(e, t) {
719
+ let n = {};
720
+ for (let r of t) e[r] !== void 0 && (n[r] = e[r]);
721
+ return n;
722
+ }
723
+ function z(e, t) {
724
+ let n;
725
+ return n = typeof t == "string" ? (e) => e[t] : t, Object.entries(e).reduce((e, [t, r]) => (e[t] = n(r, t), e), {});
726
+ }
727
+ function Pe(e, t) {
728
+ return e.reduce((e, n, r) => (e[n] = t[r], e), {});
729
+ }
730
+ var B = "\0", Fe = class {
731
+ constructor() {
732
+ f(this, "_sentinel");
733
+ let e = {};
734
+ e._next = e._prev = e, this._sentinel = e;
735
+ }
736
+ dequeue() {
737
+ let e = this._sentinel, t = e._prev;
738
+ if (t !== e) return Ie(t), t;
739
+ }
740
+ enqueue(e) {
741
+ let t = this._sentinel;
742
+ e._prev && e._next && Ie(e), e._next = t._next, t._next._prev = e, t._next = e, e._prev = t;
743
+ }
744
+ toString() {
745
+ let e = [], t = this._sentinel, n = t._prev;
746
+ for (; n !== t;) e.push(JSON.stringify(n, Le)), n = n._prev;
747
+ return "[" + e.join(", ") + "]";
748
+ }
749
+ };
750
+ function Ie(e) {
751
+ e._prev._next = e._next, e._next._prev = e._prev, delete e._next, delete e._prev;
752
+ }
753
+ function Le(e, t) {
754
+ if (e !== "_next" && e !== "_prev") return t;
755
+ }
756
+ var Re = Fe, ze = () => 1;
757
+ function Be(e, t) {
758
+ if (e.nodeCount() <= 1) return [];
759
+ let n = He(e, t || ze);
760
+ return Ve(n.graph, n.buckets, n.zeroIdx).flatMap((t) => e.outEdges(t.v, t.w) || []);
761
+ }
762
+ function Ve(e, t, n) {
763
+ let r = [], i = t[t.length - 1], a = t[0], o;
764
+ for (; e.nodeCount();) {
765
+ for (; o = a.dequeue();) V(e, t, n, o);
766
+ for (; o = i.dequeue();) V(e, t, n, o);
767
+ if (e.nodeCount()) {
768
+ for (let i = t.length - 2; i > 0; --i) if (o = t[i]?.dequeue(), o) {
769
+ r = r.concat(V(e, t, n, o, !0) || []);
770
+ break;
771
+ }
772
+ }
773
+ }
774
+ return r;
775
+ }
776
+ function V(e, t, n, r, i) {
777
+ let a = [], o = i ? a : void 0;
778
+ return (e.inEdges(r.v) || []).forEach((r) => {
779
+ let o = e.edge(r), s = e.node(r.v);
780
+ i && a.push({
781
+ v: r.v,
782
+ w: r.w
783
+ }), s.out -= o, H(t, n, s);
784
+ }), (e.outEdges(r.v) || []).forEach((r) => {
785
+ let i = e.edge(r), a = r.w, o = e.node(a);
786
+ o.in -= i, H(t, n, o);
787
+ }), e.removeNode(r.v), o;
788
+ }
789
+ function He(e, t) {
790
+ let n = new g(), r = 0, i = 0;
791
+ e.nodes().forEach((e) => {
792
+ n.setNode(e, {
793
+ v: e,
794
+ in: 0,
795
+ out: 0
796
+ });
797
+ }), e.edges().forEach((e) => {
798
+ let a = n.edge(e.v, e.w) || 0, o = t(e), s = a + o;
799
+ n.setEdge(e.v, e.w, s);
800
+ let c = n.node(e.v), l = n.node(e.w);
801
+ i = Math.max(i, c.out += o), r = Math.max(r, l.in += o);
802
+ });
803
+ let a = Ue(i + r + 3).map(() => new Re()), o = r + 1;
804
+ return n.nodes().forEach((e) => {
805
+ H(a, o, n.node(e));
806
+ }), {
807
+ graph: n,
808
+ buckets: a,
809
+ zeroIdx: o
810
+ };
811
+ }
812
+ function H(e, t, n) {
813
+ var r, i, a;
814
+ n.out ? n.in ? (a = e[n.out - n.in + t]) == null || a.enqueue(n) : (i = e[e.length - 1]) == null || i.enqueue(n) : (r = e[0]) == null || r.enqueue(n);
815
+ }
816
+ function Ue(e) {
817
+ let t = [];
818
+ for (let n = 0; n < e; n++) t.push(n);
819
+ return t;
820
+ }
821
+ function We(e) {
822
+ (e.graph().acyclicer === "greedy" ? Be(e, t(e)) : Ge(e)).forEach((t) => {
823
+ let n = e.edge(t);
824
+ e.removeEdge(t), n.forwardName = t.name, n.reversed = !0, e.setEdge(t.w, t.v, n, I("rev"));
825
+ });
826
+ function t(e) {
827
+ return (t) => e.edge(t).weight;
828
+ }
829
+ }
830
+ function Ge(e) {
831
+ let t = [], n = {}, r = {};
832
+ function i(a) {
833
+ Object.hasOwn(r, a) || (r[a] = !0, n[a] = !0, e.outEdges(a).forEach((e) => {
834
+ Object.hasOwn(n, e.w) ? t.push(e) : i(e.w);
835
+ }), delete n[a]);
836
+ }
837
+ return e.nodes().forEach(i), t;
838
+ }
839
+ function Ke(e) {
840
+ e.edges().forEach((t) => {
841
+ let n = e.edge(t);
842
+ if (n.reversed) {
843
+ e.removeEdge(t);
844
+ let r = n.forwardName;
845
+ delete n.reversed, delete n.forwardName, e.setEdge(t.w, t.v, n, r);
846
+ }
847
+ });
848
+ }
849
+ function qe(e) {
850
+ e.graph().dummyChains = [], e.edges().forEach((t) => Je(e, t));
851
+ }
852
+ function Je(e, t) {
853
+ let n = t.v, r = e.node(n).rank, i = t.w, a = e.node(i).rank, o = t.name, s = e.edge(t), c = s.labelRank;
854
+ if (a === r + 1) return;
855
+ e.removeEdge(t);
856
+ let l, u, d;
857
+ for (d = 0, ++r; r < a; ++d, ++r) s.points = [], u = {
858
+ width: 0,
859
+ height: 0,
860
+ edgeLabel: s,
861
+ edgeObj: t,
862
+ rank: r
863
+ }, l = O(e, "edge", u, "_d"), r === c && (u.width = s.width, u.height = s.height, u.dummy = "edge-label", u.labelpos = s.labelpos), e.setEdge(n, l, { weight: s.weight }, o), d === 0 && e.graph().dummyChains.push(l), n = l;
864
+ e.setEdge(n, i, { weight: s.weight }, o);
865
+ }
866
+ function Ye(e) {
867
+ e.graph().dummyChains.forEach((t) => {
868
+ let n = e.node(t), r = n.edgeLabel, i;
869
+ for (e.setEdge(n.edgeObj, r); n.dummy;) i = e.successors(t)[0], e.removeNode(t), r.points.push({
870
+ x: n.x,
871
+ y: n.y
872
+ }), n.dummy === "edge-label" && (r.x = n.x, r.y = n.y, r.width = n.width, r.height = n.height), t = i, n = e.node(t);
873
+ });
874
+ }
875
+ function U(e) {
876
+ let t = {};
877
+ function n(r) {
878
+ let i = e.node(r);
879
+ if (Object.hasOwn(t, r)) return i.rank;
880
+ t[r] = !0;
881
+ let a = e.outEdges(r), o = a ? a.map((t) => t == null ? Infinity : n(t.w) - e.edge(t).minlen) : [], s = P(Math.min, o);
882
+ return s === Infinity && (s = 0), i.rank = s;
883
+ }
884
+ e.sources().forEach(n);
885
+ }
886
+ function W(e, t) {
887
+ return e.node(t.w).rank - e.node(t.v).rank - e.edge(t).minlen;
888
+ }
889
+ var Xe = Ze;
890
+ function Ze(e) {
891
+ let t = new g({ directed: !1 }), n = e.nodes();
892
+ if (n.length === 0) throw Error("Graph must have at least one node");
893
+ let r = n[0], i = e.nodeCount();
894
+ t.setNode(r, {});
895
+ let a, o;
896
+ for (; Qe(t, e) < i && (a = $e(t, e), a);) o = t.hasNode(a.v) ? W(e, a) : -W(e, a), et(t, e, o);
897
+ return t;
898
+ }
899
+ function Qe(e, t) {
900
+ function n(r) {
901
+ let i = t.nodeEdges(r);
902
+ i && i.forEach((i) => {
903
+ let a = i.v, o = r === a ? i.w : a;
904
+ !e.hasNode(o) && !W(t, i) && (e.setNode(o, {}), e.setEdge(r, o, {}), n(o));
905
+ });
906
+ }
907
+ return e.nodes().forEach(n), e.nodeCount();
908
+ }
909
+ function $e(e, t) {
910
+ return t.edges().reduce((n, r) => {
911
+ let i = Infinity;
912
+ return e.hasNode(r.v) !== e.hasNode(r.w) && (i = W(t, r)), i < n[0] ? [i, r] : n;
913
+ }, [Infinity, null])[1];
914
+ }
915
+ function et(e, t, n) {
916
+ e.nodes().forEach((e) => t.node(e).rank += n);
917
+ }
918
+ var { preorder: tt, postorder: nt } = S, rt = G;
919
+ G.initLowLimValues = q, G.initCutValues = K, G.calcCutValue = at, G.leaveEdge = st, G.enterEdge = ct, G.exchangeEdges = lt;
920
+ function G(e) {
921
+ e = Ee(e), U(e);
922
+ let t = Xe(e);
923
+ q(t), K(t, e);
924
+ let n, r;
925
+ for (; n = st(t);) r = ct(t, e, n), lt(t, e, n, r);
926
+ }
927
+ function K(e, t) {
928
+ let n = nt(e, e.nodes());
929
+ n = n.slice(0, n.length - 1), n.forEach((n) => it(e, t, n));
930
+ }
931
+ function it(e, t, n) {
932
+ let r = e.node(n).parent, i = e.edge(n, r);
933
+ i.cutvalue = at(e, t, n);
934
+ }
935
+ function at(e, t, n) {
936
+ let r = e.node(n).parent, i = !0, a = t.edge(n, r), o = 0;
937
+ a ||= (i = !1, t.edge(r, n)), o = a.weight;
938
+ let s = t.nodeEdges(n);
939
+ return s && s.forEach((a) => {
940
+ let s = a.v === n, c = s ? a.w : a.v;
941
+ if (c !== r) {
942
+ let r = s === i, l = t.edge(a).weight;
943
+ if (o += r ? l : -l, dt(e, n, c)) {
944
+ let t = e.edge(n, c).cutvalue;
945
+ o += r ? -t : t;
946
+ }
947
+ }
948
+ }), o;
949
+ }
950
+ function q(e, t) {
951
+ arguments.length < 2 && (t = e.nodes()[0]), ot(e, {}, 1, t);
952
+ }
953
+ function ot(e, t, n, r, i) {
954
+ let a = n, o = e.node(r);
955
+ t[r] = !0;
956
+ let s = e.neighbors(r);
957
+ return s && s.forEach((i) => {
958
+ Object.hasOwn(t, i) || (n = ot(e, t, n, i, r));
959
+ }), o.low = a, o.lim = n++, i ? o.parent = i : delete o.parent, n;
960
+ }
961
+ function st(e) {
962
+ return e.edges().find((t) => e.edge(t).cutvalue < 0);
963
+ }
964
+ function ct(e, t, n) {
965
+ let r = n.v, i = n.w;
966
+ t.hasEdge(r, i) || (r = n.w, i = n.v);
967
+ let a = e.node(r), o = e.node(i), s = a, c = !1;
968
+ return a.lim > o.lim && (s = o, c = !0), t.edges().filter((t) => c === ft(e, e.node(t.v), s) && c !== ft(e, e.node(t.w), s)).reduce((e, n) => W(t, n) < W(t, e) ? n : e);
969
+ }
970
+ function lt(e, t, n, r) {
971
+ let i = n.v, a = n.w;
972
+ e.removeEdge(i, a), e.setEdge(r.v, r.w, {}), q(e), K(e, t), ut(e, t);
973
+ }
974
+ function ut(e, t) {
975
+ let n = e.nodes().find((t) => !e.node(t).parent);
976
+ if (!n) return;
977
+ let r = tt(e, [n]);
978
+ r = r.slice(1), r.forEach((n) => {
979
+ let r = e.node(n).parent, i = t.edge(n, r), a = !1;
980
+ i || (i = t.edge(r, n), a = !0), t.node(n).rank = t.node(r).rank + (a ? i.minlen : -i.minlen);
981
+ });
982
+ }
983
+ function dt(e, t, n) {
984
+ return e.hasEdge(t, n);
985
+ }
986
+ function ft(e, t, n) {
987
+ return n.low <= t.lim && t.lim <= n.lim;
988
+ }
989
+ var pt = mt;
990
+ function mt(e) {
991
+ let t = e.graph().ranker;
992
+ if (typeof t == "function") return t(e);
993
+ switch (t) {
994
+ case "network-simplex":
995
+ _t(e);
996
+ break;
997
+ case "tight-tree":
998
+ gt(e);
999
+ break;
1000
+ case "longest-path":
1001
+ ht(e);
1002
+ break;
1003
+ case "none": break;
1004
+ default: _t(e);
1005
+ }
1006
+ }
1007
+ var ht = U;
1008
+ function gt(e) {
1009
+ U(e), Xe(e);
1010
+ }
1011
+ function _t(e) {
1012
+ rt(e);
1013
+ }
1014
+ var vt = yt;
1015
+ function yt(e) {
1016
+ let t = xt(e);
1017
+ e.graph().dummyChains.forEach((n) => {
1018
+ let r = e.node(n), i = r.edgeObj, a = bt(e, t, i.v, i.w), o = a.path, s = a.lca, c = 0, l = o[c], u = !0;
1019
+ for (; n !== i.w;) {
1020
+ if (r = e.node(n), u) {
1021
+ for (; (l = o[c]) !== s && e.node(l).maxRank < r.rank;) c++;
1022
+ l === s && (u = !1);
1023
+ }
1024
+ if (!u) {
1025
+ for (; c < o.length - 1 && e.node(o[c + 1]).minRank <= r.rank;) c++;
1026
+ l = o[c];
1027
+ }
1028
+ l !== void 0 && e.setParent(n, l), n = e.successors(n)[0];
1029
+ }
1030
+ });
1031
+ }
1032
+ function bt(e, t, n, r) {
1033
+ let i = [], a = [], o = Math.min(t[n].low, t[r].low), s = Math.max(t[n].lim, t[r].lim), c;
1034
+ c = n;
1035
+ do
1036
+ c = e.parent(c), i.push(c);
1037
+ while (c && (t[c].low > o || s > t[c].lim));
1038
+ let l = c, u = r;
1039
+ for (; (u = e.parent(u)) !== l;) a.push(u);
1040
+ return {
1041
+ path: i.concat(a.reverse()),
1042
+ lca: l
1043
+ };
1044
+ }
1045
+ function xt(e) {
1046
+ let t = {}, n = 0;
1047
+ function r(i) {
1048
+ let a = n;
1049
+ e.children(i).forEach(r), t[i] = {
1050
+ low: a,
1051
+ lim: n++
1052
+ };
1053
+ }
1054
+ return e.children(B).forEach(r), t;
1055
+ }
1056
+ function St(e) {
1057
+ let t = O(e, "root", {}, "_root"), n = Ct(e), r = Object.values(n), i = P(Math.max, r) - 1, a = 2 * i + 1;
1058
+ e.graph().nestingRoot = t, e.edges().forEach((t) => e.edge(t).minlen *= a);
1059
+ let o = wt(e) + 1;
1060
+ e.children(B).forEach((r) => J(e, t, a, o, i, n, r)), e.graph().nodeRankFactor = a;
1061
+ }
1062
+ function J(e, t, n, r, i, a, o) {
1063
+ let s = e.children(o);
1064
+ if (!s.length) {
1065
+ o !== t && e.setEdge(t, o, {
1066
+ weight: 0,
1067
+ minlen: n
1068
+ });
1069
+ return;
1070
+ }
1071
+ let c = M(e, "_bt"), l = M(e, "_bb"), u = e.node(o);
1072
+ e.setParent(c, o), u.borderTop = c, e.setParent(l, o), u.borderBottom = l, s.forEach((s) => {
1073
+ J(e, t, n, r, i, a, s);
1074
+ let u = e.node(s), d = u.borderTop ? u.borderTop : s, f = u.borderBottom ? u.borderBottom : s, p = u.borderTop ? r : 2 * r, m = d === f ? i - (a[o] ?? 0) + 1 : 1;
1075
+ e.setEdge(c, d, {
1076
+ weight: p,
1077
+ minlen: m,
1078
+ nestingEdge: !0
1079
+ }), e.setEdge(f, l, {
1080
+ weight: p,
1081
+ minlen: m,
1082
+ nestingEdge: !0
1083
+ });
1084
+ }), e.parent(o) || e.setEdge(t, c, {
1085
+ weight: 0,
1086
+ minlen: i + (a[o] ?? 0)
1087
+ });
1088
+ }
1089
+ function Ct(e) {
1090
+ let t = {};
1091
+ function n(r, i) {
1092
+ let a = e.children(r);
1093
+ a && a.length && a.forEach((e) => n(e, i + 1)), t[r] = i;
1094
+ }
1095
+ return e.children(B).forEach((e) => n(e, 1)), t;
1096
+ }
1097
+ function wt(e) {
1098
+ return e.edges().reduce((t, n) => t + e.edge(n).weight, 0);
1099
+ }
1100
+ function Tt(e) {
1101
+ let t = e.graph();
1102
+ e.removeNode(t.nestingRoot), delete t.nestingRoot, e.edges().forEach((t) => {
1103
+ e.edge(t).nestingEdge && e.removeEdge(t);
1104
+ });
1105
+ }
1106
+ var Et = Dt;
1107
+ function Dt(e) {
1108
+ function t(n) {
1109
+ let r = e.children(n), i = e.node(n);
1110
+ if (r.length && r.forEach(t), Object.hasOwn(i, "minRank")) {
1111
+ i.borderLeft = [], i.borderRight = [];
1112
+ for (let t = i.minRank, r = i.maxRank + 1; t < r; ++t) Ot(e, "borderLeft", "_bl", n, i, t), Ot(e, "borderRight", "_br", n, i, t);
1113
+ }
1114
+ }
1115
+ e.children(B).forEach(t);
1116
+ }
1117
+ function Ot(e, t, n, r, i, a) {
1118
+ let o = {
1119
+ width: 0,
1120
+ height: 0,
1121
+ rank: a,
1122
+ borderType: t
1123
+ }, s = i[t][a - 1], c = O(e, "border", o, n);
1124
+ i[t][a] = c, e.setParent(c, r), s && e.setEdge(s, c, { weight: 1 });
1125
+ }
1126
+ function kt(e) {
1127
+ let t = e.graph().rankdir?.toLowerCase();
1128
+ (t === "lr" || t === "rl") && jt(e);
1129
+ }
1130
+ function At(e) {
1131
+ let t = e.graph().rankdir?.toLowerCase();
1132
+ (t === "bt" || t === "rl") && Nt(e), (t === "lr" || t === "rl") && (Pt(e), jt(e));
1133
+ }
1134
+ function jt(e) {
1135
+ e.nodes().forEach((t) => Mt(e.node(t))), e.edges().forEach((t) => Mt(e.edge(t)));
1136
+ }
1137
+ function Mt(e) {
1138
+ let t = e.width;
1139
+ e.width = e.height, e.height = t;
1140
+ }
1141
+ function Nt(e) {
1142
+ e.nodes().forEach((t) => Y(e.node(t))), e.edges().forEach((t) => {
1143
+ var n;
1144
+ let r = e.edge(t);
1145
+ (n = r.points) == null || n.forEach(Y), Object.hasOwn(r, "y") && Y(r);
1146
+ });
1147
+ }
1148
+ function Y(e) {
1149
+ e.y = -e.y;
1150
+ }
1151
+ function Pt(e) {
1152
+ e.nodes().forEach((t) => X(e.node(t))), e.edges().forEach((t) => {
1153
+ var n;
1154
+ let r = e.edge(t);
1155
+ (n = r.points) == null || n.forEach(X), Object.hasOwn(r, "x") && X(r);
1156
+ });
1157
+ }
1158
+ function X(e) {
1159
+ let t = e.x;
1160
+ e.x = e.y, e.y = t;
1161
+ }
1162
+ function Ft(e) {
1163
+ let t = {}, n = e.nodes().filter((t) => !e.children(t).length), r = n.map((t) => e.node(t).rank), i = L(P(Math.max, r) + 1).map(() => []);
1164
+ function a(n) {
1165
+ if (t[n]) return;
1166
+ t[n] = !0;
1167
+ let r = e.node(n);
1168
+ i[r.rank].push(n);
1169
+ let o = e.successors(n);
1170
+ o && o.forEach(a);
1171
+ }
1172
+ return n.sort((t, n) => e.node(t).rank - e.node(n).rank).forEach(a), i;
1173
+ }
1174
+ function It(e, t) {
1175
+ let n = 0;
1176
+ for (let r = 1; r < t.length; ++r) n += Lt(e, t[r - 1], t[r]);
1177
+ return n;
1178
+ }
1179
+ function Lt(e, t, n) {
1180
+ let r = Pe(n, n.map((e, t) => t)), i = t.flatMap((t) => {
1181
+ let n = e.outEdges(t);
1182
+ return n ? n.map((t) => ({
1183
+ pos: r[t.w],
1184
+ weight: e.edge(t).weight
1185
+ })).sort((e, t) => e.pos - t.pos) : [];
1186
+ }), a = 1;
1187
+ for (; a < n.length;) a <<= 1;
1188
+ let o = 2 * a - 1;
1189
+ --a;
1190
+ let s = Array(o).fill(0), c = 0;
1191
+ return i.forEach((e) => {
1192
+ let t = e.pos + a;
1193
+ s[t] += e.weight;
1194
+ let n = 0;
1195
+ for (; t > 0;) t % 2 && (n += s[t + 1]), t = t - 1 >> 1, s[t] += e.weight;
1196
+ c += e.weight * n;
1197
+ }), c;
1198
+ }
1199
+ function Rt(e, t = []) {
1200
+ return t.map((t) => {
1201
+ let n = e.inEdges(t);
1202
+ if (!n || !n.length) return { v: t };
1203
+ {
1204
+ let r = n.reduce((t, n) => {
1205
+ let r = e.edge(n), i = e.node(n.v);
1206
+ return {
1207
+ sum: t.sum + r.weight * i.order,
1208
+ weight: t.weight + r.weight
1209
+ };
1210
+ }, {
1211
+ sum: 0,
1212
+ weight: 0
1213
+ });
1214
+ return {
1215
+ v: t,
1216
+ barycenter: r.sum / r.weight,
1217
+ weight: r.weight
1218
+ };
1219
+ }
1220
+ });
1221
+ }
1222
+ function zt(e, t) {
1223
+ let n = {};
1224
+ return e.forEach((e, t) => {
1225
+ let r = {
1226
+ indegree: 0,
1227
+ in: [],
1228
+ out: [],
1229
+ vs: [e.v],
1230
+ i: t
1231
+ };
1232
+ e.barycenter !== void 0 && (r.barycenter = e.barycenter, r.weight = e.weight), n[e.v] = r;
1233
+ }), t.edges().forEach((e) => {
1234
+ let t = n[e.v], r = n[e.w];
1235
+ t !== void 0 && r !== void 0 && (r.indegree++, t.out.push(r));
1236
+ }), Bt(Object.values(n).filter((e) => !e.indegree));
1237
+ }
1238
+ function Bt(e) {
1239
+ let t = [];
1240
+ function n(e) {
1241
+ return (t) => {
1242
+ t.merged || (t.barycenter === void 0 || e.barycenter === void 0 || t.barycenter >= e.barycenter) && Vt(e, t);
1243
+ };
1244
+ }
1245
+ function r(t) {
1246
+ return (n) => {
1247
+ n.in.push(t), --n.indegree === 0 && e.push(n);
1248
+ };
1249
+ }
1250
+ for (; e.length;) {
1251
+ let i = e.pop();
1252
+ t.push(i), i.in.reverse().forEach(n(i)), i.out.forEach(r(i));
1253
+ }
1254
+ return t.filter((e) => !e.merged).map((e) => R(e, [
1255
+ "vs",
1256
+ "i",
1257
+ "barycenter",
1258
+ "weight"
1259
+ ]));
1260
+ }
1261
+ function Vt(e, t) {
1262
+ let n = 0, r = 0;
1263
+ e.weight && (n += e.barycenter * e.weight, r += e.weight), t.weight && (n += t.barycenter * t.weight, r += t.weight), e.vs = t.vs.concat(e.vs), e.barycenter = n / r, e.weight = r, e.i = Math.min(t.i, e.i), t.merged = !0;
1264
+ }
1265
+ function Ht(e, t) {
1266
+ let n = Ae(e, (e) => Object.hasOwn(e, "barycenter")), r = n.lhs, i = n.rhs.sort((e, t) => t.i - e.i), a = [], o = 0, s = 0, c = 0;
1267
+ r.sort(Wt(!!t)), c = Ut(a, i, c), r.forEach((e) => {
1268
+ c += e.vs.length, a.push(e.vs), o += e.barycenter * e.weight, s += e.weight, c = Ut(a, i, c);
1269
+ });
1270
+ let l = { vs: a.flat(1) };
1271
+ return s && (l.barycenter = o / s, l.weight = s), l;
1272
+ }
1273
+ function Ut(e, t, n) {
1274
+ let r;
1275
+ for (; t.length && (r = t[t.length - 1]).i <= n;) t.pop(), e.push(r.vs), n++;
1276
+ return n;
1277
+ }
1278
+ function Wt(e) {
1279
+ return (t, n) => t.barycenter < n.barycenter ? -1 : t.barycenter > n.barycenter ? 1 : e ? n.i - t.i : t.i - n.i;
1280
+ }
1281
+ function Gt(e, t, n, r) {
1282
+ let i = e.children(t), a = e.node(t), o = a ? a.borderLeft : void 0, s = a ? a.borderRight : void 0, c = {};
1283
+ o && (i = i.filter((e) => e !== o && e !== s));
1284
+ let l = Rt(e, i);
1285
+ l.forEach((t) => {
1286
+ if (e.children(t.v).length) {
1287
+ let i = Gt(e, t.v, n, r);
1288
+ c[t.v] = i, Object.hasOwn(i, "barycenter") && qt(t, i);
1289
+ }
1290
+ });
1291
+ let u = zt(l, n);
1292
+ Kt(u, c);
1293
+ let d = Ht(u, r);
1294
+ if (o && s) {
1295
+ d.vs = [
1296
+ o,
1297
+ d.vs,
1298
+ s
1299
+ ].flat(1);
1300
+ let t = e.predecessors(o);
1301
+ if (t && t.length) {
1302
+ let n = e.node(t[0]), r = e.predecessors(s), i = e.node(r[0]);
1303
+ Object.hasOwn(d, "barycenter") || (d.barycenter = 0, d.weight = 0), d.barycenter = (d.barycenter * d.weight + n.order + i.order) / (d.weight + 2), d.weight += 2;
1304
+ }
1305
+ }
1306
+ return d;
1307
+ }
1308
+ function Kt(e, t) {
1309
+ e.forEach((e) => {
1310
+ e.vs = e.vs.flatMap((e) => t[e] ? t[e].vs : e);
1311
+ });
1312
+ }
1313
+ function qt(e, t) {
1314
+ e.barycenter === void 0 ? (e.barycenter = t.barycenter, e.weight = t.weight) : (e.barycenter = (e.barycenter * e.weight + t.barycenter * t.weight) / (e.weight + t.weight), e.weight += t.weight);
1315
+ }
1316
+ function Jt(e, t, n, r) {
1317
+ r ||= e.nodes();
1318
+ let i = Yt(e), a = new g({ compound: !0 }).setGraph({ root: i }).setDefaultNodeLabel((t) => e.node(t));
1319
+ return r.forEach((r) => {
1320
+ let o = e.node(r), s = e.parent(r);
1321
+ if (o.rank === t || o.minRank <= t && t <= o.maxRank) {
1322
+ a.setNode(r), a.setParent(r, s || i);
1323
+ let c = e[n](r);
1324
+ c && c.forEach((t) => {
1325
+ let n = t.v === r ? t.w : t.v, i = a.edge(n, r), o = i === void 0 ? 0 : i.weight;
1326
+ a.setEdge(n, r, { weight: e.edge(t).weight + o });
1327
+ }), Object.hasOwn(o, "minRank") && a.setNode(r, {
1328
+ borderLeft: o.borderLeft[t],
1329
+ borderRight: o.borderRight[t]
1330
+ });
1331
+ }
1332
+ }), a;
1333
+ }
1334
+ function Yt(e) {
1335
+ let t;
1336
+ for (; e.hasNode(t = I("_root")););
1337
+ return t;
1338
+ }
1339
+ function Xt(e, t, n) {
1340
+ let r = {}, i;
1341
+ n.forEach((n) => {
1342
+ let a = e.parent(n), o, s;
1343
+ for (; a;) {
1344
+ if (o = e.parent(a), o ? (s = r[o], r[o] = a) : (s = i, i = a), s && s !== a) {
1345
+ t.setEdge(s, a);
1346
+ return;
1347
+ }
1348
+ a = o;
1349
+ }
1350
+ });
1351
+ }
1352
+ function Zt(e, t = {}) {
1353
+ if (typeof t.customOrder == "function") {
1354
+ t.customOrder(e, Zt);
1355
+ return;
1356
+ }
1357
+ let n = F(e), r = Qt(e, L(1, n + 1), "inEdges"), i = Qt(e, L(n - 1, -1, -1), "outEdges"), a = Ft(e);
1358
+ if (en(e, a), t.disableOptimalOrderHeuristic) return;
1359
+ let o = Infinity, s, c = t.constraints || [];
1360
+ for (let t = 0, n = 0; n < 4; ++t, ++n) {
1361
+ $t(t % 2 ? r : i, t % 4 >= 2, c), a = j(e);
1362
+ let l = It(e, a);
1363
+ l < o ? (n = 0, s = Object.assign({}, a), o = l) : l === o && (s = structuredClone(a));
1364
+ }
1365
+ en(e, s);
1366
+ }
1367
+ function Qt(e, t, n) {
1368
+ let r = /* @__PURE__ */ new Map(), i = (e, t) => {
1369
+ r.has(e) || r.set(e, []), r.get(e).push(t);
1370
+ };
1371
+ for (let t of e.nodes()) {
1372
+ let n = e.node(t);
1373
+ if (typeof n.rank == "number" && i(n.rank, t), typeof n.minRank == "number" && typeof n.maxRank == "number") for (let e = n.minRank; e <= n.maxRank; e++) e !== n.rank && i(e, t);
1374
+ }
1375
+ return t.map(function(t) {
1376
+ return Jt(e, t, n, r.get(t) || []);
1377
+ });
1378
+ }
1379
+ function $t(e, t, n) {
1380
+ let r = new g();
1381
+ e.forEach(function(e) {
1382
+ n.forEach((e) => r.setEdge(e.left, e.right));
1383
+ let i = e.graph().root, a = Gt(e, i, r, t);
1384
+ a.vs.forEach((t, n) => e.node(t).order = n), Xt(e, r, a.vs);
1385
+ });
1386
+ }
1387
+ function en(e, t) {
1388
+ Object.values(t).forEach((t) => t.forEach((t, n) => e.node(t).order = n));
1389
+ }
1390
+ function tn(e, t) {
1391
+ let n = {};
1392
+ function r(t, r) {
1393
+ let i = 0, a = 0, o = t.length, s = r[r.length - 1];
1394
+ return r.forEach((t, c) => {
1395
+ let l = rn(e, t), u = l ? e.node(l).order : o;
1396
+ (l || t === s) && (r.slice(a, c + 1).forEach((t) => {
1397
+ let r = e.predecessors(t);
1398
+ r && r.forEach((r) => {
1399
+ let a = e.node(r), o = a.order;
1400
+ (o < i || u < o) && !(a.dummy && e.node(t).dummy) && an(n, r, t);
1401
+ });
1402
+ }), a = c + 1, i = u);
1403
+ }), r;
1404
+ }
1405
+ return t.length && t.reduce(r), n;
1406
+ }
1407
+ function nn(e, t) {
1408
+ let n = {};
1409
+ function r(t, r, i, a, o) {
1410
+ L(r, i).forEach((r) => {
1411
+ let i = t[r];
1412
+ if (i !== void 0 && e.node(i).dummy) {
1413
+ let t = e.predecessors(i);
1414
+ t && t.forEach((t) => {
1415
+ if (t === void 0) return;
1416
+ let r = e.node(t);
1417
+ r.dummy && (r.order < a || r.order > o) && an(n, t, i);
1418
+ });
1419
+ }
1420
+ });
1421
+ }
1422
+ function i(t, n) {
1423
+ let i = -1, a = -1, o = 0;
1424
+ return n.forEach((s, c) => {
1425
+ if (e.node(s).dummy === "border") {
1426
+ let t = e.predecessors(s);
1427
+ if (t && t.length) {
1428
+ let s = t[0];
1429
+ if (s === void 0) return;
1430
+ a = e.node(s).order, r(n, o, c, i, a), o = c, i = a;
1431
+ }
1432
+ }
1433
+ r(n, o, n.length, a, t.length);
1434
+ }), n;
1435
+ }
1436
+ return t.length && t.reduce(i), n;
1437
+ }
1438
+ function rn(e, t) {
1439
+ if (e.node(t).dummy) {
1440
+ let n = e.predecessors(t);
1441
+ if (n) return n.find((t) => e.node(t).dummy);
1442
+ }
1443
+ }
1444
+ function an(e, t, n) {
1445
+ if (t > n) {
1446
+ let e = t;
1447
+ t = n, n = e;
1448
+ }
1449
+ let r = e[t];
1450
+ r || (e[t] = r = {}), r[n] = !0;
1451
+ }
1452
+ function on(e, t, n) {
1453
+ if (t > n) {
1454
+ let e = t;
1455
+ t = n, n = e;
1456
+ }
1457
+ let r = e[t];
1458
+ return r !== void 0 && Object.hasOwn(r, n);
1459
+ }
1460
+ function sn(e, t, n, r) {
1461
+ let i = {}, a = {}, o = {};
1462
+ return t.forEach((e) => {
1463
+ e.forEach((e, t) => {
1464
+ i[e] = e, a[e] = e, o[e] = t;
1465
+ });
1466
+ }), t.forEach((e) => {
1467
+ let t = -1;
1468
+ e.forEach((e) => {
1469
+ let s = r(e);
1470
+ if (s && s.length) {
1471
+ let r = s.sort((e, t) => {
1472
+ let n = o[e], r = o[t];
1473
+ return (n === void 0 ? 0 : n) - (r === void 0 ? 0 : r);
1474
+ }), c = (r.length - 1) / 2;
1475
+ for (let s = Math.floor(c), l = Math.ceil(c); s <= l; ++s) {
1476
+ let c = r[s];
1477
+ if (c === void 0) continue;
1478
+ let l = o[c];
1479
+ if (l !== void 0 && a[e] === e && t < l && !on(n, e, c)) {
1480
+ let n = i[c];
1481
+ n !== void 0 && (a[c] = e, a[e] = i[e] = n, t = l);
1482
+ }
1483
+ }
1484
+ }
1485
+ });
1486
+ }), {
1487
+ root: i,
1488
+ align: a
1489
+ };
1490
+ }
1491
+ function cn(e, t, n, r, i = !1) {
1492
+ let a = {}, o = ln(e, t, n, i), s = i ? "borderLeft" : "borderRight";
1493
+ function c(e, t) {
1494
+ let n = o.nodes().slice(), r = {}, i = n.pop();
1495
+ for (; i;) {
1496
+ if (r[i]) e(i);
1497
+ else {
1498
+ r[i] = !0, n.push(i);
1499
+ for (let e of t(i)) n.push(e);
1500
+ }
1501
+ i = n.pop();
1502
+ }
1503
+ }
1504
+ function l(e) {
1505
+ let t = o.inEdges(e);
1506
+ t ? a[e] = t.reduce((e, t) => {
1507
+ let n = a[t.v] ?? 0, r = o.edge(t);
1508
+ return Math.max(e, n + (r === void 0 ? 0 : r));
1509
+ }, 0) : a[e] = 0;
1510
+ }
1511
+ function u(t) {
1512
+ let n = o.outEdges(t), r = Infinity;
1513
+ n && (r = n.reduce((e, t) => {
1514
+ let n = a[t.w], r = o.edge(t);
1515
+ return Math.min(e, (n === void 0 ? 0 : n) - (r === void 0 ? 0 : r));
1516
+ }, Infinity));
1517
+ let i = e.node(t);
1518
+ r !== Infinity && i.borderType !== s && (a[t] = Math.max(a[t] === void 0 ? 0 : a[t], r));
1519
+ }
1520
+ function d(e) {
1521
+ return o.predecessors(e) || [];
1522
+ }
1523
+ function f(e) {
1524
+ return o.successors(e) || [];
1525
+ }
1526
+ return c(l, d), c(u, f), Object.keys(r).forEach((e) => {
1527
+ let t = n[e];
1528
+ t !== void 0 && (a[e] = a[t] ?? 0);
1529
+ }), a;
1530
+ }
1531
+ function ln(e, t, n, r) {
1532
+ let i = new g(), a = e.graph(), o = mn(a.nodesep, a.edgesep, r);
1533
+ return t.forEach((t) => {
1534
+ let r;
1535
+ t.forEach((t) => {
1536
+ let a = n[t];
1537
+ if (a !== void 0) {
1538
+ if (i.setNode(a), r !== void 0) {
1539
+ let s = n[r];
1540
+ if (s !== void 0) {
1541
+ let n = i.edge(s, a);
1542
+ i.setEdge(s, a, Math.max(o(e, t, r), n || 0));
1543
+ }
1544
+ }
1545
+ r = t;
1546
+ }
1547
+ });
1548
+ }), i;
1549
+ }
1550
+ function un(e, t) {
1551
+ return Object.values(t).reduce((t, n) => {
1552
+ let r = -Infinity, i = Infinity;
1553
+ Object.entries(n).forEach(([t, n]) => {
1554
+ let a = hn(e, t) / 2;
1555
+ r = Math.max(n + a, r), i = Math.min(n - a, i);
1556
+ });
1557
+ let a = r - i;
1558
+ return a < t[0] && (t = [a, n]), t;
1559
+ }, [Infinity, null])[1];
1560
+ }
1561
+ function dn(e, t) {
1562
+ let n = Object.values(t), r = P(Math.min, n), i = P(Math.max, n);
1563
+ ["u", "d"].forEach((n) => {
1564
+ ["l", "r"].forEach((a) => {
1565
+ let o = n + a, s = e[o];
1566
+ if (!s || s === t) return;
1567
+ let c = Object.values(s), l = r - P(Math.min, c);
1568
+ a !== "l" && (l = i - P(Math.max, c)), l && (e[o] = z(s, (e) => e + l));
1569
+ });
1570
+ });
1571
+ }
1572
+ function fn(e, t = void 0) {
1573
+ let n = e.ul;
1574
+ return n ? z(n, (n, r) => {
1575
+ if (t) {
1576
+ let n = e[t.toLowerCase()];
1577
+ if (n && n[r] !== void 0) return n[r];
1578
+ }
1579
+ let i = Object.values(e).map((e) => {
1580
+ let t = e[r];
1581
+ return t === void 0 ? 0 : t;
1582
+ }).sort((e, t) => e - t);
1583
+ return ((i[1] ?? 0) + (i[2] ?? 0)) / 2;
1584
+ }) : {};
1585
+ }
1586
+ function pn(e) {
1587
+ let t = j(e), n = Object.assign(tn(e, t), nn(e, t)), r = {}, i;
1588
+ return ["u", "d"].forEach((a) => {
1589
+ i = a === "u" ? t : Object.values(t).reverse(), ["l", "r"].forEach((t) => {
1590
+ t === "r" && (i = i.map((e) => Object.values(e).reverse()));
1591
+ let o = sn(e, i, n, (t) => (a === "u" ? e.predecessors(t) : e.successors(t)) || []), s = cn(e, i, o.root, o.align, t === "r");
1592
+ t === "r" && (s = z(s, (e) => -e)), r[a + t] = s;
1593
+ });
1594
+ }), dn(r, un(e, r)), fn(r, e.graph().align);
1595
+ }
1596
+ function mn(e, t, n) {
1597
+ return (r, i, a) => {
1598
+ let o = r.node(i), s = r.node(a), c = 0, l;
1599
+ if (c += o.width / 2, Object.hasOwn(o, "labelpos")) switch (o.labelpos.toLowerCase()) {
1600
+ case "l":
1601
+ l = -o.width / 2;
1602
+ break;
1603
+ case "r":
1604
+ l = o.width / 2;
1605
+ break;
1606
+ }
1607
+ if (l && (c += n ? l : -l), l = void 0, c += (o.dummy ? t : e) / 2, c += (s.dummy ? t : e) / 2, c += s.width / 2, Object.hasOwn(s, "labelpos")) switch (s.labelpos.toLowerCase()) {
1608
+ case "l":
1609
+ l = s.width / 2;
1610
+ break;
1611
+ case "r":
1612
+ l = -s.width / 2;
1613
+ break;
1614
+ }
1615
+ return l && (c += n ? l : -l), c;
1616
+ };
1617
+ }
1618
+ function hn(e, t) {
1619
+ return e.node(t).width;
1620
+ }
1621
+ function gn(e) {
1622
+ e = k(e), _n(e), Object.entries(pn(e)).forEach(([t, n]) => e.node(t).x = n);
1623
+ }
1624
+ function _n(e) {
1625
+ let t = j(e), n = e.graph(), r = n.ranksep, i = n.rankalign, a = 0;
1626
+ t.forEach((t) => {
1627
+ let n = t.reduce((t, n) => {
1628
+ let r = e.node(n).height ?? 0;
1629
+ return t > r ? t : r;
1630
+ }, 0);
1631
+ t.forEach((t) => {
1632
+ let r = e.node(t);
1633
+ r.y = i === "top" ? a + r.height / 2 : i === "bottom" ? a + n - r.height / 2 : a + n / 2;
1634
+ }), a += n + r;
1635
+ });
1636
+ }
1637
+ function vn(e, t = {}) {
1638
+ let n = t.debugTiming ? je : Me;
1639
+ return n("layout", () => {
1640
+ let r = n(" buildLayoutGraph", () => kn(e));
1641
+ return n(" runLayout", () => yn(r, n, t)), n(" updateInputGraph", () => bn(e, r)), r;
1642
+ });
1643
+ }
1644
+ function yn(e, t, n) {
1645
+ t(" makeSpaceForEdgeLabels", () => An(e)), t(" removeSelfEdges", () => zn(e)), t(" acyclic", () => We(e)), t(" nestingGraph.run", () => St(e)), t(" rank", () => pt(k(e))), t(" injectEdgeLabelProxies", () => jn(e)), t(" removeEmptyRanks", () => Oe(e)), t(" nestingGraph.cleanup", () => Tt(e)), t(" normalizeRanks", () => De(e)), t(" assignRankMinMax", () => Mn(e)), t(" removeEdgeLabelProxies", () => Nn(e)), t(" normalize.run", () => qe(e)), t(" parentDummyChains", () => vt(e)), t(" addBorderSegments", () => Et(e)), t(" order", () => Zt(e, n)), t(" insertSelfEdges", () => Bn(e)), t(" adjustCoordinateSystem", () => kt(e)), t(" position", () => gn(e)), t(" positionSelfEdges", () => Vn(e)), t(" removeBorderNodes", () => Rn(e)), t(" normalize.undo", () => Ye(e)), t(" fixupEdgeLabelCoords", () => In(e)), t(" undoCoordinateSystem", () => At(e)), t(" translateGraph", () => Pn(e)), t(" assignNodeIntersects", () => Fn(e)), t(" reversePoints", () => Ln(e)), t(" acyclic.undo", () => Ke(e));
1646
+ }
1647
+ function bn(e, t) {
1648
+ e.nodes().forEach((n) => {
1649
+ let r = e.node(n), i = t.node(n);
1650
+ r && (r.x = i.x, r.y = i.y, r.order = i.order, r.rank = i.rank, t.children(n).length && (r.width = i.width, r.height = i.height));
1651
+ }), e.edges().forEach((n) => {
1652
+ let r = e.edge(n), i = t.edge(n);
1653
+ r.points = i.points, Object.hasOwn(i, "x") && (r.x = i.x, r.y = i.y);
1654
+ }), e.graph().width = t.graph().width, e.graph().height = t.graph().height;
1655
+ }
1656
+ var xn = [
1657
+ "nodesep",
1658
+ "edgesep",
1659
+ "ranksep",
1660
+ "marginx",
1661
+ "marginy"
1662
+ ], Sn = {
1663
+ ranksep: 50,
1664
+ edgesep: 20,
1665
+ nodesep: 50,
1666
+ rankdir: "TB",
1667
+ rankalign: "center"
1668
+ }, Cn = [
1669
+ "acyclicer",
1670
+ "ranker",
1671
+ "rankdir",
1672
+ "align",
1673
+ "rankalign"
1674
+ ], wn = [
1675
+ "width",
1676
+ "height",
1677
+ "rank"
1678
+ ], Tn = {
1679
+ width: 0,
1680
+ height: 0
1681
+ }, En = [
1682
+ "minlen",
1683
+ "weight",
1684
+ "width",
1685
+ "height",
1686
+ "labeloffset"
1687
+ ], Dn = {
1688
+ minlen: 1,
1689
+ weight: 1,
1690
+ width: 0,
1691
+ height: 0,
1692
+ labeloffset: 10,
1693
+ labelpos: "r"
1694
+ }, On = ["labelpos"];
1695
+ function kn(e) {
1696
+ let t = new g({
1697
+ multigraph: !0,
1698
+ compound: !0
1699
+ }), n = Q(e.graph());
1700
+ return t.setGraph(Object.assign({}, Sn, Z(n, xn), R(n, Cn))), e.nodes().forEach((n) => {
1701
+ let r = Z(Q(e.node(n)), wn);
1702
+ Object.keys(Tn).forEach((e) => {
1703
+ r[e] === void 0 && (r[e] = Tn[e]);
1704
+ }), t.setNode(n, r);
1705
+ let i = e.parent(n);
1706
+ i !== void 0 && t.setParent(n, i);
1707
+ }), e.edges().forEach((n) => {
1708
+ let r = Q(e.edge(n));
1709
+ t.setEdge(n, Object.assign({}, Dn, Z(r, En), R(r, On)));
1710
+ }), t;
1711
+ }
1712
+ function An(e) {
1713
+ let t = e.graph();
1714
+ t.ranksep /= 2, e.edges().forEach((n) => {
1715
+ let r = e.edge(n);
1716
+ r.minlen *= 2, r.labelpos.toLowerCase() !== "c" && (t.rankdir === "TB" || t.rankdir === "BT" ? r.width += r.labeloffset : r.height += r.labeloffset);
1717
+ });
1718
+ }
1719
+ function jn(e) {
1720
+ e.edges().forEach((t) => {
1721
+ let n = e.edge(t);
1722
+ if (n.width && n.height) {
1723
+ let n = e.node(t.v);
1724
+ O(e, "edge-proxy", {
1725
+ rank: (e.node(t.w).rank - n.rank) / 2 + n.rank,
1726
+ e: t
1727
+ }, "_ep");
1728
+ }
1729
+ });
1730
+ }
1731
+ function Mn(e) {
1732
+ let t = 0;
1733
+ e.nodes().forEach((n) => {
1734
+ let r = e.node(n);
1735
+ r.borderTop && (r.minRank = e.node(r.borderTop).rank, r.maxRank = e.node(r.borderBottom).rank, t = Math.max(t, r.maxRank));
1736
+ }), e.graph().maxRank = t;
1737
+ }
1738
+ function Nn(e) {
1739
+ e.nodes().forEach((t) => {
1740
+ let n = e.node(t);
1741
+ if (n.dummy === "edge-proxy") {
1742
+ let r = n;
1743
+ e.edge(r.e).labelRank = n.rank, e.removeNode(t);
1744
+ }
1745
+ });
1746
+ }
1747
+ function Pn(e) {
1748
+ let t = Infinity, n = 0, r = Infinity, i = 0, a = e.graph(), o = a.marginx || 0, s = a.marginy || 0;
1749
+ function c(e) {
1750
+ let a = e.x, o = e.y, s = e.width, c = e.height;
1751
+ t = Math.min(t, a - s / 2), n = Math.max(n, a + s / 2), r = Math.min(r, o - c / 2), i = Math.max(i, o + c / 2);
1752
+ }
1753
+ e.nodes().forEach((t) => c(e.node(t))), e.edges().forEach((t) => {
1754
+ let n = e.edge(t);
1755
+ Object.hasOwn(n, "x") && c(n);
1756
+ }), t -= o, r -= s, e.nodes().forEach((n) => {
1757
+ let i = e.node(n);
1758
+ i.x -= t, i.y -= r;
1759
+ }), e.edges().forEach((n) => {
1760
+ let i = e.edge(n);
1761
+ i.points.forEach((e) => {
1762
+ e.x -= t, e.y -= r;
1763
+ }), Object.hasOwn(i, "x") && (i.x -= t), Object.hasOwn(i, "y") && (i.y -= r);
1764
+ }), a.width = n - t + o, a.height = i - r + s;
1765
+ }
1766
+ function Fn(e) {
1767
+ e.edges().forEach((t) => {
1768
+ let n = e.edge(t), r = e.node(t.v), i = e.node(t.w), a, o;
1769
+ n.points ? (a = n.points[0], o = n.points[n.points.length - 1]) : (n.points = [], a = i, o = r), n.points.unshift(A(r, a)), n.points.push(A(i, o));
1770
+ });
1771
+ }
1772
+ function In(e) {
1773
+ e.edges().forEach((t) => {
1774
+ let n = e.edge(t);
1775
+ if (Object.hasOwn(n, "x")) switch ((n.labelpos === "l" || n.labelpos === "r") && (n.width -= n.labeloffset), n.labelpos) {
1776
+ case "l":
1777
+ n.x -= n.width / 2 + n.labeloffset;
1778
+ break;
1779
+ case "r":
1780
+ n.x += n.width / 2 + n.labeloffset;
1781
+ break;
1782
+ }
1783
+ });
1784
+ }
1785
+ function Ln(e) {
1786
+ e.edges().forEach((t) => {
1787
+ let n = e.edge(t);
1788
+ n.reversed && n.points.reverse();
1789
+ });
1790
+ }
1791
+ function Rn(e) {
1792
+ e.nodes().forEach((t) => {
1793
+ if (e.children(t).length) {
1794
+ let n = e.node(t), r = e.node(n.borderTop), i = e.node(n.borderBottom), a = e.node(n.borderLeft[n.borderLeft.length - 1]), o = e.node(n.borderRight[n.borderRight.length - 1]);
1795
+ n.width = Math.abs(o.x - a.x), n.height = Math.abs(i.y - r.y), n.x = a.x + n.width / 2, n.y = r.y + n.height / 2;
1796
+ }
1797
+ }), e.nodes().forEach((t) => {
1798
+ e.node(t).dummy === "border" && e.removeNode(t);
1799
+ });
1800
+ }
1801
+ function zn(e) {
1802
+ e.edges().forEach((t) => {
1803
+ if (t.v === t.w) {
1804
+ let n = e.node(t.v);
1805
+ n.selfEdges ||= [], n.selfEdges.push({
1806
+ e: t,
1807
+ label: e.edge(t)
1808
+ }), e.removeEdge(t);
1809
+ }
1810
+ });
1811
+ }
1812
+ function Bn(e) {
1813
+ j(e).forEach((t) => {
1814
+ let n = 0;
1815
+ t.forEach((t, r) => {
1816
+ let i = e.node(t);
1817
+ i.order = r + n, (i.selfEdges || []).forEach((t) => {
1818
+ O(e, "selfedge", {
1819
+ width: t.label.width,
1820
+ height: t.label.height,
1821
+ rank: i.rank,
1822
+ order: r + ++n,
1823
+ e: t.e,
1824
+ label: t.label
1825
+ }, "_se");
1826
+ }), delete i.selfEdges;
1827
+ });
1828
+ });
1829
+ }
1830
+ function Vn(e) {
1831
+ e.nodes().forEach((t) => {
1832
+ let n = e.node(t);
1833
+ if (n.dummy === "selfedge") {
1834
+ let r = n, i = e.node(r.e.v), a = i.x + i.width / 2, o = i.y, s = n.x - a, c = i.height / 2;
1835
+ e.setEdge(r.e, r.label), e.removeNode(t), r.label.points = [
1836
+ {
1837
+ x: a + 2 * s / 3,
1838
+ y: o - c
1839
+ },
1840
+ {
1841
+ x: a + 5 * s / 6,
1842
+ y: o - c
1843
+ },
1844
+ {
1845
+ x: a + s,
1846
+ y: o
1847
+ },
1848
+ {
1849
+ x: a + 5 * s / 6,
1850
+ y: o + c
1851
+ },
1852
+ {
1853
+ x: a + 2 * s / 3,
1854
+ y: o + c
1855
+ }
1856
+ ], r.label.x = n.x, r.label.y = n.y;
1857
+ }
1858
+ });
1859
+ }
1860
+ function Z(e, t) {
1861
+ return z(R(e, t), Number);
1862
+ }
1863
+ function Q(e) {
1864
+ let t = {};
1865
+ return e && Object.entries(e).forEach(([e, n]) => {
1866
+ typeof e == "string" && (e = e.toLowerCase()), t[e] = n;
1867
+ }), t;
1868
+ }
1869
+ //#endregion
1870
+ //#region src/erdDiagram.ts
1871
+ var Hn = 160, Un = 50, Wn = 8, Gn = 24, Kn = {
1872
+ child: {
1873
+ fill: "#dae8fc",
1874
+ stroke: "#6c8ebf"
1875
+ },
1876
+ primary: {
1877
+ fill: "#d5e8d4",
1878
+ stroke: "#82b366"
1879
+ }
1880
+ }, $ = "dpuse-tool-d3-erd-arrow";
1881
+ function qn(e, t, r = {}) {
1882
+ let a = r.nodeWidth ?? Hn, o = r.nodeHeight ?? Un, s = r.padding ?? Wn, l = r.selfEdgeSize ?? Gn, u = r.nodeColors ?? Kn;
1883
+ function d() {
1884
+ n(t).selectAll("svg").remove();
1885
+ let r = new p.Graph();
1886
+ r.setGraph({
1887
+ rankdir: "TB",
1888
+ nodesep: 40,
1889
+ ranksep: 60
1890
+ }), r.setDefaultEdgeLabel(() => ({}));
1891
+ for (let t of e.nodes) r.setNode(t.id, {
1892
+ width: a,
1893
+ height: o,
1894
+ label: t.label,
1895
+ typeId: t.typeId
1896
+ });
1897
+ for (let t of e.edges) t.source === t.target ? r.setEdge(t.source, t.target, {
1898
+ width: l,
1899
+ height: l
1900
+ }) : r.setEdge(t.source, t.target);
1901
+ vn(r);
1902
+ let { width: d = 0, height: f = 0 } = r.graph(), m = d + s * 2, h = f + s * 2, g = n(t).append("svg").attr("viewBox", `0 0 ${String(m)} ${String(h)}`).attr("width", m).attr("height", h), _ = g.append("g").attr("transform", `translate(${String(s)}, ${String(s)})`);
1903
+ g.append("defs").append("marker").attr("id", $).attr("viewBox", "0 0 10 10").attr("refX", 9).attr("refY", 5).attr("markerWidth", 6).attr("markerHeight", 6).attr("orient", "auto-start-reverse").append("path").attr("d", "M 0 0 L 10 5 L 0 10 z").attr("fill", "#6c8ebf");
1904
+ let v = c().x((e) => e.x).y((e) => e.y).curve(i);
1905
+ _.append("g").attr("fill", "none").attr("stroke", "#6c8ebf").attr("stroke-width", 1.5).selectAll("path").data(r.edges()).join("path").attr("marker-end", `url(#${$})`).attr("d", (e) => e.v === e.w ? Jn(r.node(e.v), l) : v(r.edge(e).points ?? []) ?? "");
1906
+ let y = _.append("g").selectAll("g").data(r.nodes()).join("g").attr("transform", (e) => {
1907
+ let t = r.node(e);
1908
+ return `translate(${String((t.x ?? 0) - t.width / 2)}, ${String((t.y ?? 0) - t.height / 2)})`;
1909
+ });
1910
+ y.append("rect").attr("width", (e) => r.node(e).width).attr("height", (e) => r.node(e).height).attr("rx", 6).attr("fill", (e) => u[r.node(e).typeId].fill).attr("stroke", (e) => u[r.node(e).typeId].stroke), y.append("text").attr("x", (e) => r.node(e).width / 2).attr("y", (e) => r.node(e).height / 2).attr("text-anchor", "middle").attr("dominant-baseline", "middle").attr("font-family", "Helvetica, Arial, sans-serif").attr("font-size", 14).attr("fill", "#000000").text((e) => r.node(e).label ?? "");
1911
+ let b = g.node();
1912
+ if (b == null) throw Error("Failed to create ERD diagram SVG element.");
1913
+ return b;
1914
+ }
1915
+ let f = d();
1916
+ return {
1917
+ resize: () => {
1918
+ f = d();
1919
+ },
1920
+ get svg() {
1921
+ return f;
1922
+ }
1923
+ };
1924
+ }
1925
+ function Jn(e, t) {
1926
+ let n = (e.x ?? 0) + e.width / 2, r = n + t, i = (e.y ?? 0) - e.height / 4, a = (e.y ?? 0) + e.height / 4;
1927
+ return `M ${String(n)} ${String(i)} C ${String(r)} ${String(i)}, ${String(r)} ${String(a)}, ${String(n)} ${String(a)}`;
1928
+ }
1929
+ //#endregion
1930
+ export { qn as renderErdDiagram };
1931
+
1932
+ //# sourceMappingURL=erdDiagram-DNEvMuIA.js.map