@oh-just-another/scene 0.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +72 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/a11y.d.ts +23 -0
- package/dist/a11y.d.ts.map +1 -0
- package/dist/a11y.js +37 -0
- package/dist/a11y.js.map +1 -0
- package/dist/anchors.d.ts +120 -0
- package/dist/anchors.d.ts.map +1 -0
- package/dist/anchors.js +322 -0
- package/dist/anchors.js.map +1 -0
- package/dist/annotation-geometry.d.ts +11 -0
- package/dist/annotation-geometry.d.ts.map +1 -0
- package/dist/annotation-geometry.js +19 -0
- package/dist/annotation-geometry.js.map +1 -0
- package/dist/annotation.d.ts +32 -0
- package/dist/annotation.d.ts.map +1 -0
- package/dist/annotation.js +2 -0
- package/dist/annotation.js.map +1 -0
- package/dist/constants.d.ts +186 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +186 -0
- package/dist/constants.js.map +1 -0
- package/dist/container.d.ts +112 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +227 -0
- package/dist/container.js.map +1 -0
- package/dist/diff.d.ts +22 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +18 -0
- package/dist/diff.js.map +1 -0
- package/dist/edge-curve.d.ts +37 -0
- package/dist/edge-curve.d.ts.map +1 -0
- package/dist/edge-curve.js +72 -0
- package/dist/edge-curve.js.map +1 -0
- package/dist/edge-geometry.d.ts +96 -0
- package/dist/edge-geometry.d.ts.map +1 -0
- package/dist/edge-geometry.js +467 -0
- package/dist/edge-geometry.js.map +1 -0
- package/dist/edge.d.ts +206 -0
- package/dist/edge.d.ts.map +1 -0
- package/dist/edge.js +2 -0
- package/dist/edge.js.map +1 -0
- package/dist/elbow-link.d.ts +23 -0
- package/dist/elbow-link.d.ts.map +1 -0
- package/dist/elbow-link.js +419 -0
- package/dist/elbow-link.js.map +1 -0
- package/dist/elbow-router.d.ts +20 -0
- package/dist/elbow-router.d.ts.map +1 -0
- package/dist/elbow-router.js +218 -0
- package/dist/elbow-router.js.map +1 -0
- package/dist/file.d.ts +41 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +13 -0
- package/dist/file.js.map +1 -0
- package/dist/heading.d.ts +42 -0
- package/dist/heading.d.ts.map +1 -0
- package/dist/heading.js +77 -0
- package/dist/heading.js.map +1 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/layer.d.ts +18 -0
- package/dist/layer.d.ts.map +1 -0
- package/dist/layer.js +2 -0
- package/dist/layer.js.map +1 -0
- package/dist/layout-registry.d.ts +35 -0
- package/dist/layout-registry.d.ts.map +1 -0
- package/dist/layout-registry.js +13 -0
- package/dist/layout-registry.js.map +1 -0
- package/dist/layout.d.ts +128 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +453 -0
- package/dist/layout.js.map +1 -0
- package/dist/operations.d.ts +32 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +105 -0
- package/dist/operations.js.map +1 -0
- package/dist/outline.d.ts +36 -0
- package/dist/outline.d.ts.map +1 -0
- package/dist/outline.js +129 -0
- package/dist/outline.js.map +1 -0
- package/dist/patch.d.ts +57 -0
- package/dist/patch.d.ts.map +1 -0
- package/dist/patch.js +47 -0
- package/dist/patch.js.map +1 -0
- package/dist/queries.d.ts +115 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +403 -0
- package/dist/queries.js.map +1 -0
- package/dist/render-bounds.d.ts +36 -0
- package/dist/render-bounds.d.ts.map +1 -0
- package/dist/render-bounds.js +36 -0
- package/dist/render-bounds.js.map +1 -0
- package/dist/scene.d.ts +80 -0
- package/dist/scene.d.ts.map +1 -0
- package/dist/scene.js +129 -0
- package/dist/scene.js.map +1 -0
- package/dist/shape.d.ts +306 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +192 -0
- package/dist/shape.js.map +1 -0
- package/dist/snap.d.ts +88 -0
- package/dist/snap.d.ts.map +1 -0
- package/dist/snap.js +128 -0
- package/dist/snap.js.map +1 -0
- package/dist/spatial.d.ts +38 -0
- package/dist/spatial.d.ts.map +1 -0
- package/dist/spatial.js +95 -0
- package/dist/spatial.js.map +1 -0
- package/dist/style.d.ts +87 -0
- package/dist/style.d.ts.map +1 -0
- package/dist/style.js +43 -0
- package/dist/style.js.map +1 -0
- package/dist/text-measure.d.ts +29 -0
- package/dist/text-measure.d.ts.map +1 -0
- package/dist/text-measure.js +8 -0
- package/dist/text-measure.js.map +1 -0
- package/dist/three-way-merge.d.ts +59 -0
- package/dist/three-way-merge.d.ts.map +1 -0
- package/dist/three-way-merge.js +108 -0
- package/dist/three-way-merge.js.map +1 -0
- package/dist/viewport.d.ts +78 -0
- package/dist/viewport.d.ts.map +1 -0
- package/dist/viewport.js +62 -0
- package/dist/viewport.js.map +1 -0
- package/package.json +54 -0
package/CHANGELOG.md
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Rustam Garifulin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# @oh-just-another/scene
|
|
2
|
+
|
|
3
|
+
L1 domain model: immutable scenes, patch-based operations, plugin-extensible elements, and a fast spatial index.
|
|
4
|
+
|
|
5
|
+
No DOM, no React, no Node API. Depends only on `@oh-just-another/types`, `@oh-just-another/math` and `fractional-keys`.
|
|
6
|
+
|
|
7
|
+
## Concepts
|
|
8
|
+
|
|
9
|
+
- **Scene** — a container of elements, links, layers and a viewport. All fields are immutable; every operation returns a new `Scene`.
|
|
10
|
+
- **Element / Link / Layer** — entities. Elements have an open type discriminator (`type: string`) so plugins can register their own variants. Built-ins: `rectangle`, `ellipse`, `polygon`, `path`, `text`, `image`. (A `Link` is a connector between elements; an element's geometric _shape_ — rectangle/ellipse/path — is a form-primitive, distinct from the element itself.)
|
|
11
|
+
- **Order (fractional index)** — every element, link and layer carries an `order` string. Z-order = sort by `order`. Inserts and reorders are O(1) and conflict-free under concurrent edits (needed for Phase 13 collab).
|
|
12
|
+
- **Patch** — every operation returns a `Patch` with `before` and `after`. `invert(patch)` swaps them; this powers history and CRDT replay symmetrically.
|
|
13
|
+
- **Bounder registry** — local AABB computation is per-type. Built-in elements ship with bounders; plugins register their own via `registerBounder`.
|
|
14
|
+
- **Spatial index** — `SpatialGrid` uniform-cell index. `buildSpatialIndex(scene)` + `queryByIndex(scene, grid, range)` give sub-millisecond range queries on 1000-element scenes.
|
|
15
|
+
|
|
16
|
+
## Quick start
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import {
|
|
20
|
+
emptyScene,
|
|
21
|
+
addElement,
|
|
22
|
+
apply,
|
|
23
|
+
invert,
|
|
24
|
+
orderForTop,
|
|
25
|
+
buildSpatialIndex,
|
|
26
|
+
queryByIndex,
|
|
27
|
+
DEFAULT_LAYER_ID,
|
|
28
|
+
type Element,
|
|
29
|
+
} from "@oh-just-another/scene";
|
|
30
|
+
import { elementId } from "@oh-just-another/types";
|
|
31
|
+
|
|
32
|
+
const r: Element = {
|
|
33
|
+
id: elementId("r1"),
|
|
34
|
+
layerId: DEFAULT_LAYER_ID,
|
|
35
|
+
type: "rectangle",
|
|
36
|
+
position: { x: 0, y: 0 },
|
|
37
|
+
rotation: 0,
|
|
38
|
+
scale: { x: 1, y: 1 },
|
|
39
|
+
order: orderForTop([]),
|
|
40
|
+
style: { fill: "#88f" },
|
|
41
|
+
width: 100,
|
|
42
|
+
height: 50,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const { scene: s1, patch } = addElement(emptyScene(), r);
|
|
46
|
+
const s2 = apply(s1, invert(patch)); // undo
|
|
47
|
+
|
|
48
|
+
const grid = buildSpatialIndex(s1);
|
|
49
|
+
const hits = queryByIndex(s1, grid, { x: 0, y: 0, width: 50, height: 50 });
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## API surface
|
|
53
|
+
|
|
54
|
+
| Module | Highlights |
|
|
55
|
+
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
56
|
+
| Types | `Element`, `BuiltinElement`, `RectangleElement` … `ImageElement`, `PathCommand`, `Link`, `Layer`, `Viewport`. |
|
|
57
|
+
| Style | `Style`, `TextStyle`, plus `LineCap` / `LineJoin` / `TextAlign` / `TextBaseline`. |
|
|
58
|
+
| Element helpers | `isRectangle` … `isImage`, `registerBounder`, `getElementLocalBounds`, `getElementWorldBounds`. |
|
|
59
|
+
| Viewport helpers | `DEFAULT_VIEWPORT`, `getWorldToScreen`, `getScreenToWorld`, `panBy`, `zoomAt`, `resize`. |
|
|
60
|
+
| Scene constructors | `emptyScene`, `DEFAULT_LAYER_ID`, `apply`, `orderForTop`, `orderForBottom`, `orderBetween`. |
|
|
61
|
+
| Patch utilities | `invert`, `batch`, `isNoop`. |
|
|
62
|
+
| Operations | `addElement`, `removeElement`, `updateElement`, `moveElement`, `addLink`/`removeLink`/`updateLink`, `addLayer`/`removeLayer`/`updateLayer`, `setViewport`. |
|
|
63
|
+
| Queries | `getElement`, `getLink`, `getLayer`, `getLayersInOrder`, `getElementsInLayer`, `getLinksInLayer`, `getElementsInBounds`, `getElementAt`, `buildSpatialIndex`, `queryByIndex`. |
|
|
64
|
+
| Spatial | `SpatialGrid` (the underlying class for advanced use). |
|
|
65
|
+
|
|
66
|
+
## Design notes
|
|
67
|
+
|
|
68
|
+
- **Open `Element`.** `Element = BuiltinElement | ElementBase` so plugins can extend without forking. Built-in variants are still strongly typed and pickable through type guards.
|
|
69
|
+
- **Membership stored on children, not on layers.** `element.layerId` is the single source of truth. Cross-layer moves are an O(1) field update; no rebalance of any list.
|
|
70
|
+
- **Layer/element z-order on the entity, not in a list.** `order: FractionalIndex` allows any insert position without renumbering. Tradeoff: every layer/element carries the order key.
|
|
71
|
+
- **Patches store `before` _and_ `after`.** `invert` is a pure swap; the kernel never needs to look at the surrounding scene to compute an undo. Tradeoff: slightly larger patches; this is bounded and worth it for symmetric history.
|
|
72
|
+
- **Spatial grid, not R-tree.** A uniform grid is simpler and faster for editor-scale (≤ ~10k elements) and is good enough to meet the < 1 ms range-query target. We can swap to an R-tree (`rbush`) if a workload demands it; the public surface (`SpatialGrid`-like API + `buildSpatialIndex`/`queryByIndex`) is small enough to keep stable.
|
|
@@ -0,0 +1 @@
|
|
|
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.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.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.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.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","../../types/dist/vec2.d.ts","../../types/dist/bounds.d.ts","../../types/dist/transform.d.ts","../../types/dist/color.d.ts","../../types/dist/ids.d.ts","../../types/dist/events.d.ts","../../types/dist/index.d.ts","../../../node_modules/.pnpm/fractional-keys@0.1.1/node_modules/fractional-keys/dist/types.d.ts","../../../node_modules/.pnpm/fractional-keys@0.1.1/node_modules/fractional-keys/dist/generate.d.ts","../../../node_modules/.pnpm/fractional-keys@0.1.1/node_modules/fractional-keys/dist/jitter.d.ts","../../../node_modules/.pnpm/fractional-keys@0.1.1/node_modules/fractional-keys/dist/digits.d.ts","../../../node_modules/.pnpm/fractional-keys@0.1.1/node_modules/fractional-keys/dist/errors.d.ts","../../../node_modules/.pnpm/fractional-keys@0.1.1/node_modules/fractional-keys/dist/index.d.ts","../../math/dist/vec2.d.ts","../../math/dist/matrix.d.ts","../../math/dist/bounds.d.ts","../../math/dist/hit-test.d.ts","../../math/dist/bezier.d.ts","../../math/dist/intersect.d.ts","../../math/dist/color.d.ts","../../math/dist/polygon.d.ts","../../math/dist/index.d.ts","../src/constants.ts","../src/style.ts","../src/edge.ts","../src/text-measure.ts","../src/shape.ts","../src/a11y.ts","../src/annotation.ts","../src/file.ts","../src/layer.ts","../src/viewport.ts","../src/patch.ts","../src/scene.ts","../src/spatial.ts","../src/queries.ts","../src/container.ts","../src/anchors.ts","../src/annotation-geometry.ts","../src/diff.ts","../src/edge-curve.ts","../src/heading.ts","../src/outline.ts","../src/edge-geometry.ts","../src/elbow-router.ts","../src/elbow-link.ts","../src/operations.ts","../src/render-bounds.ts","../src/snap.ts","../src/layout-registry.ts","../src/layout.ts","../src/three-way-merge.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/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@22.19.19/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.19.19/node_modules/@types/node/index.d.ts"],"fileIdsList":[[116,162,163,165,182,183],[116,164,165,182,183],[165,182,183],[116,165,170,182,183,200],[116,165,166,171,176,182,183,185,197,208],[116,165,166,167,176,182,183,185],[116,165,182,183],[111,112,113,116,165,182,183],[116,165,168,182,183,209],[116,165,169,170,177,182,183,186],[116,165,170,182,183,197,205],[116,165,171,173,176,182,183,185],[116,164,165,172,182,183],[116,165,173,174,182,183],[116,165,175,176,182,183],[116,164,165,176,182,183],[116,165,176,177,178,182,183,197,208],[116,165,176,177,178,182,183,192,197,200],[116,158,165,173,176,179,182,183,185,197,208],[116,165,176,177,179,180,182,183,185,197,205,208],[116,165,179,181,182,183,197,205,208],[114,115,116,117,118,119,120,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214],[116,165,176,182,183],[116,165,182,183,184,208],[116,165,173,176,182,183,185,197],[116,165,182,183,186],[116,165,182,183,187],[116,164,165,182,183,188],[116,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214],[116,165,182,183,190],[116,165,182,183,191],[116,165,176,182,183,192,193],[116,165,182,183,192,194,209,211],[116,165,177,182,183],[116,165,176,182,183,197,198,200],[116,165,182,183,199,200],[116,165,182,183,197,198],[116,165,182,183,200],[116,165,182,183,201],[116,162,165,182,183,197,202,208],[116,165,176,182,183,203,204],[116,165,182,183,203,204],[116,165,170,182,183,185,197,205],[116,165,182,183,206],[116,165,182,183,185,207],[116,165,179,182,183,191,208],[116,165,170,182,183,209],[116,165,182,183,197,210],[116,165,182,183,184,211],[116,165,182,183,212],[116,158,165,182,183],[116,158,165,176,178,182,183,188,197,200,208,210,211,213],[116,165,182,183,197,214],[65,116,165,182,183],[65,66,67,68,69,116,165,182,183],[116,130,134,165,182,183,208],[116,130,165,182,183,197,208],[116,125,165,182,183],[116,127,130,165,182,183,205,208],[116,165,182,183,185,205],[116,165,182,183,215],[116,125,165,182,183,215],[116,127,130,165,182,183,185,208],[116,122,123,126,129,165,176,182,183,197,208],[116,130,137,165,182,183],[116,122,128,165,182,183],[116,130,151,152,165,182,183],[116,126,130,165,182,183,200,208,215],[116,151,165,182,183,215],[116,124,125,165,182,183,215],[116,130,165,182,183],[116,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,152,153,154,155,156,157,165,182,183],[116,130,145,165,182,183],[116,130,137,138,165,182,183],[116,128,130,138,139,165,182,183],[116,129,165,182,183],[116,122,125,130,165,182,183],[116,130,134,138,139,165,182,183],[116,134,165,182,183],[116,128,130,133,165,182,183,208],[116,122,127,130,137,165,182,183],[116,165,182,183,197],[116,125,130,151,165,182,183,213,215],[64,116,165,182,183],[71,72,73,74,75,76,77,78,116,165,182,183],[84,116,165,182,183],[64,82,84,94,116,165,182,183],[64,86,91,93,116,165,182,183],[64,79,84,91,93,116,165,182,183],[64,91,116,165,182,183],[64,80,116,165,182,183],[64,79,80,82,84,91,93,95,98,99,100,116,165,182,183],[64,70,81,116,165,182,183],[64,80,82,84,91,93,99,101,102,116,165,182,183],[64,84,116,165,182,183],[70,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,116,165,182,183],[64,70,116,165,182,183],[64,90,91,116,165,182,183],[64,84,90,91,93,94,104,107,116,165,182,183],[64,82,84,86,88,89,90,91,116,165,182,183],[64,82,84,86,87,88,89,116,165,182,183],[64,79,81,82,84,88,91,92,116,165,182,183],[64,70,82,84,86,87,88,89,90,116,165,182,183],[64,70,79,80,81,82,83,116,165,182,183],[64,80,82,84,91,95,100,116,165,182,183],[64,84,91,116,165,182,183],[64,79,80,116,165,182,183],[58,116,165,182,183],[58,59,60,61,62,63,116,165,182,183]],"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":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","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":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"a9dc2e59fb40b94411bd995a0013c15385b99599a18b7141cf3eafd80c7f0f96","4015dc819b09b93f989d4df8f1f0f36cb99cb2aad8102ab8b4b27fb6020beb5f","ed06a7b359e2125c375f6bada6631fd038473dd624309b8a43a824693a6f6c89","46fa0b276ad58dc963c574f72bb9456b881f3d61bc0fe6827c24f3f02baa6038","1f0260dbafda11af88b11f1b6d662ee45517d44c8cc9a7248bd61d2d8ab1f880","502657b9a54e290098ba4f955efa476b91648b24d5310b8c6e7aa0d4cf8945ae","90755de39a18e2894ad3cced6cdf4cb670e09868b01a6f6465af558d865bf848",{"version":"bce89d3ef847715b91ffd525a157c779be8fafebe823671815f7ce96f27afcda","impliedFormat":99},{"version":"c67f9d85070618f586d632cf184b986eb604f426b90aa68ecdad1ac68ca3151c","impliedFormat":99},{"version":"c656cc6ded557aff87a6c823142852e3548c6a14f84bb48ee35c3e57b6ebc03b","impliedFormat":99},{"version":"0e34130243c29d8d826f868c4e00ff586b349627cb241b3d89f0459a6cdeff4d","impliedFormat":99},{"version":"d555c6cb465cc5cf8127adbbc496720d5200c9dfafa777bbf9dfdea74ebfe3a3","impliedFormat":99},{"version":"27a6936a863edf777150af3ebc65939fa34f51d68385f8a7f198d8ea53685a4d","impliedFormat":99},"ebfd3e57d9e7a8b7ae4c5b663c8d2838eaca3b3285a0c637ba8ca517cc2175d3","505847c2f2ca51addcc453c33269991e9173e0aa62289b452c8ab47df42c9d69","f476c7b455d73ec2f6601f601cb25fe4394bc0507b11742ca79b47959bc5f973","dc0ba5853cc4410c20acb0600f50b11c6bf2d1c3d359e2f4fdb544978de9b448","6a77481ec55fb135de07b99035cfe300dcc4c88d835aa3ce53c3238e27945e56","0129e9c0c12e615cdba3f6269bb1fac6f3fbe2c921833af0bc20aec91d1f05f4","bb8c6f2ece97c4e140b70dff14764b74fe9f94126ac9349587c23a7b8d7ad312","ffd7698fd0112628fca684563c8713e9e00d8e1d6ab3434e97118f6b94da38d4","6890123c41eab2722f06e6a9e419772463d1f8cba50b835190fd5d97e9168b1d",{"version":"ace46703366d57a01bdb80c7e69c6e9c0f21ee47aa2ade431c872b1946818071","signature":"c196961c4aa13e3bf28a7e56ac7fa0b0cbfc668eca4496292d629dd18f43296b"},{"version":"346c1a077f80d3d3c7d79222c9ec3173a4acc0acbd60df366e1e06c60c0ff56a","signature":"b8e3c1f3a85e05bcbc56fa28558cffc68ac40e4158afdc2d702ea825ce21d14d"},{"version":"e450607d8e68384cdc04c0b228496f96ea02f865ff58179e1c80b586ed1a90f2","signature":"17ee722c53770caad5479081a3db9f0df8135a8f061ea9ce57a507ca0c424cce"},{"version":"c6fdc876f586ff7e771a9e9e19064ee8a114f19f1d92310671bdceb341aa477a","signature":"26ce9aa6f798212e39770c45142239f3a54fa63697ba90bae90c6d7ac7da825a"},{"version":"3fc59c7fc528b079e01af4428b620bf5d475b12772efeb619aebeed36cf49297","signature":"78bde316dcb094df77d06b893e0b965d318ac5708d09e7cf6206931263be32e6"},{"version":"fb5eab9ea9b478dfaa49108b5577336581cce3268ce05fa7cfbeb297c3665d14","signature":"6e7e44d7615d2899c2dd6be4e15bbb2cd0b7f4afec2379c08db14b9eac5c9b43"},{"version":"09e51d54dafcb54a3e269e894a418222835a9465d5d2b7c9ff5c8858218fe144","signature":"b85f83aa4b7fb1abc375a73cb706295a146b9f22cf9fa5ec89105fcff6ea1495"},{"version":"ebcd37fc33d304904e44e74c25d6e9207940e7506e635c0c6f98cb4f426d9bb1","signature":"fd0cd0a179e95f7d4d5f7370209f6b413006242a045137d33ca230ae015ba760"},{"version":"50cbb0cbad7ad5458fcadd66b049c7f81ddfdb8b70e5969d3ea713373a7aabfb","signature":"fa716666e5bedc99e38d37def5182924b9dd9e6298c2751f8cebe0fc631ef697"},{"version":"1331cf0c367bbd777f44ef33edba76d102d774cbfab809d407268b4d47f42057","signature":"48280d2635c39dd226b7e5bb71d0519f355b60d4d92e9f6b5b4a427aa28412f8"},{"version":"6faf307cf70ec005026fc6416833ec4908d642e3a77009736544caf3de22b57d","signature":"8bdcd8a58fead736e81808193884907482c8d354f13a0516e9b236a07622c727"},{"version":"a0edc1b19f866a733758e688c654fcbbcfa0c65efd5dffd9cdedec18b6f69edd","signature":"8ebfa15cb2e79b885a21ae5f92507b5b9dd9b01041143554903c163f86611849"},{"version":"4a3303ef82833e5ad54c3de28e1c34d9eed43f9f4ea201489601a2a4a235205d","signature":"95784f449b26dbdf4aadd2f99a5c2f6c419d80f993ececa6c0c3e0159b452aa5"},{"version":"0aff49b1b29f98eec5519f0d4d9dad9c09147af8707c3de1a7e10da75e1b9d8d","signature":"89c0f7c64772fcb38eda1e15b26da3e53e4101c968a0eeb14954f154aee4dac1"},{"version":"363a8a4959eaad65bc28cc8e55924d8b3c34e86e242f8cdb2f4231dedd3c3d04","signature":"baeb8f9be968778478ffa26099ec4211dd28c6dea1633fd8fd1560c34fdd0269"},{"version":"694944e1fd18fe4163698c2fae4c889ad85528972cdf25b41637d7dd5fa9ab63","signature":"eceda86937454d399a4e4cd4a3e25835a4ac80ab930f399b20f53d8f1c772457"},{"version":"46c04c1e2260b02ed7e810f5846972dc10f8b020df35fca1766f86ba1eb6b55b","signature":"ae557ba7a3d28e8909ac395365eb5f8ff63bc28eb2eaace61650ed51f1bc1808"},{"version":"81817c75bdc2320effb5dd4e227522ca2f5b25b3749f9a9e93c64bcf7db0fdf2","signature":"60bd456f1b63861f880c386ddf1b3916098bbafbf4b5a46a5e5ebc4fcb9434c4"},{"version":"485a55be466932ca81f3a3d3b99daacd823a70b363124dea34d4be7b6cbab8a2","signature":"d081374b0bf74e2748138e8b0a56458e12e2ee7bd07fb239b92c97a33bba8d70"},{"version":"31345ef8ad7cbada6f250d7eedd80c0161b968d1c55f9cb3e87ca9865189419d","signature":"f730ff4577c8d45cb4a587d078ee5b692613c3de57f26a27a4be74c183adc226"},{"version":"00f2e56ac7df8a4ddfaa90d5b84b642e97d1863be77a27048616f49e0b5c0935","signature":"ebfed381c5296dbb1ebae8265ca08dbce33929fa829f6ac11f2f591beb1f4485"},{"version":"09a13e76ff50a96db13705516cebf99a5b21a5b243ed5f533d0e329c5b0bf44a","signature":"4233c4d8ac9cb79b3b71e4923eb486f08f5f2c6508fc177192081a402bee38b3"},{"version":"0c3e9c71b4b19608e5d70b404113c2c846cf2041f6f35d8a11a01b9532b9f06f","signature":"9a02cb3cccc3eeb3fea9327c47dbda2076e21f3da7b2eb659871dc91b8572f42"},{"version":"74275be0d81f63d07c396635afecde371e06ba0f66a7a95c3fcfd13483313bb8","signature":"1778dfd35a7d5885896c436792662c8d602ea8cf03aeed97b0381b6e82c4e980"},{"version":"b8c36e426ef70fabac5b9eeb6515e6d5f556efa0362f49c8227dd12cc8a2aa14","signature":"dfa88df7638cc24634255691d0a3fb72a4910b73211da89fab8f2362730cb3b2"},{"version":"cabbdd69707eb82ff7da49cc2d5ab927eeb7f208cfd83c0dd09b703520d08673","signature":"75ea946ee4d31489f494b0def56b2db669c3aac052713387d6edc51dc2ca86db"},{"version":"a5773bda0a29a40ebd2cf3d8ba652e359dfa8a480d81240b69afd32e209e1791","signature":"8b12bcaa49f76ee1ce7f77943a297078dba53abedd344da6d370012eab482c07"},{"version":"dee50164abb802b5ac8e07704a927c0ed47431972c6925648f16720a9323bdd2","signature":"d1b901b618ec72bff0fcb657edf03d83e2bcbb2687a9cddadea48a24ab23faf2"},{"version":"219072b8770d0e69f5c97a2e11a8541a8ea283efc43645e78c9c4b0b73b1c461","signature":"a1f5b4a129cd4b8f013533f200baf74615d690c41f1ef2147bd40ef6110c4a1b"},{"version":"efe83fa39bf0a263389f0c86e4e00644ac42cec704dd9a920e55b7f157e5a8fb","signature":"f2c0b5b634eed4010d9396710281a7fdc7019fe47507e8bcb706a58af985548a"},{"version":"9f976a3debb4c0c5847af438b8bdafac5899061a43a6e559a8e7b96ff430a99a","signature":"5df76ca2d799039334a825b621129061b89022808e0943397e045bc6feec894c"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","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":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"58647d85d0f722a1ce9de50955df60a7489f0593bf1a7015521efe901c06d770","impliedFormat":1},{"version":"73b5fa37db36eeac90c4d752e39586f1b57187400c4f5280fd05f16437287a45","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"80523c00b8544a2000ae0143e4a90a00b47f99823eb7926c1e03c494216fc363","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"746911b62b329587939560deb5c036aca48aece03147b021fa680223255d5183","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2b55d426ff2b9087485e52ac4bc7cfafe1dc420fc76dad926cd46526567c501a","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1}],"root":[[80,110]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":false,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[162,1],[163,1],[164,2],[116,3],[165,4],[166,5],[167,6],[111,7],[114,8],[112,7],[113,7],[168,9],[169,10],[170,11],[171,12],[172,13],[173,14],[174,14],[175,15],[176,16],[177,17],[178,18],[117,7],[115,7],[179,19],[180,20],[181,21],[215,22],[182,23],[183,7],[184,24],[185,25],[186,26],[187,27],[188,28],[189,29],[190,30],[191,31],[192,32],[193,32],[194,33],[195,7],[196,34],[197,35],[199,36],[198,37],[200,38],[201,39],[202,40],[203,41],[204,42],[205,43],[206,44],[207,45],[208,46],[209,47],[210,48],[211,49],[212,50],[118,7],[119,7],[120,7],[159,51],[160,7],[161,7],[213,52],[214,53],[121,7],[68,7],[69,7],[66,54],[70,55],[67,54],[65,7],[56,7],[57,7],[11,7],[10,7],[2,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[3,7],[20,7],[21,7],[4,7],[22,7],[26,7],[23,7],[24,7],[25,7],[27,7],[28,7],[29,7],[5,7],[30,7],[31,7],[32,7],[33,7],[6,7],[37,7],[34,7],[35,7],[36,7],[38,7],[7,7],[39,7],[44,7],[45,7],[40,7],[41,7],[42,7],[43,7],[8,7],[49,7],[46,7],[47,7],[48,7],[50,7],[9,7],[51,7],[52,7],[53,7],[55,7],[54,7],[1,7],[137,56],[147,57],[136,56],[157,58],[128,59],[127,60],[156,61],[150,62],[155,63],[130,64],[144,65],[129,66],[153,67],[125,68],[124,61],[154,69],[126,70],[131,71],[132,7],[135,71],[122,7],[158,72],[148,73],[139,74],[140,75],[142,76],[138,77],[141,78],[151,61],[133,79],[134,80],[143,81],[123,82],[146,73],[145,71],[149,7],[152,83],[75,84],[73,84],[77,84],[74,84],[79,85],[76,84],[72,84],[78,84],[71,84],[85,86],[95,87],[96,88],[86,84],[80,7],[94,89],[97,90],[98,91],[101,92],[82,93],[103,94],[102,91],[87,84],[99,95],[110,96],[88,97],[107,98],[108,99],[104,100],[100,95],[90,101],[93,102],[105,95],[91,103],[84,104],[106,105],[92,84],[81,91],[83,7],[109,106],[89,107],[59,7],[61,7],[63,108],[62,7],[64,109],[60,7],[58,7]],"latestChangedDtsFile":"./queries.d.ts","version":"5.9.3"}
|
package/dist/a11y.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ElementBase } from "./shape.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolver from a shape to an accessible name (screen-reader label).
|
|
4
|
+
* Plugins register their own to handle custom shape types — defaults
|
|
5
|
+
* cover the built-ins: text → text content, template → `metadata.label`
|
|
6
|
+
* or `type`, others → titleised `type`.
|
|
7
|
+
*
|
|
8
|
+
* The resolver is synchronous and pure so it can run in a
|
|
9
|
+
* `getElementAccessibleName` query without side effects.
|
|
10
|
+
*/
|
|
11
|
+
export type AccessibleNameResolver<S extends ElementBase = ElementBase> = (shape: S) => string;
|
|
12
|
+
export declare const registerAccessibleName: <S extends ElementBase>(type: string, resolver: AccessibleNameResolver<S>) => void;
|
|
13
|
+
/**
|
|
14
|
+
* Returns a short human-readable label for a shape. Falls back to the
|
|
15
|
+
* shape's `type` titleised when no resolver is registered.
|
|
16
|
+
*
|
|
17
|
+
* Examples:
|
|
18
|
+
* text shape with text "Hello" → "Hello"
|
|
19
|
+
* template "task-card" with metadata.label "Buy milk" → "Buy milk"
|
|
20
|
+
* rectangle → "Rectangle"
|
|
21
|
+
*/
|
|
22
|
+
export declare const getElementAccessibleName: (shape: ElementBase) => string;
|
|
23
|
+
//# sourceMappingURL=a11y.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../src/a11y.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAgC,MAAM,YAAY,CAAC;AAE5E;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;AAI/F,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,WAAW,EAC1D,MAAM,MAAM,EACZ,UAAU,sBAAsB,CAAC,CAAC,CAAC,KAClC,IAEF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,WAAW,KAAG,MAO7D,CAAC"}
|
package/dist/a11y.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const registry = new Map();
|
|
2
|
+
export const registerAccessibleName = (type, resolver) => {
|
|
3
|
+
registry.set(type, resolver);
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Returns a short human-readable label for a shape. Falls back to the
|
|
7
|
+
* shape's `type` titleised when no resolver is registered.
|
|
8
|
+
*
|
|
9
|
+
* Examples:
|
|
10
|
+
* text shape with text "Hello" → "Hello"
|
|
11
|
+
* template "task-card" with metadata.label "Buy milk" → "Buy milk"
|
|
12
|
+
* rectangle → "Rectangle"
|
|
13
|
+
*/
|
|
14
|
+
export const getElementAccessibleName = (shape) => {
|
|
15
|
+
const resolver = registry.get(shape.type);
|
|
16
|
+
if (resolver) {
|
|
17
|
+
const name = resolver(shape).trim();
|
|
18
|
+
if (name)
|
|
19
|
+
return name;
|
|
20
|
+
}
|
|
21
|
+
return titleise(shape.type);
|
|
22
|
+
};
|
|
23
|
+
const titleise = (s) => s.length === 0 ? s : s.charAt(0).toUpperCase() + s.slice(1).replace(/[-_]/g, " ");
|
|
24
|
+
// --- Built-in resolvers ---
|
|
25
|
+
registerAccessibleName("text", (s) => {
|
|
26
|
+
// Collapse whitespace and truncate long bodies so screen-reader
|
|
27
|
+
// announcements stay actionable.
|
|
28
|
+
const body = s.text.replace(/\s+/g, " ").trim();
|
|
29
|
+
return body.length > 80 ? `${body.slice(0, 77)}…` : body;
|
|
30
|
+
});
|
|
31
|
+
registerAccessibleName("template", (s) => {
|
|
32
|
+
const label = s.metadata?.label;
|
|
33
|
+
if (typeof label === "string" && label.trim())
|
|
34
|
+
return label.trim();
|
|
35
|
+
return titleise(s.templateId);
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=a11y.js.map
|
package/dist/a11y.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a11y.js","sourceRoot":"","sources":["../src/a11y.ts"],"names":[],"mappings":"AAaA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAY,EACZ,QAAmC,EAC7B,EAAE;IACR,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAkC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAkB,EAAU,EAAE;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CACrC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAEpF,6BAA6B;AAE7B,sBAAsB,CAAc,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;IAChD,gEAAgE;IAChE,iCAAiC;IACjC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,sBAAsB,CAAkB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;IACxD,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACnE,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { Vec2 } from "@oh-just-another/types";
|
|
2
|
+
import type { AnchorRef, NamedAnchor, StandardAnchor } from "./edge.js";
|
|
3
|
+
import type { ElementBase } from "./shape.js";
|
|
4
|
+
/**
|
|
5
|
+
* The 9 canonical named anchors every built-in shape exposes. They map to
|
|
6
|
+
* the local bounding box of a shape — four corners, four edge centres, and
|
|
7
|
+
* the geometric centre.
|
|
8
|
+
*
|
|
9
|
+
* top-left ─── top ─── top-right
|
|
10
|
+
* │ │ │
|
|
11
|
+
* left ─── center ─── right
|
|
12
|
+
* │ │ │
|
|
13
|
+
* bottom-left ─ bottom ─ bottom-right
|
|
14
|
+
*
|
|
15
|
+
* `top` / `right` / `bottom` / `left` are the edge centres; `top-left` etc.
|
|
16
|
+
* are the corners. Hosts may add custom anchors per shape via the
|
|
17
|
+
* `anchors` field on `ElementBase`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const STANDARD_ANCHOR_RATIOS: Readonly<Record<StandardAnchor, Vec2>>;
|
|
20
|
+
/** All 9 standard anchor names, in clockwise-from-top-left order. */
|
|
21
|
+
export declare const STANDARD_ANCHORS: readonly StandardAnchor[];
|
|
22
|
+
/**
|
|
23
|
+
* Resolve a named anchor to its *local-space* position inside the shape's
|
|
24
|
+
* bounding box. Returns `undefined` if the name isn't a standard anchor
|
|
25
|
+
* and isn't declared in the shape's own `anchors` map.
|
|
26
|
+
*
|
|
27
|
+
* Hosts looking up an `AnchorRef` should call `getAnchorLocal` /
|
|
28
|
+
* `getAnchorWorld` instead — those handle every `AnchorRef` kind.
|
|
29
|
+
*/
|
|
30
|
+
export declare const getNamedAnchorLocal: (shape: ElementBase, name: NamedAnchor) => Vec2 | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Resolve any `AnchorRef` to a point in the shape's local coordinate
|
|
33
|
+
* space (before `position` / `rotation` / `scale`). Throws on an unknown
|
|
34
|
+
* named anchor — callers either pass a `ratio` / `absolute` ref or use a
|
|
35
|
+
* registered standard / custom name.
|
|
36
|
+
*/
|
|
37
|
+
export declare const getAnchorLocal: (shape: ElementBase, anchor: AnchorRef) => Vec2;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve any `AnchorRef` to a world-space point. Applies the shape's
|
|
40
|
+
* `position` + `rotation` + `scale` to the local resolution from
|
|
41
|
+
* `getAnchorLocal`.
|
|
42
|
+
*/
|
|
43
|
+
export declare const getAnchorWorld: (shape: ElementBase, anchor: AnchorRef) => Vec2;
|
|
44
|
+
/**
|
|
45
|
+
* World-space outward unit normal at an anchor — the direction "away from
|
|
46
|
+
* the shape" used to push port dots a few pixels off the edge and to seed
|
|
47
|
+
* a link's exit stub.
|
|
48
|
+
*
|
|
49
|
+
* Computed as the direction from the shape's geometric centre to the
|
|
50
|
+
* anchor's world point, so it automatically respects rotation / non-
|
|
51
|
+
* uniform scale and works for cardinal ports, polygon edge midpoints, and
|
|
52
|
+
* corners alike. Returns `{ x: 0, y: -1 }` (up) as a stable fallback when
|
|
53
|
+
* the anchor coincides with the centre (e.g. a custom centre anchor),
|
|
54
|
+
* where "outward" is undefined.
|
|
55
|
+
*/
|
|
56
|
+
export declare const getAnchorOutwardNormal: (shape: ElementBase, anchor: AnchorRef) => Vec2;
|
|
57
|
+
/**
|
|
58
|
+
* Find the anchor on `shape` whose world position is closest to
|
|
59
|
+
* `worldPoint`. Returns the canonical `AnchorRef` you can persist on an
|
|
60
|
+
* `LinkEndpoint` so future renders stay locked to that port.
|
|
61
|
+
*
|
|
62
|
+
* Useful when committing an edge whose endpoint dropped near a shape:
|
|
63
|
+
* snap the drop position to the nearest of the 9 standard anchors (plus
|
|
64
|
+
* custom ones) so the edge tracks the shape on subsequent edits.
|
|
65
|
+
*/
|
|
66
|
+
export declare const findNearestAnchor: (shape: ElementBase, worldPoint: Vec2, excludeNames?: ReadonlySet<string>) => {
|
|
67
|
+
ref: AnchorRef;
|
|
68
|
+
world: Vec2;
|
|
69
|
+
distance: number;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Materialise the full anchor table for a shape — every standard anchor
|
|
73
|
+
* plus every custom one declared in `shape.anchors`. Custom entries with
|
|
74
|
+
* the same name as a standard anchor override the standard placement.
|
|
75
|
+
* Returns *local-space* coordinates.
|
|
76
|
+
*
|
|
77
|
+
* Renderers that draw port-dots use this to enumerate the dots once per
|
|
78
|
+
* frame instead of resolving each name individually.
|
|
79
|
+
*/
|
|
80
|
+
/**
|
|
81
|
+
* Anchor names that should not be offered as snap targets for the
|
|
82
|
+
* given shape, used by the edge-draw snap engine and the hover port-
|
|
83
|
+
* dot overlay. Containers omit `center` because that point lives
|
|
84
|
+
* inside the drop-zone, where a snap-to-anchor would compete with
|
|
85
|
+
* the reparent / drop gesture. Hosts can still target the centre
|
|
86
|
+
* explicitly via `kind: "anchor", anchor: { kind: "named", name:
|
|
87
|
+
* "center" }` — only the auto snap is filtered.
|
|
88
|
+
*/
|
|
89
|
+
export declare const snapExcludedAnchors: (shape: ElementBase) => ReadonlySet<string>;
|
|
90
|
+
export declare const listAnchorsLocal: (shape: ElementBase) => ReadonlyMap<string, Vec2>;
|
|
91
|
+
/**
|
|
92
|
+
* Geometry-aware default connection points for a shape, in *local* space.
|
|
93
|
+
*
|
|
94
|
+
* Unlike `listAnchorsLocal` (which always returns the 9 AABB-relative
|
|
95
|
+
* standard anchors), this returns the points the editor offers as the
|
|
96
|
+
* default snap/draw targets, derived from the shape's *real* geometry:
|
|
97
|
+
*
|
|
98
|
+
* - **polygon** — the midpoint of every edge (works for triangle,
|
|
99
|
+
* hexagon, …; points sit on the actual sloped edges, not the bbox).
|
|
100
|
+
* - **rectangle / ellipse / everything else** — the four bbox edge
|
|
101
|
+
* centres (`top` / `right` / `bottom` / `left`). For an axis-aligned
|
|
102
|
+
* rectangle these are the real edge midpoints; for an ellipse the
|
|
103
|
+
* cardinal points already lie on the curve.
|
|
104
|
+
*
|
|
105
|
+
* Corners and the centre are excluded — the centre is never a magnet
|
|
106
|
+
* target, and corner ports are visual noise for the default set
|
|
107
|
+
* (templates can still declare custom anchors there via `shape.anchors`).
|
|
108
|
+
*
|
|
109
|
+
* A shape's own `shape.anchors` entries are merged on top (and override a
|
|
110
|
+
* default with the same name), so a template can fully customise the port
|
|
111
|
+
* layout while non-templated shapes get sensible geometry-aware defaults.
|
|
112
|
+
*
|
|
113
|
+
* Returns a name→local-point map. Default names are the polygon edge
|
|
114
|
+
* indices (`edge-0`, `edge-1`, …) or the cardinal names (`top` / `right` /
|
|
115
|
+
* `bottom` / `left`).
|
|
116
|
+
*/
|
|
117
|
+
export declare const geometryDefaultAnchorsLocal: (shape: ElementBase) => ReadonlyMap<string, Vec2>;
|
|
118
|
+
/** The four bbox edge centres — the default port set for non-polygon shapes. */
|
|
119
|
+
export declare const CARDINAL_ANCHORS: readonly StandardAnchor[];
|
|
120
|
+
//# sourceMappingURL=anchors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchors.d.ts","sourceRoot":"","sources":["../src/anchors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAC;AAK9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAUzE,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAUrD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,WAAW,EAAE,MAAM,WAAW,KAAG,IAAI,GAAG,SAElF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,QAAQ,SAAS,KAAG,IAEtE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,QAAQ,SAAS,KAAG,IAUtE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,WAAW,EAAE,QAAQ,SAAS,KAAG,IAQ9E,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,WAAW,EAClB,YAAY,IAAI,EAChB,eAAc,WAAW,CAAC,MAAM,CAAwB,KACvD;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CA2BjD,CAAC;AAeF;;;;;;;;GAQG;AACH;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,WAAW,KAAG,WAAW,CAAC,MAAM,CAG1E,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAAI,OAAO,WAAW,KAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAa7E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,2BAA2B,GAAI,OAAO,WAAW,KAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAiBxF,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAAuC,CAAC"}
|