likec4 1.56.0 → 1.58.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.
Files changed (207) hide show
  1. package/__app__/codegen/react.mjs +7 -8
  2. package/__app__/codegen/webcomponent.mjs +77 -736
  3. package/__app__/src/aichat/index.mjs +8 -0
  4. package/__app__/src/chunks/AIChat.mjs +959 -0
  5. package/__app__/src/chunks/DiagramActorProvider.mjs +7638 -0
  6. package/__app__/src/chunks/LikeC4Styles.mjs +1866 -0
  7. package/__app__/src/chunks/Markdown.mjs +146 -0
  8. package/__app__/src/chunks/NavigationPanel.mjs +61 -0
  9. package/__app__/src/chunks/ProjectsOverview.mjs +540 -0
  10. package/__app__/src/chunks/adhoc-editor.mjs +3386 -0
  11. package/__app__/src/chunks/es.mjs +439 -0
  12. package/__app__/src/chunks/hooks.mjs +145 -0
  13. package/__app__/src/chunks/libs/@dagrejs/dagre.mjs +1894 -0
  14. package/__app__/src/chunks/libs/@floating-ui.mjs +2218 -0
  15. package/__app__/src/chunks/libs/@mantine.mjs +12070 -0
  16. package/__app__/src/chunks/libs/@tabler/icons-react.mjs +252 -0
  17. package/__app__/src/chunks/libs/@tanstack-ai.mjs +1768 -0
  18. package/__app__/src/chunks/libs/@tanstack.mjs +2718 -0
  19. package/__app__/src/chunks/libs/@xstate/react.mjs +1982 -0
  20. package/__app__/src/chunks/libs/@xyflow/react.mjs +5256 -0
  21. package/__app__/src/chunks/libs/bezier-js.mjs +1003 -0
  22. package/__app__/src/chunks/libs/d3.mjs +2842 -0
  23. package/__app__/src/chunks/libs/fast-equals.mjs +268 -0
  24. package/__app__/src/chunks/libs/framer.mjs +5872 -0
  25. package/__app__/src/chunks/libs/remeda.mjs +642 -0
  26. package/__app__/src/chunks/libs/zod.mjs +3170 -0
  27. package/__app__/src/chunks/rolldown-runtime.mjs +23 -0
  28. package/__app__/src/chunks/styled-system.mjs +1040 -0
  29. package/__app__/src/fonts.css +1 -1
  30. package/__app__/src/main.mjs +14847 -1
  31. package/__app__/src/style.css +1 -1
  32. package/config/schema.json +14 -41
  33. package/dist/chunks/enableServer.mjs +1 -0
  34. package/dist/chunks/filenames.mjs +2 -2
  35. package/dist/chunks/index2.d.mts +2057 -722
  36. package/dist/chunks/libs/@chevrotain/gast.mjs +1 -1
  37. package/dist/chunks/libs/@logtape/logtape.mjs +4 -3
  38. package/dist/chunks/libs/@ts-graphviz/ast.mjs +3 -0
  39. package/dist/chunks/libs/@ts-graphviz/common.d.mts +9 -0
  40. package/dist/chunks/libs/@ts-graphviz/core.mjs +1 -0
  41. package/dist/chunks/libs/chevrotain-allstar.mjs +2 -2
  42. package/dist/chunks/libs/chevrotain.mjs +26 -26
  43. package/dist/chunks/libs/langium.d.mts +5 -5
  44. package/dist/chunks/libs/langium.mjs +10 -10
  45. package/dist/chunks/libs/merge-error-cause.mjs +1 -1
  46. package/dist/chunks/libs/pako.mjs +3 -1
  47. package/dist/chunks/libs/pretty-ms.mjs +1 -1
  48. package/dist/chunks/libs/remeda.mjs +1 -1
  49. package/dist/chunks/libs/ufo.mjs +1 -1
  50. package/dist/chunks/libs/unstorage.mjs +1 -1
  51. package/dist/chunks/libs/which.mjs +1 -1
  52. package/dist/chunks/libs/zod.d.mts +60 -25
  53. package/dist/chunks/libs/zod.mjs +65 -0
  54. package/dist/chunks/node.mjs +84 -56
  55. package/dist/chunks/sequence-view.mjs +1 -1
  56. package/dist/chunks/vite-plugin.mjs +593 -0
  57. package/dist/cli/index.mjs +184 -141
  58. package/dist/index.d.mts +2 -131
  59. package/dist/index.mjs +1 -1
  60. package/dist/model/index.d.mts +2 -2
  61. package/dist/vite-plugin/index.d.mts +53 -2
  62. package/dist/vite-plugin/index.mjs +1 -1
  63. package/dist/vite-plugin/internal/index.d.mts +327 -4
  64. package/dist/vite-plugin/internal/index.mjs +946 -1
  65. package/package.json +85 -72
  66. package/react/index.d.mts +174 -73
  67. package/react/index.mjs +42468 -38926
  68. package/vite-plugin-modules.d.ts +4 -0
  69. package/__app__/chunks/ColorSchemeToggle.mjs +0 -1
  70. package/__app__/chunks/DiagramActorProvider.mjs +0 -10
  71. package/__app__/chunks/Fallback.mjs +0 -1
  72. package/__app__/chunks/Header.mjs +0 -13
  73. package/__app__/chunks/IconRenderer.mjs +0 -1
  74. package/__app__/chunks/LikeC4Diagram.mjs +0 -19
  75. package/__app__/chunks/LikeC4ModelContext.mjs +0 -1
  76. package/__app__/chunks/LikeC4ModelContext2.mjs +0 -1
  77. package/__app__/chunks/LikeC4Styles.mjs +0 -48
  78. package/__app__/chunks/NavigationPanel.mjs +0 -1
  79. package/__app__/chunks/StaticLikeC4Diagram.mjs +0 -1
  80. package/__app__/chunks/ViewReact.mjs +0 -1
  81. package/__app__/chunks/__root.mjs +0 -1
  82. package/__app__/chunks/adhoc-editor.mjs +0 -1
  83. package/__app__/chunks/hooks.mjs +0 -1
  84. package/__app__/chunks/libs/@dagrejs/dagre.mjs +0 -1
  85. package/__app__/chunks/libs/@floating-ui/core.mjs +0 -1
  86. package/__app__/chunks/libs/@floating-ui/dom.mjs +0 -1
  87. package/__app__/chunks/libs/@floating-ui/react.mjs +0 -1
  88. package/__app__/chunks/libs/@mantine/core.mjs +0 -41
  89. package/__app__/chunks/libs/@mantine/hooks.mjs +0 -1
  90. package/__app__/chunks/libs/@nanostores/react.mjs +0 -1
  91. package/__app__/chunks/libs/@react-hookz/web.mjs +0 -1
  92. package/__app__/chunks/libs/@tabler/icons-react.mjs +0 -15
  93. package/__app__/chunks/libs/@tanstack/history.mjs +0 -1
  94. package/__app__/chunks/libs/@tanstack/react-router.mjs +0 -3
  95. package/__app__/chunks/libs/@tanstack/router-core.mjs +0 -1
  96. package/__app__/chunks/libs/@xstate/react.mjs +0 -1
  97. package/__app__/chunks/libs/@xstate/store.mjs +0 -1
  98. package/__app__/chunks/libs/@xyflow/react.mjs +0 -7
  99. package/__app__/chunks/libs/@zag-js/anatomy.mjs +0 -1
  100. package/__app__/chunks/libs/@zag-js/collection.mjs +0 -1
  101. package/__app__/chunks/libs/@zag-js/core.mjs +0 -1
  102. package/__app__/chunks/libs/@zag-js/react.mjs +0 -1
  103. package/__app__/chunks/libs/@zag-js/tree-view.mjs +0 -1
  104. package/__app__/chunks/libs/bezier-js.mjs +0 -1
  105. package/__app__/chunks/libs/d3-path.mjs +0 -1
  106. package/__app__/chunks/libs/d3-shape.mjs +0 -1
  107. package/__app__/chunks/libs/fast-equals.mjs +0 -1
  108. package/__app__/chunks/libs/framer-motion.mjs +0 -9
  109. package/__app__/chunks/libs/html-to-image.mjs +0 -2
  110. package/__app__/chunks/libs/motion-dom.mjs +0 -1
  111. package/__app__/chunks/libs/motion.mjs +0 -1
  112. package/__app__/chunks/libs/nanostores.mjs +0 -1
  113. package/__app__/chunks/libs/react-error-boundary.mjs +0 -1
  114. package/__app__/chunks/libs/react-resizable-panels.mjs +0 -1
  115. package/__app__/chunks/libs/remeda.mjs +0 -1
  116. package/__app__/chunks/libs/xstate.mjs +0 -1
  117. package/__app__/chunks/libs/zod.mjs +0 -39
  118. package/__app__/chunks/rolldown-runtime.mjs +0 -1
  119. package/__app__/chunks/safeCtx.mjs +0 -1
  120. package/__app__/chunks/searchParams.mjs +0 -1
  121. package/__app__/chunks/single-index.mjs +0 -1
  122. package/__app__/chunks/styled-system.mjs +0 -1
  123. package/__app__/chunks/styles.css.mjs +0 -1
  124. package/__app__/chunks/useLikeC4Project.mjs +0 -1
  125. package/__app__/chunks/useUpdateEffect.mjs +0 -1
  126. package/__app__/src/pages/AdHocViewEditor.mjs +0 -1
  127. package/__app__/src/pages/EmbedPage.mjs +0 -1
  128. package/__app__/src/pages/ExportPage.mjs +0 -1
  129. package/__app__/src/pages/ProjectsOverview.mjs +0 -1
  130. package/__app__/src/pages/ViewAsD2.mjs +0 -1
  131. package/__app__/src/pages/ViewAsDot.mjs +0 -1
  132. package/__app__/src/pages/ViewAsMmd.mjs +0 -1
  133. package/__app__/src/pages/ViewAsPuml.mjs +0 -1
  134. package/__app__/src/pages/ViewEditor.mjs +0 -1
  135. package/__app__/src/pages/ViewReact.mjs +0 -1
  136. package/__app__/src/routeTree.gen.mjs +0 -1
  137. package/__app__/src/routes/__root.mjs +0 -1
  138. package/__app__/src/routes/_single/adhoc.mjs +0 -1
  139. package/__app__/src/routes/_single/embed._viewId.mjs +0 -1
  140. package/__app__/src/routes/_single/export._viewId.mjs +0 -1
  141. package/__app__/src/routes/_single/route.mjs +0 -1
  142. package/__app__/src/routes/_single/single-index.mjs +0 -1
  143. package/__app__/src/routes/_single/view._viewId.d2.mjs +0 -1
  144. package/__app__/src/routes/_single/view._viewId.dot.mjs +0 -1
  145. package/__app__/src/routes/_single/view._viewId.index.mjs +0 -1
  146. package/__app__/src/routes/_single/view._viewId.mjs +0 -1
  147. package/__app__/src/routes/_single/view._viewId.mmd.mjs +0 -1
  148. package/__app__/src/routes/_single/view._viewId.puml.mjs +0 -1
  149. package/__app__/src/routes/_single/webcomponent._.mjs +0 -33
  150. package/__app__/src/routes/index.mjs +0 -1
  151. package/__app__/src/routes/project._projectId/-components.mjs +0 -1
  152. package/__app__/src/routes/project._projectId/adhoc.mjs +0 -1
  153. package/__app__/src/routes/project._projectId/embed._viewId.mjs +0 -1
  154. package/__app__/src/routes/project._projectId/export._viewId.mjs +0 -1
  155. package/__app__/src/routes/project._projectId/index.mjs +0 -1
  156. package/__app__/src/routes/project._projectId/route.mjs +0 -1
  157. package/__app__/src/routes/project._projectId/view._viewId.d2.mjs +0 -1
  158. package/__app__/src/routes/project._projectId/view._viewId.dot.mjs +0 -1
  159. package/__app__/src/routes/project._projectId/view._viewId.index.mjs +0 -1
  160. package/__app__/src/routes/project._projectId/view._viewId.mjs +0 -1
  161. package/__app__/src/routes/project._projectId/view._viewId.mmd.mjs +0 -1
  162. package/__app__/src/routes/project._projectId/view._viewId.puml.mjs +0 -1
  163. package/__app__/src/routes/projects.mjs +0 -1
  164. package/dist/chunks/libs/@chevrotain/utils.mjs +0 -1
  165. package/dist/chunks/libs/@hono/mcp.mjs +0 -45
  166. package/dist/chunks/libs/@hono/node-server.mjs +0 -1
  167. package/dist/chunks/libs/@logtape/logtape.d.mts +0 -1023
  168. package/dist/chunks/libs/@modelcontextprotocol/sdk.mjs +0 -12
  169. package/dist/chunks/libs/ajv.mjs +0 -1
  170. package/dist/chunks/libs/ansi-align.mjs +0 -2
  171. package/dist/chunks/libs/ansi-regex.mjs +0 -1
  172. package/dist/chunks/libs/ansi-styles.mjs +0 -1
  173. package/dist/chunks/libs/atomically.mjs +0 -1
  174. package/dist/chunks/libs/boxen.mjs +0 -22
  175. package/dist/chunks/libs/conf.mjs +0 -1
  176. package/dist/chunks/libs/defu.mjs +0 -1
  177. package/dist/chunks/libs/destr.mjs +0 -1
  178. package/dist/chunks/libs/find-up-simple.mjs +0 -1
  179. package/dist/chunks/libs/get-port.mjs +0 -1
  180. package/dist/chunks/libs/hono.mjs +0 -1
  181. package/dist/chunks/libs/is-docker.mjs +0 -1
  182. package/dist/chunks/libs/is-error-instance.mjs +0 -1
  183. package/dist/chunks/libs/is-inside-container.mjs +0 -1
  184. package/dist/chunks/libs/is-plain-obj.mjs +0 -1
  185. package/dist/chunks/libs/isexe.mjs +0 -1
  186. package/dist/chunks/libs/ky.mjs +0 -3
  187. package/dist/chunks/libs/p-debounce.mjs +0 -1
  188. package/dist/chunks/libs/p-limit.mjs +0 -1
  189. package/dist/chunks/libs/p-timeout.mjs +0 -1
  190. package/dist/chunks/libs/package-up.mjs +0 -1
  191. package/dist/chunks/libs/parse-ms.mjs +0 -1
  192. package/dist/chunks/libs/safe-stringify.mjs +0 -1
  193. package/dist/chunks/libs/strip-indent.mjs +0 -1
  194. package/dist/chunks/libs/tinyrainbow.mjs +0 -1
  195. package/dist/chunks/libs/ts-graphviz.d.mts +0 -12
  196. package/dist/chunks/libs/ts-graphviz.mjs +0 -4
  197. package/dist/chunks/libs/vscode-languageserver.mjs +0 -1
  198. package/dist/chunks/libs/word-wrap.mjs +0 -12
  199. package/dist/chunks/plugin.mjs +0 -400
  200. package/dist/vite-plugin/internal/chunks/libs/@nanostores/react.d.mts +0 -269
  201. package/dist/vite-plugin/internal/chunks/libs/@nanostores/react.mjs +0 -1
  202. package/dist/vite-plugin/internal/chunks/libs/birpc.mjs +0 -1
  203. package/dist/vite-plugin/internal/chunks/libs/fast-equals.mjs +0 -1
  204. package/dist/vite-plugin/internal/chunks/libs/nanostores.d.mts +0 -59
  205. package/dist/vite-plugin/internal/chunks/libs/nanostores.mjs +0 -1
  206. package/dist/vite-plugin/internal/chunks/libs/remeda.mjs +0 -1
  207. package/dist/vite-plugin/internal/chunks/rolldown-runtime.mjs +0 -1
@@ -0,0 +1,1894 @@
1
+ import { t as e } from "../../rolldown-runtime.mjs";
2
+ //#region ../../node_modules/.pnpm/@dagrejs+graphlib@2.2.4/node_modules/@dagrejs/graphlib/lib/graph.js
3
+ var t = /* @__PURE__ */ e(((e, t) => {
4
+ var n = "\0", r = "\0", i = "", Graph = class {
5
+ _isDirected = !0;
6
+ _isMultigraph = !1;
7
+ _isCompound = !1;
8
+ _label;
9
+ _defaultNodeLabelFn = () => void 0;
10
+ _defaultEdgeLabelFn = () => void 0;
11
+ _nodes = {};
12
+ _in = {};
13
+ _preds = {};
14
+ _out = {};
15
+ _sucs = {};
16
+ _edgeObjs = {};
17
+ _edgeLabels = {};
18
+ _nodeCount = 0;
19
+ _edgeCount = 0;
20
+ _parent;
21
+ _children;
22
+ constructor(e) {
23
+ e && (this._isDirected = Object.hasOwn(e, "directed") ? e.directed : !0, this._isMultigraph = Object.hasOwn(e, "multigraph") ? e.multigraph : !1, this._isCompound = Object.hasOwn(e, "compound") ? e.compound : !1), this._isCompound && (this._parent = {}, this._children = {}, this._children[r] = {});
24
+ }
25
+ isDirected() {
26
+ return this._isDirected;
27
+ }
28
+ isMultigraph() {
29
+ return this._isMultigraph;
30
+ }
31
+ isCompound() {
32
+ return this._isCompound;
33
+ }
34
+ setGraph(e) {
35
+ return this._label = e, this;
36
+ }
37
+ graph() {
38
+ return this._label;
39
+ }
40
+ setDefaultNodeLabel(e) {
41
+ return this._defaultNodeLabelFn = e, typeof e != "function" && (this._defaultNodeLabelFn = () => e), this;
42
+ }
43
+ nodeCount() {
44
+ return this._nodeCount;
45
+ }
46
+ nodes() {
47
+ return Object.keys(this._nodes);
48
+ }
49
+ sources() {
50
+ var e = this;
51
+ return this.nodes().filter((t) => Object.keys(e._in[t]).length === 0);
52
+ }
53
+ sinks() {
54
+ var e = this;
55
+ return this.nodes().filter((t) => Object.keys(e._out[t]).length === 0);
56
+ }
57
+ setNodes(e, t) {
58
+ var n = arguments, r = this;
59
+ return e.forEach(function(e) {
60
+ n.length > 1 ? r.setNode(e, t) : r.setNode(e);
61
+ }), this;
62
+ }
63
+ setNode(e, t) {
64
+ return Object.hasOwn(this._nodes, e) ? (arguments.length > 1 && (this._nodes[e] = t), this) : (this._nodes[e] = arguments.length > 1 ? t : this._defaultNodeLabelFn(e), this._isCompound && (this._parent[e] = r, this._children[e] = {}, this._children[r][e] = !0), this._in[e] = {}, this._preds[e] = {}, this._out[e] = {}, this._sucs[e] = {}, ++this._nodeCount, this);
65
+ }
66
+ node(e) {
67
+ return this._nodes[e];
68
+ }
69
+ hasNode(e) {
70
+ return Object.hasOwn(this._nodes, e);
71
+ }
72
+ removeNode(e) {
73
+ var t = this;
74
+ if (Object.hasOwn(this._nodes, e)) {
75
+ var removeEdge = (e) => t.removeEdge(t._edgeObjs[e]);
76
+ delete this._nodes[e], this._isCompound && (this._removeFromParentsChildList(e), delete this._parent[e], this.children(e).forEach(function(e) {
77
+ t.setParent(e);
78
+ }), delete this._children[e]), Object.keys(this._in[e]).forEach(removeEdge), delete this._in[e], delete this._preds[e], Object.keys(this._out[e]).forEach(removeEdge), delete this._out[e], delete this._sucs[e], --this._nodeCount;
79
+ }
80
+ return this;
81
+ }
82
+ setParent(e, t) {
83
+ if (!this._isCompound) throw Error("Cannot set parent in a non-compound graph");
84
+ if (t === void 0) t = r;
85
+ else {
86
+ t += "";
87
+ for (var n = t; n !== void 0; n = this.parent(n)) if (n === e) throw Error("Setting " + t + " as parent of " + e + " would create a cycle");
88
+ this.setNode(t);
89
+ }
90
+ return this.setNode(e), this._removeFromParentsChildList(e), this._parent[e] = t, this._children[t][e] = !0, this;
91
+ }
92
+ _removeFromParentsChildList(e) {
93
+ delete this._children[this._parent[e]][e];
94
+ }
95
+ parent(e) {
96
+ if (this._isCompound) {
97
+ var t = this._parent[e];
98
+ if (t !== r) return t;
99
+ }
100
+ }
101
+ children(e = r) {
102
+ if (this._isCompound) {
103
+ var t = this._children[e];
104
+ if (t) return Object.keys(t);
105
+ } else if (e === r) return this.nodes();
106
+ else if (this.hasNode(e)) return [];
107
+ }
108
+ predecessors(e) {
109
+ var t = this._preds[e];
110
+ if (t) return Object.keys(t);
111
+ }
112
+ successors(e) {
113
+ var t = this._sucs[e];
114
+ if (t) return Object.keys(t);
115
+ }
116
+ neighbors(e) {
117
+ var t = this.predecessors(e);
118
+ if (t) {
119
+ let r = new Set(t);
120
+ for (var n of this.successors(e)) r.add(n);
121
+ return Array.from(r.values());
122
+ }
123
+ }
124
+ isLeaf(e) {
125
+ return (this.isDirected() ? this.successors(e) : this.neighbors(e)).length === 0;
126
+ }
127
+ filterNodes(e) {
128
+ var t = new this.constructor({
129
+ directed: this._isDirected,
130
+ multigraph: this._isMultigraph,
131
+ compound: this._isCompound
132
+ });
133
+ t.setGraph(this.graph());
134
+ var n = this;
135
+ Object.entries(this._nodes).forEach(function([n, r]) {
136
+ e(n) && t.setNode(n, r);
137
+ }), Object.values(this._edgeObjs).forEach(function(e) {
138
+ t.hasNode(e.v) && t.hasNode(e.w) && t.setEdge(e, n.edge(e));
139
+ });
140
+ var r = {};
141
+ function findParent(e) {
142
+ var i = n.parent(e);
143
+ return i === void 0 || t.hasNode(i) ? (r[e] = i, i) : i in r ? r[i] : findParent(i);
144
+ }
145
+ return this._isCompound && t.nodes().forEach((e) => t.setParent(e, findParent(e))), t;
146
+ }
147
+ setDefaultEdgeLabel(e) {
148
+ return this._defaultEdgeLabelFn = e, typeof e != "function" && (this._defaultEdgeLabelFn = () => e), this;
149
+ }
150
+ edgeCount() {
151
+ return this._edgeCount;
152
+ }
153
+ edges() {
154
+ return Object.values(this._edgeObjs);
155
+ }
156
+ setPath(e, t) {
157
+ var n = this, r = arguments;
158
+ return e.reduce(function(e, i) {
159
+ return r.length > 1 ? n.setEdge(e, i, t) : n.setEdge(e, i), i;
160
+ }), this;
161
+ }
162
+ setEdge() {
163
+ var e, t, n, r, i = !1, a = arguments[0];
164
+ typeof a == "object" && a && "v" in a ? (e = a.v, t = a.w, n = a.name, arguments.length === 2 && (r = arguments[1], i = !0)) : (e = a, t = arguments[1], n = arguments[3], arguments.length > 2 && (r = arguments[2], i = !0)), e = "" + e, t = "" + t, n !== void 0 && (n = "" + n);
165
+ var o = edgeArgsToId(this._isDirected, e, t, n);
166
+ if (Object.hasOwn(this._edgeLabels, o)) return i && (this._edgeLabels[o] = r), this;
167
+ if (n !== void 0 && !this._isMultigraph) throw Error("Cannot set a named edge when isMultigraph = false");
168
+ this.setNode(e), this.setNode(t), this._edgeLabels[o] = i ? r : this._defaultEdgeLabelFn(e, t, n);
169
+ var s = edgeArgsToObj(this._isDirected, e, t, n);
170
+ return e = s.v, t = s.w, Object.freeze(s), this._edgeObjs[o] = s, incrementOrInitEntry(this._preds[t], e), incrementOrInitEntry(this._sucs[e], t), this._in[t][o] = s, this._out[e][o] = s, this._edgeCount++, this;
171
+ }
172
+ edge(e, t, n) {
173
+ var r = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, e, t, n);
174
+ return this._edgeLabels[r];
175
+ }
176
+ edgeAsObj() {
177
+ let e = this.edge(...arguments);
178
+ return typeof e == "object" ? e : { label: e };
179
+ }
180
+ hasEdge(e, t, n) {
181
+ var r = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, e, t, n);
182
+ return Object.hasOwn(this._edgeLabels, r);
183
+ }
184
+ removeEdge(e, t, n) {
185
+ var r = arguments.length === 1 ? edgeObjToId(this._isDirected, arguments[0]) : edgeArgsToId(this._isDirected, e, t, n), i = this._edgeObjs[r];
186
+ return i && (e = i.v, t = i.w, delete this._edgeLabels[r], delete this._edgeObjs[r], decrementOrRemoveEntry(this._preds[t], e), decrementOrRemoveEntry(this._sucs[e], t), delete this._in[t][r], delete this._out[e][r], this._edgeCount--), this;
187
+ }
188
+ inEdges(e, t) {
189
+ var n = this._in[e];
190
+ if (n) {
191
+ var r = Object.values(n);
192
+ return t ? r.filter((e) => e.v === t) : r;
193
+ }
194
+ }
195
+ outEdges(e, t) {
196
+ var n = this._out[e];
197
+ if (n) {
198
+ var r = Object.values(n);
199
+ return t ? r.filter((e) => e.w === t) : r;
200
+ }
201
+ }
202
+ nodeEdges(e, t) {
203
+ var n = this.inEdges(e, t);
204
+ if (n) return n.concat(this.outEdges(e, t));
205
+ }
206
+ };
207
+ function incrementOrInitEntry(e, t) {
208
+ e[t] ? e[t]++ : e[t] = 1;
209
+ }
210
+ function decrementOrRemoveEntry(e, t) {
211
+ --e[t] || delete e[t];
212
+ }
213
+ function edgeArgsToId(e, t, r, a) {
214
+ var o = "" + t, s = "" + r;
215
+ if (!e && o > s) {
216
+ var c = o;
217
+ o = s, s = c;
218
+ }
219
+ return o + i + s + i + (a === void 0 ? n : a);
220
+ }
221
+ function edgeArgsToObj(e, t, n, r) {
222
+ var i = "" + t, a = "" + n;
223
+ if (!e && i > a) {
224
+ var o = i;
225
+ i = a, a = o;
226
+ }
227
+ var s = {
228
+ v: i,
229
+ w: a
230
+ };
231
+ return r && (s.name = r), s;
232
+ }
233
+ function edgeObjToId(e, t) {
234
+ return edgeArgsToId(e, t.v, t.w, t.name);
235
+ }
236
+ t.exports = Graph;
237
+ })), n = /* @__PURE__ */ e(((e, t) => {
238
+ t.exports = "2.2.4";
239
+ })), r = /* @__PURE__ */ e(((e, r) => {
240
+ r.exports = {
241
+ Graph: t(),
242
+ version: n()
243
+ };
244
+ })), i = /* @__PURE__ */ e(((e, n) => {
245
+ var r = t();
246
+ n.exports = {
247
+ write,
248
+ read
249
+ };
250
+ function write(e) {
251
+ var t = {
252
+ options: {
253
+ directed: e.isDirected(),
254
+ multigraph: e.isMultigraph(),
255
+ compound: e.isCompound()
256
+ },
257
+ nodes: writeNodes(e),
258
+ edges: writeEdges(e)
259
+ };
260
+ return e.graph() !== void 0 && (t.value = structuredClone(e.graph())), t;
261
+ }
262
+ function writeNodes(e) {
263
+ return e.nodes().map(function(t) {
264
+ var n = e.node(t), r = e.parent(t), i = { v: t };
265
+ return n !== void 0 && (i.value = n), r !== void 0 && (i.parent = r), i;
266
+ });
267
+ }
268
+ function writeEdges(e) {
269
+ return e.edges().map(function(t) {
270
+ var n = e.edge(t), r = {
271
+ v: t.v,
272
+ w: t.w
273
+ };
274
+ return t.name !== void 0 && (r.name = t.name), n !== void 0 && (r.value = n), r;
275
+ });
276
+ }
277
+ function read(e) {
278
+ var t = new r(e.options).setGraph(e.value);
279
+ return e.nodes.forEach(function(e) {
280
+ t.setNode(e.v, e.value), e.parent && t.setParent(e.v, e.parent);
281
+ }), e.edges.forEach(function(e) {
282
+ t.setEdge({
283
+ v: e.v,
284
+ w: e.w,
285
+ name: e.name
286
+ }, e.value);
287
+ }), t;
288
+ }
289
+ })), a = /* @__PURE__ */ e(((e, t) => {
290
+ t.exports = components;
291
+ function components(e) {
292
+ var t = {}, n = [], r;
293
+ function dfs(n) {
294
+ Object.hasOwn(t, n) || (t[n] = !0, r.push(n), e.successors(n).forEach(dfs), e.predecessors(n).forEach(dfs));
295
+ }
296
+ return e.nodes().forEach(function(e) {
297
+ r = [], dfs(e), r.length && n.push(r);
298
+ }), n;
299
+ }
300
+ })), o = /* @__PURE__ */ e(((e, t) => {
301
+ var PriorityQueue = class {
302
+ _arr = [];
303
+ _keyIndices = {};
304
+ size() {
305
+ return this._arr.length;
306
+ }
307
+ keys() {
308
+ return this._arr.map(function(e) {
309
+ return e.key;
310
+ });
311
+ }
312
+ has(e) {
313
+ return Object.hasOwn(this._keyIndices, e);
314
+ }
315
+ priority(e) {
316
+ var t = this._keyIndices[e];
317
+ if (t !== void 0) return this._arr[t].priority;
318
+ }
319
+ min() {
320
+ if (this.size() === 0) throw Error("Queue underflow");
321
+ return this._arr[0].key;
322
+ }
323
+ add(e, t) {
324
+ var n = this._keyIndices;
325
+ if (e = String(e), !Object.hasOwn(n, e)) {
326
+ var r = this._arr, i = r.length;
327
+ return n[e] = i, r.push({
328
+ key: e,
329
+ priority: t
330
+ }), this._decrease(i), !0;
331
+ }
332
+ return !1;
333
+ }
334
+ removeMin() {
335
+ this._swap(0, this._arr.length - 1);
336
+ var e = this._arr.pop();
337
+ return delete this._keyIndices[e.key], this._heapify(0), e.key;
338
+ }
339
+ decrease(e, t) {
340
+ var n = this._keyIndices[e];
341
+ if (t > this._arr[n].priority) throw Error("New priority is greater than current priority. Key: " + e + " Old: " + this._arr[n].priority + " New: " + t);
342
+ this._arr[n].priority = t, this._decrease(n);
343
+ }
344
+ _heapify(e) {
345
+ var t = this._arr, n = 2 * e, r = n + 1, i = e;
346
+ 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)));
347
+ }
348
+ _decrease(e) {
349
+ for (var t = this._arr, n = t[e].priority, r; e !== 0 && (r = e >> 1, !(t[r].priority < n));) this._swap(e, r), e = r;
350
+ }
351
+ _swap(e, t) {
352
+ var n = this._arr, r = this._keyIndices, i = n[e], a = n[t];
353
+ n[e] = a, n[t] = i, r[a.key] = e, r[i.key] = t;
354
+ }
355
+ };
356
+ t.exports = PriorityQueue;
357
+ })), s = /* @__PURE__ */ e(((e, t) => {
358
+ var n = o();
359
+ t.exports = dijkstra;
360
+ var DEFAULT_WEIGHT_FUNC = () => 1;
361
+ function dijkstra(e, t, n, r) {
362
+ return runDijkstra(e, String(t), n || DEFAULT_WEIGHT_FUNC, r || function(t) {
363
+ return e.outEdges(t);
364
+ });
365
+ }
366
+ function runDijkstra(e, t, r, i) {
367
+ var a = {}, o = new n(), s, c, updateNeighbors = function(e) {
368
+ var t = e.v === s ? e.w : e.v, n = a[t], i = r(e), l = c.distance + i;
369
+ if (i < 0) throw Error("dijkstra does not allow negative edge weights. Bad edge: " + e + " Weight: " + i);
370
+ l < n.distance && (n.distance = l, n.predecessor = s, o.decrease(t, l));
371
+ };
372
+ for (e.nodes().forEach(function(e) {
373
+ var n = e === t ? 0 : Infinity;
374
+ a[e] = { distance: n }, o.add(e, n);
375
+ }); o.size() > 0 && (s = o.removeMin(), c = a[s], c.distance !== Infinity);) i(s).forEach(updateNeighbors);
376
+ return a;
377
+ }
378
+ })), c = /* @__PURE__ */ e(((e, t) => {
379
+ var n = s();
380
+ t.exports = dijkstraAll;
381
+ function dijkstraAll(e, t, r) {
382
+ return e.nodes().reduce(function(i, a) {
383
+ return i[a] = n(e, a, t, r), i;
384
+ }, {});
385
+ }
386
+ })), l = /* @__PURE__ */ e(((e, t) => {
387
+ t.exports = tarjan;
388
+ function tarjan(e) {
389
+ var t = 0, n = [], r = {}, i = [];
390
+ function dfs(a) {
391
+ var o = r[a] = {
392
+ onStack: !0,
393
+ lowlink: t,
394
+ index: t++
395
+ };
396
+ if (n.push(a), e.successors(a).forEach(function(e) {
397
+ Object.hasOwn(r, e) ? r[e].onStack && (o.lowlink = Math.min(o.lowlink, r[e].index)) : (dfs(e), o.lowlink = Math.min(o.lowlink, r[e].lowlink));
398
+ }), o.lowlink === o.index) {
399
+ var s = [], c;
400
+ do
401
+ c = n.pop(), r[c].onStack = !1, s.push(c);
402
+ while (a !== c);
403
+ i.push(s);
404
+ }
405
+ }
406
+ return e.nodes().forEach(function(e) {
407
+ Object.hasOwn(r, e) || dfs(e);
408
+ }), i;
409
+ }
410
+ })), u = /* @__PURE__ */ e(((e, t) => {
411
+ var n = l();
412
+ t.exports = findCycles;
413
+ function findCycles(e) {
414
+ return n(e).filter(function(t) {
415
+ return t.length > 1 || t.length === 1 && e.hasEdge(t[0], t[0]);
416
+ });
417
+ }
418
+ })), d = /* @__PURE__ */ e(((e, t) => {
419
+ t.exports = floydWarshall;
420
+ var DEFAULT_WEIGHT_FUNC = () => 1;
421
+ function floydWarshall(e, t, n) {
422
+ return runFloydWarshall(e, t || DEFAULT_WEIGHT_FUNC, n || function(t) {
423
+ return e.outEdges(t);
424
+ });
425
+ }
426
+ function runFloydWarshall(e, t, n) {
427
+ var r = {}, i = e.nodes();
428
+ return i.forEach(function(e) {
429
+ r[e] = {}, r[e][e] = { distance: 0 }, i.forEach(function(t) {
430
+ e !== t && (r[e][t] = { distance: Infinity });
431
+ }), n(e).forEach(function(n) {
432
+ var i = n.v === e ? n.w : n.v, a = t(n);
433
+ r[e][i] = {
434
+ distance: a,
435
+ predecessor: e
436
+ };
437
+ });
438
+ }), i.forEach(function(e) {
439
+ var t = r[e];
440
+ i.forEach(function(n) {
441
+ var a = r[n];
442
+ i.forEach(function(n) {
443
+ var r = a[e], i = t[n], o = a[n], s = r.distance + i.distance;
444
+ s < o.distance && (o.distance = s, o.predecessor = i.predecessor);
445
+ });
446
+ });
447
+ }), r;
448
+ }
449
+ })), f = /* @__PURE__ */ e(((e, t) => {
450
+ function topsort(e) {
451
+ var t = {}, n = {}, r = [];
452
+ function visit(i) {
453
+ if (Object.hasOwn(n, i)) throw new CycleException();
454
+ Object.hasOwn(t, i) || (n[i] = !0, t[i] = !0, e.predecessors(i).forEach(visit), delete n[i], r.push(i));
455
+ }
456
+ if (e.sinks().forEach(visit), Object.keys(t).length !== e.nodeCount()) throw new CycleException();
457
+ return r;
458
+ }
459
+ var CycleException = class extends Error {
460
+ constructor() {
461
+ super(...arguments);
462
+ }
463
+ };
464
+ t.exports = topsort, topsort.CycleException = CycleException;
465
+ })), p = /* @__PURE__ */ e(((e, t) => {
466
+ var n = f();
467
+ t.exports = isAcyclic;
468
+ function isAcyclic(e) {
469
+ try {
470
+ n(e);
471
+ } catch (e) {
472
+ if (e instanceof n.CycleException) return !1;
473
+ throw e;
474
+ }
475
+ return !0;
476
+ }
477
+ })), m = /* @__PURE__ */ e(((e, t) => {
478
+ t.exports = dfs;
479
+ function dfs(e, t, n) {
480
+ Array.isArray(t) || (t = [t]);
481
+ var r = e.isDirected() ? (t) => e.successors(t) : (t) => e.neighbors(t), i = n === "post" ? postOrderDfs : preOrderDfs, a = [], o = {};
482
+ return t.forEach((t) => {
483
+ if (!e.hasNode(t)) throw Error("Graph does not have node: " + t);
484
+ i(t, r, o, a);
485
+ }), a;
486
+ }
487
+ function postOrderDfs(e, t, n, r) {
488
+ for (var i = [[e, !1]]; i.length > 0;) {
489
+ var a = i.pop();
490
+ a[1] ? r.push(a[0]) : Object.hasOwn(n, a[0]) || (n[a[0]] = !0, i.push([a[0], !0]), forEachRight(t(a[0]), (e) => i.push([e, !1])));
491
+ }
492
+ }
493
+ function preOrderDfs(e, t, n, r) {
494
+ for (var i = [e]; i.length > 0;) {
495
+ var a = i.pop();
496
+ Object.hasOwn(n, a) || (n[a] = !0, r.push(a), forEachRight(t(a), (e) => i.push(e)));
497
+ }
498
+ }
499
+ function forEachRight(e, t) {
500
+ for (var n = e.length; n--;) t(e[n], n, e);
501
+ return e;
502
+ }
503
+ })), h = /* @__PURE__ */ e(((e, t) => {
504
+ var n = m();
505
+ t.exports = postorder;
506
+ function postorder(e, t) {
507
+ return n(e, t, "post");
508
+ }
509
+ })), g = /* @__PURE__ */ e(((e, t) => {
510
+ var n = m();
511
+ t.exports = preorder;
512
+ function preorder(e, t) {
513
+ return n(e, t, "pre");
514
+ }
515
+ })), _ = /* @__PURE__ */ e(((e, n) => {
516
+ var r = t(), i = o();
517
+ n.exports = prim;
518
+ function prim(e, t) {
519
+ var n = new r(), a = {}, o = new i(), s;
520
+ function updateNeighbors(e) {
521
+ var n = e.v === s ? e.w : e.v, r = o.priority(n);
522
+ if (r !== void 0) {
523
+ var i = t(e);
524
+ i < r && (a[n] = s, o.decrease(n, i));
525
+ }
526
+ }
527
+ if (e.nodeCount() === 0) return n;
528
+ e.nodes().forEach(function(e) {
529
+ o.add(e, Infinity), n.setNode(e);
530
+ }), o.decrease(e.nodes()[0], 0);
531
+ for (var c = !1; o.size() > 0;) {
532
+ if (s = o.removeMin(), Object.hasOwn(a, s)) n.setEdge(s, a[s]);
533
+ else if (c) throw Error("Input graph is not connected: " + e);
534
+ else c = !0;
535
+ e.nodeEdges(s).forEach(updateNeighbors);
536
+ }
537
+ return n;
538
+ }
539
+ })), v = /* @__PURE__ */ e(((e, t) => {
540
+ t.exports = {
541
+ components: a(),
542
+ dijkstra: s(),
543
+ dijkstraAll: c(),
544
+ findCycles: u(),
545
+ floydWarshall: d(),
546
+ isAcyclic: p(),
547
+ postorder: h(),
548
+ preorder: g(),
549
+ prim: _(),
550
+ tarjan: l(),
551
+ topsort: f()
552
+ };
553
+ })), y = /* @__PURE__ */ e(((e, t) => {
554
+ var n = r();
555
+ t.exports = {
556
+ Graph: n.Graph,
557
+ json: i(),
558
+ alg: v(),
559
+ version: n.version
560
+ };
561
+ })), b = /* @__PURE__ */ e(((e, t) => {
562
+ var List = class {
563
+ constructor() {
564
+ let e = {};
565
+ e._next = e._prev = e, this._sentinel = e;
566
+ }
567
+ dequeue() {
568
+ let e = this._sentinel, t = e._prev;
569
+ if (t !== e) return unlink(t), t;
570
+ }
571
+ enqueue(e) {
572
+ let t = this._sentinel;
573
+ e._prev && e._next && unlink(e), e._next = t._next, t._next._prev = e, t._next = e, e._prev = t;
574
+ }
575
+ toString() {
576
+ let e = [], t = this._sentinel, n = t._prev;
577
+ for (; n !== t;) e.push(JSON.stringify(n, filterOutLinks)), n = n._prev;
578
+ return "[" + e.join(", ") + "]";
579
+ }
580
+ };
581
+ function unlink(e) {
582
+ e._prev._next = e._next, e._next._prev = e._prev, delete e._next, delete e._prev;
583
+ }
584
+ function filterOutLinks(e, t) {
585
+ if (e !== "_next" && e !== "_prev") return t;
586
+ }
587
+ t.exports = List;
588
+ })), x = /* @__PURE__ */ e(((e, t) => {
589
+ var n = y().Graph, r = b();
590
+ t.exports = greedyFAS;
591
+ var DEFAULT_WEIGHT_FN = () => 1;
592
+ function greedyFAS(e, t) {
593
+ if (e.nodeCount() <= 1) return [];
594
+ let n = buildState(e, t || DEFAULT_WEIGHT_FN);
595
+ return doGreedyFAS(n.graph, n.buckets, n.zeroIdx).flatMap((t) => e.outEdges(t.v, t.w));
596
+ }
597
+ function doGreedyFAS(e, t, n) {
598
+ let r = [], i = t[t.length - 1], a = t[0], o;
599
+ for (; e.nodeCount();) {
600
+ for (; o = a.dequeue();) removeNode(e, t, n, o);
601
+ for (; o = i.dequeue();) removeNode(e, t, n, o);
602
+ if (e.nodeCount()) {
603
+ for (let i = t.length - 2; i > 0; --i) if (o = t[i].dequeue(), o) {
604
+ r = r.concat(removeNode(e, t, n, o, !0));
605
+ break;
606
+ }
607
+ }
608
+ }
609
+ return r;
610
+ }
611
+ function removeNode(e, t, n, r, i) {
612
+ let a = i ? [] : void 0;
613
+ return e.inEdges(r.v).forEach((r) => {
614
+ let o = e.edge(r), s = e.node(r.v);
615
+ i && a.push({
616
+ v: r.v,
617
+ w: r.w
618
+ }), s.out -= o, assignBucket(t, n, s);
619
+ }), e.outEdges(r.v).forEach((r) => {
620
+ let i = e.edge(r), a = r.w, o = e.node(a);
621
+ o.in -= i, assignBucket(t, n, o);
622
+ }), e.removeNode(r.v), a;
623
+ }
624
+ function buildState(e, t) {
625
+ let i = new n(), a = 0, o = 0;
626
+ e.nodes().forEach((e) => {
627
+ i.setNode(e, {
628
+ v: e,
629
+ in: 0,
630
+ out: 0
631
+ });
632
+ }), e.edges().forEach((e) => {
633
+ let n = i.edge(e.v, e.w) || 0, r = t(e), s = n + r;
634
+ i.setEdge(e.v, e.w, s), o = Math.max(o, i.node(e.v).out += r), a = Math.max(a, i.node(e.w).in += r);
635
+ });
636
+ let s = range(o + a + 3).map(() => new r()), c = a + 1;
637
+ return i.nodes().forEach((e) => {
638
+ assignBucket(s, c, i.node(e));
639
+ }), {
640
+ graph: i,
641
+ buckets: s,
642
+ zeroIdx: c
643
+ };
644
+ }
645
+ function assignBucket(e, t, n) {
646
+ n.out ? n.in ? e[n.out - n.in + t].enqueue(n) : e[e.length - 1].enqueue(n) : e[0].enqueue(n);
647
+ }
648
+ function range(e) {
649
+ let t = [];
650
+ for (let n = 0; n < e; n++) t.push(n);
651
+ return t;
652
+ }
653
+ })), S = /* @__PURE__ */ e(((e, t) => {
654
+ var n = y().Graph;
655
+ t.exports = {
656
+ addBorderNode,
657
+ addDummyNode,
658
+ applyWithChunking,
659
+ asNonCompoundGraph,
660
+ buildLayerMatrix,
661
+ intersectRect,
662
+ mapValues,
663
+ maxRank,
664
+ normalizeRanks,
665
+ notime,
666
+ partition,
667
+ pick,
668
+ predecessorWeights,
669
+ range,
670
+ removeEmptyRanks,
671
+ simplify,
672
+ successorWeights,
673
+ time,
674
+ uniqueId,
675
+ zipObject
676
+ };
677
+ function addDummyNode(e, t, n, r) {
678
+ for (var i = r; e.hasNode(i);) i = uniqueId(r);
679
+ return n.dummy = t, e.setNode(i, n), i;
680
+ }
681
+ function simplify(e) {
682
+ let t = new n().setGraph(e.graph());
683
+ return e.nodes().forEach((n) => t.setNode(n, e.node(n))), e.edges().forEach((n) => {
684
+ let r = t.edge(n.v, n.w) || {
685
+ weight: 0,
686
+ minlen: 1
687
+ }, i = e.edge(n);
688
+ t.setEdge(n.v, n.w, {
689
+ weight: r.weight + i.weight,
690
+ minlen: Math.max(r.minlen, i.minlen)
691
+ });
692
+ }), t;
693
+ }
694
+ function asNonCompoundGraph(e) {
695
+ let t = new n({ multigraph: e.isMultigraph() }).setGraph(e.graph());
696
+ return e.nodes().forEach((n) => {
697
+ e.children(n).length || t.setNode(n, e.node(n));
698
+ }), e.edges().forEach((n) => {
699
+ t.setEdge(n, e.edge(n));
700
+ }), t;
701
+ }
702
+ function successorWeights(e) {
703
+ let t = e.nodes().map((t) => {
704
+ let n = {};
705
+ return e.outEdges(t).forEach((t) => {
706
+ n[t.w] = (n[t.w] || 0) + e.edge(t).weight;
707
+ }), n;
708
+ });
709
+ return zipObject(e.nodes(), t);
710
+ }
711
+ function predecessorWeights(e) {
712
+ let t = e.nodes().map((t) => {
713
+ let n = {};
714
+ return e.inEdges(t).forEach((t) => {
715
+ n[t.v] = (n[t.v] || 0) + e.edge(t).weight;
716
+ }), n;
717
+ });
718
+ return zipObject(e.nodes(), t);
719
+ }
720
+ function intersectRect(e, t) {
721
+ let n = e.x, r = e.y, i = t.x - n, a = t.y - r, o = e.width / 2, s = e.height / 2;
722
+ if (!i && !a) throw Error("Not possible to find intersection inside of the rectangle");
723
+ let c, l;
724
+ 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), {
725
+ x: n + c,
726
+ y: r + l
727
+ };
728
+ }
729
+ function buildLayerMatrix(e) {
730
+ let t = range(maxRank(e) + 1).map(() => []);
731
+ return e.nodes().forEach((n) => {
732
+ let r = e.node(n), i = r.rank;
733
+ i !== void 0 && (t[i][r.order] = n);
734
+ }), t;
735
+ }
736
+ function normalizeRanks(e) {
737
+ let t = e.nodes().map((t) => {
738
+ let n = e.node(t).rank;
739
+ return n === void 0 ? Number.MAX_VALUE : n;
740
+ }), n = applyWithChunking(Math.min, t);
741
+ e.nodes().forEach((t) => {
742
+ let r = e.node(t);
743
+ Object.hasOwn(r, "rank") && (r.rank -= n);
744
+ });
745
+ }
746
+ function removeEmptyRanks(e) {
747
+ let t = e.nodes().map((t) => e.node(t).rank), n = applyWithChunking(Math.min, t), r = [];
748
+ e.nodes().forEach((t) => {
749
+ let i = e.node(t).rank - n;
750
+ r[i] || (r[i] = []), r[i].push(t);
751
+ });
752
+ let i = 0, a = e.graph().nodeRankFactor;
753
+ Array.from(r).forEach((t, n) => {
754
+ t === void 0 && n % a !== 0 ? --i : t !== void 0 && i && t.forEach((t) => e.node(t).rank += i);
755
+ });
756
+ }
757
+ function addBorderNode(e, t, n, r) {
758
+ let i = {
759
+ width: 0,
760
+ height: 0
761
+ };
762
+ return arguments.length >= 4 && (i.rank = n, i.order = r), addDummyNode(e, "border", i, t);
763
+ }
764
+ function splitToChunks(e, t = r) {
765
+ let n = [];
766
+ for (let r = 0; r < e.length; r += t) {
767
+ let i = e.slice(r, r + t);
768
+ n.push(i);
769
+ }
770
+ return n;
771
+ }
772
+ var r = 65535;
773
+ function applyWithChunking(e, t) {
774
+ if (t.length > r) {
775
+ let n = splitToChunks(t);
776
+ return e.apply(null, n.map((t) => e.apply(null, t)));
777
+ } else return e.apply(null, t);
778
+ }
779
+ function maxRank(e) {
780
+ let t = e.nodes().map((t) => {
781
+ let n = e.node(t).rank;
782
+ return n === void 0 ? Number.MIN_VALUE : n;
783
+ });
784
+ return applyWithChunking(Math.max, t);
785
+ }
786
+ function partition(e, t) {
787
+ let n = {
788
+ lhs: [],
789
+ rhs: []
790
+ };
791
+ return e.forEach((e) => {
792
+ t(e) ? n.lhs.push(e) : n.rhs.push(e);
793
+ }), n;
794
+ }
795
+ function time(e, t) {
796
+ let n = Date.now();
797
+ try {
798
+ return t();
799
+ } finally {
800
+ console.log(e + " time: " + (Date.now() - n) + "ms");
801
+ }
802
+ }
803
+ function notime(e, t) {
804
+ return t();
805
+ }
806
+ var i = 0;
807
+ function uniqueId(e) {
808
+ return e + ("" + ++i);
809
+ }
810
+ function range(e, t, n = 1) {
811
+ t ?? (t = e, e = 0);
812
+ let endCon = (e) => e < t;
813
+ n < 0 && (endCon = (e) => t < e);
814
+ let r = [];
815
+ for (let t = e; endCon(t); t += n) r.push(t);
816
+ return r;
817
+ }
818
+ function pick(e, t) {
819
+ let n = {};
820
+ for (let r of t) e[r] !== void 0 && (n[r] = e[r]);
821
+ return n;
822
+ }
823
+ function mapValues(e, t) {
824
+ let func = t;
825
+ return typeof t == "string" && (func = (e) => e[t]), Object.entries(e).reduce((e, [t, n]) => (e[t] = func(n, t), e), {});
826
+ }
827
+ function zipObject(e, t) {
828
+ return e.reduce((e, n, r) => (e[n] = t[r], e), {});
829
+ }
830
+ })), C = /* @__PURE__ */ e(((e, t) => {
831
+ var n = x(), r = S().uniqueId;
832
+ t.exports = {
833
+ run,
834
+ undo
835
+ };
836
+ function run(e) {
837
+ (e.graph().acyclicer === "greedy" ? n(e, weightFn(e)) : dfsFAS(e)).forEach((t) => {
838
+ let n = e.edge(t);
839
+ e.removeEdge(t), n.forwardName = t.name, n.reversed = !0, e.setEdge(t.w, t.v, n, r("rev"));
840
+ });
841
+ function weightFn(e) {
842
+ return (t) => e.edge(t).weight;
843
+ }
844
+ }
845
+ function dfsFAS(e) {
846
+ let t = [], n = {}, r = {};
847
+ function dfs(i) {
848
+ Object.hasOwn(r, i) || (r[i] = !0, n[i] = !0, e.outEdges(i).forEach((e) => {
849
+ Object.hasOwn(n, e.w) ? t.push(e) : dfs(e.w);
850
+ }), delete n[i]);
851
+ }
852
+ return e.nodes().forEach(dfs), t;
853
+ }
854
+ function undo(e) {
855
+ e.edges().forEach((t) => {
856
+ let n = e.edge(t);
857
+ if (n.reversed) {
858
+ e.removeEdge(t);
859
+ let r = n.forwardName;
860
+ delete n.reversed, delete n.forwardName, e.setEdge(t.w, t.v, n, r);
861
+ }
862
+ });
863
+ }
864
+ })), w = /* @__PURE__ */ e(((e, t) => {
865
+ var n = S();
866
+ t.exports = {
867
+ run,
868
+ undo
869
+ };
870
+ function run(e) {
871
+ e.graph().dummyChains = [], e.edges().forEach((t) => normalizeEdge(e, t));
872
+ }
873
+ function normalizeEdge(e, t) {
874
+ let r = t.v, i = e.node(r).rank, a = t.w, o = e.node(a).rank, s = t.name, c = e.edge(t), l = c.labelRank;
875
+ if (o === i + 1) return;
876
+ e.removeEdge(t);
877
+ let u, d, f;
878
+ for (f = 0, ++i; i < o; ++f, ++i) c.points = [], d = {
879
+ width: 0,
880
+ height: 0,
881
+ edgeLabel: c,
882
+ edgeObj: t,
883
+ rank: i
884
+ }, u = n.addDummyNode(e, "edge", d, "_d"), i === l && (d.width = c.width, d.height = c.height, d.dummy = "edge-label", d.labelpos = c.labelpos), e.setEdge(r, u, { weight: c.weight }, s), f === 0 && e.graph().dummyChains.push(u), r = u;
885
+ e.setEdge(r, a, { weight: c.weight }, s);
886
+ }
887
+ function undo(e) {
888
+ e.graph().dummyChains.forEach((t) => {
889
+ let n = e.node(t), r = n.edgeLabel, i;
890
+ for (e.setEdge(n.edgeObj, r); n.dummy;) i = e.successors(t)[0], e.removeNode(t), r.points.push({
891
+ x: n.x,
892
+ y: n.y
893
+ }), 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);
894
+ });
895
+ }
896
+ })), T = /* @__PURE__ */ e(((e, t) => {
897
+ var { applyWithChunking: n } = S();
898
+ t.exports = {
899
+ longestPath,
900
+ slack
901
+ };
902
+ function longestPath(e) {
903
+ var t = {};
904
+ function dfs(r) {
905
+ var i = e.node(r);
906
+ if (Object.hasOwn(t, r)) return i.rank;
907
+ t[r] = !0;
908
+ let a = e.outEdges(r).map((t) => t == null ? Infinity : dfs(t.w) - e.edge(t).minlen);
909
+ var o = n(Math.min, a);
910
+ return o === Infinity && (o = 0), i.rank = o;
911
+ }
912
+ e.sources().forEach(dfs);
913
+ }
914
+ function slack(e, t) {
915
+ return e.node(t.w).rank - e.node(t.v).rank - e.edge(t).minlen;
916
+ }
917
+ })), E = /* @__PURE__ */ e(((e, t) => {
918
+ var n = y().Graph, r = T().slack;
919
+ t.exports = feasibleTree;
920
+ function feasibleTree(e) {
921
+ var t = new n({ directed: !1 }), i = e.nodes()[0], a = e.nodeCount();
922
+ t.setNode(i, {});
923
+ for (var o, s; tightTree(t, e) < a;) o = findMinSlackEdge(t, e), s = t.hasNode(o.v) ? r(e, o) : -r(e, o), shiftRanks(t, e, s);
924
+ return t;
925
+ }
926
+ function tightTree(e, t) {
927
+ function dfs(n) {
928
+ t.nodeEdges(n).forEach((i) => {
929
+ var a = i.v, o = n === a ? i.w : a;
930
+ !e.hasNode(o) && !r(t, i) && (e.setNode(o, {}), e.setEdge(n, o, {}), dfs(o));
931
+ });
932
+ }
933
+ return e.nodes().forEach(dfs), e.nodeCount();
934
+ }
935
+ function findMinSlackEdge(e, t) {
936
+ return t.edges().reduce((n, i) => {
937
+ let a = Infinity;
938
+ return e.hasNode(i.v) !== e.hasNode(i.w) && (a = r(t, i)), a < n[0] ? [a, i] : n;
939
+ }, [Infinity, null])[1];
940
+ }
941
+ function shiftRanks(e, t, n) {
942
+ e.nodes().forEach((e) => t.node(e).rank += n);
943
+ }
944
+ })), D = /* @__PURE__ */ e(((e, t) => {
945
+ var n = E(), r = T().slack, i = T().longestPath, a = y().alg.preorder, o = y().alg.postorder, s = S().simplify;
946
+ t.exports = networkSimplex, networkSimplex.initLowLimValues = initLowLimValues, networkSimplex.initCutValues = initCutValues, networkSimplex.calcCutValue = calcCutValue, networkSimplex.leaveEdge = leaveEdge, networkSimplex.enterEdge = enterEdge, networkSimplex.exchangeEdges = exchangeEdges;
947
+ function networkSimplex(e) {
948
+ e = s(e), i(e);
949
+ var t = n(e);
950
+ initLowLimValues(t), initCutValues(t, e);
951
+ for (var r, a; r = leaveEdge(t);) a = enterEdge(t, e, r), exchangeEdges(t, e, r, a);
952
+ }
953
+ function initCutValues(e, t) {
954
+ var n = o(e, e.nodes());
955
+ n = n.slice(0, n.length - 1), n.forEach((n) => assignCutValue(e, t, n));
956
+ }
957
+ function assignCutValue(e, t, n) {
958
+ var r = e.node(n).parent;
959
+ e.edge(n, r).cutvalue = calcCutValue(e, t, n);
960
+ }
961
+ function calcCutValue(e, t, n) {
962
+ var r = e.node(n).parent, i = !0, a = t.edge(n, r), o = 0;
963
+ return a ||= (i = !1, t.edge(r, n)), o = a.weight, t.nodeEdges(n).forEach((a) => {
964
+ var s = a.v === n, c = s ? a.w : a.v;
965
+ if (c !== r) {
966
+ var l = s === i, u = t.edge(a).weight;
967
+ if (o += l ? u : -u, isTreeEdge(e, n, c)) {
968
+ var d = e.edge(n, c).cutvalue;
969
+ o += l ? -d : d;
970
+ }
971
+ }
972
+ }), o;
973
+ }
974
+ function initLowLimValues(e, t) {
975
+ arguments.length < 2 && (t = e.nodes()[0]), dfsAssignLowLim(e, {}, 1, t);
976
+ }
977
+ function dfsAssignLowLim(e, t, n, r, i) {
978
+ var a = n, o = e.node(r);
979
+ return t[r] = !0, e.neighbors(r).forEach((i) => {
980
+ Object.hasOwn(t, i) || (n = dfsAssignLowLim(e, t, n, i, r));
981
+ }), o.low = a, o.lim = n++, i ? o.parent = i : delete o.parent, n;
982
+ }
983
+ function leaveEdge(e) {
984
+ return e.edges().find((t) => e.edge(t).cutvalue < 0);
985
+ }
986
+ function enterEdge(e, t, n) {
987
+ var i = n.v, a = n.w;
988
+ t.hasEdge(i, a) || (i = n.w, a = n.v);
989
+ var o = e.node(i), s = e.node(a), c = o, l = !1;
990
+ return o.lim > s.lim && (c = s, l = !0), t.edges().filter((t) => l === isDescendant(e, e.node(t.v), c) && l !== isDescendant(e, e.node(t.w), c)).reduce((e, n) => r(t, n) < r(t, e) ? n : e);
991
+ }
992
+ function exchangeEdges(e, t, n, r) {
993
+ var i = n.v, a = n.w;
994
+ e.removeEdge(i, a), e.setEdge(r.v, r.w, {}), initLowLimValues(e), initCutValues(e, t), updateRanks(e, t);
995
+ }
996
+ function updateRanks(e, t) {
997
+ var n = a(e, e.nodes().find((e) => !t.node(e).parent));
998
+ n = n.slice(1), n.forEach((n) => {
999
+ var r = e.node(n).parent, i = t.edge(n, r), a = !1;
1000
+ i || (i = t.edge(r, n), a = !0), t.node(n).rank = t.node(r).rank + (a ? i.minlen : -i.minlen);
1001
+ });
1002
+ }
1003
+ function isTreeEdge(e, t, n) {
1004
+ return e.hasEdge(t, n);
1005
+ }
1006
+ function isDescendant(e, t, n) {
1007
+ return n.low <= t.lim && t.lim <= n.lim;
1008
+ }
1009
+ })), O = /* @__PURE__ */ e(((e, t) => {
1010
+ var n = T().longestPath, r = E(), i = D();
1011
+ t.exports = rank;
1012
+ function rank(e) {
1013
+ var t = e.graph().ranker;
1014
+ if (t instanceof Function) return t(e);
1015
+ switch (e.graph().ranker) {
1016
+ case "network-simplex":
1017
+ networkSimplexRanker(e);
1018
+ break;
1019
+ case "tight-tree":
1020
+ tightTreeRanker(e);
1021
+ break;
1022
+ case "longest-path":
1023
+ a(e);
1024
+ break;
1025
+ case "none": break;
1026
+ default: networkSimplexRanker(e);
1027
+ }
1028
+ }
1029
+ var a = n;
1030
+ function tightTreeRanker(e) {
1031
+ n(e), r(e);
1032
+ }
1033
+ function networkSimplexRanker(e) {
1034
+ i(e);
1035
+ }
1036
+ })), k = /* @__PURE__ */ e(((e, t) => {
1037
+ t.exports = parentDummyChains;
1038
+ function parentDummyChains(e) {
1039
+ let t = postorder(e);
1040
+ e.graph().dummyChains.forEach((n) => {
1041
+ let r = e.node(n), i = r.edgeObj, a = findPath(e, t, i.v, i.w), o = a.path, s = a.lca, c = 0, l = o[c], u = !0;
1042
+ for (; n !== i.w;) {
1043
+ if (r = e.node(n), u) {
1044
+ for (; (l = o[c]) !== s && e.node(l).maxRank < r.rank;) c++;
1045
+ l === s && (u = !1);
1046
+ }
1047
+ if (!u) {
1048
+ for (; c < o.length - 1 && e.node(l = o[c + 1]).minRank <= r.rank;) c++;
1049
+ l = o[c];
1050
+ }
1051
+ e.setParent(n, l), n = e.successors(n)[0];
1052
+ }
1053
+ });
1054
+ }
1055
+ function findPath(e, t, n, r) {
1056
+ let i = [], a = [], o = Math.min(t[n].low, t[r].low), s = Math.max(t[n].lim, t[r].lim), c, l;
1057
+ c = n;
1058
+ do
1059
+ c = e.parent(c), i.push(c);
1060
+ while (c && (t[c].low > o || s > t[c].lim));
1061
+ for (l = c, c = r; (c = e.parent(c)) !== l;) a.push(c);
1062
+ return {
1063
+ path: i.concat(a.reverse()),
1064
+ lca: l
1065
+ };
1066
+ }
1067
+ function postorder(e) {
1068
+ let t = {}, n = 0;
1069
+ function dfs(r) {
1070
+ let i = n;
1071
+ e.children(r).forEach(dfs), t[r] = {
1072
+ low: i,
1073
+ lim: n++
1074
+ };
1075
+ }
1076
+ return e.children().forEach(dfs), t;
1077
+ }
1078
+ })), A = /* @__PURE__ */ e(((e, t) => {
1079
+ var n = S();
1080
+ t.exports = {
1081
+ run,
1082
+ cleanup
1083
+ };
1084
+ function run(e) {
1085
+ let t = n.addDummyNode(e, "root", {}, "_root"), r = treeDepths(e), i = Object.values(r), a = n.applyWithChunking(Math.max, i) - 1, o = 2 * a + 1;
1086
+ e.graph().nestingRoot = t, e.edges().forEach((t) => e.edge(t).minlen *= o);
1087
+ let s = sumWeights(e) + 1;
1088
+ e.children().forEach((n) => dfs(e, t, o, s, a, r, n)), e.graph().nodeRankFactor = o;
1089
+ }
1090
+ function dfs(e, t, r, i, a, o, s) {
1091
+ let c = e.children(s);
1092
+ if (!c.length) {
1093
+ s !== t && e.setEdge(t, s, {
1094
+ weight: 0,
1095
+ minlen: r
1096
+ });
1097
+ return;
1098
+ }
1099
+ let l = n.addBorderNode(e, "_bt"), u = n.addBorderNode(e, "_bb"), d = e.node(s);
1100
+ e.setParent(l, s), d.borderTop = l, e.setParent(u, s), d.borderBottom = u, c.forEach((n) => {
1101
+ dfs(e, t, r, i, a, o, n);
1102
+ let c = e.node(n), d = c.borderTop ? c.borderTop : n, f = c.borderBottom ? c.borderBottom : n, p = c.borderTop ? i : 2 * i, m = d === f ? a - o[s] + 1 : 1;
1103
+ e.setEdge(l, d, {
1104
+ weight: p,
1105
+ minlen: m,
1106
+ nestingEdge: !0
1107
+ }), e.setEdge(f, u, {
1108
+ weight: p,
1109
+ minlen: m,
1110
+ nestingEdge: !0
1111
+ });
1112
+ }), e.parent(s) || e.setEdge(t, l, {
1113
+ weight: 0,
1114
+ minlen: a + o[s]
1115
+ });
1116
+ }
1117
+ function treeDepths(e) {
1118
+ var t = {};
1119
+ function dfs(n, r) {
1120
+ var i = e.children(n);
1121
+ i && i.length && i.forEach((e) => dfs(e, r + 1)), t[n] = r;
1122
+ }
1123
+ return e.children().forEach((e) => dfs(e, 1)), t;
1124
+ }
1125
+ function sumWeights(e) {
1126
+ return e.edges().reduce((t, n) => t + e.edge(n).weight, 0);
1127
+ }
1128
+ function cleanup(e) {
1129
+ var t = e.graph();
1130
+ e.removeNode(t.nestingRoot), delete t.nestingRoot, e.edges().forEach((t) => {
1131
+ e.edge(t).nestingEdge && e.removeEdge(t);
1132
+ });
1133
+ }
1134
+ })), j = /* @__PURE__ */ e(((e, t) => {
1135
+ var n = S();
1136
+ t.exports = addBorderSegments;
1137
+ function addBorderSegments(e) {
1138
+ function dfs(t) {
1139
+ let n = e.children(t), r = e.node(t);
1140
+ if (n.length && n.forEach(dfs), Object.hasOwn(r, "minRank")) {
1141
+ r.borderLeft = [], r.borderRight = [];
1142
+ for (let n = r.minRank, i = r.maxRank + 1; n < i; ++n) addBorderNode(e, "borderLeft", "_bl", t, r, n), addBorderNode(e, "borderRight", "_br", t, r, n);
1143
+ }
1144
+ }
1145
+ e.children().forEach(dfs);
1146
+ }
1147
+ function addBorderNode(e, t, r, i, a, o) {
1148
+ let s = {
1149
+ width: 0,
1150
+ height: 0,
1151
+ rank: o,
1152
+ borderType: t
1153
+ }, c = a[t][o - 1], l = n.addDummyNode(e, "border", s, r);
1154
+ a[t][o] = l, e.setParent(l, i), c && e.setEdge(c, l, { weight: 1 });
1155
+ }
1156
+ })), M = /* @__PURE__ */ e(((e, t) => {
1157
+ t.exports = {
1158
+ adjust,
1159
+ undo
1160
+ };
1161
+ function adjust(e) {
1162
+ let t = e.graph().rankdir.toLowerCase();
1163
+ (t === "lr" || t === "rl") && swapWidthHeight(e);
1164
+ }
1165
+ function undo(e) {
1166
+ let t = e.graph().rankdir.toLowerCase();
1167
+ (t === "bt" || t === "rl") && reverseY(e), (t === "lr" || t === "rl") && (swapXY(e), swapWidthHeight(e));
1168
+ }
1169
+ function swapWidthHeight(e) {
1170
+ e.nodes().forEach((t) => swapWidthHeightOne(e.node(t))), e.edges().forEach((t) => swapWidthHeightOne(e.edge(t)));
1171
+ }
1172
+ function swapWidthHeightOne(e) {
1173
+ let t = e.width;
1174
+ e.width = e.height, e.height = t;
1175
+ }
1176
+ function reverseY(e) {
1177
+ e.nodes().forEach((t) => reverseYOne(e.node(t))), e.edges().forEach((t) => {
1178
+ let n = e.edge(t);
1179
+ n.points.forEach(reverseYOne), Object.hasOwn(n, "y") && reverseYOne(n);
1180
+ });
1181
+ }
1182
+ function reverseYOne(e) {
1183
+ e.y = -e.y;
1184
+ }
1185
+ function swapXY(e) {
1186
+ e.nodes().forEach((t) => swapXYOne(e.node(t))), e.edges().forEach((t) => {
1187
+ let n = e.edge(t);
1188
+ n.points.forEach(swapXYOne), Object.hasOwn(n, "x") && swapXYOne(n);
1189
+ });
1190
+ }
1191
+ function swapXYOne(e) {
1192
+ let t = e.x;
1193
+ e.x = e.y, e.y = t;
1194
+ }
1195
+ })), N = /* @__PURE__ */ e(((e, t) => {
1196
+ var n = S();
1197
+ t.exports = initOrder;
1198
+ function initOrder(e) {
1199
+ let t = {}, r = e.nodes().filter((t) => !e.children(t).length), i = r.map((t) => e.node(t).rank), a = n.applyWithChunking(Math.max, i), o = n.range(a + 1).map(() => []);
1200
+ function dfs(n) {
1201
+ t[n] || (t[n] = !0, o[e.node(n).rank].push(n), e.successors(n).forEach(dfs));
1202
+ }
1203
+ return r.sort((t, n) => e.node(t).rank - e.node(n).rank).forEach(dfs), o;
1204
+ }
1205
+ })), P = /* @__PURE__ */ e(((e, t) => {
1206
+ var n = S().zipObject;
1207
+ t.exports = crossCount;
1208
+ function crossCount(e, t) {
1209
+ let n = 0;
1210
+ for (let r = 1; r < t.length; ++r) n += twoLayerCrossCount(e, t[r - 1], t[r]);
1211
+ return n;
1212
+ }
1213
+ function twoLayerCrossCount(e, t, r) {
1214
+ let i = n(r, r.map((e, t) => t)), a = t.flatMap((t) => e.outEdges(t).map((t) => ({
1215
+ pos: i[t.w],
1216
+ weight: e.edge(t).weight
1217
+ })).sort((e, t) => e.pos - t.pos)), o = 1;
1218
+ for (; o < r.length;) o <<= 1;
1219
+ let s = 2 * o - 1;
1220
+ --o;
1221
+ let c = Array(s).fill(0), l = 0;
1222
+ return a.forEach((e) => {
1223
+ let t = e.pos + o;
1224
+ c[t] += e.weight;
1225
+ let n = 0;
1226
+ for (; t > 0;) t % 2 && (n += c[t + 1]), t = t - 1 >> 1, c[t] += e.weight;
1227
+ l += e.weight * n;
1228
+ }), l;
1229
+ }
1230
+ })), F = /* @__PURE__ */ e(((e, t) => {
1231
+ t.exports = barycenter;
1232
+ function barycenter(e, t = []) {
1233
+ return t.map((t) => {
1234
+ let n = e.inEdges(t);
1235
+ if (n.length) {
1236
+ let r = n.reduce((t, n) => {
1237
+ let r = e.edge(n), i = e.node(n.v);
1238
+ return {
1239
+ sum: t.sum + r.weight * i.order,
1240
+ weight: t.weight + r.weight
1241
+ };
1242
+ }, {
1243
+ sum: 0,
1244
+ weight: 0
1245
+ });
1246
+ return {
1247
+ v: t,
1248
+ barycenter: r.sum / r.weight,
1249
+ weight: r.weight
1250
+ };
1251
+ } else return { v: t };
1252
+ });
1253
+ }
1254
+ })), I = /* @__PURE__ */ e(((e, t) => {
1255
+ var n = S();
1256
+ t.exports = resolveConflicts;
1257
+ function resolveConflicts(e, t) {
1258
+ let n = {};
1259
+ return e.forEach((e, t) => {
1260
+ let r = n[e.v] = {
1261
+ indegree: 0,
1262
+ in: [],
1263
+ out: [],
1264
+ vs: [e.v],
1265
+ i: t
1266
+ };
1267
+ e.barycenter !== void 0 && (r.barycenter = e.barycenter, r.weight = e.weight);
1268
+ }), t.edges().forEach((e) => {
1269
+ let t = n[e.v], r = n[e.w];
1270
+ t !== void 0 && r !== void 0 && (r.indegree++, t.out.push(n[e.w]));
1271
+ }), doResolveConflicts(Object.values(n).filter((e) => !e.indegree));
1272
+ }
1273
+ function doResolveConflicts(e) {
1274
+ let t = [];
1275
+ function handleIn(e) {
1276
+ return (t) => {
1277
+ t.merged || (t.barycenter === void 0 || e.barycenter === void 0 || t.barycenter >= e.barycenter) && mergeEntries(e, t);
1278
+ };
1279
+ }
1280
+ function handleOut(t) {
1281
+ return (n) => {
1282
+ n.in.push(t), --n.indegree === 0 && e.push(n);
1283
+ };
1284
+ }
1285
+ for (; e.length;) {
1286
+ let n = e.pop();
1287
+ t.push(n), n.in.reverse().forEach(handleIn(n)), n.out.forEach(handleOut(n));
1288
+ }
1289
+ return t.filter((e) => !e.merged).map((e) => n.pick(e, [
1290
+ "vs",
1291
+ "i",
1292
+ "barycenter",
1293
+ "weight"
1294
+ ]));
1295
+ }
1296
+ function mergeEntries(e, t) {
1297
+ let n = 0, r = 0;
1298
+ 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;
1299
+ }
1300
+ })), L = /* @__PURE__ */ e(((e, t) => {
1301
+ var n = S();
1302
+ t.exports = sort;
1303
+ function sort(e, t) {
1304
+ let r = n.partition(e, (e) => Object.hasOwn(e, "barycenter")), i = r.lhs, a = r.rhs.sort((e, t) => t.i - e.i), o = [], s = 0, c = 0, l = 0;
1305
+ i.sort(compareWithBias(!!t)), l = consumeUnsortable(o, a, l), i.forEach((e) => {
1306
+ l += e.vs.length, o.push(e.vs), s += e.barycenter * e.weight, c += e.weight, l = consumeUnsortable(o, a, l);
1307
+ });
1308
+ let u = { vs: o.flat(!0) };
1309
+ return c && (u.barycenter = s / c, u.weight = c), u;
1310
+ }
1311
+ function consumeUnsortable(e, t, n) {
1312
+ let r;
1313
+ for (; t.length && (r = t[t.length - 1]).i <= n;) t.pop(), e.push(r.vs), n++;
1314
+ return n;
1315
+ }
1316
+ function compareWithBias(e) {
1317
+ return (t, n) => t.barycenter < n.barycenter ? -1 : t.barycenter > n.barycenter ? 1 : e ? n.i - t.i : t.i - n.i;
1318
+ }
1319
+ })), R = /* @__PURE__ */ e(((e, t) => {
1320
+ var n = F(), r = I(), i = L();
1321
+ t.exports = sortSubgraph;
1322
+ function sortSubgraph(e, t, a, o) {
1323
+ let s = e.children(t), c = e.node(t), l = c ? c.borderLeft : void 0, u = c ? c.borderRight : void 0, d = {};
1324
+ l && (s = s.filter((e) => e !== l && e !== u));
1325
+ let f = n(e, s);
1326
+ f.forEach((t) => {
1327
+ if (e.children(t.v).length) {
1328
+ let n = sortSubgraph(e, t.v, a, o);
1329
+ d[t.v] = n, Object.hasOwn(n, "barycenter") && mergeBarycenters(t, n);
1330
+ }
1331
+ });
1332
+ let p = r(f, a);
1333
+ expandSubgraphs(p, d);
1334
+ let m = i(p, o);
1335
+ if (l && (m.vs = [
1336
+ l,
1337
+ m.vs,
1338
+ u
1339
+ ].flat(!0), e.predecessors(l).length)) {
1340
+ let t = e.node(e.predecessors(l)[0]), n = e.node(e.predecessors(u)[0]);
1341
+ Object.hasOwn(m, "barycenter") || (m.barycenter = 0, m.weight = 0), m.barycenter = (m.barycenter * m.weight + t.order + n.order) / (m.weight + 2), m.weight += 2;
1342
+ }
1343
+ return m;
1344
+ }
1345
+ function expandSubgraphs(e, t) {
1346
+ e.forEach((e) => {
1347
+ e.vs = e.vs.flatMap((e) => t[e] ? t[e].vs : e);
1348
+ });
1349
+ }
1350
+ function mergeBarycenters(e, t) {
1351
+ 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);
1352
+ }
1353
+ })), z = /* @__PURE__ */ e(((e, t) => {
1354
+ var n = y().Graph, r = S();
1355
+ t.exports = buildLayerGraph;
1356
+ function buildLayerGraph(e, t, r, i) {
1357
+ i ||= e.nodes();
1358
+ let a = createRootNode(e), o = new n({ compound: !0 }).setGraph({ root: a }).setDefaultNodeLabel((t) => e.node(t));
1359
+ return i.forEach((n) => {
1360
+ let i = e.node(n), s = e.parent(n);
1361
+ (i.rank === t || i.minRank <= t && t <= i.maxRank) && (o.setNode(n), o.setParent(n, s || a), e[r](n).forEach((t) => {
1362
+ let r = t.v === n ? t.w : t.v, i = o.edge(r, n), a = i === void 0 ? 0 : i.weight;
1363
+ o.setEdge(r, n, { weight: e.edge(t).weight + a });
1364
+ }), Object.hasOwn(i, "minRank") && o.setNode(n, {
1365
+ borderLeft: i.borderLeft[t],
1366
+ borderRight: i.borderRight[t]
1367
+ }));
1368
+ }), o;
1369
+ }
1370
+ function createRootNode(e) {
1371
+ for (var t; e.hasNode(t = r.uniqueId("_root")););
1372
+ return t;
1373
+ }
1374
+ })), B = /* @__PURE__ */ e(((e, t) => {
1375
+ t.exports = addSubgraphConstraints;
1376
+ function addSubgraphConstraints(e, t, n) {
1377
+ let r = {}, i;
1378
+ n.forEach((n) => {
1379
+ let a = e.parent(n), o, s;
1380
+ for (; a;) {
1381
+ if (o = e.parent(a), o ? (s = r[o], r[o] = a) : (s = i, i = a), s && s !== a) {
1382
+ t.setEdge(s, a);
1383
+ return;
1384
+ }
1385
+ a = o;
1386
+ }
1387
+ });
1388
+ }
1389
+ })), V = /* @__PURE__ */ e(((e, t) => {
1390
+ var n = N(), r = P(), i = R(), a = z(), o = B(), s = y().Graph, c = S();
1391
+ t.exports = order;
1392
+ function order(e, t) {
1393
+ if (t && typeof t.customOrder == "function") {
1394
+ t.customOrder(e, order);
1395
+ return;
1396
+ }
1397
+ let i = c.maxRank(e), a = buildLayerGraphs(e, c.range(1, i + 1), "inEdges"), o = buildLayerGraphs(e, c.range(i - 1, -1, -1), "outEdges"), s = n(e);
1398
+ if (assignOrder(e, s), t && t.disableOptimalOrderHeuristic) return;
1399
+ let l = Infinity, u;
1400
+ for (let t = 0, n = 0; n < 4; ++t, ++n) {
1401
+ sweepLayerGraphs(t % 2 ? a : o, t % 4 >= 2), s = c.buildLayerMatrix(e);
1402
+ let i = r(e, s);
1403
+ i < l && (n = 0, u = Object.assign({}, s), l = i);
1404
+ }
1405
+ assignOrder(e, u);
1406
+ }
1407
+ function buildLayerGraphs(e, t, n) {
1408
+ let r = /* @__PURE__ */ new Map(), addNodeToRank = (e, t) => {
1409
+ r.has(e) || r.set(e, []), r.get(e).push(t);
1410
+ };
1411
+ for (let t of e.nodes()) {
1412
+ let n = e.node(t);
1413
+ if (typeof n.rank == "number" && addNodeToRank(n.rank, t), typeof n.minRank == "number" && typeof n.maxRank == "number") for (let e = n.minRank; e <= n.maxRank; e++) e !== n.rank && addNodeToRank(e, t);
1414
+ }
1415
+ return t.map(function(t) {
1416
+ return a(e, t, n, r.get(t) || []);
1417
+ });
1418
+ }
1419
+ function sweepLayerGraphs(e, t) {
1420
+ let n = new s();
1421
+ e.forEach(function(e) {
1422
+ let r = e.graph().root, a = i(e, r, n, t);
1423
+ a.vs.forEach((t, n) => e.node(t).order = n), o(e, n, a.vs);
1424
+ });
1425
+ }
1426
+ function assignOrder(e, t) {
1427
+ Object.values(t).forEach((t) => t.forEach((t, n) => e.node(t).order = n));
1428
+ }
1429
+ })), H = /* @__PURE__ */ e(((e, t) => {
1430
+ var n = y().Graph, r = S();
1431
+ t.exports = {
1432
+ positionX,
1433
+ findType1Conflicts,
1434
+ findType2Conflicts,
1435
+ addConflict,
1436
+ hasConflict,
1437
+ verticalAlignment,
1438
+ horizontalCompaction,
1439
+ alignCoordinates,
1440
+ findSmallestWidthAlignment,
1441
+ balance
1442
+ };
1443
+ function findType1Conflicts(e, t) {
1444
+ let n = {};
1445
+ function visitLayer(t, r) {
1446
+ let i = 0, a = 0, o = t.length, s = r[r.length - 1];
1447
+ return r.forEach((t, c) => {
1448
+ let l = findOtherInnerSegmentNode(e, t), u = l ? e.node(l).order : o;
1449
+ (l || t === s) && (r.slice(a, c + 1).forEach((t) => {
1450
+ e.predecessors(t).forEach((r) => {
1451
+ let a = e.node(r), o = a.order;
1452
+ (o < i || u < o) && !(a.dummy && e.node(t).dummy) && addConflict(n, r, t);
1453
+ });
1454
+ }), a = c + 1, i = u);
1455
+ }), r;
1456
+ }
1457
+ return t.length && t.reduce(visitLayer), n;
1458
+ }
1459
+ function findType2Conflicts(e, t) {
1460
+ let n = {};
1461
+ function scan(t, i, a, o, s) {
1462
+ let c;
1463
+ r.range(i, a).forEach((r) => {
1464
+ c = t[r], e.node(c).dummy && e.predecessors(c).forEach((t) => {
1465
+ let r = e.node(t);
1466
+ r.dummy && (r.order < o || r.order > s) && addConflict(n, t, c);
1467
+ });
1468
+ });
1469
+ }
1470
+ function visitLayer(t, n) {
1471
+ let r = -1, i, a = 0;
1472
+ return n.forEach((o, s) => {
1473
+ if (e.node(o).dummy === "border") {
1474
+ let t = e.predecessors(o);
1475
+ t.length && (i = e.node(t[0]).order, scan(n, a, s, r, i), a = s, r = i);
1476
+ }
1477
+ scan(n, a, n.length, i, t.length);
1478
+ }), n;
1479
+ }
1480
+ return t.length && t.reduce(visitLayer), n;
1481
+ }
1482
+ function findOtherInnerSegmentNode(e, t) {
1483
+ if (e.node(t).dummy) return e.predecessors(t).find((t) => e.node(t).dummy);
1484
+ }
1485
+ function addConflict(e, t, n) {
1486
+ if (t > n) {
1487
+ let e = t;
1488
+ t = n, n = e;
1489
+ }
1490
+ let r = e[t];
1491
+ r || (e[t] = r = {}), r[n] = !0;
1492
+ }
1493
+ function hasConflict(e, t, n) {
1494
+ if (t > n) {
1495
+ let e = t;
1496
+ t = n, n = e;
1497
+ }
1498
+ return !!e[t] && Object.hasOwn(e[t], n);
1499
+ }
1500
+ function verticalAlignment(e, t, n, r) {
1501
+ let i = {}, a = {}, o = {};
1502
+ return t.forEach((e) => {
1503
+ e.forEach((e, t) => {
1504
+ i[e] = e, a[e] = e, o[e] = t;
1505
+ });
1506
+ }), t.forEach((e) => {
1507
+ let t = -1;
1508
+ e.forEach((e) => {
1509
+ let s = r(e);
1510
+ if (s.length) {
1511
+ s = s.sort((e, t) => o[e] - o[t]);
1512
+ let r = (s.length - 1) / 2;
1513
+ for (let c = Math.floor(r), l = Math.ceil(r); c <= l; ++c) {
1514
+ let r = s[c];
1515
+ a[e] === e && t < o[r] && !hasConflict(n, e, r) && (a[r] = e, a[e] = i[e] = i[r], t = o[r]);
1516
+ }
1517
+ }
1518
+ });
1519
+ }), {
1520
+ root: i,
1521
+ align: a
1522
+ };
1523
+ }
1524
+ function horizontalCompaction(e, t, n, r, i) {
1525
+ let a = {}, o = buildBlockGraph(e, t, n, i), s = i ? "borderLeft" : "borderRight";
1526
+ function iterate(e, t) {
1527
+ let n = o.nodes(), r = n.pop(), i = {};
1528
+ for (; r;) i[r] ? e(r) : (i[r] = !0, n.push(r), n = n.concat(t(r))), r = n.pop();
1529
+ }
1530
+ function pass1(e) {
1531
+ a[e] = o.inEdges(e).reduce((e, t) => Math.max(e, a[t.v] + o.edge(t)), 0);
1532
+ }
1533
+ function pass2(t) {
1534
+ let n = o.outEdges(t).reduce((e, t) => Math.min(e, a[t.w] - o.edge(t)), Infinity), r = e.node(t);
1535
+ n !== Infinity && r.borderType !== s && (a[t] = Math.max(a[t], n));
1536
+ }
1537
+ return iterate(pass1, o.predecessors.bind(o)), iterate(pass2, o.successors.bind(o)), Object.keys(r).forEach((e) => a[e] = a[n[e]]), a;
1538
+ }
1539
+ function buildBlockGraph(e, t, r, i) {
1540
+ let a = new n(), o = e.graph(), s = sep(o.nodesep, o.edgesep, i);
1541
+ return t.forEach((t) => {
1542
+ let n;
1543
+ t.forEach((t) => {
1544
+ let i = r[t];
1545
+ if (a.setNode(i), n) {
1546
+ var o = r[n], c = a.edge(o, i);
1547
+ a.setEdge(o, i, Math.max(s(e, t, n), c || 0));
1548
+ }
1549
+ n = t;
1550
+ });
1551
+ }), a;
1552
+ }
1553
+ function findSmallestWidthAlignment(e, t) {
1554
+ return Object.values(t).reduce((t, n) => {
1555
+ let r = -Infinity, i = Infinity;
1556
+ Object.entries(n).forEach(([t, n]) => {
1557
+ let a = width(e, t) / 2;
1558
+ r = Math.max(n + a, r), i = Math.min(n - a, i);
1559
+ });
1560
+ let a = r - i;
1561
+ return a < t[0] && (t = [a, n]), t;
1562
+ }, [Infinity, null])[1];
1563
+ }
1564
+ function alignCoordinates(e, t) {
1565
+ let n = Object.values(t), i = r.applyWithChunking(Math.min, n), a = r.applyWithChunking(Math.max, n);
1566
+ ["u", "d"].forEach((n) => {
1567
+ ["l", "r"].forEach((o) => {
1568
+ let s = n + o, c = e[s];
1569
+ if (c === t) return;
1570
+ let l = Object.values(c), u = i - r.applyWithChunking(Math.min, l);
1571
+ o !== "l" && (u = a - r.applyWithChunking(Math.max, l)), u && (e[s] = r.mapValues(c, (e) => e + u));
1572
+ });
1573
+ });
1574
+ }
1575
+ function balance(e, t) {
1576
+ return r.mapValues(e.ul, (n, r) => {
1577
+ if (t) return e[t.toLowerCase()][r];
1578
+ {
1579
+ let t = Object.values(e).map((e) => e[r]).sort((e, t) => e - t);
1580
+ return (t[1] + t[2]) / 2;
1581
+ }
1582
+ });
1583
+ }
1584
+ function positionX(e) {
1585
+ let t = r.buildLayerMatrix(e), n = Object.assign(findType1Conflicts(e, t), findType2Conflicts(e, t)), i = {}, a;
1586
+ return ["u", "d"].forEach((o) => {
1587
+ a = o === "u" ? t : Object.values(t).reverse(), ["l", "r"].forEach((t) => {
1588
+ t === "r" && (a = a.map((e) => Object.values(e).reverse()));
1589
+ let s = (o === "u" ? e.predecessors : e.successors).bind(e), c = verticalAlignment(e, a, n, s), l = horizontalCompaction(e, a, c.root, c.align, t === "r");
1590
+ t === "r" && (l = r.mapValues(l, (e) => -e)), i[o + t] = l;
1591
+ });
1592
+ }), alignCoordinates(i, findSmallestWidthAlignment(e, i)), balance(i, e.graph().align);
1593
+ }
1594
+ function sep(e, t, n) {
1595
+ return (r, i, a) => {
1596
+ let o = r.node(i), s = r.node(a), c = 0, l;
1597
+ if (c += o.width / 2, Object.hasOwn(o, "labelpos")) switch (o.labelpos.toLowerCase()) {
1598
+ case "l":
1599
+ l = -o.width / 2;
1600
+ break;
1601
+ case "r":
1602
+ l = o.width / 2;
1603
+ break;
1604
+ }
1605
+ if (l && (c += n ? l : -l), l = 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()) {
1606
+ case "l":
1607
+ l = s.width / 2;
1608
+ break;
1609
+ case "r":
1610
+ l = -s.width / 2;
1611
+ break;
1612
+ }
1613
+ return l && (c += n ? l : -l), l = 0, c;
1614
+ };
1615
+ }
1616
+ function width(e, t) {
1617
+ return e.node(t).width;
1618
+ }
1619
+ })), U = /* @__PURE__ */ e(((e, t) => {
1620
+ var n = S(), r = H().positionX;
1621
+ t.exports = position;
1622
+ function position(e) {
1623
+ e = n.asNonCompoundGraph(e), positionY(e), Object.entries(r(e)).forEach(([t, n]) => e.node(t).x = n);
1624
+ }
1625
+ function positionY(e) {
1626
+ let t = n.buildLayerMatrix(e), r = e.graph().ranksep, i = 0;
1627
+ t.forEach((t) => {
1628
+ let n = t.reduce((t, n) => {
1629
+ let r = e.node(n).height;
1630
+ return t > r ? t : r;
1631
+ }, 0);
1632
+ t.forEach((t) => e.node(t).y = i + n / 2), i += n + r;
1633
+ });
1634
+ }
1635
+ })), W = /* @__PURE__ */ e(((e, t) => {
1636
+ var n = C(), r = w(), i = O(), a = S().normalizeRanks, o = k(), s = S().removeEmptyRanks, c = A(), l = j(), u = M(), d = V(), f = U(), p = S(), m = y().Graph;
1637
+ t.exports = layout;
1638
+ function layout(e, t) {
1639
+ let n = t && t.debugTiming ? p.time : p.notime;
1640
+ n("layout", () => {
1641
+ let r = n(" buildLayoutGraph", () => buildLayoutGraph(e));
1642
+ n(" runLayout", () => runLayout(r, n, t)), n(" updateInputGraph", () => updateInputGraph(e, r));
1643
+ });
1644
+ }
1645
+ function runLayout(e, t, m) {
1646
+ t(" makeSpaceForEdgeLabels", () => makeSpaceForEdgeLabels(e)), t(" removeSelfEdges", () => removeSelfEdges(e)), t(" acyclic", () => n.run(e)), t(" nestingGraph.run", () => c.run(e)), t(" rank", () => i(p.asNonCompoundGraph(e))), t(" injectEdgeLabelProxies", () => injectEdgeLabelProxies(e)), t(" removeEmptyRanks", () => s(e)), t(" nestingGraph.cleanup", () => c.cleanup(e)), t(" normalizeRanks", () => a(e)), t(" assignRankMinMax", () => assignRankMinMax(e)), t(" removeEdgeLabelProxies", () => removeEdgeLabelProxies(e)), t(" normalize.run", () => r.run(e)), t(" parentDummyChains", () => o(e)), t(" addBorderSegments", () => l(e)), t(" order", () => d(e, m)), t(" insertSelfEdges", () => insertSelfEdges(e)), t(" adjustCoordinateSystem", () => u.adjust(e)), t(" position", () => f(e)), t(" positionSelfEdges", () => positionSelfEdges(e)), t(" removeBorderNodes", () => removeBorderNodes(e)), t(" normalize.undo", () => r.undo(e)), t(" fixupEdgeLabelCoords", () => fixupEdgeLabelCoords(e)), t(" undoCoordinateSystem", () => u.undo(e)), t(" translateGraph", () => translateGraph(e)), t(" assignNodeIntersects", () => assignNodeIntersects(e)), t(" reversePoints", () => reversePointsForReversedEdges(e)), t(" acyclic.undo", () => n.undo(e));
1647
+ }
1648
+ function updateInputGraph(e, t) {
1649
+ e.nodes().forEach((n) => {
1650
+ let r = e.node(n), i = t.node(n);
1651
+ r && (r.x = i.x, r.y = i.y, r.rank = i.rank, t.children(n).length && (r.width = i.width, r.height = i.height));
1652
+ }), e.edges().forEach((n) => {
1653
+ let r = e.edge(n), i = t.edge(n);
1654
+ r.points = i.points, Object.hasOwn(i, "x") && (r.x = i.x, r.y = i.y);
1655
+ }), e.graph().width = t.graph().width, e.graph().height = t.graph().height;
1656
+ }
1657
+ var h = [
1658
+ "nodesep",
1659
+ "edgesep",
1660
+ "ranksep",
1661
+ "marginx",
1662
+ "marginy"
1663
+ ], g = {
1664
+ ranksep: 50,
1665
+ edgesep: 20,
1666
+ nodesep: 50,
1667
+ rankdir: "tb"
1668
+ }, _ = [
1669
+ "acyclicer",
1670
+ "ranker",
1671
+ "rankdir",
1672
+ "align"
1673
+ ], v = [
1674
+ "width",
1675
+ "height",
1676
+ "rank"
1677
+ ], b = {
1678
+ width: 0,
1679
+ height: 0
1680
+ }, x = [
1681
+ "minlen",
1682
+ "weight",
1683
+ "width",
1684
+ "height",
1685
+ "labeloffset"
1686
+ ], T = {
1687
+ minlen: 1,
1688
+ weight: 1,
1689
+ width: 0,
1690
+ height: 0,
1691
+ labeloffset: 10,
1692
+ labelpos: "r"
1693
+ }, E = ["labelpos"];
1694
+ function buildLayoutGraph(e) {
1695
+ let t = new m({
1696
+ multigraph: !0,
1697
+ compound: !0
1698
+ }), n = canonicalize(e.graph());
1699
+ return t.setGraph(Object.assign({}, g, selectNumberAttrs(n, h), p.pick(n, _))), e.nodes().forEach((n) => {
1700
+ let r = selectNumberAttrs(canonicalize(e.node(n)), v);
1701
+ Object.keys(b).forEach((e) => {
1702
+ r[e] === void 0 && (r[e] = b[e]);
1703
+ }), t.setNode(n, r), t.setParent(n, e.parent(n));
1704
+ }), e.edges().forEach((n) => {
1705
+ let r = canonicalize(e.edge(n));
1706
+ t.setEdge(n, Object.assign({}, T, selectNumberAttrs(r, x), p.pick(r, E)));
1707
+ }), t;
1708
+ }
1709
+ function makeSpaceForEdgeLabels(e) {
1710
+ let t = e.graph();
1711
+ t.ranksep /= 2, e.edges().forEach((n) => {
1712
+ let r = e.edge(n);
1713
+ r.minlen *= 2, r.labelpos.toLowerCase() !== "c" && (t.rankdir === "TB" || t.rankdir === "BT" ? r.width += r.labeloffset : r.height += r.labeloffset);
1714
+ });
1715
+ }
1716
+ function injectEdgeLabelProxies(e) {
1717
+ e.edges().forEach((t) => {
1718
+ let n = e.edge(t);
1719
+ if (n.width && n.height) {
1720
+ let n = e.node(t.v), r = {
1721
+ rank: (e.node(t.w).rank - n.rank) / 2 + n.rank,
1722
+ e: t
1723
+ };
1724
+ p.addDummyNode(e, "edge-proxy", r, "_ep");
1725
+ }
1726
+ });
1727
+ }
1728
+ function assignRankMinMax(e) {
1729
+ let t = 0;
1730
+ e.nodes().forEach((n) => {
1731
+ let r = e.node(n);
1732
+ r.borderTop && (r.minRank = e.node(r.borderTop).rank, r.maxRank = e.node(r.borderBottom).rank, t = Math.max(t, r.maxRank));
1733
+ }), e.graph().maxRank = t;
1734
+ }
1735
+ function removeEdgeLabelProxies(e) {
1736
+ e.nodes().forEach((t) => {
1737
+ let n = e.node(t);
1738
+ n.dummy === "edge-proxy" && (e.edge(n.e).labelRank = n.rank, e.removeNode(t));
1739
+ });
1740
+ }
1741
+ function translateGraph(e) {
1742
+ let t = Infinity, n = 0, r = Infinity, i = 0, a = e.graph(), o = a.marginx || 0, s = a.marginy || 0;
1743
+ function getExtremes(e) {
1744
+ let a = e.x, o = e.y, s = e.width, c = e.height;
1745
+ 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);
1746
+ }
1747
+ e.nodes().forEach((t) => getExtremes(e.node(t))), e.edges().forEach((t) => {
1748
+ let n = e.edge(t);
1749
+ Object.hasOwn(n, "x") && getExtremes(n);
1750
+ }), t -= o, r -= s, e.nodes().forEach((n) => {
1751
+ let i = e.node(n);
1752
+ i.x -= t, i.y -= r;
1753
+ }), e.edges().forEach((n) => {
1754
+ let i = e.edge(n);
1755
+ i.points.forEach((e) => {
1756
+ e.x -= t, e.y -= r;
1757
+ }), Object.hasOwn(i, "x") && (i.x -= t), Object.hasOwn(i, "y") && (i.y -= r);
1758
+ }), a.width = n - t + o, a.height = i - r + s;
1759
+ }
1760
+ function assignNodeIntersects(e) {
1761
+ e.edges().forEach((t) => {
1762
+ let n = e.edge(t), r = e.node(t.v), i = e.node(t.w), a, o;
1763
+ n.points ? (a = n.points[0], o = n.points[n.points.length - 1]) : (n.points = [], a = i, o = r), n.points.unshift(p.intersectRect(r, a)), n.points.push(p.intersectRect(i, o));
1764
+ });
1765
+ }
1766
+ function fixupEdgeLabelCoords(e) {
1767
+ e.edges().forEach((t) => {
1768
+ let n = e.edge(t);
1769
+ if (Object.hasOwn(n, "x")) switch ((n.labelpos === "l" || n.labelpos === "r") && (n.width -= n.labeloffset), n.labelpos) {
1770
+ case "l":
1771
+ n.x -= n.width / 2 + n.labeloffset;
1772
+ break;
1773
+ case "r":
1774
+ n.x += n.width / 2 + n.labeloffset;
1775
+ break;
1776
+ }
1777
+ });
1778
+ }
1779
+ function reversePointsForReversedEdges(e) {
1780
+ e.edges().forEach((t) => {
1781
+ let n = e.edge(t);
1782
+ n.reversed && n.points.reverse();
1783
+ });
1784
+ }
1785
+ function removeBorderNodes(e) {
1786
+ e.nodes().forEach((t) => {
1787
+ if (e.children(t).length) {
1788
+ 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]);
1789
+ 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;
1790
+ }
1791
+ }), e.nodes().forEach((t) => {
1792
+ e.node(t).dummy === "border" && e.removeNode(t);
1793
+ });
1794
+ }
1795
+ function removeSelfEdges(e) {
1796
+ e.edges().forEach((t) => {
1797
+ if (t.v === t.w) {
1798
+ var n = e.node(t.v);
1799
+ n.selfEdges ||= [], n.selfEdges.push({
1800
+ e: t,
1801
+ label: e.edge(t)
1802
+ }), e.removeEdge(t);
1803
+ }
1804
+ });
1805
+ }
1806
+ function insertSelfEdges(e) {
1807
+ p.buildLayerMatrix(e).forEach((t) => {
1808
+ var n = 0;
1809
+ t.forEach((t, r) => {
1810
+ var i = e.node(t);
1811
+ i.order = r + n, (i.selfEdges || []).forEach((t) => {
1812
+ p.addDummyNode(e, "selfedge", {
1813
+ width: t.label.width,
1814
+ height: t.label.height,
1815
+ rank: i.rank,
1816
+ order: r + ++n,
1817
+ e: t.e,
1818
+ label: t.label
1819
+ }, "_se");
1820
+ }), delete i.selfEdges;
1821
+ });
1822
+ });
1823
+ }
1824
+ function positionSelfEdges(e) {
1825
+ e.nodes().forEach((t) => {
1826
+ var n = e.node(t);
1827
+ if (n.dummy === "selfedge") {
1828
+ var r = e.node(n.e.v), i = r.x + r.width / 2, a = r.y, o = n.x - i, s = r.height / 2;
1829
+ e.setEdge(n.e, n.label), e.removeNode(t), n.label.points = [
1830
+ {
1831
+ x: i + 2 * o / 3,
1832
+ y: a - s
1833
+ },
1834
+ {
1835
+ x: i + 5 * o / 6,
1836
+ y: a - s
1837
+ },
1838
+ {
1839
+ x: i + o,
1840
+ y: a
1841
+ },
1842
+ {
1843
+ x: i + 5 * o / 6,
1844
+ y: a + s
1845
+ },
1846
+ {
1847
+ x: i + 2 * o / 3,
1848
+ y: a + s
1849
+ }
1850
+ ], n.label.x = n.x, n.label.y = n.y;
1851
+ }
1852
+ });
1853
+ }
1854
+ function selectNumberAttrs(e, t) {
1855
+ return p.mapValues(p.pick(e, t), Number);
1856
+ }
1857
+ function canonicalize(e) {
1858
+ var t = {};
1859
+ return e && Object.entries(e).forEach(([e, n]) => {
1860
+ typeof e == "string" && (e = e.toLowerCase()), t[e] = n;
1861
+ }), t;
1862
+ }
1863
+ })), G = /* @__PURE__ */ e(((e, t) => {
1864
+ var n = S(), r = y().Graph;
1865
+ t.exports = { debugOrdering };
1866
+ /* istanbul ignore next */
1867
+ function debugOrdering(e) {
1868
+ let t = n.buildLayerMatrix(e), i = new r({
1869
+ compound: !0,
1870
+ multigraph: !0
1871
+ }).setGraph({});
1872
+ return e.nodes().forEach((t) => {
1873
+ i.setNode(t, { label: t }), i.setParent(t, "layer" + e.node(t).rank);
1874
+ }), e.edges().forEach((e) => i.setEdge(e.v, e.w, {}, e.name)), t.forEach((e, t) => {
1875
+ let n = "layer" + t;
1876
+ i.setNode(n, { rank: "same" }), e.reduce((e, t) => (i.setEdge(e, t, { style: "invis" }), t));
1877
+ }), i;
1878
+ }
1879
+ })), K = /* @__PURE__ */ e(((e, t) => {
1880
+ t.exports = "1.1.8";
1881
+ })), q = /* @__PURE__ */ e(((e, t) => {
1882
+ t.exports = {
1883
+ graphlib: y(),
1884
+ layout: W(),
1885
+ debug: G(),
1886
+ util: {
1887
+ time: S().time,
1888
+ notime: S().notime
1889
+ },
1890
+ version: K()
1891
+ };
1892
+ }));
1893
+ //#endregion
1894
+ export { q as t };