@graphty/webgpu-graph-algorithms 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +369 -14
- package/package.json +7 -6
- package/dist/tsconfig.build.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -3,21 +3,24 @@
|
|
|
3
3
|
WebGPU-accelerated graph algorithms and layouts over the `@graphty/graph-format` snapshot, for Node
|
|
4
4
|
(Dawn, through the `webgpu` npm package) and browsers (Chromium). One code base, three entry points:
|
|
5
5
|
|
|
6
|
-
| Entry | Import | What it gives you
|
|
7
|
-
| ------------------------------------------ | ------------- |
|
|
8
|
-
| `@graphty/webgpu-graph-algorithms` | the core | `createForceAtlas2`, `
|
|
9
|
-
| `@graphty/webgpu-graph-algorithms/node` | Node only | `createNodeGpuContext`, `probeNodeWebGpu`, `createNodeGpu` (Dawn), `dawnFlags`
|
|
10
|
-
| `@graphty/webgpu-graph-algorithms/browser` | browsers only | `probeBrowserWebGpu`, `requestGpuContext`
|
|
11
|
-
|
|
12
|
-
**Status:
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
| Entry | Import | What it gives you |
|
|
7
|
+
| ------------------------------------------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
8
|
+
| `@graphty/webgpu-graph-algorithms` | the core | the layouts (`createForceAtlas2`, `createFruchtermanReingold`, `createSpringElectrical`, `seedPositions`), the algorithms (`pageRank`, `personalizedPageRank`, `hits`, `eigenvectorCentrality`, `katzCentrality`, `connectedComponents`, `degree`), `createAccelerator`, `calibrateLayout`, `verifyDevice`, `GpuContext`, `WebGpuGraphError`, `isSoftwareAdapter`, the constants (`EXACT_MAX_NODES`, `FA2_DEFAULTS`, `FR_DEFAULTS`, `SE_DEFAULTS`, `LAYOUT_TUNING_DEFAULTS`, ...) and the option / stats / accelerator types |
|
|
9
|
+
| `@graphty/webgpu-graph-algorithms/node` | Node only | `createNodeGpuContext`, `probeNodeWebGpu`, `createNodeGpu` (Dawn), `dawnFlags` |
|
|
10
|
+
| `@graphty/webgpu-graph-algorithms/browser` | browsers only | `probeBrowserWebGpu`, `requestGpuContext` |
|
|
11
|
+
|
|
12
|
+
**Status: three force layouts and six algorithms, on the exact and the grid repulsion tiers.**
|
|
13
|
+
ForceAtlas2, Fruchterman-Reingold and ngraph's spring-electrical preset run from Node (`run()`) and from a
|
|
14
|
+
browser frame loop (`step()` once per frame) at any size: the default `repulsion: "auto"` runs the exact tier
|
|
15
|
+
up to `exactMaxNodes` = 32768 nodes (owner decision G4-D1 in `docs/decisions/G4.md`) and the grid tier above
|
|
15
16
|
it; `repulsion: "exact"` forces all pairs at any size (O(n^2) per iteration: 18.971 ms per iteration at 100k
|
|
16
|
-
nodes / 1M edges on an RTX 4070 SUPER) and `repulsion: "grid"` forces the grid tier.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
`
|
|
20
|
-
|
|
17
|
+
nodes / 1M edges on an RTX 4070 SUPER) and `repulsion: "grid"` forces the grid tier. PageRank, personalized
|
|
18
|
+
PageRank, HITS, eigenvector centrality, Katz centrality and weakly connected components run as plain async
|
|
19
|
+
calls on the same context. The phases follow the phase plan of
|
|
20
|
+
`design/webgpu/webgpu-acceleration-plan.md` (monorepo root) section 13 and the interface contract
|
|
21
|
+
`design/webgpu/plans/2026-09-14-webgpu-p0-p3-interfaces.md`; the gate records are `docs/decisions/G<n>.md`.
|
|
22
|
+
There is no CPU fallback anywhere in this package: when no adapter or device exists it throws
|
|
23
|
+
`WebGpuGraphError`.
|
|
21
24
|
|
|
22
25
|
## Install
|
|
23
26
|
|
|
@@ -170,6 +173,150 @@ else the batch's wall time divided by its iteration count), the grid fields (`nu
|
|
|
170
173
|
`trace`: one `{ swing, traction, speed, speedEfficiency, meanDisplacement, settledCount }` record per
|
|
171
174
|
iteration of the last batch.
|
|
172
175
|
|
|
176
|
+
## Fruchterman-Reingold and the spring-electrical preset
|
|
177
|
+
|
|
178
|
+
Two more force layouts ship beside ForceAtlas2, on the same exact repulsion tier and with exactly the
|
|
179
|
+
lifecycle the two ForceAtlas2 sections above describe: `load(snapshot, positions)`, then `run()` from Node or
|
|
180
|
+
`step()` once per frame, with `stats`, `settled`, `setPosition`, `setFixed`, `reheat`, `flush`, `setParams`,
|
|
181
|
+
`dispose` and the coalescing rule all unchanged. They differ in the force law, in their option records and in
|
|
182
|
+
what their trace carries. Both are also methods of an accelerator: `acc.fruchtermanReingold(options)` and
|
|
183
|
+
`acc.springElectrical(options)`, which pass the accelerator's `layout` tuning down the same way
|
|
184
|
+
`acc.forceAtlas2` does.
|
|
185
|
+
|
|
186
|
+
What they ask of the graph, and what they refuse, is ForceAtlas2's:
|
|
187
|
+
|
|
188
|
+
- an UNDIRECTED snapshot. `load()` throws `E_SNAPSHOT { reason: "directed" }` otherwise; pass
|
|
189
|
+
`toUndirected().snapshot`
|
|
190
|
+
- edge weights are ignored by both models, and both give every node the same mass rule for its whole run --
|
|
191
|
+
1 for Fruchterman-Reingold, `1 + degree / 3` for the spring preset -- so neither has a `weight` or
|
|
192
|
+
`nodeMass` option to pass
|
|
193
|
+
- `positions` is the owner's stride-3 scene-unit `Float32Array` of length `3 * nodeCount`, over a plain
|
|
194
|
+
`ArrayBuffer`; any other length is `E_INVALID_ARGUMENT`. Rows holding a non-finite component are seeded in
|
|
195
|
+
place at `load()` (see `seedPositions` below), finite rows are the starting layout
|
|
196
|
+
- an empty snapshot (`nodeCount: 0`) loads without touching the GPU and is `settled` on arrival; `step()`
|
|
197
|
+
resolves immediately and the positions array is left alone
|
|
198
|
+
- a graph the device cannot hold is refused at `load()`, before any GPU work:
|
|
199
|
+
`E_TOO_LARGE { path: "positions" }` when `16 * nodeCount` bytes exceed the device's `maxBufferSize`,
|
|
200
|
+
`{ path: "windowed" }` when the arc arrays need more than one storage binding, and `{ path: "partials" }`
|
|
201
|
+
above 16,776,960 nodes
|
|
202
|
+
- above `exactMaxNodes` with the default `repulsion: "auto"`, `load()` throws
|
|
203
|
+
`E_UNSUPPORTED { feature: "repulsion.grid" }`, as ForceAtlas2 does; `repulsion: "exact"` runs all pairs at
|
|
204
|
+
any size
|
|
205
|
+
|
|
206
|
+
The GPU tuning table above applies to both, with one exception: `compat` is read by ForceAtlas2 alone and
|
|
207
|
+
changes nothing here.
|
|
208
|
+
|
|
209
|
+
### Fruchterman-Reingold
|
|
210
|
+
|
|
211
|
+
The spring model of the original paper: every pair of nodes repels with `k^2 / d`, every edge pulls with
|
|
212
|
+
`d^2 / k`, where `k` is the ideal edge length, and a falling temperature caps how far a node may move in a
|
|
213
|
+
single iteration.
|
|
214
|
+
|
|
215
|
+
```ts
|
|
216
|
+
import { createFruchtermanReingold } from "@graphty/webgpu-graph-algorithms";
|
|
217
|
+
|
|
218
|
+
// positions: the owner's stride-3 scene-unit array; NaN rows are seeded at load(), finite rows are kept
|
|
219
|
+
const positions = new Float32Array(3 * snapshot.nodeCount).fill(Number.NaN);
|
|
220
|
+
|
|
221
|
+
const sim = createFruchtermanReingold(ctx, { iterations: 50, cooling: "linear", seed: 42, dim: 2 });
|
|
222
|
+
sim.load(snapshot, positions); // an undirected snapshot
|
|
223
|
+
const stats = await sim.run({ batch: 8 }); // stops at `iterations` or when the layout settles
|
|
224
|
+
console.log(sim.iterationsDone, sim.settled, stats.temperature, stats.meanDisplacement);
|
|
225
|
+
|
|
226
|
+
sim.dispose(); // then ctx.release(snapshot) and ctx.dispose() when the graph goes away
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
| Option | Default | Meaning |
|
|
230
|
+
| --------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
231
|
+
| `k` | `null` | the ideal edge length. `null` (and `0`, and `NaN`) means `1 / sqrt(nodeCount)`, resolved at `load()`; anything else must be a finite number > 0 |
|
|
232
|
+
| `iterations` | `50` | an integer >= 0 and the budget `run()` stops at (`0` is settled on arrival). Under `cooling: "adaptive"` it is only a cap, and an option record that never set it gets `10000` instead |
|
|
233
|
+
| `cooling` | `"linear"` | `"linear"`: the temperature falls from `0.1` to `0` across `iterations`, so a run lasts the whole budget. `"adaptive"`: Yifan Hu's step control -- the temperature shrinks by `0.9` whenever the total force energy rose and grows by `1 / 0.9` after five consecutive falls -- so a run ends when the layout stops moving rather than at a fixed count |
|
|
234
|
+
| `fixed` | `null` | which nodes are pinned, applied at `load()`: a graph-format `NodeMask`, the name of a bool node column, or `null`, which takes the column with role `fixed` when the snapshot has one and pins nothing otherwise. Not a live option: `setParams({ fixed })` is `E_INVALID_ARGUMENT`, use `setFixed(mask)` |
|
|
235
|
+
| `dim`, `scale`, `center`, `seed` | `2`, `1`, `[0, 0, 0]`, `null` | as ForceAtlas2 |
|
|
236
|
+
| `settleThreshold`, `settleWindow`, `iterationsPerStep`, `maxInFlight` | `0.001`, `10`, `1`, `2` | as ForceAtlas2 |
|
|
237
|
+
|
|
238
|
+
`FR_DEFAULTS` is the frozen record of those defaults (`center` and `seed` are the shared ones and are not in
|
|
239
|
+
it). Every range error is `E_INVALID_ARGUMENT`, and `maxInFlight` cannot change after creation.
|
|
240
|
+
|
|
241
|
+
`sim.stats` is `FruchtermanReingoldStats`: everything in `LayoutStatsBase` -- `iteration`,
|
|
242
|
+
`meanDisplacement`, `rmsRadius`, `layoutRadius`, `centroid`, `repulsionTier` (`"exact"`), `msPerIteration`
|
|
243
|
+
and the grid fields, which are `null` -- plus `temperature`, the schedule's value for the last completed
|
|
244
|
+
iteration, and `trace`: one `{ temperature, meanDisplacement, settledCount }` record per iteration of the
|
|
245
|
+
last batch.
|
|
246
|
+
|
|
247
|
+
### The spring-electrical preset
|
|
248
|
+
|
|
249
|
+
ngraph.forcelayout's model with ngraph's own constants: Hooke springs along the edges, Coulomb repulsion
|
|
250
|
+
between every pair, and a velocity integrated with drag. A node's mass is `1 + degree / 3`, as ngraph
|
|
251
|
+
assigns it.
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
import { createSpringElectrical } from "@graphty/webgpu-graph-algorithms";
|
|
255
|
+
|
|
256
|
+
const sim = createSpringElectrical(ctx, { springLength: 10, timeStep: 0.5, seed: 42 });
|
|
257
|
+
sim.load(snapshot, positions);
|
|
258
|
+
const stats = await sim.run({ maxIter: 1000, batch: 8 }); // pass maxIter: this model has no iteration count
|
|
259
|
+
console.log(sim.iterationsDone, sim.settled, stats.kineticEnergy);
|
|
260
|
+
|
|
261
|
+
sim.dispose();
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
| Option | Default | Meaning |
|
|
265
|
+
| --------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
266
|
+
| `springLength` | `10` | the rest length of an edge; a finite number > 0 |
|
|
267
|
+
| `springCoefficient` | `0.8`, size-scaled | Hooke's constant. Left out or `null` it is ngraph's `0.8` times `min(1, 300 / nodeCount)`, applied once `nodeCount` is known at `load()`; a number you pass is used as given at every size |
|
|
268
|
+
| `gravity` | `-12`, size-scaled | ngraph's Coulomb constant, where NEGATIVE repels -- this is not ForceAtlas2's centre gravity. Left out or `null` it is ngraph's `-12` times the same factor. Any finite number is accepted |
|
|
269
|
+
| `dragCoefficient` | `0.9` | velocity damping; a finite number >= 0 |
|
|
270
|
+
| `timeStep` | `0.5` | the integrator's step; a finite number > 0 |
|
|
271
|
+
| `dim`, `scale`, `center`, `seed` | `2`, `1`, `[0, 0, 0]`, `null` | as ForceAtlas2 |
|
|
272
|
+
| `settleThreshold`, `settleWindow`, `iterationsPerStep`, `maxInFlight` | `0.001`, `10`, `1`, `2` | as ForceAtlas2 |
|
|
273
|
+
|
|
274
|
+
The size scaling exists because ngraph's constants were tuned for graphs of a few hundred nodes: on tens of
|
|
275
|
+
thousands the per-node forces are large enough that every node moves at the unit speed clamp and the layout
|
|
276
|
+
never comes to rest. `SE_DEFAULTS` is the frozen record of the unscaled constants.
|
|
277
|
+
|
|
278
|
+
This model has no iteration-count option, so `run()` without `maxIter` has no budget at all and returns only
|
|
279
|
+
when the layout settles. Pass `run({ maxIter })` unless that is what you want.
|
|
280
|
+
|
|
281
|
+
`sim.stats` is `SpringElectricalStats`: `LayoutStatsBase` plus `kineticEnergy`, and a `trace` of
|
|
282
|
+
`{ kineticEnergy, meanDisplacement, settledCount }`. The energy lags the positions by one iteration -- the
|
|
283
|
+
iteration that follows an integrate is the one that folds its energy -- so the first record after `load()`
|
|
284
|
+
carries `0` and record i carries the energy of iteration i - 1.
|
|
285
|
+
|
|
286
|
+
Both models appear in the Performance section below as row T-14 and in the `layout-fr` benchmark group.
|
|
287
|
+
|
|
288
|
+
## The `seedPositions` helper
|
|
289
|
+
|
|
290
|
+
Every simulation seeds the unplaced rows of your positions array at `load()`, so you never have to call this.
|
|
291
|
+
It is public for the case where you want the same starting layout without a simulation -- to draw the graph
|
|
292
|
+
before the first frame lands, to reproduce a run on the CPU, or to place a subgraph the same way twice.
|
|
293
|
+
|
|
294
|
+
```ts
|
|
295
|
+
import { fromEdgeArrays } from "@graphty/graph-format";
|
|
296
|
+
import { seedPositions } from "@graphty/webgpu-graph-algorithms";
|
|
297
|
+
|
|
298
|
+
const s = fromEdgeArrays({ directed: false, nodeCount: 3, src: new Uint32Array([0]), dst: new Uint32Array([1]) });
|
|
299
|
+
const positions = new Float32Array(3 * s.nodeCount).fill(Number.NaN);
|
|
300
|
+
|
|
301
|
+
seedPositions(s, positions, 42, 2, 1, null, "fa2");
|
|
302
|
+
// every row now holds x and y in [-1, 1) and z = 0; seed 42 gives this same array every time
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
The arguments are positional and all required: the snapshot, the owner's stride-3 scene-unit array (modified
|
|
306
|
+
in place, length `3 * nodeCount`), the LCG seed (`0` or `null` draws a random one, the CPU port's quirk kept
|
|
307
|
+
bit for bit), `dim` (`2` or `3`), the scene `scale` (> 0), the scene `center` (an `ArrayLike<number>`, or
|
|
308
|
+
`null` for the origin), and the draw range: `"fa2"` is `[-1, 1)` in layout units, `"fr"` is `[0, 1)`.
|
|
309
|
+
ForceAtlas2 and the spring preset seed with `"fa2"`, Fruchterman-Reingold with `"fr"`.
|
|
310
|
+
|
|
311
|
+
A row counts as unseeded when ANY of its first `dim` components is not finite, and only its non-finite
|
|
312
|
+
components are written -- a finite component is never changed and a fully finite row is never touched. In 2D
|
|
313
|
+
the third component of a row being seeded is set to `center[2]`. The draw box depends on what is already
|
|
314
|
+
there: when no row is fully finite the draw is the plain range per axis, and otherwise it is the `[min, max]`
|
|
315
|
+
box of the finite components, per axis, so new nodes land among the ones already placed instead of around the
|
|
316
|
+
origin. No random number is drawn at all when nothing needs seeding. A bad `dim`, a `positions` length other
|
|
317
|
+
than `3 * nodeCount`, a non-positive `scale`
|
|
318
|
+
or a non-finite `center` component is `E_INVALID_ARGUMENT`; the function returns nothing.
|
|
319
|
+
|
|
173
320
|
## Acquisition
|
|
174
321
|
|
|
175
322
|
### Node
|
|
@@ -244,6 +391,214 @@ ctx.dispose(); // destroys the device and lets the process exit
|
|
|
244
391
|
In a browser, `import { requestGpuContext } from "@graphty/webgpu-graph-algorithms/browser"` and `const ctx = await
|
|
245
392
|
requestGpuContext();` replace the first import and line; the rest is identical.
|
|
246
393
|
|
|
394
|
+
## Centrality and components
|
|
395
|
+
|
|
396
|
+
Six algorithm functions run on the device. Every one has the same shape -- `await fn(ctx, snapshot, options?)`
|
|
397
|
+
-- and every array that comes back is indexed by the snapshot's NODE INDEX (`0 .. nodeCount - 1`), never by
|
|
398
|
+
node id; the snapshot's id map turns an index back into the id it was built from. Every score result carries
|
|
399
|
+
`precision: "f32"`, so a reader can label what it is looking at.
|
|
400
|
+
|
|
401
|
+
The context uploads what an algorithm needs the first time it sees a snapshot and keeps it until
|
|
402
|
+
`ctx.release(snapshot)`: the CSR core for PageRank, HITS, eigenvector centrality and connected components,
|
|
403
|
+
the reverse adjacency for PageRank, HITS and Katz, the edge list for connected components. A second call on
|
|
404
|
+
the same snapshot pays no upload.
|
|
405
|
+
|
|
406
|
+
Each one is also a method of the object `createAccelerator(ctx)` returns -- `acc.pageRank(s, options)` and so
|
|
407
|
+
on, with `connectedComponents` answering to `weaklyConnectedComponents` as well -- which is how
|
|
408
|
+
`@graphty/algorithms` reaches them when a GPU accelerator is injected into it.
|
|
409
|
+
|
|
410
|
+
The PageRank example below is complete; the examples after it reuse its context `ctx` and its snapshot `s`
|
|
411
|
+
rather than repeating the setup.
|
|
412
|
+
|
|
413
|
+
Options every one of them accepts on top of its own (`GpuRunOptions`):
|
|
414
|
+
|
|
415
|
+
| Option | Default | Meaning |
|
|
416
|
+
| ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
417
|
+
| `dest` | unset | a preallocated result of exactly `nodeCount` elements over a plain `ArrayBuffer`: a `Float32Array` for scores, a `Uint32Array` for labels. Any other type or length is `E_INVALID_ARGUMENT { argument: "dest" }`; `hits` fills it with the hubs |
|
|
418
|
+
| `signal` | unset | an `AbortSignal`, checked before the first submit and after every batch; `E_ABORTED { batchId }` |
|
|
419
|
+
| `onProgress` | unset | `(done, total)` after every batch. `total` is `maxIterations`, `2 * maxIterations` for `hits` (it runs two chains) and `1` for `connectedComponents`, which reports once when it finishes |
|
|
420
|
+
|
|
421
|
+
A graph too large for the device is refused before any GPU work: when the arc arrays need more than one
|
|
422
|
+
storage binding they would need a windowed upload, which only `degree` executes, and each of these six throws
|
|
423
|
+
`E_TOO_LARGE { needed, limit, path: "windowed" }` instead. A node count whose dispatch does not fit
|
|
424
|
+
the device's 2D workgroup grid is `E_TOO_LARGE { path: "dispatch" }`, and scratch that does not fit the
|
|
425
|
+
device's budget is `E_OUT_OF_MEMORY { requested, resident, label }`.
|
|
426
|
+
|
|
427
|
+
### PageRank
|
|
428
|
+
|
|
429
|
+
PageRank is the stationary distribution of a surfer who follows an out-arc with probability `dampingFactor`
|
|
430
|
+
and teleports to a uniformly random node otherwise. `pageRank` runs NetworkX's iteration on the device: rank
|
|
431
|
+
is pulled along the reverse adjacency, out-weights normalise the push, and the mass sitting on nodes with no
|
|
432
|
+
out-arcs is redistributed through the teleport vector every iteration.
|
|
433
|
+
|
|
434
|
+
```ts
|
|
435
|
+
import { fromEdgeArrays } from "@graphty/graph-format";
|
|
436
|
+
import { pageRank } from "@graphty/webgpu-graph-algorithms";
|
|
437
|
+
import { createNodeGpuContext } from "@graphty/webgpu-graph-algorithms/node";
|
|
438
|
+
|
|
439
|
+
const ctx = await createNodeGpuContext();
|
|
440
|
+
const s = fromEdgeArrays({
|
|
441
|
+
directed: true,
|
|
442
|
+
nodeCount: 4,
|
|
443
|
+
src: new Uint32Array([0, 1, 2, 3]), // a tail into a 3-cycle: 0 -> 1 -> 2 -> 3 -> 1
|
|
444
|
+
dst: new Uint32Array([1, 2, 3, 1]),
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
const r = await pageRank(ctx, s, { dampingFactor: 0.85, tolerance: 1e-6 });
|
|
448
|
+
console.log(r.scores); // Float32Array(4), index-aligned, summing to 1; node 0 scores lowest
|
|
449
|
+
console.log(r.iterations, r.converged, r.danglingMass);
|
|
450
|
+
|
|
451
|
+
ctx.release(s); // when the graph goes away; ctx.dispose() at the end of the program
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
| Option | Default | Meaning |
|
|
455
|
+
| --------------- | ------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
456
|
+
| `dampingFactor` | `0.85` | the probability of following an arc; the rest teleports |
|
|
457
|
+
| `maxIterations` | `100` | an integer >= 1; anything else is `E_INVALID_ARGUMENT` |
|
|
458
|
+
| `tolerance` | `1e-6` | converged when the L1 change of the whole vector falls below `tolerance * nodeCount` (NetworkX's rule) |
|
|
459
|
+
| `weighted` | `true` | arc weights are the transition mass; `false` weighs every arc 1. A snapshot with no weights is unweighted either way |
|
|
460
|
+
|
|
461
|
+
`GpuPageRankResult` comes back: `scores` (one f32 per node, summing to 1 up to f32 rounding), `iterations`
|
|
462
|
+
(the FIRST iteration whose delta fell below the threshold, not the batch boundary the run stopped at, and
|
|
463
|
+
`maxIterations` when it never did), `converged`, `danglingMass` (the rank mass the last iteration found on
|
|
464
|
+
nodes with no positive out-weight and redistributed) and `precision`.
|
|
465
|
+
|
|
466
|
+
Directed or undirected both work: an undirected snapshot carries both directions, so the pull and the
|
|
467
|
+
normaliser see the same arcs, and the scores differ from the directed form's as they should. `nodeCount: 0`
|
|
468
|
+
returns an empty `scores` with `iterations: 0`, `converged: true` and does no GPU work. A graph with no arcs
|
|
469
|
+
at all makes every node dangling, so the teleport vector is already the fixed point: the call returns
|
|
470
|
+
`1 / nodeCount` everywhere with `iterations: 0` and `danglingMass: 1`. An isolated node inside a larger graph
|
|
471
|
+
is one dangling node -- it keeps its teleport share and its share of the redistributed mass -- and so is a
|
|
472
|
+
node whose out-arcs all weigh zero under `weighted: true`.
|
|
473
|
+
|
|
474
|
+
### Personalized PageRank
|
|
475
|
+
|
|
476
|
+
The same iteration with the uniform teleport vector replaced by yours, so the walk restarts where you say:
|
|
477
|
+
|
|
478
|
+
```ts
|
|
479
|
+
import { personalizedPageRank } from "@graphty/webgpu-graph-algorithms";
|
|
480
|
+
|
|
481
|
+
const bias = new Float32Array(s.nodeCount);
|
|
482
|
+
bias[0] = 1; // restart at node 0 only
|
|
483
|
+
const r = await personalizedPageRank(ctx, s, bias, { dampingFactor: 0.85 });
|
|
484
|
+
console.log(r.scores); // mass concentrated on what node 0 reaches
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
`personalization` is a `Float32Array` of one finite non-negative number per node, not all zero, and it is
|
|
488
|
+
normalised to sum 1 on the host before the run -- so unnormalised weights are fine. A wrong length, a
|
|
489
|
+
negative or non-finite entry, or a zero total is `E_INVALID_ARGUMENT { argument: "personalization" }`.
|
|
490
|
+
Options, result and edge cases are PageRank's, except that a graph with no arcs returns the normalised
|
|
491
|
+
personalization vector rather than `1 / nodeCount`.
|
|
492
|
+
|
|
493
|
+
### HITS
|
|
494
|
+
|
|
495
|
+
HITS scores each node twice: as a hub (it points at good authorities) and as an authority (good hubs point at
|
|
496
|
+
it). `hits` runs the CPU package's recurrence -- `a(i) = A^T norm(h(i-1))` and `h(i) = A norm(a(i-1))` from
|
|
497
|
+
uniform seeds -- as two interleaved chains on the device, then sum-normalises both vectors once on the host.
|
|
498
|
+
|
|
499
|
+
```ts
|
|
500
|
+
import { hits } from "@graphty/webgpu-graph-algorithms";
|
|
501
|
+
|
|
502
|
+
const cycle = fromEdgeArrays({
|
|
503
|
+
directed: true,
|
|
504
|
+
nodeCount: 2,
|
|
505
|
+
src: new Uint32Array([0, 1]),
|
|
506
|
+
dst: new Uint32Array([1, 0]),
|
|
507
|
+
});
|
|
508
|
+
const r = await hits(ctx, cycle);
|
|
509
|
+
console.log(r.hubs, r.authorities); // [0.5, 0.5] and [0.5, 0.5]
|
|
510
|
+
ctx.release(cycle);
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
The options are `maxIterations` (`100`), `tolerance` (`1e-6`) and `weighted` (`true`), with PageRank's
|
|
514
|
+
meanings. `GpuHitsResult` carries `hubs` and `authorities` (both f32, index-aligned, each summing to 1),
|
|
515
|
+
`iterations` (the larger of the two chains'), `converged` (both chains) and `precision`. `dest` receives the
|
|
516
|
+
hubs; the authorities always come back in a fresh array.
|
|
517
|
+
|
|
518
|
+
Direction is the point of the algorithm: an undirected snapshot has a symmetric adjacency, so the two vectors
|
|
519
|
+
come out the same. `nodeCount: 0` returns two empty arrays with `iterations: 0` and `converged: true`; a graph
|
|
520
|
+
with no arcs returns all zeros in both, since there is nothing to be a hub of.
|
|
521
|
+
|
|
522
|
+
### Eigenvector centrality
|
|
523
|
+
|
|
524
|
+
A node is central when central nodes point at it. The scores are the principal eigenvector of the adjacency
|
|
525
|
+
matrix, found by power iteration over the forward adjacency and L2-normalised once at the end.
|
|
526
|
+
|
|
527
|
+
```ts
|
|
528
|
+
import { eigenvectorCentrality } from "@graphty/webgpu-graph-algorithms";
|
|
529
|
+
|
|
530
|
+
const r = await eigenvectorCentrality(ctx, s, { maxIterations: 100, tolerance: 1e-6 });
|
|
531
|
+
console.log(r.scores, r.converged); // f32, index-aligned, L2 norm 1
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
The options are `maxIterations` (`100`), `tolerance` (`1e-6`) and `weighted` (`true`); convergence is
|
|
535
|
+
PageRank's L1 rule, a delta below `tolerance * nodeCount`. It returns `GpuScoresResult` -- `scores`,
|
|
536
|
+
`iterations`, `converged`, `precision` -- which is PageRank's result without `danglingMass`.
|
|
537
|
+
|
|
538
|
+
Directed or undirected both work. When a graph's components have different spectral radii the power iteration
|
|
539
|
+
converges on the dominant component's eigenvector and the others fall toward zero; that is a property of the
|
|
540
|
+
method, not of this implementation. `nodeCount: 0` is empty; a graph with no arcs, and an isolated node in a
|
|
541
|
+
larger graph, scores 0.
|
|
542
|
+
|
|
543
|
+
### Katz centrality
|
|
544
|
+
|
|
545
|
+
Katz counts every walk that ends at a node, discounted by its length: `x = alpha * A^T x + beta`, so a walk of
|
|
546
|
+
length L contributes `alpha^L`. Unlike eigenvector centrality it hands every node the floor `beta`, which
|
|
547
|
+
keeps a node with no incoming arcs from scoring zero.
|
|
548
|
+
|
|
549
|
+
```ts
|
|
550
|
+
import { katzCentrality } from "@graphty/webgpu-graph-algorithms";
|
|
551
|
+
|
|
552
|
+
const r = await katzCentrality(ctx, s, { alpha: 0.1, beta: 1 });
|
|
553
|
+
console.log(r.scores); // f32, index-aligned, L2-normalised
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
| Option | Default | Meaning |
|
|
557
|
+
| --------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
558
|
+
| `alpha` | `0.1` | the attenuation per step. Convergence needs it below the reciprocal of the largest eigenvalue; the package checks only that it is finite |
|
|
559
|
+
| `beta` | `1` | the constant every node is given each iteration |
|
|
560
|
+
| `maxIterations` | `100` | as above |
|
|
561
|
+
| `tolerance` | `1e-6` | as above |
|
|
562
|
+
| `weighted` | `true` | as above |
|
|
563
|
+
|
|
564
|
+
A non-finite `alpha` or `beta` is `E_INVALID_ARGUMENT`. The result is `GpuScoresResult`, L2-normalised on the
|
|
565
|
+
host with no per-iteration normaliser on the device. Walks arrive along the reverse adjacency, so direction
|
|
566
|
+
matters. `nodeCount: 0` is empty; with no arcs every node holds `beta` alone, which after normalisation is
|
|
567
|
+
`1 / sqrt(nodeCount)` each.
|
|
568
|
+
|
|
569
|
+
### Connected components
|
|
570
|
+
|
|
571
|
+
`connectedComponents` labels the WEAK components: it walks the edge list, so an edge joins its two endpoints
|
|
572
|
+
whether or not the snapshot is directed, and the directed and undirected forms of one edge set give identical
|
|
573
|
+
labels. The kernel is GAP's Afforest -- sampled link rounds, then each edge once, then a final compress.
|
|
574
|
+
|
|
575
|
+
```ts
|
|
576
|
+
import { connectedComponents } from "@graphty/webgpu-graph-algorithms";
|
|
577
|
+
|
|
578
|
+
const g = fromEdgeArrays({
|
|
579
|
+
directed: false,
|
|
580
|
+
nodeCount: 4,
|
|
581
|
+
src: new Uint32Array([0, 1]), // the path 0 - 1 - 2, with node 3 on its own
|
|
582
|
+
dst: new Uint32Array([1, 2]),
|
|
583
|
+
});
|
|
584
|
+
const r = await connectedComponents(ctx, g);
|
|
585
|
+
console.log(r.labels); // Uint32Array [0, 0, 0, 1]
|
|
586
|
+
console.log(r.count); // 2
|
|
587
|
+
console.log(r.groups()); // [Uint32Array [0, 1, 2], Uint32Array [3]]
|
|
588
|
+
ctx.release(g);
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
`labels` holds one label per node index. By default they are renumbered dense `0 .. count - 1` in first-seen
|
|
592
|
+
index order, which makes them identical to the labels `@graphty/algorithms` produces for the same graph;
|
|
593
|
+
`renumber: false` returns the raw root indices instead -- the same partition with arbitrary label values, and
|
|
594
|
+
the same `count`. `groups()` builds the member lists on the first call and caches them, index-aligned with
|
|
595
|
+
the labels in that same first-seen order.
|
|
596
|
+
|
|
597
|
+
`renumber` (default `true`) is the only option besides the shared three. `nodeCount: 0` gives empty labels,
|
|
598
|
+
`count: 0` and no GPU work; a graph with no arcs gives every node its own block, so `labels[v] === v` and
|
|
599
|
+
`count === nodeCount`, which is what an isolated node gets inside a larger graph too. Self-loops and repeated
|
|
600
|
+
edges change nothing: the link step is idempotent.
|
|
601
|
+
|
|
247
602
|
## Errors
|
|
248
603
|
|
|
249
604
|
Every condition the package detects itself is a `WebGpuGraphError` with a stable `code`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphty/webgpu-graph-algorithms",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "WebGPU-accelerated graph algorithms and layouts over the @graphty/graph-format snapshot, for Node (Dawn) and browsers",
|
|
5
5
|
"author": "Adam Powers <apowers@ato.ms>",
|
|
6
6
|
"type": "module",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"sideEffects": false,
|
|
27
27
|
"files": [
|
|
28
28
|
"dist/",
|
|
29
|
+
"!dist/*.tsbuildinfo",
|
|
29
30
|
"src/",
|
|
30
31
|
"README.md",
|
|
31
32
|
"LICENSE"
|
|
@@ -60,10 +61,10 @@
|
|
|
60
61
|
"homepage": "https://github.com/graphty-org/graphty-monorepo/tree/master/webgpu-graph-algorithms#readme",
|
|
61
62
|
"dependencies": {
|
|
62
63
|
"@webgpu/types": "^0.1.72",
|
|
63
|
-
"@graphty/graph-format": "^1.0.
|
|
64
|
+
"@graphty/graph-format": "^1.0.3"
|
|
64
65
|
},
|
|
65
66
|
"peerDependencies": {
|
|
66
|
-
"@graphty/algorithms": "^1.0.0",
|
|
67
|
+
"@graphty/algorithms": "^1.0.0 || ^2.0.0",
|
|
67
68
|
"@graphty/graph-format": "^1.0.0",
|
|
68
69
|
"@graphty/layout": "^1.7.0",
|
|
69
70
|
"webgpu": ">=0.4.0 <1.0.0"
|
|
@@ -92,8 +93,8 @@
|
|
|
92
93
|
"vite": "^7.0.5",
|
|
93
94
|
"vitest": "^3.2.4",
|
|
94
95
|
"webgpu": "0.4.0",
|
|
95
|
-
"@graphty/layout": "^1.8.
|
|
96
|
-
"@graphty/algorithms": "^
|
|
96
|
+
"@graphty/layout": "^1.8.2",
|
|
97
|
+
"@graphty/algorithms": "^2.0.1"
|
|
97
98
|
},
|
|
98
99
|
"scripts": {
|
|
99
100
|
"build": "tsc -p tsconfig.build.json",
|
|
@@ -112,7 +113,7 @@
|
|
|
112
113
|
"test:browser:ci": "node scripts/run-browser-project.js",
|
|
113
114
|
"test:limits": "vitest run --project=node-limits",
|
|
114
115
|
"coverage": "vitest run --project=node --project=node-device-errors --coverage",
|
|
115
|
-
"coverage:preview": "npx serve coverage -p
|
|
116
|
+
"coverage:preview": "npx serve coverage -p ${PORT:?start it through servherd, which sets PORT}",
|
|
116
117
|
"bench": "tsx benchmarks/run.ts",
|
|
117
118
|
"bench:compare": "node scripts/bench-compare.js",
|
|
118
119
|
"benchmark": "tsx benchmarks/run.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../graph-format/dist/src/constants.d.ts","../../graph-format/dist/src/errors.d.ts","../../graph-format/dist/src/columns/table.d.ts","../../graph-format/dist/src/types/columns.d.ts","../../graph-format/dist/src/ids/node-id-map.d.ts","../../graph-format/dist/src/types/internal.d.ts","../../graph-format/dist/src/snapshot/graph-meta.d.ts","../../graph-format/dist/src/snapshot/graph-snapshot.d.ts","../../graph-format/dist/src/types/wire.d.ts","../../graph-format/dist/src/types/snapshot.d.ts","../../graph-format/dist/src/types/builder.d.ts","../../graph-format/dist/src/types/index.d.ts","../../graph-format/dist/src/builder/graph-builder.d.ts","../../graph-format/dist/src/columns/dictionary.d.ts","../../graph-format/dist/src/columns/column.d.ts","../../graph-format/dist/src/columns/remap.d.ts","../../graph-format/dist/src/builder/arena.d.ts","../../graph-format/dist/src/populate/from-csr.d.ts","../../graph-format/dist/src/populate/from-edge-arrays.d.ts","../../graph-format/dist/src/populate/from-records.d.ts","../../graph-format/dist/src/snapshot/derived.d.ts","../../graph-format/dist/src/snapshot/views.d.ts","../../graph-format/dist/src/util/mask.d.ts","../../graph-format/dist/src/util/typed-array.d.ts","../../graph-format/dist/src/wire/bytes.d.ts","../../graph-format/dist/src/wire/from-wire.d.ts","../../graph-format/dist/src/index.d.ts","../../graph-format/dist/graph-format.d.ts","../src/constants.ts","../src/errors.ts","../src/types/context.ts","../src/device/acquire.ts","../src/device/caps.ts","../src/device/error-scope.ts","../src/device/lost.ts","../src/types/memory.ts","../src/kernel/dispatch.ts","../src/device/webgpu-constants.ts","../src/kernel/prelude.ts","../src/kernel/struct-block.ts","../src/kernel/wgsl.ts","../src/kernel/kernel.ts","../src/kernel/pipeline-cache.ts","../src/memory/readback.ts","../src/kernel/batch.ts","../src/kernel/profiler.ts","../src/memory/lease.ts","../src/memory/buffer-pool.ts","../src/memory/upload-plan.ts","../src/memory/residency.ts","../src/context.ts","../src/wgsl/counting-scatter.wgsl.ts","../src/wgsl/degree.wgsl.ts","../src/wgsl/fa2-attraction.wgsl.ts","../src/wgsl/fa2-integrate.wgsl.ts","../src/wgsl/fa2-repulsion-exact.wgsl.ts","../src/wgsl/fa2-speed-finalize.wgsl.ts","../src/wgsl/fa2-stats-finalize.wgsl.ts","../src/wgsl/fa2-to-scene.wgsl.ts","../src/wgsl/fill.wgsl.ts","../src/wgsl/grid-cell-key.wgsl.ts","../src/wgsl/grid-centroid.wgsl.ts","../src/wgsl/grid-centroid-hub.wgsl.ts","../src/wgsl/grid-downsample.wgsl.ts","../src/wgsl/grid-far-field.wgsl.ts","../src/wgsl/grid-near-field.wgsl.ts","../src/wgsl/histogram.wgsl.ts","../src/wgsl/indirect-finalize.wgsl.ts","../src/wgsl/pr-finalize.wgsl.ts","../src/wgsl/pr-scale.wgsl.ts","../src/wgsl/radix-hist.wgsl.ts","../src/wgsl/radix-scatter.wgsl.ts","../src/wgsl/reduce.wgsl.ts","../src/wgsl/scan-add.wgsl.ts","../src/wgsl/scan-block.wgsl.ts","../src/wgsl/segmented-reduce.wgsl.ts","../src/wgsl/spmv-pull.wgsl.ts","../src/wgsl/wcc-compress.wgsl.ts","../src/wgsl/wcc-link-edges.wgsl.ts","../src/wgsl/wcc-link-sample.wgsl.ts","../src/wgsl/wcc-sample.wgsl.ts","../src/kernels.ts","../src/primitives/core-shape.ts","../src/kernel/uniform-ring.ts","../src/primitives/reduce.ts","../src/primitives/scan.ts","../src/primitives/verify.ts","../src/types/algorithms.ts","../src/types/run.ts","../src/algorithms/scope.ts","../src/algorithms/components.ts","../src/primitives/segmented-reduce.ts","../src/primitives/spmv.ts","../src/algorithms/pagerank.ts","../src/algorithms/power-iteration.ts","../src/algorithms/spectral.ts","../../algorithms/dist/src/types/index.d.ts","../../algorithms/dist/src/core/graph.d.ts","../../algorithms/dist/src/algorithms/traversal/bfs-unified.d.ts","../../algorithms/dist/src/algorithms/traversal/bfs.d.ts","../../algorithms/dist/src/algorithms/traversal/dfs.d.ts","../../algorithms/dist/src/algorithms/traversal/index.d.ts","../../algorithms/dist/src/algorithms/shortest-path/bellman-ford.d.ts","../../algorithms/dist/src/algorithms/shortest-path/dijkstra.d.ts","../../algorithms/dist/src/algorithms/shortest-path/floyd-warshall.d.ts","../../algorithms/dist/src/algorithms/shortest-path/index.d.ts","../../algorithms/dist/src/algorithms/centrality/betweenness.d.ts","../../algorithms/dist/src/algorithms/centrality/closeness.d.ts","../../algorithms/dist/src/algorithms/centrality/degree.d.ts","../../algorithms/dist/src/algorithms/centrality/delta-pagerank.d.ts","../../algorithms/dist/src/algorithms/centrality/eigenvector.d.ts","../../algorithms/dist/src/algorithms/centrality/hits.d.ts","../../algorithms/dist/src/algorithms/centrality/katz.d.ts","../../algorithms/dist/src/algorithms/centrality/pagerank.d.ts","../../algorithms/dist/src/algorithms/centrality/index.d.ts","../../algorithms/dist/src/algorithms/components/connected.d.ts","../../algorithms/dist/src/algorithms/components/index.d.ts","../../algorithms/dist/src/algorithms/mst/kruskal.d.ts","../../algorithms/dist/src/algorithms/mst/prim.d.ts","../../algorithms/dist/src/algorithms/mst/index.d.ts","../../algorithms/dist/src/algorithms/community/girvan-newman.d.ts","../../algorithms/dist/src/algorithms/community/label-propagation.d.ts","../../algorithms/dist/src/algorithms/community/leiden.d.ts","../../algorithms/dist/src/algorithms/community/louvain.d.ts","../../algorithms/dist/src/algorithms/community/index.d.ts","../../algorithms/dist/src/pathfinding/astar.d.ts","../../algorithms/dist/src/pathfinding/utils.d.ts","../../algorithms/dist/src/pathfinding/index.d.ts","../../algorithms/dist/src/flow/ford-fulkerson.d.ts","../../algorithms/dist/src/flow/min-cut.d.ts","../../algorithms/dist/src/flow/index.d.ts","../../algorithms/dist/src/clustering/hierarchical.d.ts","../../algorithms/dist/src/clustering/k-core.d.ts","../../algorithms/dist/src/clustering/mcl.d.ts","../../algorithms/dist/src/clustering/spectral.d.ts","../../algorithms/dist/src/clustering/index.d.ts","../../algorithms/dist/src/algorithms/matching/bipartite.d.ts","../../algorithms/dist/src/algorithms/matching/isomorphism.d.ts","../../algorithms/dist/src/algorithms/matching/index.d.ts","../../algorithms/dist/src/link-prediction/common-neighbors.d.ts","../../algorithms/dist/src/link-prediction/adamic-adar.d.ts","../../algorithms/dist/src/link-prediction/index.d.ts","../../algorithms/dist/src/algorithms/index.d.ts","../../algorithms/dist/src/research/sync.d.ts","../../algorithms/dist/src/research/terahac.d.ts","../../algorithms/dist/src/research/grsbm.d.ts","../../algorithms/dist/src/research/index.d.ts","../../algorithms/dist/src/data-structures/priority-queue.d.ts","../../algorithms/dist/src/data-structures/union-find.d.ts","../../algorithms/dist/src/data-structures/index.d.ts","../../algorithms/dist/src/optimized/csr-graph.d.ts","../../algorithms/dist/src/optimized/graph-adapter.d.ts","../../algorithms/dist/src/optimized/bit-packed.d.ts","../../algorithms/dist/src/optimized/direction-optimized-bfs.d.ts","../../algorithms/dist/src/optimized/index.d.ts","../../algorithms/dist/src/indexed/bfs.d.ts","../../algorithms/dist/src/indexed/common-neighbors.d.ts","../../algorithms/dist/src/indexed/components.d.ts","../../algorithms/dist/src/indexed/dijkstra.d.ts","../../algorithms/dist/src/indexed/mst.d.ts","../../algorithms/dist/src/indexed/pagerank.d.ts","../../algorithms/dist/src/indexed/structures/arc-source.d.ts","../../algorithms/dist/src/indexed/structures/min-heap.d.ts","../../algorithms/dist/src/indexed/structures/union-find.d.ts","../../algorithms/dist/src/indexed/structures/index.d.ts","../../algorithms/dist/src/indexed/index.d.ts","../../algorithms/dist/src/indexed/to-snapshot.d.ts","../../algorithms/dist/src/indexed/accelerator.d.ts","../../algorithms/dist/src/index.d.ts","../../algorithms/dist/algorithms.d.ts","../../layout/dist/src/types/embedding.d.ts","../../layout/dist/src/types/graph.d.ts","../../layout/dist/src/types/layout.d.ts","../../layout/dist/src/types/index.d.ts","../../layout/dist/src/utils/rescale.d.ts","../../layout/dist/src/layouts/basic/random.d.ts","../../layout/dist/src/layouts/basic/index.d.ts","../../layout/dist/src/layouts/force-directed/arf.d.ts","../../layout/dist/src/layouts/force-directed/forceatlas2.d.ts","../../layout/dist/src/layouts/force-directed/fruchterman-reingold.d.ts","../../layout/dist/src/algorithms/optimization/types.d.ts","../../layout/dist/src/algorithms/optimization/kamada-kawai-solver.d.ts","../../layout/dist/src/algorithms/optimization/index.d.ts","../../layout/dist/src/layouts/force-directed/kamada-kawai.d.ts","../../layout/dist/src/layouts/force-directed/spring.d.ts","../../layout/dist/src/layouts/force-directed/index.d.ts","../../layout/dist/src/layouts/geometric/circular.d.ts","../../layout/dist/src/layouts/geometric/shell.d.ts","../../layout/dist/src/layouts/geometric/spiral.d.ts","../../layout/dist/src/layouts/geometric/index.d.ts","../../layout/dist/src/layouts/hierarchical/bfs.d.ts","../../layout/dist/src/layouts/hierarchical/bipartite.d.ts","../../layout/dist/src/layouts/hierarchical/multipartite.d.ts","../../layout/dist/src/layouts/hierarchical/index.d.ts","../../layout/dist/src/layouts/specialized/planar.d.ts","../../layout/dist/src/layouts/specialized/spectral.d.ts","../../layout/dist/src/layouts/specialized/index.d.ts","../../layout/dist/src/layouts/index.d.ts","../../layout/dist/src/simulation/types.d.ts","../../layout/dist/src/simulation/create-simulation.d.ts","../../layout/dist/src/simulation/forceatlas2.d.ts","../../layout/dist/src/simulation/fruchterman-reingold.d.ts","../../layout/dist/src/simulation/inputs.d.ts","../../layout/dist/src/simulation/seed.d.ts","../../layout/dist/src/simulation/snapshot.d.ts","../../layout/dist/src/simulation/index.d.ts","../../layout/dist/src/generators/basic.d.ts","../../layout/dist/src/generators/bipartite.d.ts","../../layout/dist/src/generators/grid.d.ts","../../layout/dist/src/generators/random.d.ts","../../layout/dist/src/generators/scale-free.d.ts","../../layout/dist/src/generators/index.d.ts","../../layout/dist/layout.d.ts","../src/types/options.ts","../src/types/accelerator.ts","../src/types/layout.ts","../src/primitives/histogram.ts","../src/primitives/radix-sort.ts","../src/primitives/grid.ts","../src/layouts/inputs.ts","../src/layouts/seed.ts","../src/layouts/force-simulation.ts","../src/layouts/model-common.ts","../src/layouts/repulsion-exact.ts","../src/primitives/grid-pyramid.ts","../src/layouts/repulsion-grid.ts","../src/layouts/forceatlas2.ts","../src/layouts/fruchterman-reingold.ts","../src/layouts/spring-electrical.ts","../src/accelerator.ts","../../node_modules/.pnpm/@webgpu+types@0.1.72/node_modules/@webgpu/types/dist/index.d.ts","../src/algorithms/degree.ts","../src/layouts/calibrate.ts","../src/index.ts","../src/browser/index.ts","../../node_modules/.pnpm/webgpu@0.4.0/node_modules/webgpu/types.d.ts","../src/node/index.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/compatibility/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/globals.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/web-globals/events.d.ts","../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/assert.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/assert/strict.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/async_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/buffer.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/child_process.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/cluster.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/console.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/constants.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/crypto.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/dgram.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/dns.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/dns/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/domain.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/events.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/fs.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/fs/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/http.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/http2.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/https.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/inspector.generated.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/module.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/net.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/os.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/path.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/perf_hooks.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/process.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/punycode.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/querystring.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/readline.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/readline/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/repl.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/sea.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/stream.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/stream/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/stream/consumers.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/stream/web.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/string_decoder.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/test.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/timers.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/timers/promises.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/tls.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/trace_events.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/tty.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/url.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/util.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/v8.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/vm.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/wasi.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/worker_threads.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/zlib.d.ts","../../node_modules/.pnpm/@types+node@20.19.27/node_modules/@types/node/index.d.ts"],"fileIdsList":[[216,290,337],[144,145,290,337],[154,155,156,157,158,159,160,161,290,337],[168,169,170,171,290,337],[145,290,337],[163,290,337],[149,153,162,164,167,172,175,178,183,186,189,290,337],[184,185,290,337],[165,166,290,337],[144,145,165,290,337],[150,151,152,290,337],[146,290,337],[147,148,290,337],[179,180,181,182,290,337],[144,290,337],[195,196,290,337],[290,337],[176,177,290,337],[144,145,190,194,197,202,203,204,205,206,207,208,213,214,215,290,337],[75,203,206,207,208,290,337],[75,290,337],[203,204,205,206,207,208,212,290,337],[209,210,211,290,337],[75,145,290,337],[144,145,187,290,337],[187,188,290,337],[144,198,290,337],[144,145,198,290,337],[198,199,200,201,290,337],[173,174,290,337],[191,192,193,290,337],[74,290,337],[59,290,337],[53,59,61,290,337],[50,59,290,337],[48,49,50,51,52,55,56,57,58,60,62,63,65,66,67,68,69,70,71,72,73,290,337],[55,59,64,290,337],[55,59,290,337],[53,59,290,337],[48,53,54,59,290,337],[51,57,290,337],[50,290,337],[51,56,57,58,290,337],[48,51,52,55,56,290,337],[49,55,59,290,337],[221,222,245,253,259,290,337],[228,229,290,337],[221,228,290,337],[221,290,337],[254,255,256,257,258,290,337],[223,290,337],[225,226,227,231,232,290,337],[221,230,290,337],[234,235,236,290,337],[238,239,240,290,337],[224,233,237,241,244,290,337],[242,243,290,337],[246,290,337],[75,246,290,337],[246,247,248,249,250,251,252,290,337],[75,221,290,337],[218,219,220,290,337],[219,290,337],[290,334,337],[290,336,337],[337],[290,337,342,370],[290,337,338,343,348,356,367,378],[290,337,338,339,348,356],[285,286,287,290,337],[290,337,340,379],[290,337,341,342,349,357],[290,337,342,367,375],[290,337,343,345,348,356],[290,336,337,344],[290,337,345,346],[290,337,347,348],[290,336,337,348],[290,337,348,349,350,367,378],[290,337,348,349,350,363,367,370],[290,337,345,348,351,356,367,378],[290,337,348,349,351,352,356,367,375,378],[290,337,351,353,367,375,378],[288,289,290,291,292,293,294,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384],[290,337,348,354],[290,337,355,378,383],[290,337,345,348,356,367],[290,337,357],[290,337,358],[290,336,337,359],[290,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384],[290,337,361],[290,337,362],[290,337,348,363,364],[290,337,363,365,379,381],[290,337,348,367,368,370],[290,337,369,370],[290,337,367,368],[290,337,370],[290,337,371],[290,334,337,367,372],[290,337,348,373,374],[290,337,373,374],[290,337,342,356,367,375],[290,337,376],[290,337,356,377],[290,337,351,362,378],[290,337,342,379],[290,337,367,380],[290,337,355,381],[290,337,382],[290,332,337],[290,332,337,348,350,359,367,370,378,381,383],[290,337,367,384],[290,304,308,337,378],[290,304,337,367,378],[290,299,337],[290,301,304,337,375,378],[290,337,356,375],[290,337,385],[290,299,337,385],[290,301,304,337,356,378],[290,296,297,300,303,337,348,367,378],[290,304,311,337],[290,296,302,337],[290,304,325,326,337],[290,300,304,337,370,378,385],[290,325,337,385],[290,298,299,337,385],[290,304,337],[290,298,299,300,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,326,327,328,329,330,331,337],[290,304,319,337],[290,304,311,312,337],[290,302,304,312,313,337],[290,303,337],[290,296,299,304,337],[290,304,308,312,313,337],[290,308,337],[290,302,304,307,337,378],[290,296,301,304,311,337],[290,337,367],[290,299,304,325,337,383,385],[75,98,135,138,141,143,261,262,263,274,275,276,290,337],[75,76,77,83,84,92,97,98,129,130,134,135,136,137,290,337],[75,77,83,84,85,87,98,129,130,134,136,290,337],[75,76,77,83,84,92,97,98,129,130,134,135,136,137,139,140,290,337],[75,76,77,83,84,92,97,98,129,130,134,137,140,290,337],[98,131,132,290,337],[75,77,83,98,135,136,142,290,337],[77,78,98,278,290,337],[75,76,77,78,79,80,81,82,90,91,93,95,97,290,337],[77,78,290,337],[76,77,78,79,290,337],[76,77,290,337],[77,290,337],[76,77,78,79,93,98,134,135,136,138,141,143,261,262,263,268,274,275,276,277,278,279,280,290,337],[77,81,82,83,91,93,290,337],[76,77,78,290,337],[76,77,83,84,88,290,337],[77,78,81,88,89,290,337],[75,76,77,290,337],[76,85,92,290,337],[77,86,290,337],[76,77,81,83,85,87,290,337],[77,78,80,85,86,87,290,337],[76,77,83,87,88,97,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,290,337],[75,77,98,134,263,268,274,290,337],[75,76,77,78,83,85,87,88,90,92,93,95,97,98,129,130,131,134,261,263,267,268,290,337],[75,76,77,83,84,85,87,88,89,92,98,129,130,261,263,266,267,269,270,271,273,290,337],[75,76,77,83,84,85,87,88,89,92,98,129,130,261,263,266,269,270,273,274,290,337],[75,77,290,337],[77,83,84,87,89,129,130,269,290,337],[77,78,83,84,88,89,90,129,290,337],[76,77,78,83,84,85,87,88,89,90,94,95,129,132,266,269,271,272,290,337],[76,77,81,94,290,337],[77,85,95,290,337],[76,77,81,85,290,337],[75,76,77,78,81,83,85,96,290,337],[75,76,77,78,83,290,337],[77,78,98,278,283,290,337],[77,83,97,290,337],[77,83,84,89,129,132,266,290,337],[76,77,83,84,89,129,132,133,263,264,265,290,337],[77,83,84,89,129,132,133,290,337],[76,77,83,84,89,129,132,133,290,337],[76,77,78,83,84,87,89,90,95,129,290,337],[77,83,84,89,129,132,290,337],[77,83,84,89,97,129,130,132,290,337],[77,78,83,131,132,133,290,337],[75,98,135,217,260,261,263,290,337],[77,98,290,337],[75,262,290,337],[75,260,290,337]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"5ae6687d490b01491b89a3c4d42e6783800dfafef153296a3b2c6657d604547a","99f359625a3a1df763e02d755d9702bc3ed40eeb4505f07707a01f2f6c5792ad","bd32c3b5c60e7f36345111f72fcc7632e1c72ae337bee4e3510532e1d21783ca","76a020b93fc82091823d3be765921797015cfbfbbec1347ea732c006c8561312","5b0c89a44b7e31c5feea030a26d44259581cebd05e7bb0d2fb515a22175b773c","a57ad5f7a360e4f43b14e2167ea8166b8c3132c05b456ae77dd435b506324ded","b347146e100645250c33cf3559ce838862d3106e63a6a5d6b193ec598230658e","190a47e3ff72c94431576d393185bb36e94e0623fe7476aa2e818f366ddedb70","fd9346cd933acd58596f5b5b471b3f5756248f154807e6a68e2733bdca0f80eb","e029d7294007461b3b3c67de45e8e27939a548bb55219291a0d519a996120bdf","3ac3e6a0e5d8bf77c360ac389db89a05ca2f5be5cd06556ebb07bdd215d7f45f","1282720cef65236bae0bc5d19c15b5edfd8e9f07660770c4472ddb9c46f2c4a4","1358984f5b045ec723e24a27f6ecddc652b662c42ca6af54d9f69d5c0a927573","065afc8333aa091f2de0eb8241200719482d7da934d4c6137a36de6333974367","5757b235853f6834740596942fef797d198954d4e48856687e61172eee190236","d791e3b8c587768e94a9ee0be3471abe547a920ef44c9530e1e3c3614c25e682","6e490c2abee951affea84d0daa090dfdd5598137d59ffe3c4fd3fd74947fdc77","46ad24a96e76bc9b1b16c0aa7de8f68952ad840362ac542aead149e3155750aa","214bb559255860aed23470bab53b0a0b8229e9f0e8eef31d99ee52c1f5efa7ec","474150b68ff5c25347286b81c4d2349b018c8811952770edd9136a585c404a92","4c48bc8ffac5f7d83add78cf627cfd4eaa29a77fdcdd0529903c7d713a8eb5fd","05eb82f658c048afb7e0ed357c315882625b5981658f52331795812fb6fa8388","14e84217fd46ed670066a71fae8ac4080004540be2cfe730d159db85fb638f36","aae558e1a337b29f9a536ba8fc65600c2f3b39a7d131ad15e1d0559242c3f16e","398159cded96619d57c7f30fceb7150604f730c8d2797af916b3c68033993b3c","b6edc132731bd9afbab687ffde0ef0f8efae7fcbc5253cd2e1262d602b2564d2","73b891063fd0022398bd2678e08e3b46533a9ec4a1302af56f52b3fcccc4623b","dc191dc98c992e087105745a1646d87d4a1f620ddb32a74ff871950a8c8faa64",{"version":"d16373930511eba905598b5fe39269b1ee5a60b7f84d967e4c72fcd3b552a2a9","signature":"66f74eaac179cc1efbbaf1f237d9f7181887a51e621434ebd48487701cc42d1a"},{"version":"85d36e64db436b85dfb9f7048103048ee57746e0676ae0b930377b0d7e2bc59f","signature":"94448bf572b85a709a1c8abf7cf4622009478d30693531d6df15235a9037d4fa"},{"version":"309247966169aa7756bcebc72685813c83bf63adc77101b73c7214455593156e","signature":"66eac16d989786c5be261fee405ece2d4dae3c7bcaffbff023fa39d1ebd0db22"},{"version":"74f98964bff05ce8d699b754e9775c9aae6d64eb2c3656da253a38d6fb2fb4b8","signature":"a5bcc4960ae1e8ba0521fded72bc0730a01c6c7e8e080e65058549329168e487"},{"version":"3332c77ce38827edebe7349e3c033418f2890932558fd74fcfe431c5dbf86358","signature":"19243826ee128bf95166f284f03a66641f70820c9c814497597966b25cfbbba2"},{"version":"e18026e51ca61627eec477568b5a2751e310ec31ab1f9ee2473415b0bb24e2cd","signature":"73a4aed96d5ce8aa85e2a89708b14cbb691c90ce644ef5f68b3dca86c4faff19"},{"version":"6a17435c6667d2c696a6075d1fb30e14ae86705117b4f27288824da0ec327c4a","signature":"f0f9bbc9628dc00a02e1c7856de2228339153ca943cf56102e2df4a479da5369"},{"version":"80704ff93482dffc854485c3c84264ec702464ff0f9addf680e61c46eb554514","signature":"5c90e01f124600ea318e9e831b7caf7a0f2b0f04058c93579cb76137ca8128f7"},{"version":"9ab050fb2e84fe7a05542f48661d269facac8d1624461e7fae1ab33c656dee02","signature":"afa13a6ab5df7846d1e0c3f7343bb9b8bb5638e2725e1b32f9ae83c9e321e1bb"},{"version":"97128429ff8774fee6eb801119c9a543e20fc8f73b37f114d3553291c8878f9e","signature":"7f2fb8fc4c82cf93cfe20ddb812a44cfa1b2e93a49cd1b71794463242d018695"},{"version":"73ca9b8d27b94cd077166d550022135ae1692f58068198ce1d9a750867a4c235","signature":"fded759c9476a28b9da6c4414b2bab3e339a6f9b9f0130760619dd0bad97b3be"},{"version":"587e2fb5e94525dea9bd0c891e62d5a565598a62fd8cede2c832a1ebe9ed9969","signature":"d3ec601e53a3833719adcc96e8eb9cb2e8e3857fbefbb9429d30e86c93d867ea"},{"version":"1e2fb5b8f86c9cfd54ba25f2744bef2fb24e893287a52e4d542bba852b35f8c7","signature":"0554e59191a70e53e7a9e4b3a654028b402ca99ebc4d0fe94b2350f5a1be8072"},{"version":"35a3a7cfdc214a60305ecbd6eda35f342018c4669d0bd226055d3c00b7ac2be1","signature":"25f9eea8718bd955da6719668661e79c42b90802154eb1d902aeec3d83d702a6"},{"version":"d41537e90fe49997d4c57470894fda1bd4e3295eeef14bcf5b73ac995a38108b","signature":"0bd8d295447602bea8a7bc44eb9f8d0fb228ced0a66d5d02d1929e9d2a58c533"},{"version":"2e3d25cce5b90363d7aa123e7261b63f76df4ab20b9075d1a3eba3cbad9e7aca","signature":"9ce6a66f5bd6c444545be8d98aeb5c940357ed5172a19db592016c0cc03ec8b2"},{"version":"790ae3cb1b0d2206c2de322c606e4e5bc7d65e78f93548dcb87029f9d8f0a465","signature":"46d2790b58a54c305d71a88002e60559480825f6c55393c91d05a4d4ae38ee28"},{"version":"648e3e91bef1ccf6c90a9757c3f64381a091d2c82e59bb56444bfd921e9984a8","signature":"fdfff19bfc5a699d093e0689282397f1bab0ec9fbc9a92dfc550d9a888f68285"},{"version":"603be59b781de6cf97a4a8dde479f6200cfa290fa65e38f576ed13b46cf73311","signature":"8a2acc65b4c579a59bf34dea8ee8ad60d7adee257293fd311d54d670b4bd86aa"},{"version":"fb30015ddf837ed234d4af41e8a0ac981617c203755c13765a5b262eb53dd359","signature":"1f197619c8c5c467c4ce6e4987c89265541150a662adc9d70cd90dcf593beef3"},{"version":"2dc0620a3149c16e7e3b4181b89024352192f6a8a52ce6515b759ac947919900","signature":"f6c67f55c177f0857ecd2d0e8e123a2a5703b2718ee59e8f0d18a3ae84259390"},{"version":"fe8fe9bc9a10a7d022f5b949c8178c133518edaa5a52ff5333a9bf917e3918bf","signature":"83817c12cbf3769bdb457054a5860098f81301d044e7e486bc64fe903396a9e2"},{"version":"135de962649b0271af8d7a5d50b9dad9e4a19772fc18e4a779177f7184e0618c","signature":"e4c4a24d3aa547f06387c567fb8e7f90f87b184184f42818ce68dad7b71b4be8"},{"version":"4ef0d165f395fd1da0a33cf5d495c69c4b6620db20068aa58fcc2543f05040f3","signature":"05a3ebbcd9630c1b4fa2d79fae998ce410e8f28c835f2bd3896456afe61413d5"},{"version":"fb6784743ca06c681197369c756b31f4a74da6861f9a366abe4f4b5cba3e482c","signature":"7b1c49c0dff6d9d3841c61975ce4e96d00b674789dd9c0267d2753f90b103b35"},{"version":"281b9b3ffbb2abc02215d545b01577061c8120770fbbe457b3300850124bf7c3","signature":"ec936d160c1988e7104f8d98327a73bd0a588df0c632ac74abe3e138cc7bf50c"},{"version":"a7787de207eabd1ea9f67adf4971481bd523f6479fa8ac9145d14966aa7edaf6","signature":"1925e768f37d39c0ba15d9df3a149a01715f633d3a8bb467d1322d283c6b6fc0"},{"version":"8d2f209b5ef1cba7880fd74a18b1ecab14dbd108238b32c8471b472b267c37f4","signature":"d8ccd77dd3105119811102cf2448c57d5de4d1b1de242aece44823d7218d1f61"},{"version":"78149204a9dfd39da1c1c5f5a9dae1b7464bae87a37493ef0ed54f48f90a046e","signature":"bbb0c23b71f2373fc9e866db0bae54237d470a946e9d98f43b75ebd3285c54fc"},{"version":"1b874da7ed244f72a0d99f8cc4b823f41140746acf0549cfae880d051a98e18d","signature":"f8c42da022306edf0b4d4ff9b19164dec4222d503cb72ca12b727d4ac2c27c29"},{"version":"45a090d0beba949c633166dcddcb25fc9e07f6c9287eff11669b88de5a6eb5f3","signature":"8186a0ddab3c3789f1ee3bdf4166741b7c8a324e76be6826116d461972a6acd9"},{"version":"04f71d6f384c9442b7adad64a39edef6e78950662dff3aaa15ea6d5ec6114d60","signature":"9702a9243472938ea913a06eae9f95d69547688ad8f0d98a0d6ca59bc9710524"},{"version":"e76d416510b7389bb442bd9bec941dd0ff110e605aeeae63002b543822495398","signature":"321df0ee59cf07fbaf00cc76373d164fc501b32611f5a1e52e26f4616d4854eb"},{"version":"98d9051f6f48797137721dd1b6480f09aba71f5e4873adc87fd5e386d38ddc30","signature":"b16f171b9c695879f423016806c24bdb1e7be4b2000304643de262802c8b7272"},{"version":"3a4af0737464f95a7a9c23e53596e486f0669e26a165e3329df871deaaa12fda","signature":"4ef441676eb0c1480b8319c43600e837c387c787e5731fad8e462d60bc6e2e68"},{"version":"0c5238ba660f7583475285d413e114dcac7da83b571444a8f4e19ccc784e3413","signature":"53e2d4299377c2f590971c01d3d53ddfa70083f7cc66a58d78c360d01f1ae880"},{"version":"2625ebf20dce01f39f1b457d2312685e812844ac390962644944c4c70c755794","signature":"ad9cff212848a69158f7dc71953fa85dd0e326f3448d30347c76d20023a29a42"},{"version":"f058cb7f3ca970ed39b94830e63cfe878f3d8e4cb79beadd005ccef61ae8f1fa","signature":"4dd45b2e08c892c82537c0ad3c616c29df52d47802a3eda13150ca0921acffaa"},{"version":"f4292478c5f8afc547058f7ab1104966a083f447fcea0e4493d75684a156cd67","signature":"12f586bd3d98c810a79effa8d19c48d1d793fe3771a3a77fa812224cba660a21"},{"version":"cd86f72b2cf441917b06bad2cd4ad2526f2d15f7daba1b7bd76c7582a9415bb3","signature":"5762c6918a2d6e7d0bc84e1f5bcf6e37efb7035afcf6077bddfe1a95f778dc0e"},{"version":"f8897504022bca8d4044e3c5904ac52a60c2e83fe58d26fb6511bef422f8f993","signature":"2bee3acfb2a754ecb3a165e83201ef2e6d489659326ce92a63a08cb707df0577"},{"version":"d8009a3fb47d6a1dbba005656c665d44cc1b6dff996cb2b49950f3c98ec9e01e","signature":"5e0c74e5218fd977f611ce37e96154189c2cf4fb3d7b9a4629e523d395551586"},{"version":"a34172585b036527efc1aebcc6a4dc6cb53f8bac31ef4e374da51bc207a78b41","signature":"6b8c46bf168b5e417ccbe8aa0ab7386ad3f493e606922d838a7fa510e8f98ae4"},{"version":"c8eb6286076bf56b27b9029125a0f7709c53d0b7c841bef161860fe14e96f387","signature":"929717c817effadb2d988b89b5766a95a48459fa89a545adbb1d94757880ae5c"},{"version":"a08ff1d8e21455415dfcc218196e2c34baaeb89e642929f2abcc989a8b3349a7","signature":"5bab236a8df28ed440a3f96366c7707806b965e0720cb2759079a2effa1a2baa"},{"version":"f9c61e5fe8c385e1213267654859e2c83b5a1949c5b4019083c7d0394e087d7a","signature":"15046861244c21c356d060ba34304c434cf24ae1b2c0304bba11dfc7d3b55de6"},{"version":"3cce2b53f3dad71ed1d00aac48e03b5de53749e358a54dd9935fdc2edebafa81","signature":"2a864261fb3b0cc195eabec7be5485cf57302086bea71b3c1be14db53d030abe"},{"version":"0d85ac5c3422b883778aaefb746985b75bf35b4d2fe35c4228c461e42cef4b8e","signature":"608f0494b01670042073425d65ca109805989d2c65f17893acdd55754469685a"},{"version":"df44ddca434d182084b6c78dd8414e88e840788f26f35d88508df297d9df6d45","signature":"e25f82ff0bc6d839d602dd0de15c9944d901555e0b9ee079f97bca4ebd379ac2"},{"version":"a4597b36ca4a0137d8bcde7d83e85f11533d84c6a980df1cf7d39959c6434ed9","signature":"9fb0fb438fdd3fdf67df0a1f9690404e3fce7a558298ce36836e1ccf5cf77349"},{"version":"87f680d852c53b5dd9de88d2930e3ed86e794d8425ac415f767a6ff24f4f5c11","signature":"4ffeb1b552c700df68bfaa3fbdb3fb42e9f108b680b1d423f6c1bdf231927cf9"},{"version":"5e68da3004b677a4fd1f53e3c180324e8b76004fe90567c1bfd3018cfa5622bb","signature":"cdf50985895580b0f4eca18c51f5f35c114cc77d628ebf7e2c3a9bc667cbc818"},{"version":"b81160052c61a714e4309f59ef7e735ee4c580f5d5144bcd7cd56c8cf1a14bb4","signature":"6ac70eed72c9442241f477c7f6bd0313547445f2aed8daf9a1aa25698bc33278"},{"version":"d2d7f283aef858f8c151cac3c57932c81f280f2999c2d41044bff539ec914471","signature":"f5252360780cc2dfa3a60d4a1fa0788de55cf617b468b20a6260a86db6050b48"},{"version":"4a40a3a63e26cb610b6217abc831d92a273a7ae69960a087f1e6a9df046ed075","signature":"b79b63183d248f964477e8ac7a037c5dc1585d6cabf50a6a2e82a13b72e0da3c"},{"version":"b4e3e33e3fb04228f31450e028553312b62cb8231eb0f5bac66a7ce8f24c6fff","signature":"2ab717aa9337ff23804ea9e48f83444b8f510fef386fbe6142be235a9108bae5"},{"version":"22cf57ae7a92d570b1f51c70f9bdcc9a5c3dd83c5841429191d7b58bdf9e5ad0","signature":"3ab222fa074b683a9935973b236bda1d45c968f200967194e00ffe266457ea16"},{"version":"92401a1af1931d68080a9572c241357f416f362f1569b4c3d7627e8e6cb33a65","signature":"583c301aea698c059503260d012f21dfb82e0876cecc41977b35cb3fb901a5ad"},{"version":"10e5d60c9b6828956afc4ec8899cfb8e56b74d4cbbed99afcbf43435f87dc180","signature":"0cb477387e6cad761127a2975bdb4202b489f685f025ac7a0140fbbfef59efeb"},{"version":"38635628add0c7721ad6b9d623820f75460af74b5f622e37997c2718181a2cfa","signature":"3ef0ebc08c1e774614c6aac29df632d00292cf512005fc8903326c7a8745938d"},{"version":"52e421ebabb64267a8e55ac331f1e3c5491b9d2421eee11ccd09d7243381422b","signature":"507a6eb2997efe0833c4a2b9b870fe97954254d356356245c06e4f64dd08ae82"},{"version":"505d27ad423c0dce8e89a2b6730b22c7f6c1125d6787bdba4b38b594b3e65220","signature":"af893ce31f0c52adcfebffacc5922f99dbf6db080ed91827e7bc2ca9060bc9c8"},{"version":"5686b300509ab52b8b56b2e75898c9a426a98a194d62bc379b45ea5bebb9a1ca","signature":"424602bc21f00baf7d75f6624d02242944aa67705d8506b854a88ab451f03271"},{"version":"816285676d4773c3b6dd0df6294b3e100ac690570541841136b44511d829eb56","signature":"9a7b34f3e928b0d668f0925cd854416d954e004d35df040b65184b87ed63c558"},{"version":"10bace99c8f6c1320740495102d1cae0476e4cdd37736f73b1f0ff80c9b8bcd6","signature":"9f37d30b3e62de6bd72ce5fe49a5f80a0c0a3882de0993197810fa7606548383"},{"version":"d553d705196073ba9428045cbb1112e58a2b8a687afdc4d30988e7fa826f93dc","signature":"c6dcfd04cfa1cdbf308f27f0463f407866e4ef18cad881d7d98d1a110085702e"},{"version":"a747bd10a1a93351a89fb99e102b9ae572925d8bdad87196d5fc094ca379e4f5","signature":"52b8cffa8090a1a0a944011138e9f6e68924c94ca6d437856bd967aa1b30b871"},{"version":"4eb112f980cd48e87c5e2c008a884a1f12964db075ea14db23633b8cd9b04d00","signature":"218d553b857e50b5a3f243fd9fd954765b07ea75360101a415ddfa64107ccb68"},"56c3d926d925601b01b05d7dcce38b6267abb0b69cec8dd70933a4314ca4fce5","baa03104976d2a5f483c67199c931363bd196dd4b93dae719e65f92e2358892c","afcd5dbf5c6570290f23070a90c5bca37f77c0311a21a5a36e88dcaac291c90a","f803501b1c2885ffafb0bc93758c7859f960db6fe164787c728f08129b0642a2","8b66ac41f47cb4efc0c890fde4d3f2028b17a530c1bce641b41e42deb34d510d","c16d49553fccf966c2d76c39d0ef32eb83533f74788f16bb124055a1cecf85ae","40fe2aa5bd680813ebe4b73f91ed3857b4c00e3f28aeda764bf8138c38131e2b","9f09bf998052326d7051c35cc65c9e1243bb4928cf952cce9e495eda7d9c3cfc","24853928cf31b27a254480d0e62850c681ce62e151f2afea01a083f6fa94f4ce","7f9d4427e43f695a732608a8681e98d83a77f5c4be63a49ecc673533a98559b5","21ea4b123d58ee7d2fe11093951a568a77ad48314cf7b9c77b4354d8c2d1e18c","7b3fc9ecf6e9e10941afa3a83e6f566a41454a269899d283b9ca0dc777a9800d","8fada159027e35352ace8ec008e240d9a5006e343621f9bf35bec743652770a7","a4e53437a1ec1d334a127a02b678490489f46e25669e90e7a7192be1a04e4aa4","051dab0056166fc0c5247eea6cd109e8f89a29b7977d97be6147568926115e61","78e82c22d9df0800a951d8a177f6551072f43e7c9e0a7c8d75905ea34c357434","a9eec51b6fc38860fb4e2cba6a65cad204ce30f3e7ab7397c8a7734d19208f5c","44a35fee0952c5a3537ec2fb8fa75967fa474893e6ded42debeb42120bcad9e9","e45bb3fd278bd9f417cd61fb47b7d916d19e62e382a98379d15a4b592779f750","bb7d56f6d714ea9f56f2764ea09b742dca7ed59dbec99b56200019c392005832","b37f309362b3d86bdafa4f20544fd761aad32f889e6c8394b7456ebf564a51df","e7e618d06dd2429127c524d82f78e8d178fa6c81ce6549ad776299f974dfa30a","20595e43d9fea6246ae296d64f2eb0b2f0daa95ad580f3b30bc1fbffac92de8b","aa58fe1fbc1a6001caff81cc0d4d21c91a26793fd7c4a88550b49a4bb83469e4","4c3012d8b84830289483e66e7a49ea49b78761d176a11a289539513dbc86a67a","8653ab0bd1df26a288adbe3bb0b4a68efee56a6220ce806bf284fbd25a7f0356","ecbc9c8c605459f2505bb6f7cb980be037526b700b005aaa0b7e2ae5bdebe2d4","a5bb0154853480b8f493dba62ee1c94f8bbcfeb55eaaa5ea76cf79cc68d4876d","2490d10e13fc5c934bd83883b183590a4cfbe7df37fc0fe97b6f024a41944090","bef85eb33ad19cd3d4121177abcc0963edcb4cb7e191c739ef6a7e944d2abd8b","15e76d747fe16adc9f7d62aa1c8322e4dbbe49b4e0e8d09ab6d4a9d2d09bf331","c64d882841888b5378aabda2747d89c94e1561bd06cb66ea3d6e6ab6ce142e2f","321c472cdece1cea8fb202af31de7db3439ed610de06c73b9f31ebf1b12172b4","a3cf8642b590b5fd3b196f07e7abd96f4b6b534eaafeee563842d077a773301b","8e1d2ab6df4abaf7ef7f6a840fd8fe53aeabf110196240a2ca84e7c20bc19879","53467548058e76757368b003f635e315550766fd4ce2131a7a310d382a7b562d","f03a412c11a9affc5f8dab04e91370e8706338b232f06f51ca2393a448e67a7c","5d97b595ab784c5818844efccc062467d7d64474bdef22efe8033b0b5ce2db08","5d64cb1ad13e25ad7af2ffad19e083b25703ff4f69867fee609791504d44857b","5ea6b03999dc93ee8602a8a85c33d3878bf00b46b1a1516aaf5b53531d34b5f9","9ae49d210914a2e51ef1badca56bbcb5ff5b2045c3a875153e35ac4249f86184","4e3cecb9f9b42f00319fc93917cd2be0f7b05a2e8b104d30b9629d83a032a32a","47cbdcaddb6b48ea2e371c566086158f7054dfed93d7a337b70d967dc506e3cb","54e1a347b26736bd9bb85c0325d5325045906d50f475c3797762fc084f528133","6783a37be0057de841903ed8169f5186556fe2ddf5d04e060aea3c03d980ea83","7cd92311dd5415b5f2bab4136e2227116d008cab69cb5987319e0f08561e8b66","e28a5c05c74ce066cd4c0cbf4d83a62d18641ddaa2cbcf1e42b7596d9ab8b66e","7f2adf6b2b71cee427a9bda2a7f20ffc9fb5304b53b3491f7d1803f9cd12a388","f03aa91bce0aefb9ba4a43fbf1609e6dd96fff6021a44ac9b8849bbf26c343f6","b8af66a96099dd699fb0619a6f8a00635b2449c5003cddf25031768f2808f36b","aab005c3c23bf1f2c80f042ca306fa5fd996466e0af57e98bc0c528ce090e312","616ecad9bf1242c161894c9eb6d6edb2dc48eed217fc9f26dec1833c60904fd2","c73cfc71d625eff04c84ce6a99cbe526829799992113ce0ea9b5bf2bdb7cfc3e","0bc53c885c1a921b24c7f3b6302e679c1159c691619adfaec16961ef72612b4f","7165aa1b13d9a00270bd5da12d78597269ea55087fcce7909fb706e513f1302f","810b8901bf4f2bd92606ade3e28ede86c9b6d86a087c051716cf5c5350108ccf","03004eb0a635f604aac9b5b95b444b1c6d829b2f85f299b186824e00d1e60543","17513e8c3891ac67ebf889f3f8ca3529b18b48d7215cb2507eda5d622f16c989","964d424791a80920d5053fa97ff3ac99f7cfd00837fca1801233f9f6d973d3b7","90c5378c5fcc60dc2bf484c852fa3e1668047d58c916c05eb4c6a1efdbd76aff","7229d5fe52aab76c62aa70bac70be7a33334baf46f2d2ddb972a8db2167cab62","713951cbd47f0d7d9a51e4c5a8556d869f8657df6d2279aa6cb09303fd838137","a07fbeccaf6bafb6c396edea972ffaa028dc17bd10772a8ea11741def6ad9e64","2f3a38826d7f63dba7ed92d71c47b22e7281a4ea824d8e844ec7beb40316e2f6","49596a74b6e1e7a1e364a747eb572145fd58daff0a741ac010ab91832a8ce2df","b95e3b17bda2ee218ef22a259af8d31db33c5ddda9890ee6387c2bc6c2ab25da","f0973b5fd2f155ab18db0129c15636904e5aba9265019d3e07a751848739a6ae","e8f6bbc19d07dc86e3369b0f62f10416db230f9a2d064e05662117fd5edc82e9","ab1d661582b1876466e4cae0ae5fc19d0848450d679e7e0814c4c7dcb3b37f4a","02a4c62e9e601c36d6ebb714933b085e880f76979b8bd0b4cc9005fe45fbec2c","ad95de6d3e03a2ca29957faf0ee8c35f00a4fbebaffb4160f2d3d11281fc5508","60f9f5040bcb3de618419ef683ac9218e9b4e5bddf0b2fddeef1f858698dc0bd","b7c02fd6510a1c5f737e409e88b95c5ffc9d0695b9c8c7fb93ad09a467804d84","dc191dc98c992e087105745a1646d87d4a1f620ddb32a74ff871950a8c8faa64","b16d9c406949c64d7dd6aafa35e049c16cf8b1c5db8379b7d4b91c41bbb2fbe6","a4db9388f7c09f60daf9905934264fb190b030948d6d6fa528c34e7441c34d7d","8bc4cbf6af8e705b500cc2bd6be25c7f98175344aa43716405bc88b277eeb0d8","68f3a973a6818546b9cdd65efb768b5955272694d55282678e447bf26ea92cb6","338fe4202548922cb2c6fbd34e2b789d62d184cb8519f4cce756a5a07290c6e3","79296146e289c873e175359a074cf511aa376accc4e00a5889e3622b6e75fb3d","f8fb83743e35bbf434b4685354f13efbb42943b46275a6a0c5ad5a24ea616d5f","dabb914c98c44447a234eff113cc8983f8813b1cde96978b756eb0c337e68f66","a5d8d3b8be9cfa1899fbd1a5e0b8feac249f47e7d3e8c0fbec3c400efee44373","fd09228d8360527ec8cb060a9436061e46239d9ee53d8d903c3fb4fee98632b5","8e7f8f0b2e78972941175fd011684b8bf17ac076ecd12d5fb31c6ea1c7f7e680","6de6a66cf009006c7e550874b495403b8b55a6bffec5cb68f311423255a27159","84137989ff1934d9514edcac53639da573eb75c16f34b1fe547a3e70b4a259f0","70e1a1f4875b95d334359c563a7dd449ed442242da208c16e2d0d02c8a12d3bb","9e72229ab272cd6f176c2271e1ffe9c536ae083c7f2aa23b4378d6050d289b6c","7952c2f630db6e7e3ca643302d9a4fbd8744afdf1e589ce3626c5ae1ce848ddd","5fcd197a227fdcda532e150004dfe26101be0dc62d679614339d1e9b31052e82","9d83bcb5faee15f055c31823ad1f9bcb3d3daee6163e1953c5ed1aafd3bd0d6b","e9014078f923e62088e95d62e1caa2e990d3da322b63215c515e0ee5f1747e6f","e999f9b1af5d67c542dbd871e06825e543cebf78d13c01ce619b79cbd9963f06","17fddab376ea595de56b89e5200f445e73d88ff2ef5646c3b04a8cea93a5fc2b","0c687c7c86cd76c39dda63d276a7b076071bd7b872ead76ba003ba231a744774","eaebea36ad13e32edcf15157c5226d5a6015368bc58d1839d6b6d66659fa88b8","e6674e5ca2113dc43c0d6580a947a2bd95f29c85ab906dc67a8180bba14a951c","86efc969e891392d77a545aae0eadb5a18bfa9f366fb4ab7234651ae8a46c5ef","e3c8014975d6ff81d70afbe223b0695cc0b7480726768f4ad73338af0d8adceb","ecdaf81eb72a02313f4d81fd7d699efed02ce4a0af51ef9ce90c2edbb80ab1b3","60225ec14b20324ea6fd5948547f37055ca86fb50d88238bd50ad73207b5433c","40b418ece66a5fc3aecc8d8c02c6a697863062aae4bdc99876c7fa828c10b277","04eeee46db0ab96a0e7f4368d3f0b70060af475adbc8e7b8fb554be5883e5b23","c9cac153c7cafd886ac521bff1bef1a3fe37aeae9cb699ad5304bcf94c22df0a","7cd2f430a09df921dabdfcefd7c18275571edd6284fe873495f3e117bdf03dad","cfc43dd157fe7005a9f7b6f3aad415b2e1d5d80b9f45bdede4689981398d92fd","66000161d3488c68008ce56bee1b1e8776a7501891bb2df0e614cedcbe768b10","1776583ff2b2528834c8d8479cb97792fb1abe16f428bbd7774eeb972a68ca12","0031e6b764887bcce76c5dda5782cf51fbb1179138d798464313777bcb8cdfec","561012db9491ff23aa8ff5bdfd0c17de934ca5053067b30cb5598bb0c5ca5322","c09e622e7f077c9e55714d6d9cd0ad822616affabc8b7b233591d3001078960d","94ae8aa32fc27ea8a1a8f3bd152c216020365bd1cbcb667dcbefb0a70dcdbe67","7a4fddf124e0cf731770e6a76606e038b7d0d4234ad9fd2aca7edfa7e18690c8","ae5fc639c88ab7c00f73dfacf045d2648d03ce1721fe9ed3557dca70f3064c3f","bf2a8c473e74bbddb646ba3e63530ead392f4bf94ccaec3b0e6dfc1520a6b9f1","6290ff98d41a76c99a1d919742e3f2a1036b64faa41f6e9d496f39958b414afc",{"version":"7f464a93b85e6a7c1db7e73f8750f64be3570cf5dfbc9595eedc08b3f3881746","signature":"b997dfa3a4952398d3a9657e259d5042fe1075966c8d9a1126415449d8808c7e"},{"version":"b3f70a57126e9b1243edd63a3b23bdeca4e1ee49194d9a3e1eea7ae3d20b54a7","signature":"2ae83ee39dc227dde65689b64bcddb05f9678c97c613a8664bc6dd5ffcc46580"},{"version":"021f9432f5a9f05b8ad68b4b290fbf9b9dae575156618d1823fd4ca3faa7f13b","signature":"82b7da2512926361b344c1f707b0fb959b5e4da547fa9a9e28327c4f2b56b875"},{"version":"a23c29157055a43fd5642533dad35062fb2786b73dacf573b67021ee285427b4","signature":"9f4213dde46c942c6ced4a798abf52afb9aa1e44c2921a662b9d605eaca4e689"},{"version":"2f41d3dca1c505937e7372ea3054fe882254c3ca7ba332e00e20066cca825a87","signature":"09975906db7d8edf249892ccacc1fd7f5e64effbfad97f327ba949624df8d084"},{"version":"6e1eb48346b1807d91e85a27f3de2a53ba25b451ca027cd88b9db55f17a6c41c","signature":"5f05403f073da5d4ed27e4db8b9b848c8da1fe8e9b935006fd12fa207418e475"},{"version":"2737462b7e0aacada6431944e3f25808d4c5f9aa626f0c3fa9841a2dba01b583","signature":"42cb035e782b4ea7ffe5157d93357ab3ce93e487da0122709a2b4165eec28b54"},{"version":"1710907ccbc16266e496a2563b2baf8aef61ff616a521fc1d590b4a3f2707928","signature":"e5e02273229e050f7553a55732fe6190ab64495b718c89e5b5246e377e13e742"},{"version":"6c10afa229fbb35fb4a1e7b7b1a85fc69dfddf837953f3aeeb21f01291c4da16","signature":"3a1d39b9670c139876febe7fc7eb969dc3c0098b8dd84283d84b50716ebf251f"},{"version":"cc356a383f4546e9fa513c86b456c5ac5193635af771689ee2b4e688264ed46d","signature":"37f6b4b35baeaa5c48b0f0813e2d1e2aa16557c15d310bea0baec9b0c56fe840"},{"version":"541d14be6df42871edb84c857febc8fa1037dacf40c75ca6ec4502dbd3574c18","signature":"68f764fd28ee371b7580b2cd8b3c7d90311acfd221a7bbd62881116a1e52280d"},{"version":"f032f724d9d235dcb6ca27eb7c1cea541015eff03ba72271a0613cef93537f75","signature":"a60eed83b242294af57172eec9e2bf5f2c1889eec7cb32591c900097e474c9cf"},{"version":"6e67c7345823a798c4583305755d944d76e834555422eeb3afab4d6b85a9c7ac","signature":"8fa0494a2ea9dc6b7a07d0444b9788d65fe7fe1809e02c4ea458be53424d2f0f"},{"version":"1fc83130fdb4f0b8f9c61aa41a6005622fdcb7ff1edb65f0408e96e475cf212c","signature":"bcfc40c4beb6722e12e990bb1eaf6b5c760288d6e91b2cc384a0bf587c52b7f0"},{"version":"758491a0d6e29c41e1ee6ceaf4b512bbac6ecd70a7987f20a3cf084d1f5d3da5","signature":"61400b5483695d259e92f3918015e9940f411b1592382655335e1ccdfdf357c5"},{"version":"05ba1e12652cbd178138bfed830c0a4aec5b95b03c614190cfd7ffa9ff08d84a","signature":"2cefcca425c0d3c8a09d3e461ea774c23223261918a66c4ba9c87517e6395bfe"},{"version":"89e60d72fa5eba860317e1c826f8fa4103679262b089ea01c04286b83028d43b","signature":"3c720b34ddea105f5f12e0cd357177cee252f9d8edfb32bfe72145d48e981373"},{"version":"6c562fe759a8148838a59a0a3eb93b498ad7d0a624f1d4c998e826e45185bca0","affectsGlobalScope":true,"impliedFormat":1},{"version":"bd44f9104575aa7f07f7b44fa512ccdeb924a7140f38fd55d691e6e794d32aec","signature":"e01a9aaa513d6f32bf72f53bbc7594afd67520a197f182415e83e990cbf5655c"},{"version":"11c3e812f23bc294a5eeda4ce318c25f2e72ae0cc87478a600c3e65771721a06","signature":"3d7ae1cc1977193d1b355963caedbb45a24f2cfb87f3fbe77c3e7b17115940af"},{"version":"4d97921a58b6d60a851b0a8098ecaa95a4d816674cd96465072a9dbdffbf16d2","signature":"7efbce30593548908775b8e92629717fe2673c2fc0b8439da0c595c397e1b85f"},{"version":"ccc368cbb6effd90da240471de0cd1f03cf07e0f753c4ff53630e3a9de822789","signature":"a13ea206df37ddacb902ffc43683a4b915154a19314fff83c863faa0372080df"},{"version":"f469e79cbd763e2997fab4dc4d1ef6105392757f32ad31525f4b6c6d8d2acab6","impliedFormat":99},{"version":"240ee3108fc534f8652ed60fd95004879526607fa269cc2cd9b2c57aeb717f18","signature":"b9b92350484621ac547cc92f2bf9e512e23ea97ce06d159d1ca0a0107eee6ac1"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"d9e971bba9cf977c7774abbd4d2e3413a231af8a06a2e8b16af2a606bc91ddd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"f9ab232778f2842ffd6955f88b1049982fa2ecb764d129ee4893cbc290f41977","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1}],"root":[[76,143],[261,277],[279,282],284],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":false,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"referencedMap":[[217,1],[154,2],[155,2],[156,2],[157,2],[158,2],[159,2],[162,3],[160,2],[161,2],[168,2],[172,4],[169,5],[170,5],[171,2],[163,2],[164,6],[190,7],[184,2],[186,8],[185,2],[167,9],[165,2],[166,10],[150,2],[151,2],[152,2],[153,11],[146,2],[147,12],[148,2],[149,13],[179,5],[183,14],[180,5],[181,2],[182,2],[145,15],[197,16],[195,17],[196,15],[176,5],[178,18],[177,5],[216,19],[215,20],[203,21],[204,21],[205,21],[206,21],[213,22],[207,21],[208,21],[209,21],[212,23],[210,17],[211,21],[214,24],[188,25],[187,2],[189,26],[200,17],[198,15],[201,27],[199,28],[202,29],[173,17],[175,30],[174,17],[193,2],[194,31],[191,2],[192,2],[144,17],[75,32],[64,33],[60,33],[62,34],[61,17],[63,35],[50,33],[48,17],[49,17],[52,33],[74,36],[65,37],[66,38],[67,38],[68,39],[54,33],[55,40],[69,33],[58,41],[51,42],[59,43],[53,41],[57,44],[56,41],[70,33],[71,33],[72,38],[73,45],[260,46],[230,47],[229,48],[228,49],[254,49],[255,49],[256,49],[259,50],[257,49],[258,49],[224,51],[223,49],[225,49],[226,49],[227,49],[233,52],[231,53],[232,49],[234,49],[237,54],[235,49],[236,49],[238,49],[239,49],[241,55],[240,49],[245,56],[244,57],[242,49],[243,49],[247,58],[248,59],[249,59],[253,60],[250,21],[251,21],[252,61],[246,21],[218,49],[219,17],[221,62],[220,63],[222,49],[334,64],[335,64],[336,65],[290,66],[337,67],[338,68],[339,69],[285,17],[288,70],[286,17],[287,17],[340,71],[341,72],[342,73],[343,74],[344,75],[345,76],[346,76],[347,77],[348,78],[349,79],[350,80],[291,17],[289,17],[351,81],[352,82],[353,83],[385,84],[354,85],[355,86],[356,87],[357,88],[358,89],[359,90],[360,91],[361,92],[362,93],[363,94],[364,94],[365,95],[366,17],[367,96],[369,97],[368,98],[370,99],[371,100],[372,101],[373,102],[374,103],[375,104],[376,105],[377,106],[378,107],[379,108],[380,109],[381,110],[382,111],[292,17],[293,17],[294,17],[333,112],[383,113],[384,114],[278,17],[295,17],[46,17],[47,17],[8,17],[9,17],[11,17],[10,17],[2,17],[12,17],[13,17],[14,17],[15,17],[16,17],[17,17],[18,17],[19,17],[3,17],[20,17],[21,17],[4,17],[22,17],[26,17],[23,17],[24,17],[25,17],[27,17],[28,17],[29,17],[5,17],[30,17],[31,17],[32,17],[33,17],[6,17],[37,17],[34,17],[35,17],[36,17],[38,17],[7,17],[39,17],[44,17],[45,17],[40,17],[41,17],[42,17],[43,17],[1,17],[311,115],[321,116],[310,115],[331,117],[302,118],[301,119],[330,120],[324,121],[329,122],[304,123],[318,124],[303,125],[327,126],[299,127],[298,120],[328,128],[300,129],[305,130],[306,17],[309,130],[296,17],[332,131],[322,132],[313,133],[314,134],[316,135],[312,136],[315,137],[325,120],[307,138],[308,139],[317,140],[297,141],[320,132],[319,130],[323,17],[326,142],[283,17],[277,143],[138,144],[279,145],[141,146],[142,147],[137,148],[143,149],[282,150],[76,17],[98,151],[79,152],[80,153],[81,154],[82,155],[85,17],[77,17],[281,156],[92,157],[84,158],[89,159],[90,160],[86,161],[93,162],[87,163],[131,164],[88,165],[129,166],[280,167],[269,168],[274,169],[275,170],[267,171],[270,172],[271,173],[273,174],[268,171],[276,170],[95,175],[94,176],[91,177],[97,178],[96,179],[284,180],[130,181],[272,182],[266,183],[264,184],[265,185],[132,186],[133,187],[139,188],[140,188],[134,189],[262,190],[135,21],[78,191],[263,192],[83,17],[261,193],[136,17],[99,17],[100,17],[101,17],[102,17],[103,17],[104,17],[105,17],[106,17],[107,17],[108,17],[110,17],[109,17],[111,17],[112,17],[113,17],[114,17],[115,17],[116,17],[117,17],[118,17],[119,17],[120,17],[121,17],[122,17],[123,17],[124,17],[125,17],[126,17],[127,17],[128,17]],"latestChangedDtsFile":"./src/node/index.d.ts","version":"5.9.3"}
|