@graphty/graphty-element 2.3.1 → 2.4.1

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 (86) hide show
  1. package/AGENTS.md +4 -3
  2. package/dist/ai.js +3 -3
  3. package/dist/catalog.js +28 -27
  4. package/dist/chunks/{AiManager-BBmGJbH4.js → AiManager-DNJCoeTO.js} +5 -5
  5. package/dist/chunks/{DataSource-OeN3NeyD.js → DataSource-xL3Yn0Pa.js} +72 -61
  6. package/dist/chunks/{GraphSession-Bef1AYw9.js → GraphSession-PFm2tJ_j.js} +2942 -2822
  7. package/dist/chunks/{GraphtyLogger-5KEttFUo.js → GraphtyLogger-kbOx2zq3.js} +170 -222
  8. package/dist/chunks/{NodeStyle-DKj7HjMJ.js → NodeStyle-CtmA7dXi.js} +16 -14
  9. package/dist/chunks/{VoiceInputAdapter-Dr9Gcmds.js → VoiceInputAdapter-CDNKQgUK.js} +1 -1
  10. package/dist/chunks/{XRPivotCameraController-BbfgZWpS.js → XRPivotCameraController-JdlLBcD7.js} +146 -134
  11. package/dist/chunks/{algorithms-CpX56sUB.js → algorithms-B87OPYw4.js} +780 -635
  12. package/dist/chunks/{capability-check-Blhb2aBB.js → capability-check-B2oYf_30.js} +1 -1
  13. package/dist/chunks/{detect-Cqwshr9a.js → detect-tuYQLJbT.js} +2 -2
  14. package/dist/chunks/{format-detection-BXGO1lSn.js → format-detection-BG6CMwPO.js} +1 -1
  15. package/dist/chunks/{index-C0mIoumR.js → index-6GDfNfwJ.js} +3185 -2731
  16. package/dist/chunks/{optionsFromZod-17lkrAJs.js → optionsFromZod-DHLLiX_8.js} +275 -267
  17. package/dist/chunks/{paletteRegistry-x7WOEKZY.js → paletteRegistry-jg9uS7wo.js} +72 -70
  18. package/dist/chunks/pluginRegistry-MaTIDh6l.js +238 -0
  19. package/dist/chunks/{registry-CSba5QGJ.js → registry-DQeq4B2K.js} +8 -8
  20. package/dist/chunks/{scales-BRwl51k8.js → scales-BXHmwPXC.js} +572 -399
  21. package/dist/chunks/{types-B7bX5c0K.js → types-C_c53VgR.js} +31 -26
  22. package/dist/commands.d.ts +4 -0
  23. package/dist/custom-elements.json +1 -1
  24. package/dist/extend.js +8 -8
  25. package/dist/graphty-catalog.json +245 -12
  26. package/dist/graphty.bundle.js +37843 -36551
  27. package/dist/graphty.js +69 -65
  28. package/dist/index.d.ts +3 -0
  29. package/dist/logging.js +2 -2
  30. package/dist/schema.d.ts +1 -1
  31. package/dist/schema.js +42 -40
  32. package/dist/session.js +6 -6
  33. package/dist/src/Edge.d.ts +4 -4
  34. package/dist/src/Graph.d.ts +79 -7
  35. package/dist/src/acceleration/AccelerationController.d.ts +20 -3
  36. package/dist/src/acceleration/registry.d.ts +3 -0
  37. package/dist/src/acceleration/types.d.ts +85 -0
  38. package/dist/src/algorithms/Algorithm.d.ts +13 -0
  39. package/dist/src/algorithms/KCoreAlgorithm.d.ts +26 -0
  40. package/dist/src/algorithms/LinkPredictionAlgorithm.d.ts +41 -0
  41. package/dist/src/cameras/InputUtils.d.ts +67 -0
  42. package/dist/src/cameras/XRInputHandler.d.ts +0 -8
  43. package/dist/src/catalog/algorithms.d.ts +5 -5
  44. package/dist/src/catalog/index.d.ts +2 -2
  45. package/dist/src/catalog/layouts.d.ts +7 -6
  46. package/dist/src/catalog/pluginRegistry.d.ts +62 -0
  47. package/dist/src/catalog/registry.d.ts +7 -0
  48. package/dist/src/catalog/types.d.ts +77 -6
  49. package/dist/src/config/EdgeStyle.d.ts +35 -0
  50. package/dist/src/config/index.d.ts +1 -1
  51. package/dist/src/data/DataSource.d.ts +1 -1
  52. package/dist/src/data/GEXFDataSource.d.ts +23 -0
  53. package/dist/src/errors/codes.d.ts +16 -1
  54. package/dist/src/events.d.ts +30 -0
  55. package/dist/src/graphty-element.d.ts +66 -26
  56. package/dist/src/layout/GridLayoutEngine.d.ts +37 -0
  57. package/dist/src/layout/LayoutEngine.d.ts +7 -7
  58. package/dist/src/layout/NGraphLayoutEngine.d.ts +2 -0
  59. package/dist/src/layout/RadialLayoutEngine.d.ts +37 -0
  60. package/dist/src/layout/SimulationLayoutEngine.d.ts +12 -0
  61. package/dist/src/managers/DataManager.d.ts +69 -2
  62. package/dist/src/managers/EventManager.d.ts +10 -4
  63. package/dist/src/managers/GraphContext.d.ts +2 -1
  64. package/dist/src/managers/LayoutManager.d.ts +30 -3
  65. package/dist/src/meshes/CustomLineRenderer.d.ts +11 -9
  66. package/dist/src/meshes/EdgeMesh.d.ts +18 -9
  67. package/dist/src/meshes/FilledArrowRenderer.d.ts +61 -23
  68. package/dist/src/meshes/MeshCache.d.ts +18 -0
  69. package/dist/src/meshes/NodeEffects.d.ts +16 -11
  70. package/dist/src/meshes/NodeMesh.d.ts +2 -2
  71. package/dist/src/meshes/PatternedLineRenderer.d.ts +5 -37
  72. package/dist/src/meshes/PerSceneMaterials.d.ts +49 -0
  73. package/dist/src/meshes/RichTextParser.d.ts +26 -0
  74. package/dist/src/meshes/RichTextRenderer.d.ts +0 -1
  75. package/dist/src/session/cost/estimate.d.ts +1 -1
  76. package/dist/src/session/layout.d.ts +3 -3
  77. package/dist/src/session/runs/RunsApi.d.ts +1 -1
  78. package/dist/src/session/styles/StylesApi.d.ts +6 -0
  79. package/dist/src/session/styles/intern.d.ts +26 -5
  80. package/dist/src/session/styles/repaint.d.ts +2 -1
  81. package/dist/src/session/types.d.ts +6 -6
  82. package/dist/src/xr/XRSessionManager.d.ts +1 -1
  83. package/dist/webgpu.d.ts +8 -0
  84. package/dist/webgpu.js +2 -2
  85. package/package.json +6 -6
  86. package/dist/chunks/GraphtyError-BwcnblTH.js +0 -132
@@ -1,7 +1,7 @@
1
- import { q as he, b as Ie } from "./GraphtyLogger-5KEttFUo.js";
2
- import { K as Me, f as Te } from "./types-B7bX5c0K.js";
3
- import { G as y } from "./GraphtyError-BwcnblTH.js";
4
- import { Graph as _e, accelerated as X } from "@graphty/algorithms";
1
+ import { c as he, G as y, S as Ie } from "./pluginRegistry-MaTIDh6l.js";
2
+ import { K as Te, f as Me } from "./types-C_c53VgR.js";
3
+ import { b as _e } from "./GraphtyLogger-kbOx2zq3.js";
4
+ import { Graph as ze, accelerated as X } from "@graphty/algorithms";
5
5
  import { INVALID_INDEX as L } from "@graphty/graph-format";
6
6
  import { z as me } from "zod/v4";
7
7
  const _ = he({
@@ -9,9 +9,9 @@ const _ = he({
9
9
  idOf: (e) => e.descriptor.id,
10
10
  descriptorOf: (e) => e.descriptor,
11
11
  implementationOf: (e) => e.compute,
12
- builtInIds: () => Me
12
+ builtInIds: () => Te
13
13
  });
14
- function yn(e, t) {
14
+ function bn(e, t) {
15
15
  const n = e.descriptor;
16
16
  if (n === void 0 || typeof n != "object")
17
17
  throw new y({
@@ -43,16 +43,16 @@ function yn(e, t) {
43
43
  });
44
44
  _.register(e, t);
45
45
  }
46
- function bn() {
46
+ function wn() {
47
47
  return _.descriptors();
48
48
  }
49
- function wn(e) {
49
+ function vn(e) {
50
50
  return _.byId(e);
51
51
  }
52
- function vn() {
52
+ function On() {
53
53
  _.clearForTesting();
54
54
  }
55
- const ze = ["forceAtlas2", "fruchtermanReingold", "springElectrical", "release"], xe = [
55
+ const Ce = ["forceAtlas2", "fruchtermanReingold", "springElectrical", "release"], xe = [
56
56
  "pageRank",
57
57
  "sssp",
58
58
  "breadthFirstSearch",
@@ -60,17 +60,17 @@ const ze = ["forceAtlas2", "fruchtermanReingold", "springElectrical", "release"]
60
60
  "weaklyConnectedComponents",
61
61
  "minimumSpanningTree"
62
62
  ];
63
- function On(e) {
63
+ function kn(e) {
64
64
  const t = {
65
65
  kind: e.backend
66
66
  };
67
- for (const n of ze) {
67
+ for (const n of Ce) {
68
68
  const r = e[n];
69
69
  typeof r == "function" && (t[n] = r.bind(e));
70
70
  }
71
71
  return t;
72
72
  }
73
- function Ce(e) {
73
+ function je(e) {
74
74
  const t = {
75
75
  kind: e.backend
76
76
  };
@@ -80,18 +80,23 @@ function Ce(e) {
80
80
  }
81
81
  return t;
82
82
  }
83
- const je = ["auto", "off", "required"], kn = "auto";
84
- function Nn(e) {
85
- return typeof e == "string" && je.includes(e);
83
+ const Pe = ["auto", "off", "required"], Nn = "auto";
84
+ function Sn(e) {
85
+ return typeof e == "string" && Pe.includes(e);
86
86
  }
87
- const Pe = "f64", Sn = "f32", An = "acceleration.minNodes", $n = 0, z = he({
87
+ const Le = "f64", An = "f32", $n = "acceleration.minNodes", Rn = 0, En = "RTX 4070 SUPER, headless Chromium, 2026-09-25", Fn = Object.freeze({
88
+ breadthFirstSearch: 3e5,
89
+ sssp: 3e5,
90
+ pageRank: 5e3,
91
+ connectedComponents: 5e4
92
+ }), z = he({
88
93
  kind: "algorithm",
89
94
  idOf: (e) => e.descriptor.key,
90
95
  descriptorOf: (e) => e.descriptor,
91
96
  implementationOf: (e) => e.descriptor,
92
- builtInIds: () => Te
97
+ builtInIds: () => Me
93
98
  });
94
- function Le(e, t) {
99
+ function De(e, t) {
95
100
  if (e.descriptor.key !== e.type)
96
101
  throw new y({
97
102
  code: "E_BAD_COMMAND",
@@ -107,13 +112,13 @@ function Le(e, t) {
107
112
  });
108
113
  z.register(e, t);
109
114
  }
110
- function Rn() {
115
+ function In() {
111
116
  return z.descriptors();
112
117
  }
113
- function Fn(e) {
118
+ function Tn(e) {
114
119
  return z.byId(e);
115
120
  }
116
- function En() {
121
+ function Mn() {
117
122
  z.clearForTesting();
118
123
  }
119
124
  class b extends Error {
@@ -126,7 +131,7 @@ class b extends Error {
126
131
  super(`Option '${t}': ${n}`), this.optionKey = t, this.name = "OptionValidationError";
127
132
  }
128
133
  }
129
- function De(e, t, n) {
134
+ function Ge(e, t, n) {
130
135
  if (t == null) {
131
136
  if (n.required)
132
137
  throw new b(e, "is required but was not provided");
@@ -148,7 +153,7 @@ function De(e, t, n) {
148
153
  throw new b(e, `must be a string, got ${typeof t}`);
149
154
  break;
150
155
  case "select":
151
- Ge(e, t, n);
156
+ Ue(e, t, n);
152
157
  break;
153
158
  case "nodeId":
154
159
  if (typeof t != "string" && typeof t != "number")
@@ -172,7 +177,7 @@ function Q(e, t, n, r) {
172
177
  if (n.max !== void 0 && t > n.max)
173
178
  throw new b(e, `must be <= ${n.max}, got ${t}`);
174
179
  }
175
- function Ge(e, t, n) {
180
+ function Ue(e, t, n) {
176
181
  if (!n.options || n.options.length === 0)
177
182
  throw new b(e, "is a select type but has no options defined");
178
183
  if (!n.options.map((i) => i.value).includes(t)) {
@@ -184,23 +189,23 @@ function He(e, t) {
184
189
  const n = {};
185
190
  for (const [r, i] of Object.entries(e)) {
186
191
  const o = t?.[r] ?? i.default;
187
- De(r, o, i), n[r] = o;
192
+ Ge(r, o, i), n[r] = o;
188
193
  }
189
194
  return n;
190
195
  }
191
- function In(e) {
196
+ function _n(e) {
192
197
  return e;
193
198
  }
194
- function Ue(e, t) {
199
+ function Be(e, t) {
195
200
  const n = e.getSnapshot(), r = t === "directed" ? n : e.undirected(n).snapshot, i = r.flags.multigraph ? r.simplified({ weights: "sum" }).snapshot : r;
196
- return Be(i, t);
201
+ return Ve(i, t);
197
202
  }
198
- function Mn(e) {
203
+ function zn(e) {
199
204
  const t = e.getSnapshot();
200
205
  return t.flags.multigraph ? t.edgeCount - t.simplified({ weights: "sum" }).snapshot.edgeCount : 0;
201
206
  }
202
- function Be(e, t) {
203
- const n = new _e({
207
+ function Ve(e, t) {
208
+ const n = new ze({
204
209
  directed: t !== "undirected"
205
210
  }), { ids: r } = e;
206
211
  for (let a = 0; a < e.nodeCount; a++)
@@ -212,8 +217,8 @@ function Be(e, t) {
212
217
  }
213
218
  return n;
214
219
  }
215
- const F = /* @__PURE__ */ new Map();
216
- function Ve(e, t) {
220
+ const E = new Ie("algorithm");
221
+ function Je(e, t) {
217
222
  if (t === null)
218
223
  return e;
219
224
  if (e === null)
@@ -255,7 +260,7 @@ const Z = class Z {
255
260
  * @returns a freshly built Graph for the algorithm package
256
261
  */
257
262
  algorithmGraph(t) {
258
- return Ue(this.graph.getDataManager(), t);
263
+ return Be(this.graph.getDataManager(), t);
259
264
  }
260
265
  /**
261
266
  * The route an algorithm with an accelerated implementation takes.
@@ -287,13 +292,13 @@ const Z = class Z {
287
292
  const r = this.graph.getDataManager(), i = r.getSnapshot(), s = n === "undirected" ? r.undirected(i) : null, o = s === null ? i : s.snapshot, a = o.flags.multigraph ? o.simplified({ weights: "sum" }) : null, u = a === null ? o : a.snapshot, c = this.graph.acceleration, h = { capability: t, nodeCount: u.nodeCount };
288
293
  return {
289
294
  snapshot: u,
290
- edgeRemap: Ve(s?.edgeRemap ?? null, a?.edgeRemap ?? null),
295
+ edgeRemap: Je(s?.edgeRemap ?? null, a?.edgeRemap ?? null),
291
296
  run: async (p) => {
292
297
  const l = await c.run(
293
298
  h,
294
- (d) => p(X(Ce(d)), u)
299
+ (d) => p(X(je(d)), u)
295
300
  );
296
- return l.accelerated ? { value: l.value, precision: l.precision } : { value: await p(X(null), u), precision: Pe };
301
+ return l.accelerated ? { value: l.value, precision: l.precision } : { value: await p(X(null), u), precision: Le };
297
302
  }
298
303
  };
299
304
  }
@@ -381,14 +386,15 @@ const Z = class Z {
381
386
  * @returns The registered algorithm class
382
387
  */
383
388
  static register(t) {
384
- const n = t, r = String(n.type), i = String(n.namespace), { descriptor: s, cost: o, version: a } = n;
385
- return s !== void 0 && Le({
389
+ const n = t, r = String(n.type), i = String(n.namespace), { descriptor: s, cost: o, costUnits: a, version: u } = n;
390
+ return s !== void 0 && De({
386
391
  descriptor: s,
387
392
  namespace: i,
388
393
  type: r,
389
394
  ...o === void 0 ? {} : { cost: o },
390
- ...a === void 0 ? {} : { version: a }
391
- }), F.set(`${i}:${r}`, t), t;
395
+ ...a === void 0 ? {} : { costUnits: a },
396
+ ...u === void 0 ? {} : { version: u }
397
+ }), E.set(`${i}:${r}`, t), t;
392
398
  }
393
399
  /**
394
400
  * Gets an algorithm instance from the registry
@@ -399,7 +405,7 @@ const Z = class Z {
399
405
  * @returns A new instance of the algorithm, or null if not found
400
406
  */
401
407
  static get(t, n, r, i) {
402
- const s = F.get(`${n}:${r}`);
408
+ const s = E.get(`${n}:${r}`);
403
409
  return s ? new s(t, i) : null;
404
410
  }
405
411
  /**
@@ -409,7 +415,7 @@ const Z = class Z {
409
415
  * @returns The algorithm class, or null if not found
410
416
  */
411
417
  static getClass(t, n) {
412
- return F.get(`${t}:${n}`) ?? null;
418
+ return E.get(`${t}:${n}`) ?? null;
413
419
  }
414
420
  /**
415
421
  * Get the options schema for this algorithm
@@ -448,7 +454,7 @@ const Z = class Z {
448
454
  */
449
455
  static getRegisteredAlgorithms(t) {
450
456
  const n = [];
451
- for (const r of F.keys())
457
+ for (const r of E.keys())
452
458
  (!t || r.startsWith(`${t}:`)) && n.push(r);
453
459
  return n.sort();
454
460
  }
@@ -474,11 +480,11 @@ const ee = 3, qe = 0.1;
474
480
  function m(e, t) {
475
481
  return Number.isInteger(e) ? e.toLocaleString(t) : Number(e.toFixed(ee)).toLocaleString(t, { maximumFractionDigits: ee });
476
482
  }
477
- function Je(e, t, n) {
483
+ function Ye(e, t, n) {
478
484
  const r = e.fields.find((i) => i.name === t);
479
485
  return r === void 0 ? t : n === "technical" ? r.technicalName : r.plainName.toLowerCase();
480
486
  }
481
- function x(e, t, n) {
487
+ function C(e, t, n) {
482
488
  const r = e.fields.find((i) => i.name === t)?.unit;
483
489
  return r === void 0 ? "" : n === 1 && r.endsWith("s") ? ` ${r.slice(0, -1)}` : ` ${r}`;
484
490
  }
@@ -489,19 +495,19 @@ function R(e, t) {
489
495
  function We(e) {
490
496
  return e[0];
491
497
  }
492
- function Ye(e, t, n) {
493
- const { locale: r, audience: i } = n, s = Je(e, "value", i), o = We(t.top);
498
+ function Ke(e, t, n) {
499
+ const { locale: r, audience: i } = n, s = Ye(e, "value", i), o = We(t.top);
494
500
  if (o === void 0 || t.median === null)
495
501
  return `Nothing was measured, so there is no ${s} to report.`;
496
502
  const a = [
497
- `${o.label} has the highest ${s}, at ${m(o.value, r)}${x(e, "value", o.value)}.`,
498
- `The typical element sits at ${m(t.median, r)}${x(e, "value", t.median)}.`
503
+ `${o.label} has the highest ${s}, at ${m(o.value, r)}${C(e, "value", o.value)}.`,
504
+ `The typical element sits at ${m(t.median, r)}${C(e, "value", t.median)}.`
499
505
  ];
500
506
  return t.measured > 0 && t.tiedAtMin / t.measured >= qe && t.min !== null && a.push(
501
- `${m(t.tiedAtMin, r)} of ${m(t.measured, r)} sit at the lowest value, ${m(t.min, r)}${x(e, "value", t.min)}.`
507
+ `${m(t.tiedAtMin, r)} of ${m(t.measured, r)} sit at the lowest value, ${m(t.min, r)}${C(e, "value", t.min)}.`
502
508
  ), t.count > t.measured && a.push(`${m(t.count - t.measured, r)} were not measured.`), a.join(" ");
503
509
  }
504
- function Ke(e, t, n) {
510
+ function Ze(e, t, n) {
505
511
  const { locale: r } = n, i = t.groups ?? [];
506
512
  if (i.length === 0)
507
513
  return "Nothing was grouped, so there are no groups to report.";
@@ -511,62 +517,62 @@ function Ke(e, t, n) {
511
517
  ], a = R(e, "modularity");
512
518
  return a !== void 0 && o.push(`Modularity is ${m(a, r)}.`), o.join(" ");
513
519
  }
514
- function Ze(e, t) {
520
+ function Xe(e, t) {
515
521
  const { locale: n } = t, r = R(e, "hops"), i = R(e, "cost");
516
522
  if (r === void 0 && i === void 0)
517
523
  return "No route was found.";
518
524
  const s = [];
519
525
  return r !== void 0 && s.push(`The route runs ${m(r, n)} ${r === 1 ? "hop" : "hops"}.`), i !== void 0 && s.push(`Its total cost is ${m(i, n)}.`), s.join(" ");
520
526
  }
521
- function Xe(e, t, n) {
527
+ function Qe(e, t, n) {
522
528
  const { locale: r } = n, i = R(e, "count") ?? t.measured, s = e.shape === "edge-set" ? "edge" : "node";
523
529
  return i === 0 ? `No ${s}s were selected.` : `${m(i, r)} ${i === 1 ? s : `${s}s`} were selected.`;
524
530
  }
525
- function Qe(e, t) {
531
+ function et(e, t) {
526
532
  const { pairs: n } = e.graph, r = Array.isArray(n) ? n.length : 0;
527
533
  return r === 0 ? "No pairs were found." : `${m(r, t.locale)} ${r === 1 ? "pair was" : "pairs were"} found.`;
528
534
  }
529
- function et(e, t) {
535
+ function tt(e, t) {
530
536
  const n = R(e, "steps");
531
537
  return n === void 0 || n === 0 ? "The series is empty." : `The series covers ${m(n, t.locale)} ${n === 1 ? "step" : "steps"}.`;
532
538
  }
533
539
  function te(e, t) {
534
540
  return e.measured === 0 ? "The run produced no values." : `The run covered ${m(e.measured, t.locale)} of ${m(e.count, t.locale)}.`;
535
541
  }
536
- function tt(e, t) {
542
+ function nt(e, t) {
537
543
  const n = e.summary(), { shape: r } = e;
538
544
  switch (r) {
539
545
  case "node-metric":
540
546
  case "edge-metric":
541
- return Ye(e, n, t);
547
+ return Ke(e, n, t);
542
548
  case "community":
543
549
  case "layered-grouping":
544
550
  case "category-table":
545
- return Ke(e, n, t);
551
+ return Ze(e, n, t);
546
552
  case "path":
547
- return Ze(e, t);
553
+ return Xe(e, t);
548
554
  case "node-set":
549
555
  case "edge-set":
550
- return Xe(e, n, t);
556
+ return Qe(e, n, t);
551
557
  case "pair-list":
552
- return Qe(e, t);
553
- case "temporal":
554
558
  return et(e, t);
559
+ case "temporal":
560
+ return tt(e, t);
555
561
  case "fact":
556
562
  return te(n, t);
557
563
  default:
558
564
  return te(n, t);
559
565
  }
560
566
  }
561
- function Tn(e, t) {
567
+ function Cn(e, t) {
562
568
  const n = t === "node", r = n ? e.nodeValue : e.edgeValue, i = n ? e.nodeHas : e.edgeHas, s = n ? e.nodeIdOf : e.edgeIdOf;
563
569
  return {
564
570
  value: r,
565
- has: i ?? ((o, a) => nt(r(o, a))),
571
+ has: i ?? ((o, a) => rt(r(o, a))),
566
572
  idOf: s ?? null
567
573
  };
568
574
  }
569
- function nt(e) {
575
+ function rt(e) {
570
576
  return e != null;
571
577
  }
572
578
  function I(e) {
@@ -594,7 +600,7 @@ function f(e, t, n, r = {}) {
594
600
  details: { ...r, position: n, where: t }
595
601
  });
596
602
  }
597
- const rt = Object.freeze({
603
+ const it = Object.freeze({
598
604
  "[": "index, slice, wildcard and filter expressions",
599
605
  "]": "index, slice, wildcard and filter expressions",
600
606
  "{": "multi-select hashes",
@@ -603,14 +609,14 @@ const rt = Object.freeze({
603
609
  "*": "wildcards",
604
610
  "@": "the current-node reference",
605
611
  ":": "slices"
606
- }), it = ["&&", "||", "==", "!=", "<=", ">=", "!", "<", ">", ".", "(", ")"];
612
+ }), st = ["&&", "||", "==", "!=", "<=", ">=", "!", "<", ">", ".", "(", ")"];
607
613
  function fe(e) {
608
614
  return /[A-Za-z_]/.test(e);
609
615
  }
610
616
  function ge(e) {
611
617
  return /[A-Za-z0-9_]/.test(e);
612
618
  }
613
- function C(e, t, n) {
619
+ function x(e, t, n) {
614
620
  for (let r = t + 1; r < e.length; r++) {
615
621
  if (e[r] === "\\") {
616
622
  r++;
@@ -621,7 +627,7 @@ function C(e, t, n) {
621
627
  }
622
628
  throw f(`A ${n} is opened and never closed`, e, t, { delimiter: n });
623
629
  }
624
- function st(e) {
630
+ function ot(e) {
625
631
  let t = "";
626
632
  for (let n = 0; n < e.length; n++) {
627
633
  if (e[n] === "\\" && (e[n + 1] === "'" || e[n + 1] === "\\")) {
@@ -632,7 +638,7 @@ function st(e) {
632
638
  }
633
639
  return t;
634
640
  }
635
- function ot(e, t, n) {
641
+ function at(e, t, n) {
636
642
  const r = n.replace(/\\`/g, "`");
637
643
  try {
638
644
  return JSON.parse(r);
@@ -645,7 +651,7 @@ function ot(e, t, n) {
645
651
  );
646
652
  }
647
653
  }
648
- function at(e, t, n) {
654
+ function ct(e, t, n) {
649
655
  try {
650
656
  const r = JSON.parse(n);
651
657
  if (typeof r == "string")
@@ -659,7 +665,7 @@ function at(e, t, n) {
659
665
  { name: n }
660
666
  );
661
667
  }
662
- function ct(e) {
668
+ function ut(e) {
663
669
  const t = [];
664
670
  let n = 0;
665
671
  for (; n < e.length; ) {
@@ -668,7 +674,7 @@ function ct(e) {
668
674
  n++;
669
675
  continue;
670
676
  }
671
- const i = rt[r];
677
+ const i = it[r];
672
678
  if (i !== void 0)
673
679
  throw f(`A selector does not support ${i}`, e, n, { construct: i });
674
680
  if (r === "|" && e.charAt(n + 1) !== "|")
@@ -677,24 +683,24 @@ function ct(e) {
677
683
  throw f("A selector does not support expression references", e, n, {
678
684
  construct: "expression references"
679
685
  });
680
- const s = it.find((o) => e.startsWith(o, n));
686
+ const s = st.find((o) => e.startsWith(o, n));
681
687
  if (s !== void 0) {
682
688
  t.push({ kind: "operator", text: s, at: n }), n += s.length;
683
689
  continue;
684
690
  }
685
691
  if (r === "`") {
686
- const o = C(e, n, "`");
687
- t.push({ kind: "literal", text: "", value: ot(e, n, e.slice(n + 1, o)), at: n }), n = o + 1;
692
+ const o = x(e, n, "`");
693
+ t.push({ kind: "literal", text: "", value: at(e, n, e.slice(n + 1, o)), at: n }), n = o + 1;
688
694
  continue;
689
695
  }
690
696
  if (r === "'") {
691
- const o = C(e, n, "'");
692
- t.push({ kind: "literal", text: "", value: st(e.slice(n + 1, o)), at: n }), n = o + 1;
697
+ const o = x(e, n, "'");
698
+ t.push({ kind: "literal", text: "", value: ot(e.slice(n + 1, o)), at: n }), n = o + 1;
693
699
  continue;
694
700
  }
695
701
  if (r === '"') {
696
- const o = C(e, n, '"');
697
- t.push({ kind: "identifier", text: at(e, n, e.slice(n, o + 1)), at: n }), n = o + 1;
702
+ const o = x(e, n, '"');
703
+ t.push({ kind: "identifier", text: ct(e, n, e.slice(n, o + 1)), at: n }), n = o + 1;
698
704
  continue;
699
705
  }
700
706
  if (fe(r)) {
@@ -715,7 +721,7 @@ function ct(e) {
715
721
  }
716
722
  return t.push({ kind: "end", text: "", at: e.length }), t;
717
723
  }
718
- const ut = Object.freeze({
724
+ const lt = Object.freeze({
719
725
  "!=": "!=",
720
726
  "<": "<",
721
727
  "<=": "<=",
@@ -730,7 +736,7 @@ function S(e, t) {
730
736
  const n = N(e);
731
737
  return n.kind === "operator" && n.text === t;
732
738
  }
733
- function lt(e) {
739
+ function dt(e) {
734
740
  const t = N(e), n = [];
735
741
  for (; ; ) {
736
742
  const r = N(e);
@@ -755,12 +761,12 @@ function lt(e) {
755
761
  e.index++;
756
762
  }
757
763
  }
758
- function dt(e) {
764
+ function pt(e) {
759
765
  const t = N(e);
760
766
  if (t.kind === "literal")
761
767
  return e.index++, { kind: "literal", value: t.value };
762
768
  if (t.kind === "identifier")
763
- return lt(e);
769
+ return dt(e);
764
770
  if (S(e, "(")) {
765
771
  e.index++;
766
772
  const n = ye(e);
@@ -774,12 +780,12 @@ function dt(e) {
774
780
  t.at
775
781
  );
776
782
  }
777
- function H(e) {
783
+ function U(e) {
778
784
  if (!S(e, "!"))
779
- return dt(e);
785
+ return pt(e);
780
786
  const t = N(e);
781
787
  e.index++;
782
- const n = H(e);
788
+ const n = U(e);
783
789
  if (n.kind === "path" && n.path.includes("."))
784
790
  throw f(
785
791
  `In JMESPath \`!\` binds tighter than \`.\`, so !${n.path} means (!${n.path.split(".")[0]})${n.path.slice(n.path.indexOf("."))} rather than the opposite of ${n.path}. Write !(${n.path}) for that`,
@@ -790,8 +796,8 @@ function H(e) {
790
796
  return { kind: "not", operand: n };
791
797
  }
792
798
  function re(e) {
793
- const t = H(e), n = N(e), r = n.kind === "operator" ? ut[n.text] : void 0;
794
- return r === void 0 ? t : (e.index++, { kind: "compare", operator: r, left: t, right: H(e) });
799
+ const t = U(e), n = N(e), r = n.kind === "operator" ? lt[n.text] : void 0;
800
+ return r === void 0 ? t : (e.index++, { kind: "compare", operator: r, left: t, right: U(e) });
795
801
  }
796
802
  function ie(e) {
797
803
  let t = re(e);
@@ -805,8 +811,8 @@ function ye(e) {
805
811
  e.index++, t = { kind: "or", left: t, right: ie(e) };
806
812
  return t;
807
813
  }
808
- function pt(e) {
809
- const t = { where: e, tokens: ct(e), index: 0 }, n = ye(t), r = N(t);
814
+ function ht(e) {
815
+ const t = { where: e, tokens: ut(e), index: 0 }, n = ye(t), r = N(t);
810
816
  if (r.kind !== "end")
811
817
  throw f(
812
818
  `${JSON.stringify(r.text)} is left over at the end of the selector`,
@@ -869,21 +875,21 @@ function w(e, t) {
869
875
  };
870
876
  }
871
877
  default:
872
- return ft(e.operator, e.left, e.right, t);
878
+ return gt(e.operator, e.left, e.right, t);
873
879
  }
874
880
  }
875
- const ht = Object.freeze({
881
+ const mt = Object.freeze({
876
882
  "<": (e, t) => e < t,
877
883
  "<=": (e, t) => e <= t,
878
884
  ">": (e, t) => e > t,
879
885
  ">=": (e, t) => e >= t
880
886
  });
881
- function mt(e, t) {
887
+ function ft(e, t) {
882
888
  return e.kind === "literal" ? e : t.kind === "literal" ? t : null;
883
889
  }
884
- function ft(e, t, n, r) {
890
+ function gt(e, t, n, r) {
885
891
  if (e === "==" || e === "!=") {
886
- const a = e === "==", u = t.kind === "literal", c = mt(t, n), h = u ? n : t;
892
+ const a = e === "==", u = t.kind === "literal", c = ft(t, n), h = u ? n : t;
887
893
  if (c !== null && c.value === null && h.kind === "path") {
888
894
  const { path: d } = h, { has: v } = r;
889
895
  return (k) => v(k, d) !== a;
@@ -895,7 +901,7 @@ function ft(e, t, n, r) {
895
901
  }
896
902
  return (d) => G(p(d), l(d)) === a;
897
903
  }
898
- const i = w(t, r), s = w(n, r), o = ht[e];
904
+ const i = w(t, r), s = w(n, r), o = mt[e];
899
905
  return (a) => {
900
906
  const u = i(a), c = s(a);
901
907
  return typeof u == "number" && typeof c == "number" ? o(u, c) : null;
@@ -924,10 +930,10 @@ function A(e, t) {
924
930
  }
925
931
  }
926
932
  }
927
- function gt(e) {
928
- return e.split(".").map((t) => yt(t) ? t : JSON.stringify(t)).join(".");
929
- }
930
933
  function yt(e) {
934
+ return e.split(".").map((t) => bt(t) ? t : JSON.stringify(t)).join(".");
935
+ }
936
+ function bt(e) {
931
937
  if (e === "" || !fe(e[0]))
932
938
  return !1;
933
939
  for (let t = 1; t < e.length; t++)
@@ -935,11 +941,11 @@ function yt(e) {
935
941
  return !1;
936
942
  return !0;
937
943
  }
938
- function _n(e, t) {
944
+ function xn(e, t) {
939
945
  const { has: n } = e;
940
946
  return (r) => n(r, t);
941
947
  }
942
- function zn(e, t) {
948
+ function jn(e, t) {
943
949
  const { idOf: n } = e;
944
950
  if (n === null)
945
951
  throw new y({
@@ -950,7 +956,7 @@ function zn(e, t) {
950
956
  });
951
957
  return (r) => t.has(n(r));
952
958
  }
953
- function xn(e, t, n) {
959
+ function Pn(e, t, n) {
954
960
  const { value: r } = e;
955
961
  return (i) => {
956
962
  const s = n();
@@ -960,8 +966,8 @@ function xn(e, t, n) {
960
966
  return typeof o == "number" && Number.isFinite(o) && o >= s;
961
967
  };
962
968
  }
963
- function Cn(e, t) {
964
- const n = pt(e), r = [];
969
+ function Ln(e, t) {
970
+ const n = ht(e), r = [];
965
971
  if ($(n, r), r.length === 0) {
966
972
  let i = n;
967
973
  for (; i.kind === "group"; )
@@ -976,9 +982,9 @@ function Cn(e, t) {
976
982
  }
977
983
  return { paths: Object.freeze(r), test: A(n, t) };
978
984
  }
979
- const U = "results", bt = "$";
980
- function M(e, t) {
981
- return t === void 0 ? `${U}.${e}` : `${U}.${e}.${t}`;
985
+ const H = "results", wt = "$";
986
+ function T(e, t) {
987
+ return t === void 0 ? `${H}.${e}` : `${H}.${e}.${t}`;
982
988
  }
983
989
  const be = {
984
990
  // -- per element ---------------------------------------------------------------------
@@ -1148,7 +1154,7 @@ const be = {
1148
1154
  scope: "graph",
1149
1155
  types: ["number"]
1150
1156
  }
1151
- }, jn = Object.keys(be), q = {
1157
+ }, Dn = Object.keys(be), J = {
1152
1158
  "node-metric": {
1153
1159
  shape: "node-metric",
1154
1160
  primaryField: "value",
@@ -1266,13 +1272,13 @@ const be = {
1266
1272
  }
1267
1273
  };
1268
1274
  function B(e) {
1269
- return q[e];
1275
+ return J[e];
1270
1276
  }
1271
- function Pn(e) {
1272
- return q[e].layer === "highlight";
1277
+ function Gn(e) {
1278
+ return J[e].layer === "highlight";
1273
1279
  }
1274
- function Ln(e, t) {
1275
- const n = q[e], r = [], i = [
1280
+ function Un(e, t) {
1281
+ const n = J[e], r = [], i = [
1276
1282
  { names: n.nodeFields, kind: "node" },
1277
1283
  { names: n.edgeFields, kind: "edge" },
1278
1284
  { names: n.graphFields, kind: "graph" }
@@ -1295,18 +1301,18 @@ function Ln(e, t) {
1295
1301
  reason: `${o} field "${a}" is typed "${u.type}", not ${c.map((h) => `"${h}"`).join(" or ")}`
1296
1302
  });
1297
1303
  }
1298
- return n.headlineScalar && !wt(n, t) && r.push({
1304
+ return n.headlineScalar && !vt(n, t) && r.push({
1299
1305
  field: null,
1300
1306
  kind: "graph",
1301
1307
  reason: `shape "${e}" requires one graph-level scalar of its own beside "count"`
1302
1308
  }), r;
1303
1309
  }
1304
- function wt(e, t) {
1310
+ function vt(e, t) {
1305
1311
  const n = [...e.graphFields, ...e.optionalGraphFields];
1306
1312
  return t.some((r) => r.kind === "graph" && !n.includes(r.name));
1307
1313
  }
1308
- const vt = 3;
1309
- function Ot(e, t) {
1314
+ const Ot = 3;
1315
+ function kt(e, t) {
1310
1316
  if (e === t)
1311
1317
  return 0;
1312
1318
  const n = new Uint32Array(t.length + 1), r = new Uint32Array(t.length + 1);
@@ -1322,23 +1328,23 @@ function Ot(e, t) {
1322
1328
  }
1323
1329
  return n[t.length];
1324
1330
  }
1325
- function kt(e, t, n = vt) {
1331
+ function Nt(e, t, n = Ot) {
1326
1332
  const r = e.toLowerCase(), i = t.map((s) => ({
1327
1333
  candidate: s,
1328
- distance: Ot(r, s.toLowerCase())
1334
+ distance: kt(r, s.toLowerCase())
1329
1335
  }));
1330
1336
  return i.sort((s, o) => s.distance - o.distance || s.candidate.localeCompare(o.candidate)), Object.freeze(i.slice(0, Math.max(n, 0)).map((s) => s.candidate));
1331
1337
  }
1332
1338
  function se(e) {
1333
1339
  return typeof e == "string" ? e : "runId" in e ? e.runId : e.id;
1334
1340
  }
1335
- function Nt(e) {
1341
+ function St(e) {
1336
1342
  return typeof e == "string" ? void 0 : e.shape;
1337
1343
  }
1338
- function St(e, t) {
1344
+ function At(e, t) {
1339
1345
  return e.fields.some((n) => n.name === t) || t in e.graph;
1340
1346
  }
1341
- class At {
1347
+ class $t {
1342
1348
  #e;
1343
1349
  /**
1344
1350
  * Build the API over a registry.
@@ -1361,9 +1367,9 @@ class At {
1361
1367
  path(t, n) {
1362
1368
  const r = se(t);
1363
1369
  if (n !== void 0)
1364
- return M(r, n);
1365
- const i = Nt(t) ?? this.#e.entry(r)?.shape, s = i === void 0 ? null : B(i).primaryField;
1366
- return s === null ? M(r) : M(r, s);
1370
+ return T(r, n);
1371
+ const i = St(t) ?? this.#e.entry(r)?.shape, s = i === void 0 ? null : B(i).primaryField;
1372
+ return s === null ? T(r) : T(r, s);
1367
1373
  }
1368
1374
  /**
1369
1375
  * The same field, written so a selector expression can read it.
@@ -1378,7 +1384,7 @@ class At {
1378
1384
  * @returns The path with every segment quoted that needs it.
1379
1385
  */
1380
1386
  term(t, n) {
1381
- return gt(n === void 0 ? this.path(t) : this.path(t, n));
1387
+ return yt(n === void 0 ? this.path(t) : this.path(t, n));
1382
1388
  }
1383
1389
  /**
1384
1390
  * One run's result.
@@ -1400,7 +1406,7 @@ class At {
1400
1406
  */
1401
1407
  has(t, n) {
1402
1408
  const r = this.get(t);
1403
- return r === void 0 ? !1 : n === void 0 || St(r, n);
1409
+ return r === void 0 ? !1 : n === void 0 || At(r, n);
1404
1410
  }
1405
1411
  /**
1406
1412
  * Every run that has published a result, as an expression editor reads them.
@@ -1413,20 +1419,20 @@ class At {
1413
1419
  return Object.freeze(t);
1414
1420
  }
1415
1421
  }
1416
- function Dn(e) {
1417
- return new At(e);
1422
+ function Hn(e) {
1423
+ return new $t(e);
1418
1424
  }
1419
- const $t = 20, j = 100, Rt = 100, Ft = Object.freeze([]), Et = Object.freeze(["max", "min-max", "none"]);
1425
+ const Rt = 20, j = 100, Et = 100, Ft = Object.freeze([]), It = Object.freeze(["max", "min-max", "none"]);
1420
1426
  function we(e) {
1421
- return typeof e == "string" && Et.includes(e);
1427
+ return typeof e == "string" && It.includes(e);
1422
1428
  }
1423
- function Gn(e) {
1429
+ function Bn(e) {
1424
1430
  return {
1425
1431
  length: e.length,
1426
1432
  get: (t) => e[t]
1427
1433
  };
1428
1434
  }
1429
- const It = Object.freeze({
1435
+ const Tt = Object.freeze({
1430
1436
  measured: 0,
1431
1437
  min: Number.NaN,
1432
1438
  max: Number.NaN,
@@ -1443,7 +1449,7 @@ function ve(e) {
1443
1449
  Number.isFinite(d) && (n[r] = d, r++);
1444
1450
  }
1445
1451
  if (r === 0)
1446
- return { length: t, ...It };
1452
+ return { length: t, ...Tt };
1447
1453
  let i = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY, o = Number.POSITIVE_INFINITY, a = 0, u = 0;
1448
1454
  for (let l = 0; l < r; l++) {
1449
1455
  const d = n[l];
@@ -1477,7 +1483,7 @@ function Oe(e) {
1477
1483
  median: t.median
1478
1484
  }), statistics: t };
1479
1485
  }
1480
- function J(e) {
1486
+ function q(e) {
1481
1487
  const t = e.filter((o) => Number.isFinite(o.value)).map((o) => ({ entry: o, label: String(o.id) }));
1482
1488
  t.sort((o, a) => o.entry.value !== a.entry.value ? a.entry.value - o.entry.value : o.label === a.label ? 0 : o.label < a.label ? -1 : 1);
1483
1489
  const n = t.length, r = [];
@@ -1512,17 +1518,17 @@ function Mt(e, t) {
1512
1518
  reason: o
1513
1519
  });
1514
1520
  }
1515
- function Tt(e) {
1521
+ function _t(e) {
1516
1522
  const { smallestPositive: t } = e;
1517
1523
  if (e.measured === 0 || !(e.max > 0) || t === null)
1518
1524
  return !1;
1519
1525
  const n = e.min > 0 ? e.min : t;
1520
1526
  return Math.log10(e.max) > Math.log10(n);
1521
1527
  }
1522
- function _t(e) {
1523
- return e.measured === 0 || !(e.median > 0) || e.max / e.median <= Rt ? "linear" : Tt(e) ? "log" : "linear";
1528
+ function zt(e) {
1529
+ return e.measured === 0 || !(e.median > 0) || e.max / e.median <= Et ? "linear" : _t(e) ? "log" : "linear";
1524
1530
  }
1525
- function zt(e, t, n, r) {
1531
+ function Ct(e, t, n, r) {
1526
1532
  if (!(t > e))
1527
1533
  return { binCount: 1, indexOf: () => 0, rangeOf: () => [e, t] };
1528
1534
  if (r) {
@@ -1576,9 +1582,9 @@ function xt(e, t, n, r, i) {
1576
1582
  }
1577
1583
  };
1578
1584
  }
1579
- function Ct(e) {
1585
+ function jt(e) {
1580
1586
  if (e === void 0)
1581
- return $t;
1587
+ return Rt;
1582
1588
  if (!Number.isInteger(e) || e < 1 || e > j)
1583
1589
  throw new y({
1584
1590
  code: "E_OPTION_RANGE",
@@ -1588,7 +1594,7 @@ function Ct(e) {
1588
1594
  });
1589
1595
  return e;
1590
1596
  }
1591
- function jt(e, t) {
1597
+ function Pt(e, t) {
1592
1598
  const n = /* @__PURE__ */ new Map();
1593
1599
  for (let r = 0; r < e.length; r++) {
1594
1600
  const i = e.get(r);
@@ -1605,8 +1611,8 @@ function jt(e, t) {
1605
1611
  }
1606
1612
  return n;
1607
1613
  }
1608
- function Pt(e, t) {
1609
- const n = Ct(t?.bins), r = t?.integerValued ?? !1, i = ve(e), s = _t(i), o = jt(e, n);
1614
+ function Lt(e, t) {
1615
+ const n = jt(t?.bins), r = t?.integerValued ?? !1, i = ve(e), s = zt(i), o = Pt(e, n);
1610
1616
  if (o !== null) {
1611
1617
  if (o.size === 0)
1612
1618
  return Object.freeze({
@@ -1629,7 +1635,7 @@ function Pt(e, t) {
1629
1635
  binning: "per-value"
1630
1636
  });
1631
1637
  }
1632
- const u = t?.scale === "log" || t?.scale === "auto" && s === "log" ? xt(i.min, i.max, i.smallestPositive, n, r) : null, c = u ?? zt(i.min, i.max, n, r), h = new Array(c.binCount).fill(0);
1638
+ const u = t?.scale === "log" || t?.scale === "auto" && s === "log" ? xt(i.min, i.max, i.smallestPositive, n, r) : null, c = u ?? Ct(i.min, i.max, n, r), h = new Array(c.binCount).fill(0);
1633
1639
  for (let p = 0; p < e.length; p++) {
1634
1640
  const l = e.get(p);
1635
1641
  Number.isFinite(l) && (h[c.indexOf(l)] += 1);
@@ -1648,7 +1654,7 @@ function Pt(e, t) {
1648
1654
  binning: "banded"
1649
1655
  });
1650
1656
  }
1651
- const Lt = 10, Dt = 10;
1657
+ const Dt = 10, Gt = 10;
1652
1658
  function oe(e) {
1653
1659
  const t = { ids: [], records: [], index: /* @__PURE__ */ new Map() };
1654
1660
  if (e === void 0)
@@ -1670,13 +1676,13 @@ function V(e, t) {
1670
1676
  get: (r) => ke(n[r][t])
1671
1677
  };
1672
1678
  }
1673
- function W(e, t) {
1679
+ function Y(e, t) {
1674
1680
  return e.ids.map((n, r) => ({ id: n, value: ke(e.records[r][t]) }));
1675
1681
  }
1676
1682
  function ke(e) {
1677
1683
  return typeof e == "number" ? e : Number.NaN;
1678
1684
  }
1679
- function Y(e) {
1685
+ function W(e) {
1680
1686
  return typeof e == "string" || typeof e == "number";
1681
1687
  }
1682
1688
  function P(e) {
@@ -1685,14 +1691,14 @@ function P(e) {
1685
1691
  function g(e, t, n) {
1686
1692
  e[t] === void 0 && (e[t] = n);
1687
1693
  }
1688
- function T(e, t, n) {
1694
+ function M(e, t, n) {
1689
1695
  e[t] === void 0 && (e[t] = n);
1690
1696
  }
1691
1697
  function Ne(e, t) {
1692
1698
  const n = /* @__PURE__ */ new Map();
1693
1699
  for (const r of e.records) {
1694
1700
  const i = r[t];
1695
- Y(i) && n.set(i, (n.get(i) ?? 0) + 1);
1701
+ W(i) && n.set(i, (n.get(i) ?? 0) + 1);
1696
1702
  }
1697
1703
  return n;
1698
1704
  }
@@ -1700,7 +1706,7 @@ function Se(e, t) {
1700
1706
  const n = String(e), r = String(t);
1701
1707
  return n === r ? 0 : n < r ? -1 : 1;
1702
1708
  }
1703
- function Gt(e) {
1709
+ function Ut(e) {
1704
1710
  const t = [...e.entries()].map(([n, r]) => ({ group: n, size: r }));
1705
1711
  return t.sort((n, r) => r.size - n.size || Se(n.group, r.group)), Object.freeze(t.map((n) => Object.freeze(n)));
1706
1712
  }
@@ -1710,9 +1716,9 @@ function Ae(e, t) {
1710
1716
  }
1711
1717
  function ae(e, t, n) {
1712
1718
  const { statistics: r } = Oe(V(e, "value"));
1713
- for (const i of J(W(e, "value"))) {
1719
+ for (const i of q(Y(e, "value"))) {
1714
1720
  const s = e.index.get(i.id);
1715
- s !== void 0 && (T(e.records[s], "rank", i.rank), T(e.records[s], "percentile", i.percentile));
1721
+ s !== void 0 && (M(e.records[s], "rank", i.rank), M(e.records[s], "percentile", i.percentile));
1716
1722
  }
1717
1723
  r.measured > 0 && (g(t, "min", r.min), g(t, "max", r.max), g(t, "median", r.median), g(t, "mean", r.mean)), g(t, "measured", r.measured), g(t, "tiedAtMin", r.tiedAtMin), g(t, "normalization", Ae(n, "value"));
1718
1724
  }
@@ -1720,14 +1726,14 @@ function ce(e, t, n, r, i) {
1720
1726
  const s = Ne(e, n);
1721
1727
  for (const o of e.records) {
1722
1728
  const a = o[n];
1723
- Y(a) && T(o, r, s.get(a));
1729
+ W(a) && M(o, r, s.get(a));
1724
1730
  }
1725
- g(t, i, s.size), g(t, "sizes", Gt(s));
1731
+ g(t, i, s.size), g(t, "sizes", Ut(s));
1726
1732
  }
1727
1733
  function Ht(e, t) {
1728
- for (const r of J(W(e, "score"))) {
1734
+ for (const r of q(Y(e, "score"))) {
1729
1735
  const i = e.index.get(r.id);
1730
- i !== void 0 && T(e.records[i], "rank", r.rank);
1736
+ i !== void 0 && M(e.records[i], "rank", r.rank);
1731
1737
  }
1732
1738
  const n = [...Ne(e, "category").entries()].map(([r, i]) => ({
1733
1739
  category: String(r),
@@ -1735,7 +1741,7 @@ function Ht(e, t) {
1735
1741
  }));
1736
1742
  n.sort((r, i) => i.count - r.count || Se(r.category, i.category)), g(t, "categories", Object.freeze(n.map((r) => Object.freeze(r))));
1737
1743
  }
1738
- function E(e, t) {
1744
+ function F(e, t) {
1739
1745
  let n = 0;
1740
1746
  for (const r of e.records)
1741
1747
  r[t] === !0 && n++;
@@ -1747,7 +1753,7 @@ function ue(e, t) {
1747
1753
  r[t] !== void 0 && n++;
1748
1754
  return n;
1749
1755
  }
1750
- function Ut(e, t, n, r, i) {
1756
+ function Bt(e, t, n, r, i) {
1751
1757
  switch (e) {
1752
1758
  case "node-metric":
1753
1759
  ae(t, r, i);
@@ -1765,17 +1771,17 @@ function Ut(e, t, n, r, i) {
1765
1771
  Ht(t, r);
1766
1772
  break;
1767
1773
  case "path":
1768
- g(r, "length", E(t, "onPath")), g(r, "hops", E(n, "onPath"));
1774
+ g(r, "length", F(t, "onPath")), g(r, "hops", F(n, "onPath"));
1769
1775
  break;
1770
1776
  case "node-set":
1771
- g(r, "count", E(t, "in"));
1777
+ g(r, "count", F(t, "in"));
1772
1778
  break;
1773
1779
  case "edge-set":
1774
- g(r, "count", E(n, "in"));
1780
+ g(r, "count", F(n, "in"));
1775
1781
  break;
1776
1782
  }
1777
1783
  }
1778
- function Bt(e) {
1784
+ function Vt(e) {
1779
1785
  switch (e) {
1780
1786
  case "node-metric":
1781
1787
  case "edge-metric":
@@ -1788,7 +1794,7 @@ function Bt(e) {
1788
1794
  return null;
1789
1795
  }
1790
1796
  }
1791
- function Vt(e, t) {
1797
+ function Jt(e, t) {
1792
1798
  if (!Array.isArray(e))
1793
1799
  return;
1794
1800
  const n = [];
@@ -1796,7 +1802,7 @@ function Vt(e, t) {
1796
1802
  if (typeof r != "object" || r === null)
1797
1803
  continue;
1798
1804
  const i = r, s = i.group ?? i.category, o = i.size ?? i.count;
1799
- if (Y(s) && typeof o == "number" && n.push(Object.freeze({ group: s, size: o })), n.length === t)
1805
+ if (W(s) && typeof o == "number" && n.push(Object.freeze({ group: s, size: o })), n.length === t)
1800
1806
  break;
1801
1807
  }
1802
1808
  return Object.freeze(n);
@@ -1821,7 +1827,7 @@ class qt {
1821
1827
  */
1822
1828
  constructor(t, n, r, i) {
1823
1829
  this.runId = t.runId, this.shape = t.shape, this.fields = Object.freeze([...t.fields]), this.measured = Object.freeze({ nodes: t.measured.nodes, edges: t.measured.edges }), this.graph = i, this.#e = n, this.#t = r, this.#n = t.caveats, this.#r = t.durationMs, this.#i = t.labelOf ?? (() => {
1824
- }), this.#s = t.reading ?? tt;
1830
+ }), this.#s = t.reading ?? nt;
1825
1831
  }
1826
1832
  /**
1827
1833
  * One node's fields.
@@ -1922,7 +1928,7 @@ class qt {
1922
1928
  */
1923
1929
  histogram(t, n) {
1924
1930
  const r = this.#d(t), i = r.kind === "edge" ? this.#t : this.#e;
1925
- return Pt(V(i, t), {
1931
+ return Lt(V(i, t), {
1926
1932
  ...n,
1927
1933
  integerValued: r.type === "integer"
1928
1934
  });
@@ -1978,7 +1984,7 @@ class qt {
1978
1984
  code: "E_UNKNOWN_ATTRIBUTE",
1979
1985
  source: "run",
1980
1986
  message: `Run "${this.runId}" published no field named "${t}".`,
1981
- details: { field: t, available: i, candidates: kt(t, i) },
1987
+ details: { field: t, available: i, candidates: Nt(t, i) },
1982
1988
  target: { kind: "run", id: this.runId }
1983
1989
  });
1984
1990
  if (!P(r))
@@ -2020,7 +2026,7 @@ class qt {
2020
2026
  * @throws A GraphtyError naming what went wrong.
2021
2027
  */
2022
2028
  #f(t) {
2023
- const n = J(W(this.#p(t), t));
2029
+ const n = q(Y(this.#p(t), t));
2024
2030
  return this.#a.set(t, n), n;
2025
2031
  }
2026
2032
  /**
@@ -2028,7 +2034,7 @@ class qt {
2028
2034
  * @returns The summary.
2029
2035
  */
2030
2036
  #g() {
2031
- const t = Bt(this.shape), n = t === null || this.#m(t) === null ? null : t, r = n === null ? null : this.#h(n).statistics, i = r !== null && r.measured > 0 ? r : null, s = n === null ? [] : this.ranking(n, Lt).map(
2037
+ const t = Vt(this.shape), n = t === null || this.#m(t) === null ? null : t, r = n === null ? null : this.#h(n).statistics, i = r !== null && r.measured > 0 ? r : null, s = n === null ? [] : this.ranking(n, Dt).map(
2032
2038
  (c) => Object.freeze({
2033
2039
  id: c.id,
2034
2040
  label: this.#i(c.id) ?? String(c.id),
@@ -2048,7 +2054,7 @@ class qt {
2048
2054
  top: Object.freeze(s),
2049
2055
  caveats: this.#n,
2050
2056
  durationMs: this.#r
2051
- }, a = this.graph.sizes ?? this.graph.categories, u = Vt(a, Dt);
2057
+ }, a = this.graph.sizes ?? this.graph.categories, u = Jt(a, Gt);
2052
2058
  return Object.freeze(u === void 0 ? o : { ...o, groups: u });
2053
2059
  }
2054
2060
  /**
@@ -2085,9 +2091,9 @@ class qt {
2085
2091
  return we(n) ? n : t === null ? "none" : Ae(this.fields, t);
2086
2092
  }
2087
2093
  }
2088
- function Jt(e) {
2094
+ function Yt(e) {
2089
2095
  const t = oe(e.nodes), n = oe(e.edges), r = { ...e.graph };
2090
- Ut(e.shape, t, n, r, e.fields);
2096
+ Bt(e.shape, t, n, r, e.fields);
2091
2097
  for (const i of t.records)
2092
2098
  Object.freeze(i);
2093
2099
  for (const i of n.records)
@@ -2104,11 +2110,11 @@ function Wt(e) {
2104
2110
  return typeof i == "string" || typeof i == "number" ? String(i) : void 0;
2105
2111
  };
2106
2112
  }
2107
- function Hn(e) {
2113
+ function Vn(e) {
2108
2114
  return { exact: !0, precision: "f64", notes: [], ...e };
2109
2115
  }
2110
- const Yt = 1024, Kt = 16;
2111
- function Zt() {
2116
+ const Kt = 1024, Zt = 16;
2117
+ function Xt() {
2112
2118
  return {
2113
2119
  signal: new AbortController().signal,
2114
2120
  report: () => {
@@ -2118,27 +2124,27 @@ function Zt() {
2118
2124
  })
2119
2125
  };
2120
2126
  }
2121
- async function Un(e, t, n, r) {
2127
+ async function Jn(e, t, n, r) {
2122
2128
  const i = n.length;
2123
2129
  e.report({ phase: t, completed: 0, total: i });
2124
2130
  let s = performance.now();
2125
2131
  for (let o = 0; o < i; o++)
2126
- o > 0 && o % Yt === 0 && (e.signal.throwIfAborted(), e.report({ phase: t, completed: o, total: i }), performance.now() - s >= Kt && (await e.yieldNow(), s = performance.now())), r(n[o], o);
2132
+ o > 0 && o % Kt === 0 && (e.signal.throwIfAborted(), e.report({ phase: t, completed: o, total: i }), performance.now() - s >= Zt && (await e.yieldNow(), s = performance.now())), r(n[o], o);
2127
2133
  e.signal.throwIfAborted(), e.report({ phase: t, completed: i, total: i });
2128
2134
  }
2129
- function Xt(e, t, n) {
2135
+ function Qt(e, t, n) {
2130
2136
  const r = n?.find((s) => s.name === e.name && s.kind === e.kind), i = {
2131
2137
  name: e.name,
2132
2138
  plainName: r?.plainName ?? e.name,
2133
2139
  technicalName: r?.technicalName ?? e.name,
2134
2140
  kind: e.kind,
2135
2141
  type: e.type,
2136
- path: M(t, e.name),
2142
+ path: T(t, e.name),
2137
2143
  ...r?.unit === void 0 ? {} : { unit: r.unit }
2138
2144
  };
2139
2145
  return e.normalization === void 0 ? i : { ...i, normalization: e.normalization };
2140
2146
  }
2141
- class Bn extends D {
2147
+ class qn extends D {
2142
2148
  /** What the last run published, kept so a caller holding the algorithm can read the result. */
2143
2149
  #e;
2144
2150
  /**
@@ -2162,7 +2168,7 @@ class Bn extends D {
2162
2168
  */
2163
2169
  resolveOptions(t) {
2164
2170
  const { descriptor: n } = this.constructor;
2165
- return n === void 0 ? super.resolveOptions(t) : Ie(n.options, t ?? {}, {
2171
+ return n === void 0 ? super.resolveOptions(t) : _e(n.options, t ?? {}, {
2166
2172
  kind: "algorithm",
2167
2173
  id: n.key
2168
2174
  });
@@ -2189,7 +2195,7 @@ class Bn extends D {
2189
2195
  * @returns A promise that settles when the result has been published.
2190
2196
  */
2191
2197
  async run() {
2192
- await this.computeRun(Zt(), this.type);
2198
+ await this.computeRun(Xt(), this.type);
2193
2199
  }
2194
2200
  /**
2195
2201
  * Compute on behalf of a run, and hand the result back.
@@ -2224,11 +2230,11 @@ class Bn extends D {
2224
2230
  const i = Date.now(), s = await this.compute(t);
2225
2231
  if (s === null)
2226
2232
  return;
2227
- const o = this.graph.getDataManager(), a = Wt(this.graph), u = Jt({
2233
+ const o = this.graph.getDataManager(), a = Wt(this.graph), u = Yt({
2228
2234
  ...a === void 0 ? {} : { labelOf: a },
2229
2235
  runId: n,
2230
2236
  shape: s.shape,
2231
- fields: s.fields.map((c) => Xt(c, n, r)),
2237
+ fields: s.fields.map((c) => Qt(c, n, r)),
2232
2238
  measured: { nodes: o.nodes.size, edges: o.edges.size },
2233
2239
  graph: s.graph,
2234
2240
  nodes: s.nodes,
@@ -2239,7 +2245,7 @@ class Bn extends D {
2239
2245
  return this.#e = u, u;
2240
2246
  }
2241
2247
  }
2242
- function Vn(e, t = "number") {
2248
+ function Yn(e, t = "number") {
2243
2249
  return [
2244
2250
  { name: "value", kind: e, type: t },
2245
2251
  { name: "rank", kind: e, type: "integer" },
@@ -2259,15 +2265,15 @@ const le = [
2259
2265
  { name: "groupCount", kind: "graph", type: "integer" },
2260
2266
  { name: "sizes", kind: "graph", type: "table" }
2261
2267
  ];
2262
- function qn(e) {
2268
+ function Wn(e) {
2263
2269
  return e ? [...le, { name: "modularity", kind: "graph", type: "number" }] : le;
2264
2270
  }
2265
- const Jn = [
2271
+ const Kn = [
2266
2272
  { name: "level", kind: "node", type: "integer" },
2267
2273
  { name: "levelSize", kind: "node", type: "integer" },
2268
2274
  { name: "levelCount", kind: "graph", type: "integer" },
2269
2275
  { name: "sizes", kind: "graph", type: "table" }
2270
- ], Wn = [
2276
+ ], Zn = [
2271
2277
  { name: "onPath", kind: "node", type: "boolean" },
2272
2278
  { name: "order", kind: "node", type: "integer" },
2273
2279
  { name: "onPath", kind: "edge", type: "boolean" },
@@ -2275,18 +2281,18 @@ const Jn = [
2275
2281
  { name: "cost", kind: "graph", type: "number" },
2276
2282
  { name: "hops", kind: "graph", type: "integer" }
2277
2283
  ];
2278
- function Yn(e, t) {
2284
+ function Xn(e, t) {
2279
2285
  return [
2280
2286
  { name: "in", kind: e, type: "boolean" },
2281
2287
  { name: "count", kind: "graph", type: "integer" },
2282
2288
  { ...t, kind: "graph" }
2283
2289
  ];
2284
2290
  }
2285
- const Qt = `${U}.${bt}`;
2291
+ const en = `${H}.${wt}`;
2286
2292
  function O(e) {
2287
- return { ...e, path: `${Qt}.${e.name}` };
2293
+ return { ...e, path: `${en}.${e.name}` };
2288
2294
  }
2289
- function Kn(e) {
2295
+ function Qn(e) {
2290
2296
  return [
2291
2297
  O({
2292
2298
  name: "value",
@@ -2331,28 +2337,28 @@ function Kn(e) {
2331
2337
  })
2332
2338
  ];
2333
2339
  }
2334
- const en = 12;
2335
- function Zn(e, t = {}) {
2336
- return (tn(e) ? nn(e) : rn(e)).map((r) => {
2337
- const i = { ...r.meta, ...t.meta?.[r.name] }, s = r.node === null ? an(r.name, i, r.failure ?? "the schema could not be converted") : on(r.name, r.node, i), o = t.overrides?.[r.name];
2340
+ const tn = 12;
2341
+ function er(e, t = {}) {
2342
+ return (nn(e) ? rn(e) : sn(e)).map((r) => {
2343
+ const i = { ...r.meta, ...t.meta?.[r.name] }, s = r.node === null ? cn(r.name, i, r.failure ?? "the schema could not be converted") : an(r.name, r.node, i), o = t.overrides?.[r.name];
2338
2344
  return o === void 0 ? s : { ...s, ...o };
2339
2345
  });
2340
2346
  }
2341
- function tn(e) {
2347
+ function nn(e) {
2342
2348
  return typeof e != "object" || e === null ? !1 : "_zod" in e || "_def" in e;
2343
2349
  }
2344
- function nn(e) {
2350
+ function rn(e) {
2345
2351
  const t = $e(e);
2346
2352
  if (t === null)
2347
2353
  return [];
2348
2354
  const { properties: n } = t;
2349
2355
  return n === void 0 ? [] : Object.entries(n).map(([r, i]) => ({ name: r, node: Re(i, t) }));
2350
2356
  }
2351
- function rn(e) {
2357
+ function sn(e) {
2352
2358
  const t = Object.entries(e), n = {};
2353
2359
  for (const [s, o] of t)
2354
2360
  n[s] = o.schema;
2355
- const r = sn(n), i = r?.properties;
2361
+ const r = on(n), i = r?.properties;
2356
2362
  return t.map(([s, o]) => {
2357
2363
  const a = i?.[s];
2358
2364
  return r === null || a === void 0 ? {
@@ -2370,7 +2376,7 @@ function $e(e) {
2370
2376
  return null;
2371
2377
  }
2372
2378
  }
2373
- function sn(e) {
2379
+ function on(e) {
2374
2380
  try {
2375
2381
  return $e(me.object(e));
2376
2382
  } catch {
@@ -2385,8 +2391,8 @@ function Re(e, t) {
2385
2391
  const r = n.slice(de.length).replaceAll("~1", "/").replaceAll("~0", "~");
2386
2392
  return t.$defs?.[r] ?? e;
2387
2393
  }
2388
- function on(e, t, n) {
2389
- const r = Fe(t, 0), i = cn(r), s = {
2394
+ function an(e, t, n) {
2395
+ const r = Ee(t, 0), i = un(r), s = {
2390
2396
  name: e,
2391
2397
  plainName: n.label ?? K(e),
2392
2398
  technicalName: e,
@@ -2401,7 +2407,7 @@ function on(e, t, n) {
2401
2407
  const u = n.step ?? a?.multipleOf;
2402
2408
  return u !== void 0 && (s.step = u), i.values !== void 0 && (s.values = i.values), n.group !== void 0 && (s.group = n.group), n.advanced !== void 0 && (s.advanced = n.advanced), i.unsupportedReason !== void 0 && (s.unsupportedReason = i.unsupportedReason), s;
2403
2409
  }
2404
- function an(e, t, n) {
2410
+ function cn(e, t, n) {
2405
2411
  const r = {
2406
2412
  name: e,
2407
2413
  plainName: t.label ?? K(e),
@@ -2411,8 +2417,8 @@ function an(e, t, n) {
2411
2417
  };
2412
2418
  return t.description !== void 0 && (r.description = t.description), t.step !== void 0 && (r.step = t.step), t.group !== void 0 && (r.group = t.group), t.advanced !== void 0 && (r.advanced = t.advanced), r;
2413
2419
  }
2414
- function Fe(e, t) {
2415
- if (t >= en)
2420
+ function Ee(e, t) {
2421
+ if (t >= tn)
2416
2422
  return { arms: [], nullable: !1, unresolvedRef: !0 };
2417
2423
  if (e.$ref !== void 0)
2418
2424
  return { arms: [], nullable: !1, unresolvedRef: !0 };
@@ -2421,12 +2427,12 @@ function Fe(e, t) {
2421
2427
  return e.type === "null" ? { arms: [], nullable: !0, unresolvedRef: !1 } : { arms: [e], nullable: !1, unresolvedRef: !1 };
2422
2428
  const r = { arms: [], nullable: !1, unresolvedRef: !1 };
2423
2429
  for (const i of n) {
2424
- const s = Fe(i, t + 1);
2430
+ const s = Ee(i, t + 1);
2425
2431
  r.arms.push(...s.arms), r.nullable = r.nullable || s.nullable, r.unresolvedRef = r.unresolvedRef || s.unresolvedRef;
2426
2432
  }
2427
2433
  return r;
2428
2434
  }
2429
- function cn(e) {
2435
+ function un(e) {
2430
2436
  if (e.arms.length === 0)
2431
2437
  return e.unresolvedRef ? {
2432
2438
  type: "unknown",
@@ -2435,19 +2441,19 @@ function cn(e) {
2435
2441
  type: "unknown",
2436
2442
  unsupportedReason: e.nullable ? "the only value the schema accepts is null" : "the schema declares no value type"
2437
2443
  };
2438
- const t = ln(e.arms);
2444
+ const t = dn(e.arms);
2439
2445
  if (t !== void 0)
2440
2446
  return { type: "enum", node: e.arms[0], values: t };
2441
2447
  if (e.arms.length === 1)
2442
- return un(e.arms[0]);
2443
- const n = e.arms.map((r) => Ee(r));
2448
+ return ln(e.arms[0]);
2449
+ const n = e.arms.map((r) => Fe(r));
2444
2450
  return n.length === 2 && n.includes("string") && n.includes("number") ? { type: "node-id" } : {
2445
2451
  type: "unknown",
2446
2452
  unsupportedReason: `the schema is a union of ${n.join(" and ")}, which has no single control`
2447
2453
  };
2448
2454
  }
2449
- function un(e) {
2450
- switch (Ee(e)) {
2455
+ function ln(e) {
2456
+ switch (Fe(e)) {
2451
2457
  case "integer":
2452
2458
  return { type: "integer", node: e };
2453
2459
  case "number":
@@ -2476,7 +2482,7 @@ function un(e) {
2476
2482
  };
2477
2483
  }
2478
2484
  }
2479
- function ln(e) {
2485
+ function dn(e) {
2480
2486
  const t = [];
2481
2487
  for (const r of e)
2482
2488
  if (r.enum !== void 0)
@@ -2496,7 +2502,7 @@ function ln(e) {
2496
2502
  }
2497
2503
  return n;
2498
2504
  }
2499
- function Ee(e) {
2505
+ function Fe(e) {
2500
2506
  const { type: t } = e;
2501
2507
  return typeof t == "string" ? t : Array.isArray(t) && t.length > 0 ? t[0] : "none";
2502
2508
  }
@@ -2509,57 +2515,59 @@ function K(e) {
2509
2515
  return t === "" ? e : t.split(/\s+/u).map((n) => n.charAt(0).toUpperCase() + n.slice(1)).join(" ");
2510
2516
  }
2511
2517
  export {
2518
+ Hn as $,
2512
2519
  D as A,
2513
- Fn as B,
2514
- Pe as C,
2515
- Sn as D,
2516
- On as E,
2517
- wn as F,
2520
+ Tn as B,
2521
+ Le as C,
2522
+ An as D,
2523
+ kn as E,
2524
+ vn as F,
2518
2525
  Wt as G,
2519
- Jt as H,
2520
- $n as I,
2521
- An as J,
2522
- ve as K,
2523
- Jn as L,
2524
- Gn as M,
2525
- Cn as N,
2526
+ Yt as H,
2527
+ Rn as I,
2528
+ $n as J,
2529
+ Fn as K,
2530
+ Kn as L,
2531
+ En as M,
2532
+ ve as N,
2526
2533
  b as O,
2527
- Wn as P,
2528
- Tn as Q,
2529
- jn as R,
2530
- B as S,
2531
- kt as T,
2532
- xn as U,
2533
- zn as V,
2534
- _n as W,
2535
- Pn as X,
2536
- Kt as Y,
2537
- Dn as Z,
2538
- Mn as _,
2539
- Bn as a,
2540
- En as b,
2541
- Ln as c,
2542
- vn as d,
2543
- qn as e,
2544
- Hn as f,
2545
- In as g,
2546
- Un as h,
2547
- Vn as i,
2548
- Rn as j,
2549
- bn as k,
2534
+ Zn as P,
2535
+ Bn as Q,
2536
+ Dn as R,
2537
+ Ln as S,
2538
+ Cn as T,
2539
+ B as U,
2540
+ Nt as V,
2541
+ Pn as W,
2542
+ jn as X,
2543
+ Zt as Y,
2544
+ xn as Z,
2545
+ Gn as _,
2546
+ qn as a,
2547
+ zn as a0,
2548
+ Mn as b,
2549
+ Un as c,
2550
+ On as d,
2551
+ Wn as e,
2552
+ Vn as f,
2553
+ _n as g,
2554
+ Jn as h,
2555
+ Yn as i,
2556
+ In as j,
2557
+ wn as k,
2550
2558
  He as l,
2551
2559
  O as m,
2552
- Kn as n,
2553
- Zn as o,
2554
- je as p,
2555
- kn as q,
2556
- yn as r,
2557
- Yn as s,
2558
- U as t,
2559
- q as u,
2560
- De as v,
2561
- tt as w,
2562
- Nn as x,
2563
- gt as y,
2564
- M as z
2560
+ Qn as n,
2561
+ er as o,
2562
+ Pe as p,
2563
+ Nn as q,
2564
+ bn as r,
2565
+ Xn as s,
2566
+ H as t,
2567
+ J as u,
2568
+ Ge as v,
2569
+ nt as w,
2570
+ Sn as x,
2571
+ yt as y,
2572
+ T as z
2565
2573
  };