@opsydyn/effect-three-foldkit 0.1.0 → 0.3.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 +20 -1
- package/README.md +2 -2
- package/dist/dom/webgpu.d.ts +3 -2
- package/dist/dom/webgpu.d.ts.map +1 -1
- package/dist/dom/webgpuPostprocessing.d.ts.map +1 -1
- package/dist/element.d.ts +86 -2
- package/dist/element.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +4 -4
- package/package.json +2 -2
- package/src/dom/webgpu.ts +3 -2
- package/src/dom/webgpuPostprocessing.ts +9 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.0](https://github.com/opsydyn/fold-kit-experiments/compare/effect-three-foldkit-v0.2.0...effect-three-foldkit-v0.3.0) (2026-10-19)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- **effect-three:** Drei's Billboard, RoundedBox and Backdrop, Detailed, CameraShake and Clone ([3ec570e](https://github.com/opsydyn/fold-kit-experiments/commit/3ec570e14e7632565adf846ef48b66287713a291))
|
|
8
|
+
|
|
9
|
+
## [0.2.0](https://github.com/opsydyn/fold-kit-experiments/compare/effect-three-foldkit-v0.1.0...effect-three-foldkit-v0.2.0) (2026-10-19)
|
|
10
|
+
|
|
11
|
+
### ⚠ BREAKING CHANGES
|
|
12
|
+
|
|
13
|
+
- **effect-three:** `RenderKit.drawsLabels` is gone; a render kit names its `shading` instead. Code that spreads a renderer factory to instrument it is unaffected.
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- **effect-three:** render kits name their kind of material; label engines may draw with TSL ([8059fde](https://github.com/opsydyn/fold-kit-experiments/commit/8059fde41349297dea0c7c3383361333dc6a25ad))
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
- **effect-three-foldkit:** WebGPU bloom keeps a transparent canvas transparent ([6e3fe6a](https://github.com/opsydyn/fold-kit-experiments/commit/6e3fe6af29ee14ad6b4bad551d11a5c9ee6bf9f9))
|
|
22
|
+
|
|
3
23
|
## 0.1.0 (2026-10-18)
|
|
4
24
|
|
|
5
25
|
### Features
|
|
@@ -52,5 +72,4 @@
|
|
|
52
72
|
### Bug Fixes
|
|
53
73
|
|
|
54
74
|
- **effect-three-foldkit:** build the troika package before typechecking tests ([31df93f](https://github.com/opsydyn/fold-kit-experiments/commit/31df93f215dbedf865410e5384a21307ab367404))
|
|
55
|
-
- **effect-three-foldkit:** draw real WebGPU in Linux e2e ([fdf82e7](https://github.com/opsydyn/fold-kit-experiments/commit/fdf82e7815a901d09bea5fbd50769f398eded5c6))
|
|
56
75
|
- **effect-three-foldkit:** draw real WebGPU in Linux e2e ([186db41](https://github.com/opsydyn/fold-kit-experiments/commit/186db41bf649888f31e83c49db5bd4c23facd0e6))
|
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ EffectThreeFoldkit.view(
|
|
|
40
40
|
|
|
41
41
|
- **Updates are in place.** Foldkit hands the element a new scene on every render, and the core diffs it, so unchanged scenes cost no host changes and changed ones reuse their three.js objects.
|
|
42
42
|
- **Animation never touches the Model.** Behaviours such as `spin` run in the frame loop, outside Foldkit's `update`.
|
|
43
|
-
- **Events are typed and opt-in:** `onClick`, `onDoubleClick`, `onContextMenu`, `onPointerDown`, `onPointerUp`, `onPointerEnter`, `onPointerMove`, `onPointerLeave`, `onPointerMissed`, `onWheel`, `onDrag`, `onDragEnd`, `onGesture`, `onCollision`, `onContactForce`, `onMeasured`, `onXRSession`, `onXRStick`, `onXRButton`, `onXRSurface`, `onPerformanceChange`, `onError` and `onReconciled`. Only the handlers you pass are bound. Hits carry the mesh key (and instance), world-space point, distance, face normal and uv.
|
|
43
|
+
- **Events are typed and opt-in:** `onClick`, `onDoubleClick`, `onContextMenu`, `onPointerDown`, `onPointerUp`, `onPointerEnter`, `onPointerMove`, `onPointerLeave`, `onPointerMissed`, `onWheel`, `onDrag`, `onDragEnd`, `onGesture`, `onAutoRotated`, `onCollision`, `onContactForce`, `onMeasured`, `onLabelMeasured`, `onXRSession`, `onXRStick`, `onXRButton`, `onXRSurface`, `onXRMoved`, `onXRPlanes`, `onXRMeshes`, `onPerformanceChange`, `onError` and `onReconciled`. Only the handlers you pass are bound. Hits carry the mesh key (and instance), world-space point, distance, face normal and uv.
|
|
44
44
|
- **Controls:** with `scene({ gestures: 'scene' })`, `onGesture` reports drags, the wheel and pinches; `orbit(model.camera, gesture)` moves a camera kept in the Model ([ADR-006](../../docs/effect-three/adr/006-controls-as-data.md)).
|
|
45
45
|
- **HTML overlays:** `overlays: [{ overlay, content }]` places Model-rendered HTML at points in the scene every drawn frame, as Drei's `Html`.
|
|
46
46
|
- **Groups and drags:** hits carry their ancestor `path`, and an `interactive` group makes every mesh inside it pickable. A press on a mesh captures the pointer, so `onDrag` keeps firing off the mesh and off the canvas; pair its `ray` with `pointOnPlane` to drag along a plane.
|
|
@@ -69,7 +69,7 @@ EffectThreeFoldkit.view(
|
|
|
69
69
|
|
|
70
70
|
`makeEnvironment(window, options)` takes:
|
|
71
71
|
|
|
72
|
-
- `renderer`: a renderer factory per canvas: `webglRendererFactory` (the default) or `webgpuRendererFactory` (three's `WebGPURenderer`, with its WebGL 2 backend as fallback; labels
|
|
72
|
+
- `renderer`: a renderer factory per canvas: `webglRendererFactory` (the default) or `webgpuRendererFactory` (three's `WebGPURenderer`, with its WebGL 2 backend as fallback; for labels under it, take `troikaLabels` from `@opsydyn/effect-three-troika/webgpu`), or your own for test instrumentation (spread the factory you wrap, so its render kit comes along);
|
|
73
73
|
- `pixelRatio`: fixed, or `[min, max]` around the device's;
|
|
74
74
|
- `behaviours`: behaviours scenes may name with `behave(name)`, beside `float`;
|
|
75
75
|
- `physics`: a physics engine, or the promise of one (`loadRapier()`);
|
package/dist/dom/webgpu.d.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* contact shadows in TSL), post-processes with `RenderPipeline`, and presents in WebXR.
|
|
6
6
|
* It starts asynchronously (`init()`), which the runtime waits for.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Its kit shades with TSL, so labels come from a label engine's `createTsl` (troika's is
|
|
9
|
+
* `troikaLabels` from `@opsydyn/effect-three-troika/webgpu`); an engine without one draws
|
|
10
|
+
* no labels here.
|
|
10
11
|
*
|
|
11
12
|
* @module
|
|
12
13
|
*/
|
package/dist/dom/webgpu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpu.d.ts","sourceRoot":"","sources":["../../src/dom/webgpu.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webgpu.d.ts","sourceRoot":"","sources":["../../src/dom/webgpu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,uBAAuB,CAAC;AAwB3F,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AA+DF,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,WACxB,iBAAiB,YAChB,aAAa,KACrB,eA8FD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuPostprocessing.d.ts","sourceRoot":"","sources":["../../src/dom/webgpuPostprocessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webgpuPostprocessing.d.ts","sourceRoot":"","sources":["../../src/dom/webgpuPostprocessing.ts"],"names":[],"mappings":"AA6BA,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8B1D,eAAO,MAAM,0BAA0B,aAAc,cAAc,KAAG,cAwCrE,CAAC"}
|
package/dist/element.d.ts
CHANGED
|
@@ -81,6 +81,18 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
81
81
|
readonly lookAt: Schema.Tuple<readonly [Schema.Finite, Schema.Finite, Schema.Finite]>;
|
|
82
82
|
readonly damping: Schema.Finite;
|
|
83
83
|
readonly autoRotate: Schema.Finite;
|
|
84
|
+
readonly shake: Schema.withDecodingDefaultKey<Schema.NullOr<Schema.Struct<{
|
|
85
|
+
readonly intensity: Schema.Finite;
|
|
86
|
+
readonly decay: Schema.Boolean;
|
|
87
|
+
readonly decayRate: Schema.Finite;
|
|
88
|
+
readonly maxYaw: Schema.Finite;
|
|
89
|
+
readonly maxPitch: Schema.Finite;
|
|
90
|
+
readonly maxRoll: Schema.Finite;
|
|
91
|
+
readonly yawFrequency: Schema.Finite;
|
|
92
|
+
readonly pitchFrequency: Schema.Finite;
|
|
93
|
+
readonly rollFrequency: Schema.Finite;
|
|
94
|
+
readonly trigger: Schema.Finite;
|
|
95
|
+
}>>, never>;
|
|
84
96
|
}>, Schema.TaggedStruct<"Orthographic", {
|
|
85
97
|
readonly zoom: Schema.Finite;
|
|
86
98
|
readonly near: Schema.Finite;
|
|
@@ -89,6 +101,18 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
89
101
|
readonly lookAt: Schema.Tuple<readonly [Schema.Finite, Schema.Finite, Schema.Finite]>;
|
|
90
102
|
readonly damping: Schema.Finite;
|
|
91
103
|
readonly autoRotate: Schema.Finite;
|
|
104
|
+
readonly shake: Schema.withDecodingDefaultKey<Schema.NullOr<Schema.Struct<{
|
|
105
|
+
readonly intensity: Schema.Finite;
|
|
106
|
+
readonly decay: Schema.Boolean;
|
|
107
|
+
readonly decayRate: Schema.Finite;
|
|
108
|
+
readonly maxYaw: Schema.Finite;
|
|
109
|
+
readonly maxPitch: Schema.Finite;
|
|
110
|
+
readonly maxRoll: Schema.Finite;
|
|
111
|
+
readonly yawFrequency: Schema.Finite;
|
|
112
|
+
readonly pitchFrequency: Schema.Finite;
|
|
113
|
+
readonly rollFrequency: Schema.Finite;
|
|
114
|
+
readonly trigger: Schema.Finite;
|
|
115
|
+
}>>, never>;
|
|
92
116
|
}>]>;
|
|
93
117
|
readonly gestures: Schema.Literals<readonly ["page", "scene"]>;
|
|
94
118
|
readonly views: Schema.$Array<Schema.Struct<{
|
|
@@ -101,6 +125,18 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
101
125
|
readonly lookAt: Schema.Tuple<readonly [Schema.Finite, Schema.Finite, Schema.Finite]>;
|
|
102
126
|
readonly damping: Schema.Finite;
|
|
103
127
|
readonly autoRotate: Schema.Finite;
|
|
128
|
+
readonly shake: Schema.withDecodingDefaultKey<Schema.NullOr<Schema.Struct<{
|
|
129
|
+
readonly intensity: Schema.Finite;
|
|
130
|
+
readonly decay: Schema.Boolean;
|
|
131
|
+
readonly decayRate: Schema.Finite;
|
|
132
|
+
readonly maxYaw: Schema.Finite;
|
|
133
|
+
readonly maxPitch: Schema.Finite;
|
|
134
|
+
readonly maxRoll: Schema.Finite;
|
|
135
|
+
readonly yawFrequency: Schema.Finite;
|
|
136
|
+
readonly pitchFrequency: Schema.Finite;
|
|
137
|
+
readonly rollFrequency: Schema.Finite;
|
|
138
|
+
readonly trigger: Schema.Finite;
|
|
139
|
+
}>>, never>;
|
|
104
140
|
}>, Schema.TaggedStruct<"Orthographic", {
|
|
105
141
|
readonly zoom: Schema.Finite;
|
|
106
142
|
readonly near: Schema.Finite;
|
|
@@ -109,6 +145,18 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
109
145
|
readonly lookAt: Schema.Tuple<readonly [Schema.Finite, Schema.Finite, Schema.Finite]>;
|
|
110
146
|
readonly damping: Schema.Finite;
|
|
111
147
|
readonly autoRotate: Schema.Finite;
|
|
148
|
+
readonly shake: Schema.withDecodingDefaultKey<Schema.NullOr<Schema.Struct<{
|
|
149
|
+
readonly intensity: Schema.Finite;
|
|
150
|
+
readonly decay: Schema.Boolean;
|
|
151
|
+
readonly decayRate: Schema.Finite;
|
|
152
|
+
readonly maxYaw: Schema.Finite;
|
|
153
|
+
readonly maxPitch: Schema.Finite;
|
|
154
|
+
readonly maxRoll: Schema.Finite;
|
|
155
|
+
readonly yawFrequency: Schema.Finite;
|
|
156
|
+
readonly pitchFrequency: Schema.Finite;
|
|
157
|
+
readonly rollFrequency: Schema.Finite;
|
|
158
|
+
readonly trigger: Schema.Finite;
|
|
159
|
+
}>>, never>;
|
|
112
160
|
}>]>;
|
|
113
161
|
readonly rect: Schema.Struct<{
|
|
114
162
|
readonly x: Schema.Finite;
|
|
@@ -129,6 +177,18 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
129
177
|
readonly lookAt: Schema.Tuple<readonly [Schema.Finite, Schema.Finite, Schema.Finite]>;
|
|
130
178
|
readonly damping: Schema.Finite;
|
|
131
179
|
readonly autoRotate: Schema.Finite;
|
|
180
|
+
readonly shake: Schema.withDecodingDefaultKey<Schema.NullOr<Schema.Struct<{
|
|
181
|
+
readonly intensity: Schema.Finite;
|
|
182
|
+
readonly decay: Schema.Boolean;
|
|
183
|
+
readonly decayRate: Schema.Finite;
|
|
184
|
+
readonly maxYaw: Schema.Finite;
|
|
185
|
+
readonly maxPitch: Schema.Finite;
|
|
186
|
+
readonly maxRoll: Schema.Finite;
|
|
187
|
+
readonly yawFrequency: Schema.Finite;
|
|
188
|
+
readonly pitchFrequency: Schema.Finite;
|
|
189
|
+
readonly rollFrequency: Schema.Finite;
|
|
190
|
+
readonly trigger: Schema.Finite;
|
|
191
|
+
}>>, never>;
|
|
132
192
|
}>, Schema.TaggedStruct<"Orthographic", {
|
|
133
193
|
readonly zoom: Schema.Finite;
|
|
134
194
|
readonly near: Schema.Finite;
|
|
@@ -137,9 +197,21 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
137
197
|
readonly lookAt: Schema.Tuple<readonly [Schema.Finite, Schema.Finite, Schema.Finite]>;
|
|
138
198
|
readonly damping: Schema.Finite;
|
|
139
199
|
readonly autoRotate: Schema.Finite;
|
|
200
|
+
readonly shake: Schema.withDecodingDefaultKey<Schema.NullOr<Schema.Struct<{
|
|
201
|
+
readonly intensity: Schema.Finite;
|
|
202
|
+
readonly decay: Schema.Boolean;
|
|
203
|
+
readonly decayRate: Schema.Finite;
|
|
204
|
+
readonly maxYaw: Schema.Finite;
|
|
205
|
+
readonly maxPitch: Schema.Finite;
|
|
206
|
+
readonly maxRoll: Schema.Finite;
|
|
207
|
+
readonly yawFrequency: Schema.Finite;
|
|
208
|
+
readonly pitchFrequency: Schema.Finite;
|
|
209
|
+
readonly rollFrequency: Schema.Finite;
|
|
210
|
+
readonly trigger: Schema.Finite;
|
|
211
|
+
}>>, never>;
|
|
140
212
|
}>]>;
|
|
141
213
|
readonly background: Schema.NullOr<Schema.Int>;
|
|
142
|
-
readonly children: Schema.$Array<Schema.Codec<import("@opsydyn/effect-three").SceneNode,
|
|
214
|
+
readonly children: Schema.$Array<Schema.Codec<import("@opsydyn/effect-three").SceneNode, unknown, never, never>>;
|
|
143
215
|
}>>;
|
|
144
216
|
readonly overlays: Schema.$Array<Schema.Struct<{
|
|
145
217
|
readonly key: Schema.String;
|
|
@@ -325,6 +397,18 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
325
397
|
}>, Schema.TaggedStruct<"Circle", {
|
|
326
398
|
readonly radius: Schema.Finite;
|
|
327
399
|
readonly segments: Schema.Int;
|
|
400
|
+
}>, Schema.TaggedStruct<"RoundedBox", {
|
|
401
|
+
readonly width: Schema.Finite;
|
|
402
|
+
readonly height: Schema.Finite;
|
|
403
|
+
readonly depth: Schema.Finite;
|
|
404
|
+
readonly radius: Schema.Finite;
|
|
405
|
+
readonly smoothness: Schema.Int;
|
|
406
|
+
readonly bevelSegments: Schema.Int;
|
|
407
|
+
readonly steps: Schema.Int;
|
|
408
|
+
readonly creaseAngle: Schema.Finite;
|
|
409
|
+
}>, Schema.TaggedStruct<"Backdrop", {
|
|
410
|
+
readonly floor: Schema.Finite;
|
|
411
|
+
readonly segments: Schema.Int;
|
|
328
412
|
}>]>;
|
|
329
413
|
}>>;
|
|
330
414
|
readonly materials: Schema.$Array<Schema.Struct<{
|
|
@@ -396,7 +480,7 @@ export declare const sceneElement: CustomElement.CustomElementSpec<"effect-three
|
|
|
396
480
|
}>]>;
|
|
397
481
|
}>>;
|
|
398
482
|
}>;
|
|
399
|
-
readonly children: Schema.$Array<Schema.Codec<import("@opsydyn/effect-three").SceneNode,
|
|
483
|
+
readonly children: Schema.$Array<Schema.Codec<import("@opsydyn/effect-three").SceneNode, unknown, never, never>>;
|
|
400
484
|
}>;
|
|
401
485
|
}, {
|
|
402
486
|
'scene-click': Schema.Struct<{
|
package/dist/element.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,qFAAqF;AACrF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAIhD,wEAAwE;AACxE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,eAAe;;EAE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAE1D,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,qFAAqF;AACrF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAIhD,wEAAwE;AACxE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,eAAe;;EAE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCvB,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,YAAY;oBAChB,aAAa;0BACP,oBAAoB;0BACpB,oBAAoB;0BACpB,oBAAoB;wBACtB,kBAAkB;2BACf,qBAAqB;0BACtB,oBAAoB;2BACnB,qBAAqB;4BACpB,sBAAsB;oBAC9B,aAAa;mBACd,YAAY;sBACT,gBAAgB;sBAChB,eAAe;0BACX,oBAAoB;wBACtB,iBAAiB;2BACd,qBAAqB;uBACzB,gBAAgB;4BACX,sBAAsB;sBAC5B,gBAAgB;uBACf,iBAAiB;wBAChB,kBAAkB;sBACpB,gBAAgB;uBACf,iBAAiB;uBACjB,iBAAiB;iCACP,mBAAmB;CACwC,CAAC;AAElF,yFAAyF;AACzF,eAAO,MAAM,cAAc;;;QAEV,MAAM;;EACrB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -604,6 +604,7 @@ import {
|
|
|
604
604
|
dot,
|
|
605
605
|
fract,
|
|
606
606
|
luminance,
|
|
607
|
+
max,
|
|
607
608
|
mix,
|
|
608
609
|
pass,
|
|
609
610
|
rand,
|
|
@@ -616,8 +617,11 @@ import {
|
|
|
616
617
|
import { RenderPipeline } from "three/webgpu";
|
|
617
618
|
var applied = (input, effect) => {
|
|
618
619
|
switch (effect._tag) {
|
|
619
|
-
case "Bloom":
|
|
620
|
-
|
|
620
|
+
case "Bloom": {
|
|
621
|
+
const glow = bloom(input, effect.strength, effect.radius, effect.threshold);
|
|
622
|
+
const shine = max(glow.r, max(glow.g, glow.b));
|
|
623
|
+
return vec4(input.rgb.add(glow.rgb), clamp(input.a.add(shine), 0, 1));
|
|
624
|
+
}
|
|
621
625
|
case "Vignette": {
|
|
622
626
|
const centred = screenUV.sub(0.5).mul(effect.offset);
|
|
623
627
|
return vec4(mix(input.rgb, vec3(1 - effect.darkness), dot(centred, centred)), input.a);
|
|
@@ -2033,5 +2037,5 @@ export {
|
|
|
2033
2037
|
webgpuRendererFactory
|
|
2034
2038
|
};
|
|
2035
2039
|
|
|
2036
|
-
//# debugId=
|
|
2040
|
+
//# debugId=4118984BABDF337D64756E2164756E21
|
|
2037
2041
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"/**\n * The WebGL2 renderer behind the core's backend-neutral renderer contract.\n *\n * @module\n */\nimport type { RendererFactory, RenderSettings, RenderTarget } from '@opsydyn/effect-three';\nimport { webglKit } from '@opsydyn/effect-three/webgl';\nimport {\n type Camera,\n HalfFloatType,\n LinearFilter,\n type Object3D,\n PMREMGenerator,\n type Scene,\n Vector2,\n WebGLRenderer,\n type WebGLRendererParameters,\n WebGLRenderTarget,\n} from 'three';\nimport { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';\n\nimport { createPostProcessing } from './postprocessing.ts';\nimport {\n colorSpaces,\n forgetPresentable,\n recompileMaterials,\n registerPresentable,\n shadowTypes,\n toneMappings,\n} from './renderSettings.ts';\n\n/** Options passed through to three's `WebGLRenderer`. The canvas is always the scene's own. */\nexport type WebGLOptions = Omit<WebGLRendererParameters, 'canvas'>;\n\n/**\n * Applies scene render settings; a change of shadow mode re-renders the shadow maps.\n * Returns whether shadows were switched on or off, which materials must be recompiled for.\n */\nconst configure = (renderer: WebGLRenderer, settings: RenderSettings): boolean => {\n const shadowMap = renderer.shadowMap;\n const enabled = settings.shadows !== 'off';\n const switched = shadowMap.enabled !== enabled;\n const type = enabled ? shadowTypes[settings.shadows] : shadowMap.type;\n if (switched || shadowMap.type !== type) shadowMap.needsUpdate = true;\n shadowMap.enabled = enabled;\n shadowMap.type = type;\n renderer.toneMapping = toneMappings[settings.toneMapping];\n renderer.toneMappingExposure = settings.exposure;\n renderer.outputColorSpace = colorSpaces[settings.colorSpace];\n return switched;\n};\n\nconst drawingSize = new Vector2();\n\n/**\n * A render texture's target, as Drei's `useFBO` makes one for `RenderTexture` (drei\n * `bf6f4ad`, `src/core/Fbo.tsx`): half-float colour, linear filtering, multisampled, with\n * a depth buffer.\n */\nconst createTarget = (\n targets: WeakMap<RenderTarget, WebGLRenderTarget>,\n width: number,\n height: number,\n): RenderTarget => {\n const target = new WebGLRenderTarget(width, height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n type: HalfFloatType,\n samples: 8,\n });\n const handle = { texture: target.texture, dispose: () => target.dispose() };\n targets.set(handle, target);\n return handle;\n};\n\n/**\n * three.js's `RoomEnvironment`, prefiltered for image-based lighting, as three's examples\n * set it up (`PMREMGenerator.fromScene(new RoomEnvironment(), 0.04)`).\n */\nconst createRoom = (renderer: WebGLRenderer): RenderTarget => {\n const generator = new PMREMGenerator(renderer);\n const room = new RoomEnvironment();\n const target = generator.fromScene(room, 0.04);\n room.dispose();\n generator.dispose();\n return { texture: target.texture, dispose: () => target.dispose() };\n};\n\n/**\n * Draws a frame of an immersive session. In AR the room shows through: three clears to\n * transparent there, but a background (an environment shown as one) would cover it, so it\n * is left out of the frame.\n */\nconst drawPresenting = (renderer: WebGLRenderer, scene: Scene, camera: Camera): void => {\n const passthrough = renderer.xr.getEnvironmentBlendMode() !== 'opaque';\n if (!passthrough || scene.background === null) {\n renderer.render(scene, camera);\n return;\n }\n const background = scene.background;\n scene.background = null;\n renderer.render(scene, camera);\n scene.background = background;\n};\n\n/** A factory for a WebGL2 renderer drawing into `canvas`. `create` throws if WebGL2 is unavailable. */\nexport const webglRendererFactory = (\n canvas: HTMLCanvasElement,\n options: WebGLOptions = {},\n): RendererFactory => ({\n // The GLSL parts of a scene (sky, shader grid, contact shadows) go with this renderer.\n kit: webglKit,\n create: () => {\n const renderer = new WebGLRenderer({ antialias: true, ...options, canvas });\n registerPresentable(canvas, renderer, {\n xr: renderer.xr,\n setXrLoop: (callback) => renderer.xr.setAnimationLoop(callback),\n });\n const post = createPostProcessing(renderer);\n const targets = new WeakMap<RenderTarget, WebGLRenderTarget>();\n // The pixel ratio is the viewport's, scaled by the scene's resolution setting.\n let pixelRatio = 1;\n let resolution = 1;\n let scissored = false;\n // Counts shadow switches; each scene drawn (main or render texture) recompiles its\n // materials once after a switch.\n let shadowSwitches = 0;\n const compiledAt = new WeakMap<Object3D, number>();\n const applyPixelRatio = (): void => {\n if (renderer.getPixelRatio() !== pixelRatio * resolution) {\n renderer.setPixelRatio(pixelRatio * resolution);\n }\n const { width, height } = renderer.getSize(drawingSize);\n post.setSize(width, height, pixelRatio * resolution);\n };\n return {\n render: (scene, camera, area, target) => {\n if (shadowSwitches > 0 && compiledAt.get(scene) !== shadowSwitches) {\n recompileMaterials(scene);\n compiledAt.set(scene, shadowSwitches);\n }\n const webglTarget = target === undefined ? undefined : targets.get(target);\n if (webglTarget !== undefined) {\n // As Drei's RenderTexture draws (src/core/RenderTexture.tsx): into the target, then\n // back to whatever was bound. A target keeps its own viewport and scissor.\n // Targets start transparent, whatever the canvas clears to: what the scene does\n // not cover stays see-through (a render texture without a background, contact\n // shadows away from objects).\n // Offscreen passes keep their own camera, even while presenting in XR (three\n // would otherwise draw them from the headset).\n const previous = renderer.getRenderTarget();\n const clearAlpha = renderer.getClearAlpha();\n const xrEnabled = renderer.xr.enabled;\n renderer.xr.enabled = false;\n renderer.setClearAlpha(0);\n renderer.setRenderTarget(webglTarget);\n renderer.render(scene, camera);\n renderer.setRenderTarget(previous);\n renderer.setClearAlpha(clearAlpha);\n renderer.xr.enabled = xrEnabled;\n return;\n }\n // Presenting in XR, three draws the headset's views itself: no areas, no effects.\n if (renderer.xr.isPresenting) {\n drawPresenting(renderer, scene, camera);\n return;\n }\n const { width, height } = renderer.getSize(drawingSize);\n if (area === undefined) {\n if (scissored) {\n renderer.setScissorTest(false);\n renderer.setViewport(0, 0, width, height);\n scissored = false;\n }\n if (!post.render(scene, camera)) renderer.render(scene, camera);\n return;\n }\n // three's viewport and scissor origin is the bottom left; areas are from the top.\n const bottom = height - area.y - area.height;\n renderer.setViewport(area.x, bottom, area.width, area.height);\n renderer.setScissor(area.x, bottom, area.width, area.height);\n renderer.setScissorTest(true);\n scissored = true;\n // Effects apply to the single full view only; views draw straight to the screen.\n renderer.render(scene, camera);\n },\n createTarget: (width, height) => createTarget(targets, width, height),\n createEnvironment: () => createRoom(renderer),\n configure: (settings) => {\n if (configure(renderer, settings)) shadowSwitches++;\n resolution = settings.resolution;\n post.configure(settings.effects);\n applyPixelRatio();\n },\n setViewport: (viewport) => {\n pixelRatio = viewport.pixelRatio;\n applyPixelRatio();\n renderer.setSize(viewport.width, viewport.height, false);\n post.setSize(viewport.width, viewport.height, pixelRatio * resolution);\n },\n memory: () => ({\n geometries: renderer.info.memory.geometries,\n textures: renderer.info.memory.textures,\n }),\n // dispose() frees three's GPU objects but not the WebGL context. Browsers cap live\n // contexts (about 16 in Chromium), so release it now rather than at garbage collection.\n dispose: () => {\n forgetPresentable(canvas);\n void renderer.xr.getSession()?.end();\n post.dispose();\n renderer.dispose();\n renderer.forceContextLoss();\n },\n };\n },\n});\n",
|
|
11
11
|
"/**\n * Post-processing for the WebGL renderer: three.js's `EffectComposer`, built from the\n * scene's `render.effects` and rebuilt only when they change. With no effects the scene\n * renders straight to the screen and no composer exists.\n *\n * The composer renders into a multisampled target, so antialiasing survives, and ends\n * with three's `OutputPass`, which applies tone mapping and the output colour space.\n *\n * @module\n */\nimport { effectsEqual, type PostEffect } from '@opsydyn/effect-three';\nimport {\n type Camera,\n HalfFloatType,\n PerspectiveCamera,\n type Scene,\n Scene as EmptyScene,\n Vector2,\n type WebGLRenderer,\n WebGLRenderTarget,\n} from 'three';\nimport { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';\nimport { FilmPass } from 'three/addons/postprocessing/FilmPass.js';\nimport { OutputPass } from 'three/addons/postprocessing/OutputPass.js';\nimport type { Pass } from 'three/addons/postprocessing/Pass.js';\nimport { RenderPass } from 'three/addons/postprocessing/RenderPass.js';\nimport { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';\nimport { UnrealBloomPass } from 'three/addons/postprocessing/UnrealBloomPass.js';\nimport { VignetteShader } from 'three/addons/shaders/VignetteShader.js';\n\ntype Size = { width: number; height: number; pixelRatio: number };\n\nconst passFor = (effect: PostEffect, size: Size): Pass => {\n switch (effect._tag) {\n case 'Bloom':\n return new UnrealBloomPass(\n new Vector2(size.width, size.height),\n effect.strength,\n effect.radius,\n effect.threshold,\n );\n case 'Vignette': {\n const pass = new ShaderPass(VignetteShader);\n pass.uniforms['offset'] = { value: effect.offset };\n pass.uniforms['darkness'] = { value: effect.darkness };\n return pass;\n }\n case 'Film':\n return new FilmPass(effect.intensity, effect.grayscale);\n }\n};\n\nexport type PostProcessing = {\n /** Rebuilds the passes when `effects` differ from the current ones. */\n readonly configure: (effects: ReadonlyArray<PostEffect>) => void;\n readonly setSize: (width: number, height: number, pixelRatio: number) => void;\n /** Renders through the effects; returns false when there are none to apply. */\n readonly render: (scene: Scene, camera: Camera) => boolean;\n readonly dispose: () => void;\n};\n\nexport const createPostProcessing = (renderer: WebGLRenderer): PostProcessing => {\n let effects: ReadonlyArray<PostEffect> = [];\n let composer: EffectComposer | undefined;\n let renderPass: RenderPass | undefined;\n const size: Size = { width: 1, height: 1, pixelRatio: 1 };\n\n const dispose = (): void => {\n if (composer === undefined) return;\n for (const pass of composer.passes) pass.dispose();\n composer.dispose();\n composer = undefined;\n renderPass = undefined;\n };\n\n const build = (): void => {\n dispose();\n if (effects.length === 0) return;\n const target = new WebGLRenderTarget(size.width, size.height, {\n type: HalfFloatType,\n samples: 4,\n });\n const next = new EffectComposer(renderer, target);\n const first = new RenderPass(new EmptyScene(), new PerspectiveCamera());\n next.addPass(first);\n for (const effect of effects) next.addPass(passFor(effect, size));\n next.addPass(new OutputPass());\n next.setPixelRatio(size.pixelRatio);\n next.setSize(size.width, size.height);\n composer = next;\n renderPass = first;\n };\n\n return {\n configure: (next) => {\n if (effectsEqual(next, effects)) return;\n effects = next;\n build();\n },\n setSize: (width, height, pixelRatio) => {\n size.width = width;\n size.height = height;\n size.pixelRatio = pixelRatio;\n composer?.setPixelRatio(pixelRatio);\n composer?.setSize(width, height);\n },\n render: (scene, camera) => {\n if (composer === undefined || renderPass === undefined) return false;\n renderPass.scene = scene;\n renderPass.camera = camera;\n composer.render();\n return true;\n },\n dispose,\n };\n};\n",
|
|
12
12
|
"/**\n * What the WebGL and WebGPU renderers share: the scene's render settings by three.js's\n * names, recompiling materials when shadows switch, and which renderer draws each\n * canvas, for presenting it in an immersive session.\n *\n * @module\n */\nimport type { RenderSettings } from '@opsydyn/effect-three';\nimport {\n ACESFilmicToneMapping,\n AgXToneMapping,\n BasicShadowMap,\n CineonToneMapping,\n type ColorSpace,\n LinearSRGBColorSpace,\n LinearToneMapping,\n Material,\n NeutralToneMapping,\n NoToneMapping,\n type Object3D,\n PCFShadowMap,\n ReinhardToneMapping,\n type ShadowMapType,\n SRGBColorSpace,\n type ToneMapping,\n VSMShadowMap,\n type WebGLRenderer,\n} from 'three';\nimport type { WebGPURenderer } from 'three/webgpu';\n\n/**\n * Shadow map types by React Three Fiber's names (`core/configuration.ts` at `d74622e`).\n * three 0.186 folded PCF soft into PCF (softness is per light), so `soft` maps to PCF\n * here; R3F's PCFSoftShadowMap would only log a removal warning on this version.\n */\nexport const shadowTypes = {\n basic: BasicShadowMap,\n percentage: PCFShadowMap,\n soft: PCFShadowMap,\n variance: VSMShadowMap,\n} satisfies Record<Exclude<RenderSettings['shadows'], 'off'>, ShadowMapType>;\n\nexport const toneMappings = {\n none: NoToneMapping,\n linear: LinearToneMapping,\n reinhard: ReinhardToneMapping,\n cineon: CineonToneMapping,\n aces: ACESFilmicToneMapping,\n agx: AgXToneMapping,\n neutral: NeutralToneMapping,\n} satisfies Record<RenderSettings['toneMapping'], ToneMapping>;\n\nexport const colorSpaces = {\n srgb: SRGBColorSpace,\n linear: LinearSRGBColorSpace,\n} satisfies Record<RenderSettings['colorSpace'], ColorSpace>;\n\n/**\n * Flags every material in the scene for recompilation. three.js keeps a shader built\n * with shadows sampling its last shadow map after `shadowMap.enabled` turns off (and\n * without shadows after it turns on) until its material is updated.\n */\nexport const recompileMaterials = (scene: Object3D): void => {\n scene.traverse((object) => {\n const material: unknown = Reflect.get(object, 'material');\n const materials = Array.isArray(material) ? material : [material];\n for (const each of materials) if (each instanceof Material) each.needsUpdate = true;\n });\n};\n\n/** What presenting a renderer in WebXR uses; three's WebGL and WebGPU renderers both have it. */\nexport type PresentableRenderer = {\n readonly xr: {\n enabled: boolean;\n readonly isPresenting: boolean;\n setReferenceSpaceType: (type: XRReferenceSpaceType) => void;\n setFramebufferScaleFactor: (scale: number) => void;\n setSession: (session: XRSession) => Promise<void>;\n getReferenceSpace: () => XRReferenceSpace | null;\n setReferenceSpace: (space: XRReferenceSpace) => void;\n getEnvironmentBlendMode: () => XREnvironmentBlendMode | undefined;\n };\n /**\n * Hands the session's frames to `callback` (`null` stops), set before the session starts:\n * WebGL's `xr.setAnimationLoop`, or WebGPU's `setAnimationLoop`, which its XR manager\n * captures when the session starts. It may also be called outside the session.\n */\n readonly setXrLoop: (callback: ((time: number, frame?: XRFrame) => void) | null) => void;\n};\n\n/** Each canvas's three.js renderer, for presenting it in a WebXR session. */\nconst presentable = new WeakMap<HTMLCanvasElement, PresentableRenderer>();\n/** Each canvas's three.js renderer itself, for tests that read three's own state. */\nconst drawing = new WeakMap<HTMLCanvasElement, WebGLRenderer | WebGPURenderer>();\n\nexport const registerPresentable = (\n canvas: HTMLCanvasElement,\n renderer: WebGLRenderer | WebGPURenderer,\n presenting: PresentableRenderer,\n): void => {\n presentable.set(canvas, presenting);\n drawing.set(canvas, renderer);\n};\n\nexport const forgetPresentable = (canvas: HTMLCanvasElement): void => {\n presentable.delete(canvas);\n drawing.delete(canvas);\n};\n\n/** The three.js renderer drawing into `canvas` (WebGL or WebGPU), if one does. */\nexport const threeRendererOf = (\n canvas: HTMLCanvasElement,\n): WebGLRenderer | WebGPURenderer | undefined => drawing.get(canvas);\n\n/** The three.js renderer drawing into `canvas`, if one does. */\nexport const presentableRendererOf = (canvas: HTMLCanvasElement): PresentableRenderer | undefined =>\n presentable.get(canvas);\n",
|
|
13
|
-
"/**\n * three.js's `WebGPURenderer` behind the core's renderer contract: WebGPU where the browser\n * has it, otherwise its WebGL 2 backend (or always, with `forceWebGL`), drawing the same\n * node materials either way. It carries the WebGPU render kit (the sky, shader grid and\n * contact shadows in TSL), post-processes with `RenderPipeline`, and presents in WebXR.\n * It starts asynchronously (`init()`), which the runtime waits for.\n *\n *
|
|
14
|
-
"/**\n * Post-processing for the WebGPU renderer: three.js's `RenderPipeline` with TSL nodes for\n * the same effects the WebGL renderer composes (`postprocessing.ts`): bloom\n * (`tsl/display/BloomNode.js`, added to the scene as three's examples add it), film\n * (`tsl/display/FilmNode.js`'s grain, written here, with grayscale by luminance as\n * `FilmPass` offers) and\n * vignette (three's `VignetteShader`, as TSL). The pipeline's output transform applies\n * tone mapping and the output colour space, as the WebGL composer's `OutputPass` does.\n *\n * @module\n */\nimport { effectsEqual, type PostEffect } from '@opsydyn/effect-three';\nimport type { Camera, Scene } from 'three';\nimport { bloom } from 'three/addons/tsl/display/BloomNode.js';\nimport {\n clamp,\n dot,\n fract,\n luminance,\n mix,\n pass,\n rand,\n screenUV,\n time,\n uv,\n vec3,\n vec4,\n} from 'three/tsl';\nimport { type Node, RenderPipeline, type WebGPURenderer } from 'three/webgpu';\n\nimport type { PostProcessing } from './postprocessing.ts';\n\ntype Colour = Node<'vec4'>;\n\n/** One effect applied to the colour so far. */\nconst applied = (input: Colour, effect: PostEffect): Colour => {\n switch (effect._tag) {\n case 'Bloom'
|
|
13
|
+
"/**\n * three.js's `WebGPURenderer` behind the core's renderer contract: WebGPU where the browser\n * has it, otherwise its WebGL 2 backend (or always, with `forceWebGL`), drawing the same\n * node materials either way. It carries the WebGPU render kit (the sky, shader grid and\n * contact shadows in TSL), post-processes with `RenderPipeline`, and presents in WebXR.\n * It starts asynchronously (`init()`), which the runtime waits for.\n *\n * Its kit shades with TSL, so labels come from a label engine's `createTsl` (troika's is\n * `troikaLabels` from `@opsydyn/effect-three-troika/webgpu`); an engine without one draws\n * no labels here.\n *\n * @module\n */\nimport type { RendererFactory, RenderSettings, RenderTarget } from '@opsydyn/effect-three';\nimport { webgpuKit } from '@opsydyn/effect-three/webgpu';\nimport {\n type Camera,\n HalfFloatType,\n LinearFilter,\n type Object3D,\n RenderTarget as ThreeRenderTarget,\n type Scene,\n Vector2,\n} from 'three';\nimport { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';\nimport { PMREMGenerator, WebGPURenderer } from 'three/webgpu';\n\nimport {\n colorSpaces,\n forgetPresentable,\n recompileMaterials,\n registerPresentable,\n shadowTypes,\n toneMappings,\n} from './renderSettings.ts';\nimport { createWebGPUPostProcessing } from './webgpuPostprocessing.ts';\n\n/** Options for three's `WebGPURenderer`. The canvas is always the scene's own. */\nexport type WebGPUOptions = {\n /** Use the WebGL 2 backend even where WebGPU is available. */\n readonly forceWebGL?: boolean;\n readonly alpha?: boolean;\n readonly antialias?: boolean;\n};\n\n/** Applies scene render settings; returns whether shadows were switched on or off. */\nconst configure = (renderer: WebGPURenderer, settings: RenderSettings): boolean => {\n const shadowMap = renderer.shadowMap;\n const enabled = settings.shadows !== 'off';\n const switched = shadowMap.enabled !== enabled;\n shadowMap.enabled = enabled;\n if (enabled) shadowMap.type = shadowTypes[settings.shadows];\n renderer.toneMapping = toneMappings[settings.toneMapping];\n renderer.toneMappingExposure = settings.exposure;\n renderer.outputColorSpace = colorSpaces[settings.colorSpace];\n return switched;\n};\n\nconst drawingSize = new Vector2();\n\n/**\n * A render texture's target, as the WebGL renderer makes one (Drei's `useFBO`): half-float\n * colour, linear filtering, multisampled (4, WebGPU's only multisample count), with depth.\n */\nconst createTarget = (\n targets: WeakMap<RenderTarget, ThreeRenderTarget>,\n width: number,\n height: number,\n): RenderTarget => {\n const target = new ThreeRenderTarget(width, height, {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n type: HalfFloatType,\n samples: 4,\n });\n const handle = { texture: target.texture, dispose: () => target.dispose() };\n targets.set(handle, target);\n return handle;\n};\n\n/** three.js's `RoomEnvironment`, prefiltered by the WebGPU renderer's PMREM generator. */\nconst createRoom = (renderer: WebGPURenderer): RenderTarget => {\n const generator = new PMREMGenerator(renderer);\n const room = new RoomEnvironment();\n const target = generator.fromScene(room, 0.04);\n room.dispose();\n generator.dispose();\n return { texture: target.texture, dispose: () => target.dispose() };\n};\n\n/**\n * Draws a frame of an immersive session. In AR the room shows through, so a background\n * (an environment shown as one) is left out of the frame, as the WebGL renderer does.\n */\nconst drawPresenting = (renderer: WebGPURenderer, scene: Scene, camera: Camera): void => {\n const passthrough = renderer.xr.getEnvironmentBlendMode() !== 'opaque';\n if (!passthrough || scene.background === null) {\n renderer.render(scene, camera);\n return;\n }\n const background = scene.background;\n scene.background = null;\n renderer.render(scene, camera);\n scene.background = background;\n};\n\n/** A factory for three's `WebGPURenderer` drawing into `canvas`. */\nexport const webgpuRendererFactory = (\n canvas: HTMLCanvasElement,\n options: WebGPUOptions = {},\n): RendererFactory => ({\n // The TSL parts of a scene (sky, shader grid, contact shadows) go with this renderer.\n kit: webgpuKit,\n create: () => {\n // Opaque by default, as three's WebGLRenderer is (WebGPURenderer's own default is alpha).\n const renderer = new WebGPURenderer({ antialias: true, alpha: false, ...options, canvas });\n registerPresentable(canvas, renderer, {\n xr: renderer.xr,\n setXrLoop: (callback) => {\n void renderer.setAnimationLoop(callback);\n },\n });\n const post = createWebGPUPostProcessing(renderer);\n const targets = new WeakMap<RenderTarget, ThreeRenderTarget>();\n let pixelRatio = 1;\n let resolution = 1;\n let scissored = false;\n let shadowSwitches = 0;\n const compiledAt = new WeakMap<Object3D, number>();\n const applyPixelRatio = (): void => {\n if (renderer.getPixelRatio() !== pixelRatio * resolution) {\n renderer.setPixelRatio(pixelRatio * resolution);\n }\n };\n return {\n ready: () => renderer.init().then(() => undefined),\n render: (scene, camera, area, target) => {\n if (shadowSwitches > 0 && compiledAt.get(scene) !== shadowSwitches) {\n recompileMaterials(scene);\n compiledAt.set(scene, shadowSwitches);\n }\n const offscreen = target === undefined ? undefined : targets.get(target);\n if (offscreen !== undefined) {\n // As the WebGL renderer: into the target, transparent, never from the headset.\n const previous = renderer.getRenderTarget();\n const clearAlpha = renderer.getClearAlpha();\n const xrEnabled = renderer.xr.enabled;\n renderer.xr.enabled = false;\n renderer.setClearAlpha(0);\n renderer.setRenderTarget(offscreen);\n renderer.render(scene, camera);\n renderer.setRenderTarget(previous);\n renderer.setClearAlpha(clearAlpha);\n renderer.xr.enabled = xrEnabled;\n return;\n }\n // Presenting in XR, three draws the headset's views itself: no areas, no effects.\n if (renderer.xr.isPresenting) {\n drawPresenting(renderer, scene, camera);\n return;\n }\n const { width, height } = renderer.getSize(drawingSize);\n if (area === undefined) {\n if (scissored) {\n renderer.setScissorTest(false);\n renderer.setViewport(0, 0, width, height);\n scissored = false;\n }\n if (!post.render(scene, camera)) renderer.render(scene, camera);\n return;\n }\n // three's viewport and scissor origin is the bottom left; areas are from the top.\n const bottom = height - area.y - area.height;\n renderer.setViewport(area.x, bottom, area.width, area.height);\n renderer.setScissor(area.x, bottom, area.width, area.height);\n renderer.setScissorTest(true);\n scissored = true;\n renderer.render(scene, camera);\n },\n createTarget: (width, height) => createTarget(targets, width, height),\n createEnvironment: () => createRoom(renderer),\n configure: (settings) => {\n if (configure(renderer, settings)) shadowSwitches++;\n resolution = settings.resolution;\n post.configure(settings.effects);\n applyPixelRatio();\n },\n setViewport: (viewport) => {\n pixelRatio = viewport.pixelRatio;\n applyPixelRatio();\n renderer.setSize(viewport.width, viewport.height, false);\n },\n memory: () => ({\n geometries: renderer.info.memory.geometries,\n textures: renderer.info.memory.textures,\n }),\n dispose: () => {\n forgetPresentable(canvas);\n void renderer.xr.getSession()?.end();\n post.dispose();\n void renderer.dispose();\n },\n };\n },\n});\n",
|
|
14
|
+
"/**\n * Post-processing for the WebGPU renderer: three.js's `RenderPipeline` with TSL nodes for\n * the same effects the WebGL renderer composes (`postprocessing.ts`): bloom\n * (`tsl/display/BloomNode.js`, added to the scene as three's examples add it), film\n * (`tsl/display/FilmNode.js`'s grain, written here, with grayscale by luminance as\n * `FilmPass` offers) and\n * vignette (three's `VignetteShader`, as TSL). The pipeline's output transform applies\n * tone mapping and the output colour space, as the WebGL composer's `OutputPass` does.\n *\n * @module\n */\nimport { effectsEqual, type PostEffect } from '@opsydyn/effect-three';\nimport type { Camera, Scene } from 'three';\nimport { bloom } from 'three/addons/tsl/display/BloomNode.js';\nimport {\n clamp,\n dot,\n fract,\n luminance,\n max,\n mix,\n pass,\n rand,\n screenUV,\n time,\n uv,\n vec3,\n vec4,\n} from 'three/tsl';\nimport { type Node, RenderPipeline, type WebGPURenderer } from 'three/webgpu';\n\nimport type { PostProcessing } from './postprocessing.ts';\n\ntype Colour = Node<'vec4'>;\n\n/** One effect applied to the colour so far. */\nconst applied = (input: Colour, effect: PostEffect): Colour => {\n switch (effect._tag) {\n case 'Bloom': {\n // BloomNode's output is opaque (alpha 1), which would fill a transparent canvas with\n // black. Keep the scene's alpha and let the glow add its own where it shines, as the\n // WebGL composer's additive bloom does.\n const glow = bloom(input, effect.strength, effect.radius, effect.threshold);\n const shine = max(glow.r, max(glow.g, glow.b));\n return vec4(input.rgb.add(glow.rgb), clamp(input.a.add(shine), 0, 1));\n }\n case 'Vignette': {\n // three's VignetteShader: towards `1 − darkness` with distance from the middle.\n const centred = screenUV.sub(0.5).mul(effect.offset);\n return vec4(mix(input.rgb, vec3(1 - effect.darkness), dot(centred, centred)), input.a);\n }\n case 'Film': {\n // three's FilmNode: noise added in proportion to the colour, mixed in by intensity.\n const base = input.rgb;\n const noise = rand(fract(uv().add(time)));\n const grained = mix(base, base.add(base.mul(clamp(noise.add(0.1), 0, 1))), effect.intensity);\n return vec4(effect.grayscale ? vec3(luminance(grained)) : grained, input.a);\n }\n }\n};\n\nexport const createWebGPUPostProcessing = (renderer: WebGPURenderer): PostProcessing => {\n let effects: ReadonlyArray<PostEffect> = [];\n let pipeline: RenderPipeline | undefined;\n // The scene and camera the pipeline's scene pass draws: a new one rebuilds it.\n let drawn: { readonly scene: Scene; readonly camera: Camera } | undefined;\n\n const dispose = (): void => {\n pipeline?.dispose();\n pipeline = undefined;\n drawn = undefined;\n };\n\n const build = (scene: Scene, camera: Camera): RenderPipeline => {\n dispose();\n const output = effects.reduce<Colour>(applied, pass(scene, camera));\n const next = new RenderPipeline(renderer, output);\n pipeline = next;\n drawn = { scene, camera };\n return next;\n };\n\n return {\n configure: (next) => {\n if (effectsEqual(next, effects)) return;\n effects = next;\n dispose();\n },\n // The pipeline follows the renderer's size.\n setSize: () => undefined,\n render: (scene, camera) => {\n if (effects.length === 0) return false;\n const current =\n pipeline !== undefined && drawn?.scene === scene && drawn.camera === camera\n ? pipeline\n : build(scene, camera);\n current.render();\n return true;\n },\n dispose,\n };\n};\n",
|
|
15
15
|
"/**\n * The `<effect-three-scene>` element: a typed `scene` property that Foldkit diffs on\n * every render, and Schema-decoded events that become the app's typed Messages.\n *\n * The tag is never registered with `customElements`; the scene Mount intercepts the\n * property instead (ADR-002), so there is nothing to re-register under HMR or SSR.\n *\n * @module\n */\nimport { SceneSchema, type SceneEvent } from '@opsydyn/effect-three';\nimport { Schema } from 'effect';\nimport { CustomElement } from 'foldkit';\nimport { defineMessageUnion } from 'foldkit/message';\n\n/** A scene update that could not be applied. The scene keeps its last good state. */\nexport const SceneError = Schema.Union([\n ...SceneSchema.DescriptionError.members,\n Schema.TaggedStruct('MalformedScene', { issue: Schema.String }),\n]);\nexport type SceneError = typeof SceneError.Type;\n\nconst Counts = Schema.Struct({ live: Schema.Int, created: Schema.Int, disposed: Schema.Int });\n\n/** What one scene update did, and the GPU resources held afterwards. */\nexport const ReconciledDetail = Schema.Struct({\n ops: Schema.Struct({\n created: Schema.Int,\n updated: Schema.Int,\n moved: Schema.Int,\n removed: Schema.Int,\n replaced: Schema.Int,\n reordered: Schema.Int,\n configured: Schema.Int,\n }),\n resources: Schema.Struct({ geometries: Counts, materials: Counts }),\n});\nexport type ReconciledDetail = typeof ReconciledDetail.Type;\n\n/** An immersive session began presenting the scene in `mode`, or ended (`null`). */\nexport const XrSessionDetail = Schema.Struct({\n mode: Schema.NullOr(Schema.Literals(['immersive-vr', 'immersive-ar'])),\n});\nexport type XrSessionDetail = typeof XrSessionDetail.Type;\n\nexport const sceneElement = CustomElement.define({\n tag: 'effect-three-scene',\n properties: { scene: SceneSchema.SceneDescription },\n events: {\n 'scene-click': SceneSchema.ButtonDetail,\n 'scene-double-click': SceneSchema.ButtonDetail,\n 'scene-context-menu': SceneSchema.HitDetail,\n 'scene-pointer-down': SceneSchema.ButtonDetail,\n 'scene-pointer-up': SceneSchema.ButtonDetail,\n 'scene-pointer-enter': SceneSchema.HitDetail,\n 'scene-pointer-move': SceneSchema.HitDetail,\n 'scene-pointer-leave': SceneSchema.KeyDetail,\n 'scene-pointer-missed': SceneSchema.MissDetail,\n 'scene-wheel': SceneSchema.WheelDetail,\n 'scene-drag': SceneSchema.DragDetail,\n 'scene-drag-end': SceneSchema.DragDetail,\n 'scene-gesture': SceneSchema.GestureDetail,\n 'scene-auto-rotated': SceneSchema.AutoRotatedDetail,\n 'scene-collision': SceneSchema.CollisionDetail,\n 'scene-contact-force': SceneSchema.ContactForceDetail,\n 'scene-measured': SceneSchema.MeasuredDetail,\n 'scene-label-measured': SceneSchema.LabelMeasuredDetail,\n 'scene-xr': XrSessionDetail,\n 'scene-xr-stick': SceneSchema.XrStickDetail,\n 'scene-xr-button': SceneSchema.XrButtonDetail,\n 'scene-xr-surface': SceneSchema.XrSurfaceDetail,\n 'scene-xr-moved': SceneSchema.XrMovedDetail,\n 'scene-xr-planes': SceneSchema.XrPlanesDetail,\n 'scene-xr-meshes': SceneSchema.XrMeshesDetail,\n 'scene-performance': SceneSchema.PerformanceDetail,\n 'scene-error': Schema.Struct({ error: SceneError }),\n 'scene-reconciled': ReconciledDetail,\n },\n});\n\n/** The DOM event name for each kernel scene event. */\nexport const domEventName = {\n Click: 'scene-click',\n DoubleClick: 'scene-double-click',\n ContextMenu: 'scene-context-menu',\n PointerDown: 'scene-pointer-down',\n PointerUp: 'scene-pointer-up',\n PointerEnter: 'scene-pointer-enter',\n PointerMove: 'scene-pointer-move',\n PointerLeave: 'scene-pointer-leave',\n PointerMissed: 'scene-pointer-missed',\n Wheel: 'scene-wheel',\n Drag: 'scene-drag',\n DragEnd: 'scene-drag-end',\n Gesture: 'scene-gesture',\n AutoRotated: 'scene-auto-rotated',\n Collision: 'scene-collision',\n ContactForce: 'scene-contact-force',\n Measured: 'scene-measured',\n LabelMeasured: 'scene-label-measured',\n XrStick: 'scene-xr-stick',\n XrButton: 'scene-xr-button',\n XrSurface: 'scene-xr-surface',\n XrMoved: 'scene-xr-moved',\n XrPlanes: 'scene-xr-planes',\n XrMeshes: 'scene-xr-meshes',\n PerformanceChanged: 'scene-performance',\n} as const satisfies Record<SceneEvent['_tag'], keyof typeof sceneElement.events>;\n\n/** Outcome of mounting a scene. Map these into the app's Messages with `onLifecycle`. */\nexport const SceneLifecycle = defineMessageUnion({\n StartedScene: {},\n FailedScene: { reason: Schema.String },\n});\nexport type SceneLifecycle = typeof SceneLifecycle.Type;\n",
|
|
16
16
|
"/**\n * Immersive sessions as Effects an application runs from Foldkit Commands: whether a mode\n * is supported, entering it from a user gesture, and leaving it. The scene presented is\n * the mounted one whose description has `xr`; while presenting, the session drives its\n * frames and the view's `onXRSession` reports the session starting and ending.\n *\n * @module\n */\nimport { Data, Effect } from 'effect';\n\nimport type { XrHub, XrMode } from './dom/xrHub.ts';\n\n/** A session could not start: no WebXR, no scene describing `xr`, or the request refused. */\nexport class XrUnavailable extends Data.TaggedError('XrUnavailable')<{\n readonly mode: XrMode;\n readonly cause: unknown;\n}> {}\n\n/** The immersive session controls for an environment's hub. */\nexport const makeXr = (hub: XrHub) => ({\n /** Whether the browser can present `mode` (false without WebXR). */\n supported: (mode: XrMode) => Effect.promise(() => hub.supported(mode)),\n /**\n * Enters `mode`, presenting the mounted scene that describes `xr`. Run it from the\n * Command a click (or other user gesture) produces: browsers require one.\n */\n enter: (mode: XrMode) =>\n Effect.tryPromise({\n try: () => hub.enter(mode),\n catch: (cause) => new XrUnavailable({ mode, cause }),\n }),\n /** Ends the session, if there is one. */\n exit: Effect.promise(() => hub.exit()),\n});\n\nexport type XrControls = ReturnType<typeof makeXr>;\n",
|
|
17
17
|
"/**\n * Summaries of scene updates, for the `scene-reconciled` event.\n *\n * @module\n */\nimport type { Op, ResourceStats } from '@opsydyn/effect-three';\n\nimport type { ReconciledDetail } from '../element.ts';\n\n/** Counts operations by kind and snapshots resource counters. */\nexport const summarise = (ops: ReadonlyArray<Op>, stats: ResourceStats): ReconciledDetail => {\n const counts = {\n created: 0,\n updated: 0,\n moved: 0,\n removed: 0,\n replaced: 0,\n reordered: 0,\n configured: 0,\n };\n for (const op of ops) {\n switch (op._tag) {\n case 'Create':\n counts.created++;\n break;\n case 'Update':\n counts.updated++;\n break;\n case 'Move':\n counts.moved++;\n break;\n case 'Remove':\n counts.removed++;\n break;\n case 'Replace':\n counts.replaced++;\n break;\n case 'Order':\n counts.reordered++;\n break;\n case 'SetCamera':\n case 'DefineResources':\n counts.configured++;\n break;\n }\n }\n return {\n ops: counts,\n resources: { geometries: { ...stats.geometries }, materials: { ...stats.materials } },\n };\n};\n",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"/**\n * The scene view: one call from a Foldkit `view` renders a scene and maps its events to\n * the app's typed Messages. The scene is plain data derived from the Model.\n *\n * @module\n */\nimport type { SceneDescription, SceneSchema } from '@opsydyn/effect-three';\nimport { Array as Arr, Option } from 'effect';\nimport { Mount } from 'foldkit';\nimport type { Html, HtmlBuilder } from 'foldkit/html';\n\nimport { markTyped } from './dom/typedScenes.ts';\nimport {\n type ReconciledDetail,\n type SceneError,\n sceneElement,\n type SceneLifecycle,\n type XrSessionDetail,\n} from './element.ts';\nimport type { SceneMount } from './mount.ts';\nimport { overlayLayer, type OverlayView, withOverlays } from './overlayView.ts';\n\n/**\n * Where the pointer met an interactive mesh: key, world-space point, distance from the\n * camera, world-space face normal and texture coordinates.\n */\nexport type HitDetail = typeof SceneSchema.HitDetail.Type;\n\n/** Detail of click, double-click, pointer-down and pointer-up events: the hit and button. */\nexport type ButtonDetail = typeof SceneSchema.ButtonDetail.Type;\n\n/** Detail of wheel events: the hit and the wheel deltas. */\nexport type WheelDetail = typeof SceneSchema.WheelDetail.Type;\n\n/** Detail of a click that hit no interactive mesh. */\nexport type MissDetail = typeof SceneSchema.MissDetail.Type;\n\n/** Detail of drag events: the captured mesh, the button and the pointer's world-space ray. */\nexport type DragDetail = typeof SceneSchema.DragDetail.Type;\n\n/**\n * A drag, wheel or pinch on the canvas, when the scene claims gestures. Pass it to\n * `orbit` to move a camera kept in the Model.\n */\nexport type Gesture = typeof SceneSchema.Gesture.Type;\n\n/** Detail of collision events: the two bodies' keys, and whether they began touching. */\nexport type CollisionDetail = typeof SceneSchema.CollisionDetail.Type;\n\n/** Detail of contact force events: the two bodies, and how hard they pushed. */\nexport type ContactForceDetail = typeof SceneSchema.ContactForceDetail.Type;\n\n/** Detail of measured events: a node's world bounding box. */\nexport type MeasuredDetail = typeof SceneSchema.MeasuredDetail.Type;\n\n/** Detail of auto-rotated events: where a camera turning by itself got to. */\nexport type AutoRotatedDetail = typeof SceneSchema.AutoRotatedDetail.Type;\n\n/** Detail of label measured events: a label's laid-out size in its own units. */\nexport type LabelMeasuredDetail = typeof SceneSchema.LabelMeasuredDetail.Type;\n\n/** Detail of XR stick events: a thumbstick pushed past halfway in a direction, or let back. */\nexport type XrStickDetail = typeof SceneSchema.XrStickDetail.Type;\n\n/** Detail of XR button events: a controller button pressed or released. */\nexport type XrButtonDetail = typeof SceneSchema.XrButtonDetail.Type;\n\n/** Detail of XR moved events: where gliding left the player. */\nexport type XrMovedDetail = typeof SceneSchema.XrMovedDetail.Type;\n\n/** Detail of XR planes events: every plane the session detected, as it is now. */\nexport type XrPlanesDetail = typeof SceneSchema.XrPlanesDetail.Type;\n\n/** Detail of XR meshes events: every mesh the session detected, as it is now. */\nexport type XrMeshesDetail = typeof SceneSchema.XrMeshesDetail.Type;\n\n/** Detail of XR surface events: in AR, where a select met a real surface, and its normal. */\nexport type XrSurfaceDetail = typeof SceneSchema.XrSurfaceDetail.Type;\n\n/** Detail of performance changes: the measured fps and the new factor, 0 to 1. */\nexport type PerformanceDetail = typeof SceneSchema.PerformanceDetail.Type;\n\n/** Detail of pointer-leave events: the key that is no longer under the pointer. */\nexport type KeyDetail = typeof SceneSchema.KeyDetail.Type;\n\nexport type ViewConfig<Message> = {\n /** The scene to show. Derive it from the Model; unchanged scenes cost nothing. */\n readonly scene: SceneDescription;\n /** The Mount from `makeSceneMount`, created once at the entry point. */\n readonly mount: SceneMount;\n /** Maps the mount outcome (started or failed) into the app's Messages. */\n readonly onLifecycle: (message: SceneLifecycle) => Message;\n /** Pressed and released on the same mesh with the same button. */\n readonly onClick?: (detail: ButtonDetail) => Message;\n /** A double-click on the mesh that was last pressed. */\n readonly onDoubleClick?: (detail: ButtonDetail) => Message;\n /** A context menu on the mesh that was last pressed. The browser's menu stays shut. */\n readonly onContextMenu?: (detail: HitDetail) => Message;\n readonly onPointerDown?: (detail: ButtonDetail) => Message;\n readonly onPointerUp?: (detail: ButtonDetail) => Message;\n readonly onPointerEnter?: (detail: HitDetail) => Message;\n /** Every pointer movement over an interactive mesh. Can fire at the pointer's rate. */\n readonly onPointerMove?: (detail: HitDetail) => Message;\n readonly onPointerLeave?: (detail: KeyDetail) => Message;\n /** A click that hit no interactive mesh and moved at most two pixels: clear a selection. */\n readonly onPointerMissed?: (detail: MissDetail) => Message;\n /** The wheel over an interactive mesh. Page scrolling is not blocked. */\n readonly onWheel?: (detail: WheelDetail) => Message;\n /**\n * The pointer moved while pressed on a mesh, anywhere (the press captures it). Turn the\n * ray into a point with `pointOnPlane` to drag along a plane.\n */\n readonly onDrag?: (detail: DragDetail) => Message;\n /** A drag ended: released anywhere, or the pointer was cancelled. */\n readonly onDragEnd?: (detail: DragDetail) => Message;\n /**\n * A drag, wheel or pinch anywhere on the canvas, reported while the scene claims\n * gestures (`scene({ gestures: 'scene' })`). Apply it with `orbit` in `update`:\n * the camera stays in the Model.\n */\n readonly onGesture?: (gesture: Gesture) => Message;\n /**\n * A gesture is about to begin on a camera turning by itself (`autoRotate`): keep where\n * it got to with `autoRotated(model.camera, detail)` (a view's camera when `view` names\n * one), so the gesture goes on from where the camera was shown.\n */\n readonly onAutoRotated?: (detail: AutoRotatedDetail) => Message;\n /**\n * Two bodies began or stopped touching (react-three-rapier's `onCollisionEnter` and\n * `onCollisionExit`, for the whole scene). Needs `physics` and an engine.\n */\n readonly onCollision?: (detail: CollisionDetail) => Message;\n /**\n * Two bodies pushed on each other harder than a body's `contactForces` threshold during\n * a step (react-three-rapier's `onContactForce`). Rapier reports every such step, so\n * set the threshold high.\n */\n readonly onContactForce?: (detail: ContactForceDetail) => Message;\n /**\n * A node listed in the scene's `measure` has a new world bounding box (Drei's `Bounds`\n * measuring, as a Message): fit the camera to it with `fitCamera`.\n */\n readonly onMeasured?: (detail: MeasuredDetail) => Message;\n /**\n * A measured label (`scene({ measure })`) was laid out anew: its block and tight glyph\n * bounds in its own units, before its scale, to size what goes behind it.\n */\n readonly onLabelMeasured?: (detail: LabelMeasuredDetail) => Message;\n /**\n * An immersive session began presenting this scene (`mode`), or ended (`mode: null`),\n * whether the app or the user (through the headset) ended it.\n */\n readonly onXRSession?: (detail: XrSessionDetail) => Message;\n /**\n * In a session, a thumbstick pushed past halfway in a direction, or let back to the\n * centre: snap turn and teleport by changing the scene's `xr({ heading, origin })`, as\n * pmndrs/xr's controller locomotion does.\n */\n readonly onXRStick?: (detail: XrStickDetail) => Message;\n /** In a session, a controller button pressed or released (`xr-standard` mapping). */\n readonly onXRButton?: (detail: XrButtonDetail) => Message;\n /**\n * In AR with `xr({ hitTest: true })`, a select whose ray met a real surface: place\n * things there.\n */\n readonly onXRSurface?: (detail: XrSurfaceDetail) => Message;\n /**\n * Gliding with the sticks (`xr({ glide })`) stopped: keep where the player now stands\n * with `glided(model.xr, detail)`.\n */\n readonly onXRMoved?: (detail: XrMovedDetail) => Message;\n /**\n * With `xr({ planes: true })`, the detected planes changed (found, reshaped, lost, or\n * seen from where the player moved to): every plane, as it is now. Follow one with\n * `group({ follow: planeSpace(id) })`.\n */\n readonly onXRPlanes?: (detail: XrPlanesDetail) => Message;\n /**\n * With `xr({ meshes: true })`, the detected meshes changed: every mesh, as it is now.\n * Draw one as `mesh({ geometry: xrMesh(id), material })` inside a group that follows\n * `meshSpace(id)`: its geometry is lent to the scene, not sent.\n */\n readonly onXRMeshes?: (detail: XrMeshesDetail) => Message;\n /**\n * Frames ran persistently slow or fast, and the performance factor moved (0 to 1).\n * Store it in the Model and lower `render.resolution` with it, as Drei's\n * `PerformanceMonitor` and `AdaptiveDpr` do together.\n */\n readonly onPerformanceChange?: (detail: PerformanceDetail) => Message;\n /** A scene update was rejected; the scene keeps its last good state. */\n readonly onError?: (detail: { readonly error: SceneError }) => Message;\n /**\n * What each scene update did (operations by kind) and the GPU resources held afterwards.\n * Fires at startup and after every update that changed something, never for no-ops.\n */\n readonly onReconciled?: (detail: ReconciledDetail) => Message;\n /**\n * HTML at points in the scene, as Drei's `Html`: each `overlay` says where (a point,\n * perhaps on a node), `content` what. The scene moves the HTML there every frame it\n * draws; the content is ordinary view HTML, rendered from the Model.\n */\n readonly overlays?: ReadonlyArray<OverlayView>;\n readonly className?: string;\n};\n\nconst given = Option.fromNullishOr;\n\n/** Renders a scene element. Only the event handlers you pass are bound. */\nexport const view = <Message>(\n config: ViewConfig<NoInfer<Message>>,\n h: HtmlBuilder<Message>,\n): Html => {\n const element = sceneElement.withMessage(h);\n const optional = Arr.getSomes([\n Option.map(given(config.onClick), element.OnSceneClick),\n Option.map(given(config.onDoubleClick), element.OnSceneDoubleClick),\n Option.map(given(config.onContextMenu), element.OnSceneContextMenu),\n Option.map(given(config.onPointerDown), element.OnScenePointerDown),\n Option.map(given(config.onPointerUp), element.OnScenePointerUp),\n Option.map(given(config.onPointerEnter), element.OnScenePointerEnter),\n Option.map(given(config.onPointerMove), element.OnScenePointerMove),\n Option.map(given(config.onPointerLeave), element.OnScenePointerLeave),\n Option.map(given(config.onPointerMissed), element.OnScenePointerMissed),\n Option.map(given(config.onWheel), element.OnSceneWheel),\n Option.map(given(config.onDrag), element.OnSceneDrag),\n Option.map(given(config.onDragEnd), element.OnSceneDragEnd),\n Option.map(given(config.onCollision), element.OnSceneCollision),\n Option.map(given(config.onContactForce), element.OnSceneContactForce),\n Option.map(given(config.onMeasured), element.OnSceneMeasured),\n Option.map(given(config.onLabelMeasured), element.OnSceneLabelMeasured),\n Option.map(given(config.onXRSession), element.OnSceneXr),\n Option.map(given(config.onXRStick), element.OnSceneXrStick),\n Option.map(given(config.onXRButton), element.OnSceneXrButton),\n Option.map(given(config.onXRSurface), element.OnSceneXrSurface),\n Option.map(given(config.onXRMoved), element.OnSceneXrMoved),\n Option.map(given(config.onXRPlanes), element.OnSceneXrPlanes),\n Option.map(given(config.onXRMeshes), element.OnSceneXrMeshes),\n Option.map(given(config.onAutoRotated), element.OnSceneAutoRotated),\n Option.map(given(config.onGesture), (toMessage) =>\n element.OnSceneGesture((detail) => toMessage(detail.gesture)),\n ),\n Option.map(given(config.onPerformanceChange), element.OnScenePerformance),\n Option.map(given(config.onError), element.OnSceneError),\n Option.map(given(config.onReconciled), element.OnSceneReconciled),\n Option.map(given(config.className), h.Class),\n ]);\n const lifecycle = Mount.mapMessage(config.mount(), config.onLifecycle);\n const overlays = config.overlays ?? [];\n const scene = markTyped(withOverlays(config.scene, overlays));\n return element(\n [element.Scene(scene), h.OnMount(lifecycle), ...optional],\n overlayLayer(h, overlays),\n );\n};\n",
|
|
33
33
|
"/**\n * Overlay HTML in the scene view: the application's content for each overlay, in an\n * element the scene moves to the overlay's point every frame it draws.\n *\n * @module\n */\nimport type { Overlay, SceneDescription } from '@opsydyn/effect-three';\nimport type { Html, HtmlBuilder } from 'foldkit/html';\n\nimport { overlayData } from './dom/overlays.ts';\n\n/** HTML shown at a point in the scene, as Drei's `Html`: where, and what. */\nexport type OverlayView = {\n readonly overlay: Overlay;\n readonly content: Html;\n /**\n * `'auto'` (the default, as Drei): the HTML takes pointer events. `'none'`: they pass\n * through to the canvas, so the scene under a label stays pickable.\n */\n readonly pointerEvents?: 'auto' | 'none';\n};\n\n/** The scene with the overlays' points added, so the scene places them. */\nexport const withOverlays = (\n scene: SceneDescription,\n overlays: ReadonlyArray<OverlayView>,\n): SceneDescription =>\n overlays.length === 0\n ? scene\n : { ...scene, overlays: [...scene.overlays, ...overlays.map((view) => view.overlay)] };\n\n// The layer covers the canvas, lets events through, and keeps Drei's large z-indexes\n// inside the scene element rather than competing with the page.\nconst layerStyle = {\n position: 'absolute',\n inset: '0',\n overflow: 'hidden',\n pointerEvents: 'none',\n isolation: 'isolate',\n};\n\n/** The overlay layer, or nothing when there are no overlays. */\nexport const overlayLayer = <Message>(\n h: HtmlBuilder<Message>,\n overlays: ReadonlyArray<OverlayView>,\n): ReadonlyArray<Html> =>\n overlays.length === 0\n ? []\n : [\n h.div(\n [h.Style(layerStyle)],\n overlays.map(({ overlay, content, pointerEvents = 'auto' }) =>\n h.keyed('div')(\n overlay.key,\n [\n h.DataAttribute(overlayData.key, overlay.key),\n // Hidden until the scene first places it.\n h.Style({\n position: 'absolute',\n top: '0',\n left: '0',\n transformOrigin: '0 0',\n visibility: 'hidden',\n pointerEvents,\n }),\n ],\n [content],\n ),\n ),\n ),\n ];\n"
|
|
34
34
|
],
|
|
35
|
-
"mappings": ";AAUA;AACA;AAAA;AAAA;AAAA;AAAA;AAOA;AACA;AACA;;;ACfA;AAGA,IAAM,kBAAkB,CAAC,aAA6B;AAAA,EACpD,WAAW,SAAS,OAAO,OAAO,QAAQ,GAAG;AAAA,IAC3C,IAAI,iBAAiB;AAAA,MAAS,MAAM,QAAQ;AAAA,EAC9C;AAAA,EACA,SAAS,QAAQ;AAAA;AAInB,SAAS,WAAW,CAAC,QAAwB;AAAA,EAC3C,IAAI,EAAE,kBAAkB;AAAA,IAAO;AAAA,EAC/B,OAAO,SAAS,QAAQ;AAAA,EACxB,MAAM,YAAqC,MAAM,QAAQ,OAAO,QAAQ,IACpE,OAAO,WACP,CAAC,OAAO,QAAQ;AAAA,EACpB,WAAW,YAAY;AAAA,IAAW,gBAAgB,QAAQ;AAAA;AAIrD,IAAM,eAAe,CAAC,SAAyB;AAAA,EACpD,KAAK,SAAS,WAAW;AAAA;AAGpB,IAAM,UAAU,CAAC,SAA0C;AAAA,EAChE,MAAM,QAAuB,CAAC;AAAA,EAC9B,KAAK,SAAS,CAAC,WAAW;AAAA,IACxB,IAAI,WAAW,QAAQ,OAAO,SAAS;AAAA,MAAI,MAAM,KAAK,OAAO,IAAI;AAAA,GAClE;AAAA,EACD,OAAO;AAAA;;;ADVF,MAAM,uBAAuB,KAAK,YAAY,gBAAgB,EAGlE;AAAC;AAYG,IAAM,aAAa,CAAC,UAAyB;AAAA,EAClD,MAAM,WAAW,IAAI;AAAA,EAGrB,MAAM,MAAM,CAAC,IAAY,YAA8B;AAAA,IACrD,SAAS,IAAI,EAAE,IAAI;AAAA,IACnB,SAAS,IAAI,IAAI,OAAO;AAAA;AAAA,EAG1B,MAAM,cAAc,CAAC,OAAe,CAAC,YAAqB;AAAA,IACxD,QAAQ,aAAa;AAAA,IACrB,MAAM,WAAW,MAAM,YAAY,IAAI,OAAO;AAAA,IAC9C,IAAI,IAAI,MAAM;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ,QAAQ;AAAA,KACjB;AAAA,IACD,OAAO;AAAA;AAAA,EAGT,MAAM,YACJ,CAAC,OACD,CAAC,SAAoF;AAAA,IAEnF,KAAK,MAAM,aAAa,KAAK;AAAA,IAC7B,MAAM,WAAW,MAAM,KAAK,IAAI,KAAK,KAAK;AAAA,IAC1C,IAAI,IAAI,MAAM;AAAA,MACZ,SAAS;AAAA,MACT,aAAa,KAAK,KAAK;AAAA,KACxB;AAAA,IACD,MAAM,OAAkB;AAAA,MACtB;AAAA,MACA,OAAO,QAAQ,KAAK,KAAK;AAAA,MACzB,OAAO,KAAK,WAAW,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,IAChD;AAAA,IACA,OAAO;AAAA;AAAA,EAIX,MAAM,kBAAkB,CAAC,OAAe,CAAC,YAAqB;AAAA,IAC5D,QAAQ,UAAU;AAAA,IAClB,MAAM,WAAW,MAAM,YAAY,IAAI,OAAO;AAAA,IAC9C,IAAI,IAAI,MAAM;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ,QAAQ;AAAA,KACjB;AAAA,IACD,OAAO;AAAA;AAAA,EAGT,MAAM,WAAW,CAAC,OAAe,CAAC,SAAe;AAAA,IAE/C,IAAI,IAAI,MAAM,SAAS,IAAI,IAAI,CAAC;AAAA,IAChC,OAAO;AAAA;AAAA,EAGT,MAAM,aAAa,MAAY;AAAA,IAC7B,WAAW,WAAW,SAAS,OAAO;AAAA,MAAG,QAAQ;AAAA,IACjD,SAAS,MAAM;AAAA;AAAA,EAGjB,OAAO;AAAA,IAEL,aAAa,CAAC,IAAY,QAAgB;AAAA,MACxC,MAAM,OAAO,OAAO,WAAW;AAAA,QAC7B,KAAK,MAAM,IAAI,cAAc,EAAE,UAAU,GAAG;AAAA,QAC5C,OAAO,CAAC,UAAU,IAAI,eAAe,EAAE,KAAK,MAAM,CAAC;AAAA,MACrD,CAAC;AAAA,MACD,OAAO,OAAO,IAAI,MAAM,YAAY,EAAE,CAAC;AAAA;AAAA,IAGzC,WAAW,CAAC,IAAY,QAAgB;AAAA,MACtC,MAAM,OAAO,OAAO,WAAW;AAAA,QAC7B,KAAK,MAAM,IAAI,WAAW,EAAE,UAAU,GAAG;AAAA,QACzC,OAAO,CAAC,UAAU,IAAI,eAAe,EAAE,KAAK,MAAM,CAAC;AAAA,MACrD,CAAC;AAAA,MACD,OAAO,OAAO,IAAI,MAAM,UAAU,EAAE,CAAC;AAAA;AAAA,IAOvC,iBAAiB,CAAC,IAAY,QAAgB;AAAA,MAC5C,MAAM,OAAO,OAAO,WAAW;AAAA,QAC7B,KAAK,MAAM,IAAI,UAAU,EAAE,UAAU,GAAG;AAAA,QACxC,OAAO,CAAC,UAAU,IAAI,eAAe,EAAE,KAAK,MAAM,CAAC;AAAA,MACrD,CAAC;AAAA,MACD,OAAO,OAAO,IAAI,MAAM,gBAAgB,EAAE,CAAC;AAAA;AAAA,IAM7C,UAAU,CAAC,IAAY,QAAgB;AAAA,MACrC,MAAM,OAAO,OAAO,WAAW;AAAA,QAC7B,KAAK,MAAM,IAAI,WAAW,EAAE,UAAU,GAAG;AAAA,QACzC,OAAO,CAAC,UAAU,IAAI,eAAe,EAAE,KAAK,MAAM,CAAC;AAAA,MACrD,CAAC;AAAA,MACD,OAAO,OAAO,IAAI,MAAM,SAAS,EAAE,CAAC;AAAA;AAAA,IAGtC,QAAQ,CAAC,OACP,OAAO,KAAK,MAAM;AAAA,MAChB,SAAS,IAAI,EAAE,IAAI;AAAA,MACnB,SAAS,OAAO,EAAE;AAAA,KACnB;AAAA,IAEH,SAAS;AAAA,EACX;AAAA;;AEvIK,IAAM,0BAA0B,CAAC,SAA6C;AAAA,EACnF,MAAM,YAAY,IAAI;AAAA,EACtB,IAAI;AAAA,EACJ,MAAM,OAAO,MAAY;AAAA,IACvB,SAAS,KAAK,sBAAsB,IAAI;AAAA,IACxC,WAAW,WAAW,MAAM,KAAK,SAAS;AAAA,MAAG,QAAQ;AAAA;AAAA,EAEvD,OAAO;AAAA,IACL,WAAW,CAAC,YAAY;AAAA,MACtB,UAAU,IAAI,OAAO;AAAA,MACrB,WAAW,KAAK,sBAAsB,IAAI;AAAA,MAC1C,OAAO,MAAM;AAAA,QACX,UAAU,OAAO,OAAO;AAAA,QACxB,IAAI,UAAU,OAAO,KAAK,WAAW;AAAA,UAAW;AAAA,QAChD,KAAK,qBAAqB,MAAM;AAAA,QAChC,SAAS;AAAA;AAAA;AAAA,EAGf;AAAA;;ACdK,IAAM,QAAQ,CACnB,MACA,SACA,YAC+C;AAAA,EAC/C,IAAI,KAAK,UAAU,KAAK,KAAK,WAAW;AAAA,IAAG,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAC/D,OAAO;AAAA,IACL,IAAK,UAAU,KAAK,QAAQ,KAAK,QAAS,IAAI;AAAA,IAC9C,GAAG,GAAI,UAAU,KAAK,OAAO,KAAK,SAAU,IAAI;AAAA,EAClD;AAAA;AAGF,IAAM,cAAc,CAAC,WAAkC;AAAA,EACrD,OAAO,MAAM;AAAA,EACb,SAAS,MAAM;AAAA,EACf,MAAM,MAAM;AAAA,EACZ,KAAK,MAAM;AACb;AAGA,IAAM,cAAc,CAAC,UACnB,iBAAiB,eAAe,MAAM,YAAY;AAMpD,IAAM,aAAa,CAAC,GAAG,IAAI,GAAG;AAMvB,IAAM,iBAAiB,CAAC,OAAmB,SAAyC;AAAA,EACzF,IAAI,MAAM,SAAS,kBAAkB,MAAM,SAAS,iBAAiB;AAAA,IACnE,OAAO,EAAE,MAAM,eAAe;AAAA,EAChC;AAAA,EACA,QAAQ,GAAG,MAAM,MAAM,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA,EACzD,MAAM,UAAU,YAAY,KAAK;AAAA,EACjC,QAAQ,MAAM;AAAA,SACP;AAAA,MACH,OAAO,EAAE,MAAM,eAAe,GAAG,GAAG,QAAQ;AAAA,SACzC;AAAA,MACH,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,QAAQ,MAAM;AAAA,QACd;AAAA,QACA,WAAW,YAAY,KAAK;AAAA,MAC9B;AAAA,SACG;AAAA,MACH,OAAO,EAAE,MAAM,aAAa,GAAG,GAAG,QAAQ,MAAM,QAAQ,QAAQ;AAAA,SAC7D;AAAA,MACH,OAAO,EAAE,MAAM,eAAe,GAAG,GAAG,QAAQ,MAAM,OAAO;AAAA,SACtD;AAAA,MACH,OAAO,EAAE,MAAM,eAAe,GAAG,EAAE;AAAA,SAChC;AAAA,MACH,OAAO,iBAAiB,aACpB;AAAA,QACE,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,QAAQ,MAAM,UAAU,WAAW,MAAM,cAAc;AAAA,QACvD,QAAQ,MAAM,UAAU,WAAW,MAAM,cAAc;AAAA,QACvD,WAAW,YAAY,KAAK;AAAA,MAC9B,IACA;AAAA;AAAA,MAEJ;AAAA;AAAA;AAKC,IAAM,kBAAkB,CAAC,WAC9B,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa;AAG9C,IAAM,oBAAoB,CAAC,WAChC,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa;AAErD,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAaO,IAAM,mBAAmB,CAC9B,SACA,SACA,iBAAgC,MAAM,UACrB;AAAA,EACjB,MAAM,WAAW,CAAC,UAAuB;AAAA,IACvC,IAAI,EAAE,iBAAiB;AAAA,MAAa;AAAA,IACpC,MAAM,QAAQ,eAAe,OAAO,QAAQ,sBAAsB,CAAC;AAAA,IACnE,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,MAAM,SAAS,QAAQ,KAAK;AAAA,IAC5B,MAAM,UAAU,eAAe;AAAA,IAC/B,IAAI,YAAY,MAAM,SAAS,WAAW,MAAM,SAAS,gBAAgB;AAAA,MACvE,MAAM,eAAe;AAAA,IACvB;AAAA,IACA,IAAI,MAAM,SAAS,iBAAiB,kBAAkB,MAAM;AAAA,MAAG,MAAM,eAAe;AAAA,IAGpF,IACE,iBAAiB,gBACjB,MAAM,SAAS,kBACd,WAAW,gBAAgB,MAAM,IAClC;AAAA,MACA,QAAQ,kBAAkB,MAAM,SAAS;AAAA,IAC3C;AAAA;AAAA,EAIF,WAAW,QAAQ;AAAA,IAAY,QAAQ,iBAAiB,MAAM,UAAU,EAAE,SAAS,MAAM,CAAC;AAAA,EAC1F,OAAO,MAAM;AAAA,IACX,WAAW,QAAQ;AAAA,MAAY,QAAQ,oBAAoB,MAAM,QAAQ;AAAA;AAAA;AAQtE,IAAM,iBAAiB,CAAC,UAAwB,MAAe,MAAM,SAAS,MAAM;AAGpF,IAAM,kBAAkB,CAAC,SAAsB,UAAwB,MAAY;AAAA,EACxF,MAAM,cAAc,eAAe,KAAK,EAAE,IAAI,SAAS;AAAA,EACvD,IAAI,QAAQ,MAAM,gBAAgB;AAAA,IAAa,QAAQ,MAAM,cAAc;AAAA;;ACnJtE,IAAM,oBAAgC,CAAC,GAAG,CAAC;AAG3C,IAAM,oBAAoB,CAAC,kBAA0B,YAC1D,OAAO,YAAY,WACf,UACA,KAAK,IAAI,KAAK,IAAI,QAAQ,IAAI,gBAAgB,GAAG,QAAQ,EAAE;AAG1D,IAAM,kBAAkB,CAC7B,SACA,kBACA,aAAyB,sBACZ;AAAA,EACb,MAAM,OAAO,QAAQ,sBAAsB;AAAA,EAC3C,OAAO;AAAA,IACL,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK;AAAA,IAC7B,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM;AAAA,IAC/B,YAAY,kBAAkB,kBAAkB,UAAU;AAAA,EAC5D;AAAA;AAIK,IAAM,cAAc,CAAC,SAAkB,aAAuC;AAAA,EACnF,MAAM,WAAW,IAAI,eAAe,QAAQ;AAAA,EAC5C,SAAS,QAAQ,OAAO;AAAA,EACxB,OAAO,MAAM,SAAS,WAAW;AAAA;AAI5B,IAAM,oBAAoB,CAC/B,SACA,cACiB;AAAA,EACjB,MAAM,WAAW,IAAI,qBAAqB,CAAC,YAAY;AAAA,IACrD,WAAW,SAAS;AAAA,MAAS,UAAU,MAAM,cAAc;AAAA,GAC5D;AAAA,EACD,SAAS,QAAQ,OAAO;AAAA,EACxB,OAAO,MAAM,SAAS,WAAW;AAAA;AAI5B,IAAM,uBAAuB,CAClC,MACA,aACiB;AAAA,EACjB,MAAM,QAAQ,KAAK,WAAW,kCAAkC;AAAA,EAChE,MAAM,WAAW,CAAC,UAAqC,SAAS,MAAM,OAAO;AAAA,EAC7E,SAAS,MAAM,OAAO;AAAA,EACtB,MAAM,iBAAiB,UAAU,QAAQ;AAAA,EACzC,OAAO,MAAM,MAAM,oBAAoB,UAAU,QAAQ;AAAA;AAmBpD,IAAM,oBAAoB,CAAC,MAAsB,aAAuC;AAAA,EAC7F,IAAI;AAAA,EACJ,MAAM,WAAW,MAAY;AAAA,IAC3B,OAAO,oBAAoB,UAAU,QAAQ;AAAA,IAC7C,IAAI;AAAA,IACJ,SAAS;AAAA;AAAA,EAEX,MAAM,MAAM,MAAY;AAAA,IACtB,QAAQ,KAAK,WAAW,gBAAgB,KAAK,uBAAuB;AAAA,IACpE,MAAM,iBAAiB,UAAU,QAAQ;AAAA;AAAA,EAE3C,IAAI;AAAA,EACJ,OAAO,MAAM,OAAO,oBAAoB,UAAU,QAAQ;AAAA;;ACzF5D;AACA;AAAA,mBAEE;AAAA;AAAA;AAAA,aAKA;AAAA;AAAA,uBAGA;AAAA;AAEF;;;ACTA;AACA;AAAA;AAAA;AAAA,WAKE;AAAA;AAAA;AAAA;AAKF;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA,IAAM,UAAU,CAAC,QAAoB,SAAqB;AAAA,EACxD,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,OAAO,IAAI,gBACT,IAAI,QAAQ,KAAK,OAAO,KAAK,MAAM,GACnC,OAAO,UACP,OAAO,QACP,OAAO,SACT;AAAA,SACG,YAAY;AAAA,MACf,MAAM,OAAO,IAAI,WAAW,cAAc;AAAA,MAC1C,KAAK,SAAS,YAAY,EAAE,OAAO,OAAO,OAAO;AAAA,MACjD,KAAK,SAAS,cAAc,EAAE,OAAO,OAAO,SAAS;AAAA,MACrD,OAAO;AAAA,IACT;AAAA,SACK;AAAA,MACH,OAAO,IAAI,SAAS,OAAO,WAAW,OAAO,SAAS;AAAA;AAAA;AAarD,IAAM,uBAAuB,CAAC,aAA4C;AAAA,EAC/E,IAAI,UAAqC,CAAC;AAAA,EAC1C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM,OAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,EAAE;AAAA,EAExD,MAAM,UAAU,MAAY;AAAA,IAC1B,IAAI,aAAa;AAAA,MAAW;AAAA,IAC5B,WAAW,QAAQ,SAAS;AAAA,MAAQ,KAAK,QAAQ;AAAA,IACjD,SAAS,QAAQ;AAAA,IACjB,WAAW;AAAA,IACX,aAAa;AAAA;AAAA,EAGf,MAAM,QAAQ,MAAY;AAAA,IACxB,QAAQ;AAAA,IACR,IAAI,QAAQ,WAAW;AAAA,MAAG;AAAA,IAC1B,MAAM,SAAS,IAAI,kBAAkB,KAAK,OAAO,KAAK,QAAQ;AAAA,MAC5D,MAAM;AAAA,MACN,SAAS;AAAA,IACX,CAAC;AAAA,IACD,MAAM,OAAO,IAAI,eAAe,UAAU,MAAM;AAAA,IAChD,MAAM,QAAQ,IAAI,WAAW,IAAI,YAAc,IAAI,iBAAmB;AAAA,IACtE,KAAK,QAAQ,KAAK;AAAA,IAClB,WAAW,UAAU;AAAA,MAAS,KAAK,QAAQ,QAAQ,QAAQ,IAAI,CAAC;AAAA,IAChE,KAAK,QAAQ,IAAI,UAAY;AAAA,IAC7B,KAAK,cAAc,KAAK,UAAU;AAAA,IAClC,KAAK,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,IACpC,WAAW;AAAA,IACX,aAAa;AAAA;AAAA,EAGf,OAAO;AAAA,IACL,WAAW,CAAC,SAAS;AAAA,MACnB,IAAI,aAAa,MAAM,OAAO;AAAA,QAAG;AAAA,MACjC,UAAU;AAAA,MACV,MAAM;AAAA;AAAA,IAER,SAAS,CAAC,OAAO,QAAQ,eAAe;AAAA,MACtC,KAAK,QAAQ;AAAA,MACb,KAAK,SAAS;AAAA,MACd,KAAK,aAAa;AAAA,MAClB,UAAU,cAAc,UAAU;AAAA,MAClC,UAAU,QAAQ,OAAO,MAAM;AAAA;AAAA,IAEjC,QAAQ,CAAC,OAAO,WAAW;AAAA,MACzB,IAAI,aAAa,aAAa,eAAe;AAAA,QAAW,OAAO;AAAA,MAC/D,WAAW,QAAQ;AAAA,MACnB,WAAW,SAAS;AAAA,MACpB,SAAS,OAAO;AAAA,MAChB,OAAO;AAAA;AAAA,IAET;AAAA,EACF;AAAA;;;AC1GF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAeE;AAAA;AAAA;AAYK,IAAM,cAAc;AAAA,EACzB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,UAAU;AACZ;AAEO,IAAM,eAAe;AAAA,EAC1B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AACX;AAEO,IAAM,cAAc;AAAA,EACzB,MAAM;AAAA,EACN,QAAQ;AACV;AAOO,IAAM,qBAAqB,CAAC,UAA0B;AAAA,EAC3D,MAAM,SAAS,CAAC,WAAW;AAAA,IACzB,MAAM,WAAoB,QAAQ,IAAI,QAAQ,UAAU;AAAA,IACxD,MAAM,YAAY,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AAAA,IAChE,WAAW,QAAQ;AAAA,MAAW,IAAI,gBAAgB;AAAA,QAAU,KAAK,cAAc;AAAA,GAChF;AAAA;AAwBH,IAAM,cAAc,IAAI;AAExB,IAAM,UAAU,IAAI;AAEb,IAAM,sBAAsB,CACjC,QACA,UACA,eACS;AAAA,EACT,YAAY,IAAI,QAAQ,UAAU;AAAA,EAClC,QAAQ,IAAI,QAAQ,QAAQ;AAAA;AAGvB,IAAM,oBAAoB,CAAC,WAAoC;AAAA,EACpE,YAAY,OAAO,MAAM;AAAA,EACzB,QAAQ,OAAO,MAAM;AAAA;AAShB,IAAM,wBAAwB,CAAC,WACpC,YAAY,IAAI,MAAM;;;AF9ExB,IAAM,YAAY,CAAC,UAAyB,aAAsC;AAAA,EAChF,MAAM,YAAY,SAAS;AAAA,EAC3B,MAAM,UAAU,SAAS,YAAY;AAAA,EACrC,MAAM,WAAW,UAAU,YAAY;AAAA,EACvC,MAAM,OAAO,UAAU,YAAY,SAAS,WAAW,UAAU;AAAA,EACjE,IAAI,YAAY,UAAU,SAAS;AAAA,IAAM,UAAU,cAAc;AAAA,EACjE,UAAU,UAAU;AAAA,EACpB,UAAU,OAAO;AAAA,EACjB,SAAS,cAAc,aAAa,SAAS;AAAA,EAC7C,SAAS,sBAAsB,SAAS;AAAA,EACxC,SAAS,mBAAmB,YAAY,SAAS;AAAA,EACjD,OAAO;AAAA;AAGT,IAAM,cAAc,IAAI;AAOxB,IAAM,eAAe,CACnB,SACA,OACA,WACiB;AAAA,EACjB,MAAM,SAAS,IAAI,mBAAkB,OAAO,QAAQ;AAAA,IAClD,WAAW;AAAA,IACX,WAAW;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AAAA,EACD,MAAM,SAAS,EAAE,SAAS,OAAO,SAAS,SAAS,MAAM,OAAO,QAAQ,EAAE;AAAA,EAC1E,QAAQ,IAAI,QAAQ,MAAM;AAAA,EAC1B,OAAO;AAAA;AAOT,IAAM,aAAa,CAAC,aAA0C;AAAA,EAC5D,MAAM,YAAY,IAAI,eAAe,QAAQ;AAAA,EAC7C,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,SAAS,UAAU,UAAU,MAAM,IAAI;AAAA,EAC7C,KAAK,QAAQ;AAAA,EACb,UAAU,QAAQ;AAAA,EAClB,OAAO,EAAE,SAAS,OAAO,SAAS,SAAS,MAAM,OAAO,QAAQ,EAAE;AAAA;AAQpE,IAAM,iBAAiB,CAAC,UAAyB,OAAc,WAAyB;AAAA,EACtF,MAAM,cAAc,SAAS,GAAG,wBAAwB,MAAM;AAAA,EAC9D,IAAI,CAAC,eAAe,MAAM,eAAe,MAAM;AAAA,IAC7C,SAAS,OAAO,OAAO,MAAM;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,MAAM,aAAa,MAAM;AAAA,EACzB,MAAM,aAAa;AAAA,EACnB,SAAS,OAAO,OAAO,MAAM;AAAA,EAC7B,MAAM,aAAa;AAAA;AAId,IAAM,uBAAuB,CAClC,QACA,UAAwB,CAAC,OACJ;AAAA,EAErB,KAAK;AAAA,EACL,QAAQ,MAAM;AAAA,IACZ,MAAM,WAAW,IAAI,cAAc,EAAE,WAAW,SAAS,SAAS,OAAO,CAAC;AAAA,IAC1E,oBAAoB,QAAQ,UAAU;AAAA,MACpC,IAAI,SAAS;AAAA,MACb,WAAW,CAAC,aAAa,SAAS,GAAG,iBAAiB,QAAQ;AAAA,IAChE,CAAC;AAAA,IACD,MAAM,OAAO,qBAAqB,QAAQ;AAAA,IAC1C,MAAM,UAAU,IAAI;AAAA,IAEpB,IAAI,aAAa;AAAA,IACjB,IAAI,aAAa;AAAA,IACjB,IAAI,YAAY;AAAA,IAGhB,IAAI,iBAAiB;AAAA,IACrB,MAAM,aAAa,IAAI;AAAA,IACvB,MAAM,kBAAkB,MAAY;AAAA,MAClC,IAAI,SAAS,cAAc,MAAM,aAAa,YAAY;AAAA,QACxD,SAAS,cAAc,aAAa,UAAU;AAAA,MAChD;AAAA,MACA,QAAQ,OAAO,WAAW,SAAS,QAAQ,WAAW;AAAA,MACtD,KAAK,QAAQ,OAAO,QAAQ,aAAa,UAAU;AAAA;AAAA,IAErD,OAAO;AAAA,MACL,QAAQ,CAAC,OAAO,QAAQ,MAAM,WAAW;AAAA,QACvC,IAAI,iBAAiB,KAAK,WAAW,IAAI,KAAK,MAAM,gBAAgB;AAAA,UAClE,mBAAmB,KAAK;AAAA,UACxB,WAAW,IAAI,OAAO,cAAc;AAAA,QACtC;AAAA,QACA,MAAM,cAAc,WAAW,YAAY,YAAY,QAAQ,IAAI,MAAM;AAAA,QACzE,IAAI,gBAAgB,WAAW;AAAA,UAQ7B,MAAM,WAAW,SAAS,gBAAgB;AAAA,UAC1C,MAAM,aAAa,SAAS,cAAc;AAAA,UAC1C,MAAM,YAAY,SAAS,GAAG;AAAA,UAC9B,SAAS,GAAG,UAAU;AAAA,UACtB,SAAS,cAAc,CAAC;AAAA,UACxB,SAAS,gBAAgB,WAAW;AAAA,UACpC,SAAS,OAAO,OAAO,MAAM;AAAA,UAC7B,SAAS,gBAAgB,QAAQ;AAAA,UACjC,SAAS,cAAc,UAAU;AAAA,UACjC,SAAS,GAAG,UAAU;AAAA,UACtB;AAAA,QACF;AAAA,QAEA,IAAI,SAAS,GAAG,cAAc;AAAA,UAC5B,eAAe,UAAU,OAAO,MAAM;AAAA,UACtC;AAAA,QACF;AAAA,QACA,QAAQ,OAAO,WAAW,SAAS,QAAQ,WAAW;AAAA,QACtD,IAAI,SAAS,WAAW;AAAA,UACtB,IAAI,WAAW;AAAA,YACb,SAAS,eAAe,KAAK;AAAA,YAC7B,SAAS,YAAY,GAAG,GAAG,OAAO,MAAM;AAAA,YACxC,YAAY;AAAA,UACd;AAAA,UACA,IAAI,CAAC,KAAK,OAAO,OAAO,MAAM;AAAA,YAAG,SAAS,OAAO,OAAO,MAAM;AAAA,UAC9D;AAAA,QACF;AAAA,QAEA,MAAM,SAAS,SAAS,KAAK,IAAI,KAAK;AAAA,QACtC,SAAS,YAAY,KAAK,GAAG,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,QAC5D,SAAS,WAAW,KAAK,GAAG,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,QAC3D,SAAS,eAAe,IAAI;AAAA,QAC5B,YAAY;AAAA,QAEZ,SAAS,OAAO,OAAO,MAAM;AAAA;AAAA,MAE/B,cAAc,CAAC,OAAO,WAAW,aAAa,SAAS,OAAO,MAAM;AAAA,MACpE,mBAAmB,MAAM,WAAW,QAAQ;AAAA,MAC5C,WAAW,CAAC,aAAa;AAAA,QACvB,IAAI,UAAU,UAAU,QAAQ;AAAA,UAAG;AAAA,QACnC,aAAa,SAAS;AAAA,QACtB,KAAK,UAAU,SAAS,OAAO;AAAA,QAC/B,gBAAgB;AAAA;AAAA,MAElB,aAAa,CAAC,aAAa;AAAA,QACzB,aAAa,SAAS;AAAA,QACtB,gBAAgB;AAAA,QAChB,SAAS,QAAQ,SAAS,OAAO,SAAS,QAAQ,KAAK;AAAA,QACvD,KAAK,QAAQ,SAAS,OAAO,SAAS,QAAQ,aAAa,UAAU;AAAA;AAAA,MAEvE,QAAQ,OAAO;AAAA,QACb,YAAY,SAAS,KAAK,OAAO;AAAA,QACjC,UAAU,SAAS,KAAK,OAAO;AAAA,MACjC;AAAA,MAGA,SAAS,MAAM;AAAA,QACb,kBAAkB,MAAM;AAAA,QACnB,SAAS,GAAG,WAAW,GAAG,IAAI;AAAA,QACnC,KAAK,QAAQ;AAAA,QACb,SAAS,QAAQ;AAAA,QACjB,SAAS,iBAAiB;AAAA;AAAA,IAE9B;AAAA;AAEJ;;AG1MA;AACA;AAAA,mBAEE;AAAA,kBACA;AAAA,kBAEA;AAAA,aAEA;AAAA;AAEF,4BAAS;AACT,2BAAS;;;ACbT,yBAAS;AAET;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA;AAOA,IAAM,UAAU,CAAC,OAAe,WAA+B;AAAA,EAC7D,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,OAAO,MAAM,IAAI,MAAM,OAAO,OAAO,UAAU,OAAO,QAAQ,OAAO,SAAS,CAAC;AAAA,SAC5E,YAAY;AAAA,MAEf,MAAM,UAAU,SAAS,IAAI,GAAG,EAAE,IAAI,OAAO,MAAM;AAAA,MACnD,OAAO,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,QAAQ,GAAG,IAAI,SAAS,OAAO,CAAC,GAAG,MAAM,CAAC;AAAA,IACvF;AAAA,SACK,QAAQ;AAAA,MAEX,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,QAAQ,KAAK,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC;AAAA,MACxC,MAAM,UAAU,IAAI,MAAM,KAAK,IAAI,KAAK,IAAI,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,SAAS;AAAA,MAC3F,OAAO,KAAK,OAAO,YAAY,KAAK,UAAU,OAAO,CAAC,IAAI,SAAS,MAAM,CAAC;AAAA,IAC5E;AAAA;AAAA;AAIG,IAAM,6BAA6B,CAAC,aAA6C;AAAA,EACtF,IAAI,UAAqC,CAAC;AAAA,EAC1C,IAAI;AAAA,EAEJ,IAAI;AAAA,EAEJ,MAAM,UAAU,MAAY;AAAA,IAC1B,UAAU,QAAQ;AAAA,IAClB,WAAW;AAAA,IACX,QAAQ;AAAA;AAAA,EAGV,MAAM,QAAQ,CAAC,OAAc,WAAmC;AAAA,IAC9D,QAAQ;AAAA,IACR,MAAM,SAAS,QAAQ,OAAe,SAAS,KAAK,OAAO,MAAM,CAAC;AAAA,IAClE,MAAM,OAAO,IAAI,eAAe,UAAU,MAAM;AAAA,IAChD,WAAW;AAAA,IACX,QAAQ,EAAE,OAAO,OAAO;AAAA,IACxB,OAAO;AAAA;AAAA,EAGT,OAAO;AAAA,IACL,WAAW,CAAC,SAAS;AAAA,MACnB,IAAI,cAAa,MAAM,OAAO;AAAA,QAAG;AAAA,MACjC,UAAU;AAAA,MACV,QAAQ;AAAA;AAAA,IAGV,SAAS,MAAG;AAAA,MAAG;AAAA;AAAA,IACf,QAAQ,CAAC,OAAO,WAAW;AAAA,MACzB,IAAI,QAAQ,WAAW;AAAA,QAAG,OAAO;AAAA,MACjC,MAAM,UACJ,aAAa,aAAa,OAAO,UAAU,SAAS,MAAM,WAAW,SACjE,WACA,MAAM,OAAO,MAAM;AAAA,MACzB,QAAQ,OAAO;AAAA,MACf,OAAO;AAAA;AAAA,IAET;AAAA,EACF;AAAA;;;ADhDF,IAAM,aAAY,CAAC,UAA0B,aAAsC;AAAA,EACjF,MAAM,YAAY,SAAS;AAAA,EAC3B,MAAM,UAAU,SAAS,YAAY;AAAA,EACrC,MAAM,WAAW,UAAU,YAAY;AAAA,EACvC,UAAU,UAAU;AAAA,EACpB,IAAI;AAAA,IAAS,UAAU,OAAO,YAAY,SAAS;AAAA,EACnD,SAAS,cAAc,aAAa,SAAS;AAAA,EAC7C,SAAS,sBAAsB,SAAS;AAAA,EACxC,SAAS,mBAAmB,YAAY,SAAS;AAAA,EACjD,OAAO;AAAA;AAGT,IAAM,eAAc,IAAI;AAMxB,IAAM,gBAAe,CACnB,SACA,OACA,WACiB;AAAA,EACjB,MAAM,SAAS,IAAI,kBAAkB,OAAO,QAAQ;AAAA,IAClD,WAAW;AAAA,IACX,WAAW;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,EACX,CAAC;AAAA,EACD,MAAM,SAAS,EAAE,SAAS,OAAO,SAAS,SAAS,MAAM,OAAO,QAAQ,EAAE;AAAA,EAC1E,QAAQ,IAAI,QAAQ,MAAM;AAAA,EAC1B,OAAO;AAAA;AAIT,IAAM,cAAa,CAAC,aAA2C;AAAA,EAC7D,MAAM,YAAY,IAAI,gBAAe,QAAQ;AAAA,EAC7C,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,SAAS,UAAU,UAAU,MAAM,IAAI;AAAA,EAC7C,KAAK,QAAQ;AAAA,EACb,UAAU,QAAQ;AAAA,EAClB,OAAO,EAAE,SAAS,OAAO,SAAS,SAAS,MAAM,OAAO,QAAQ,EAAE;AAAA;AAOpE,IAAM,kBAAiB,CAAC,UAA0B,OAAc,WAAyB;AAAA,EACvF,MAAM,cAAc,SAAS,GAAG,wBAAwB,MAAM;AAAA,EAC9D,IAAI,CAAC,eAAe,MAAM,eAAe,MAAM;AAAA,IAC7C,SAAS,OAAO,OAAO,MAAM;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,MAAM,aAAa,MAAM;AAAA,EACzB,MAAM,aAAa;AAAA,EACnB,SAAS,OAAO,OAAO,MAAM;AAAA,EAC7B,MAAM,aAAa;AAAA;AAId,IAAM,wBAAwB,CACnC,QACA,UAAyB,CAAC,OACL;AAAA,EAErB,KAAK;AAAA,EACL,QAAQ,MAAM;AAAA,IAEZ,MAAM,WAAW,IAAI,eAAe,EAAE,WAAW,MAAM,OAAO,UAAU,SAAS,OAAO,CAAC;AAAA,IACzF,oBAAoB,QAAQ,UAAU;AAAA,MACpC,IAAI,SAAS;AAAA,MACb,WAAW,CAAC,aAAa;AAAA,QAClB,SAAS,iBAAiB,QAAQ;AAAA;AAAA,IAE3C,CAAC;AAAA,IACD,MAAM,OAAO,2BAA2B,QAAQ;AAAA,IAChD,MAAM,UAAU,IAAI;AAAA,IACpB,IAAI,aAAa;AAAA,IACjB,IAAI,aAAa;AAAA,IACjB,IAAI,YAAY;AAAA,IAChB,IAAI,iBAAiB;AAAA,IACrB,MAAM,aAAa,IAAI;AAAA,IACvB,MAAM,kBAAkB,MAAY;AAAA,MAClC,IAAI,SAAS,cAAc,MAAM,aAAa,YAAY;AAAA,QACxD,SAAS,cAAc,aAAa,UAAU;AAAA,MAChD;AAAA;AAAA,IAEF,OAAO;AAAA,MACL,OAAO,MAAM,SAAS,KAAK,EAAE,KAAK,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA,MACjD,QAAQ,CAAC,OAAO,QAAQ,MAAM,WAAW;AAAA,QACvC,IAAI,iBAAiB,KAAK,WAAW,IAAI,KAAK,MAAM,gBAAgB;AAAA,UAClE,mBAAmB,KAAK;AAAA,UACxB,WAAW,IAAI,OAAO,cAAc;AAAA,QACtC;AAAA,QACA,MAAM,YAAY,WAAW,YAAY,YAAY,QAAQ,IAAI,MAAM;AAAA,QACvE,IAAI,cAAc,WAAW;AAAA,UAE3B,MAAM,WAAW,SAAS,gBAAgB;AAAA,UAC1C,MAAM,aAAa,SAAS,cAAc;AAAA,UAC1C,MAAM,YAAY,SAAS,GAAG;AAAA,UAC9B,SAAS,GAAG,UAAU;AAAA,UACtB,SAAS,cAAc,CAAC;AAAA,UACxB,SAAS,gBAAgB,SAAS;AAAA,UAClC,SAAS,OAAO,OAAO,MAAM;AAAA,UAC7B,SAAS,gBAAgB,QAAQ;AAAA,UACjC,SAAS,cAAc,UAAU;AAAA,UACjC,SAAS,GAAG,UAAU;AAAA,UACtB;AAAA,QACF;AAAA,QAEA,IAAI,SAAS,GAAG,cAAc;AAAA,UAC5B,gBAAe,UAAU,OAAO,MAAM;AAAA,UACtC;AAAA,QACF;AAAA,QACA,QAAQ,OAAO,WAAW,SAAS,QAAQ,YAAW;AAAA,QACtD,IAAI,SAAS,WAAW;AAAA,UACtB,IAAI,WAAW;AAAA,YACb,SAAS,eAAe,KAAK;AAAA,YAC7B,SAAS,YAAY,GAAG,GAAG,OAAO,MAAM;AAAA,YACxC,YAAY;AAAA,UACd;AAAA,UACA,IAAI,CAAC,KAAK,OAAO,OAAO,MAAM;AAAA,YAAG,SAAS,OAAO,OAAO,MAAM;AAAA,UAC9D;AAAA,QACF;AAAA,QAEA,MAAM,SAAS,SAAS,KAAK,IAAI,KAAK;AAAA,QACtC,SAAS,YAAY,KAAK,GAAG,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,QAC5D,SAAS,WAAW,KAAK,GAAG,QAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,QAC3D,SAAS,eAAe,IAAI;AAAA,QAC5B,YAAY;AAAA,QACZ,SAAS,OAAO,OAAO,MAAM;AAAA;AAAA,MAE/B,cAAc,CAAC,OAAO,WAAW,cAAa,SAAS,OAAO,MAAM;AAAA,MACpE,mBAAmB,MAAM,YAAW,QAAQ;AAAA,MAC5C,WAAW,CAAC,aAAa;AAAA,QACvB,IAAI,WAAU,UAAU,QAAQ;AAAA,UAAG;AAAA,QACnC,aAAa,SAAS;AAAA,QACtB,KAAK,UAAU,SAAS,OAAO;AAAA,QAC/B,gBAAgB;AAAA;AAAA,MAElB,aAAa,CAAC,aAAa;AAAA,QACzB,aAAa,SAAS;AAAA,QACtB,gBAAgB;AAAA,QAChB,SAAS,QAAQ,SAAS,OAAO,SAAS,QAAQ,KAAK;AAAA;AAAA,MAEzD,QAAQ,OAAO;AAAA,QACb,YAAY,SAAS,KAAK,OAAO;AAAA,QACjC,UAAU,SAAS,KAAK,OAAO;AAAA,MACjC;AAAA,MACA,SAAS,MAAM;AAAA,QACb,kBAAkB,MAAM;AAAA,QACnB,SAAS,GAAG,WAAW,GAAG,IAAI;AAAA,QACnC,KAAK,QAAQ;AAAA,QACR,SAAS,QAAQ;AAAA;AAAA,IAE1B;AAAA;AAEJ;;AElMA;AACA;AACA;AACA;AAGO,IAAM,aAAa,OAAO,MAAM;AAAA,EACrC,GAAG,YAAY,iBAAiB;AAAA,EAChC,OAAO,aAAa,kBAAkB,EAAE,OAAO,OAAO,OAAO,CAAC;AAChE,CAAC;AAGD,IAAM,SAAS,OAAO,OAAO,EAAE,MAAM,OAAO,KAAK,SAAS,OAAO,KAAK,UAAU,OAAO,IAAI,CAAC;AAGrF,IAAM,mBAAmB,OAAO,OAAO;AAAA,EAC5C,KAAK,OAAO,OAAO;AAAA,IACjB,SAAS,OAAO;AAAA,IAChB,SAAS,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,IACd,SAAS,OAAO;AAAA,IAChB,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,YAAY,OAAO;AAAA,EACrB,CAAC;AAAA,EACD,WAAW,OAAO,OAAO,EAAE,YAAY,QAAQ,WAAW,OAAO,CAAC;AACpE,CAAC;AAIM,IAAM,kBAAkB,OAAO,OAAO;AAAA,EAC3C,MAAM,OAAO,OAAO,OAAO,SAAS,CAAC,gBAAgB,cAAc,CAAC,CAAC;AACvE,CAAC;AAGM,IAAM,eAAe,cAAc,OAAO;AAAA,EAC/C,KAAK;AAAA,EACL,YAAY,EAAE,OAAO,YAAY,iBAAiB;AAAA,EAClD,QAAQ;AAAA,IACN,eAAe,YAAY;AAAA,IAC3B,sBAAsB,YAAY;AAAA,IAClC,sBAAsB,YAAY;AAAA,IAClC,sBAAsB,YAAY;AAAA,IAClC,oBAAoB,YAAY;AAAA,IAChC,uBAAuB,YAAY;AAAA,IACnC,sBAAsB,YAAY;AAAA,IAClC,uBAAuB,YAAY;AAAA,IACnC,wBAAwB,YAAY;AAAA,IACpC,eAAe,YAAY;AAAA,IAC3B,cAAc,YAAY;AAAA,IAC1B,kBAAkB,YAAY;AAAA,IAC9B,iBAAiB,YAAY;AAAA,IAC7B,sBAAsB,YAAY;AAAA,IAClC,mBAAmB,YAAY;AAAA,IAC/B,uBAAuB,YAAY;AAAA,IACnC,kBAAkB,YAAY;AAAA,IAC9B,wBAAwB,YAAY;AAAA,IACpC,YAAY;AAAA,IACZ,kBAAkB,YAAY;AAAA,IAC9B,mBAAmB,YAAY;AAAA,IAC/B,oBAAoB,YAAY;AAAA,IAChC,kBAAkB,YAAY;AAAA,IAC9B,mBAAmB,YAAY;AAAA,IAC/B,mBAAmB,YAAY;AAAA,IAC/B,qBAAqB,YAAY;AAAA,IACjC,eAAe,OAAO,OAAO,EAAE,OAAO,WAAW,CAAC;AAAA,IAClD,oBAAoB;AAAA,EACtB;AACF,CAAC;AAGM,IAAM,eAAe;AAAA,EAC1B,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAAA,EACd,eAAe;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,UAAU;AAAA,EACV,eAAe;AAAA,EACf,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,oBAAoB;AACtB;AAGO,IAAM,iBAAiB,mBAAmB;AAAA,EAC/C,cAAc,CAAC;AAAA,EACf,aAAa,EAAE,QAAQ,OAAO,OAAO;AACvC,CAAC;;ACxGD,iBAAS,iBAAM;AAAA;AAKR,MAAM,sBAAsB,MAAK,YAAY,eAAe,EAGhE;AAAC;AAGG,IAAM,SAAS,CAAC,SAAgB;AAAA,EAErC,WAAW,CAAC,SAAiB,QAAO,QAAQ,MAAM,IAAI,UAAU,IAAI,CAAC;AAAA,EAKrE,OAAO,CAAC,SACN,QAAO,WAAW;AAAA,IAChB,KAAK,MAAM,IAAI,MAAM,IAAI;AAAA,IACzB,OAAO,CAAC,UAAU,IAAI,cAAc,EAAE,MAAM,MAAM,CAAC;AAAA,EACrD,CAAC;AAAA,EAEH,MAAM,QAAO,QAAQ,MAAM,IAAI,KAAK,CAAC;AACvC;;ACvBO,IAAM,YAAY,CAAC,KAAwB,UAA2C;AAAA,EAC3F,MAAM,SAAS;AAAA,IACb,SAAS;AAAA,IACT,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AAAA,EACA,WAAW,MAAM,KAAK;AAAA,IACpB,QAAQ,GAAG;AAAA,WACJ;AAAA,QACH,OAAO;AAAA,QACP;AAAA,WACG;AAAA,QACH,OAAO;AAAA,QACP;AAAA,WACG;AAAA,QACH,OAAO;AAAA,QACP;AAAA,WACG;AAAA,QACH,OAAO;AAAA,QACP;AAAA,WACG;AAAA,QACH,OAAO;AAAA,QACP;AAAA,WACG;AAAA,QACH,OAAO;AAAA,QACP;AAAA,WACG;AAAA,WACA;AAAA,QACH,OAAO;AAAA,QACP;AAAA;AAAA,EAEN;AAAA,EACA,OAAO;AAAA,IACL,KAAK;AAAA,IACL,WAAW,EAAE,YAAY,KAAK,MAAM,WAAW,GAAG,WAAW,KAAK,MAAM,UAAU,EAAE;AAAA,EACtF;AAAA;;AC3CF;AAAA;AAAA;;;ACSA,kBAAS;;;ACgBT,IAAM,WAAW;AAEjB,IAAM,WAAW;AAEV,IAAM,cAAc,CAAC,UAA6B,EAAE,MAAM,WAAW,MAAM,OAAO,MAAM;AAGxF,IAAM,cAAc,CAAC,MAKW;AAAA,EACrC,MAAM,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,EACpC,MAAM,IAAI,EAAE,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,EACzC,MAAM,SAAS,KAAK,MAAM,GAAG,CAAC;AAAA,EAC9B,OAAO,SAAS,WAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,IAAI,MAAM;AAAA;AAG1D,IAAM,QAAQ,CAAC,OAAc,SAC3B,KAAK,IAAI,MAAM,EAAE,IAAI,QAAQ,KAAK,IAAI,MAAM,EAAE,IAAI;AAGpD,IAAM,SAAS,CACb,QACA,OACA,QACA,aACS;AAAA,EACT,OAAO,IAAI,MAAM;AAAA,EAEjB,MAAM,UAAU,CAAC,MAAM,KAAK;AAAA,EAC5B,MAAM,QAAQ,MAAM,KAAK;AAAA,EACzB,OAAO,CAAC,OAAO,KAAK,KAAK,UAAU,KAAK,OAAO,OAAO,IAAI,OAAO,KAAK,KAAK,UAAU,KAAK,KAAK;AAAA;AAIjG,IAAM,SAAS,CACb,QACA,OACA,OACA,YAC8D;AAAA,EAC9D,QAAQ,YAAY,OAAO;AAAA,EAC3B,MAAM,SAAS,KAAK,IAAI,MAAM,EAAE,KAAK;AAAA,EACrC,IAAI,MAAM,SAAS,UAAU;AAAA,IAC3B,OAAO;AAAA,MACL,SAAS,SAAS,UAAU,MAAM,KAAK,MAAM,YAAY,UAAU;AAAA,MACnE,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,IAAI,CAAC;AAAA,IAAQ,OAAO,EAAE,SAAS,WAAW,KAAK;AAAA,EAC/C,IAAI,CAAC,OAAO;AAAA,IAAW,OAAO,EAAE,SAAS,WAAW,MAAM;AAAA,EAE1D,OAAO;AAAA,IACL,SAAS,UAAW,KAAK,KAAK,MAAM,EAAE,KAAK,MAAM,cAAc,KAAK,MAAO;AAAA,IAC3E,WAAW;AAAA,EACb;AAAA;AAOK,IAAM,aAAa,CACxB,QACA,OACA,QACA,QACA,YACyE;AAAA,EACzE,MAAM,SAAS,CAAC,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC3C,MAAM,SAAS,SACX,OAAO,OAAO,KAAK,QAAQ,OAAO,MAAM,QAAQ,MAAM,QAAQ,OAAO,IACrE,OAAO,KAAK;AAAA,EAChB,QAAQ,SAAS,cAAc,OAAO,QAAQ,OAAO,OAAO,MAAM,OAAO;AAAA,EACzE,MAAM,UAAU,UAAU,YAAY,OAAO,KAAK;AAAA,EAClD,MAAM,UAAU,CAAC,UAAU,MAAM,OAAO,MAAM,QAAQ;AAAA,EACtD,MAAM,QAAQ,OAAO,SAAS;AAAA,EAC9B,MAAM,OAAO,EAAE,QAAQ,QAAQ;AAAA,EAC/B,IAAI,WAAW;AAAA,IAAO,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,OAAO,MAAM,GAAG,SAAS,KAAK;AAAA,EACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,MAAM,GAAG,SAAS,UAAU;AAAA;;;AC1FlE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeO,IAAM,QAAQ,CAAC,SAAsB;AAAA,EAC1C,QAAQ,UAAU,gBAAgB,KAAK;AAAA,EACvC,QAAQ,GAAG,GAAG,GAAG,MAAM;AAAA,EAEvB,OAAO;AAAA,IACL,QAAQ,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAAA,IAC3C,WAAW,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG;AAAA,EACpF;AAAA;AAIF,IAAM,cAA2C;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,kBAAkB,EAAE,MAAM,KAAK,SAAS,IAAI;AAG3C,IAAM,iBAAiB,CAC5B,GACA,GACA,aACqB;AAAA,EACrB,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,gBAAgB;AAAA,IAAS,OAAO;AAAA,EACzE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,gBAAgB;AAAA,IAAM,OAAO;AAAA,EACtE,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;AAAA,IAAG,OAAO,IAAI,IAAI,SAAS;AAAA,EACxD,OAAO,IAAI,IAAI,YAAY;AAAA;AAG7B,IAAM,SAAS,CAAC,WAAkC,OAAO;AAGzD,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAM,cAAc,IAAI,kBAAkB,EAAE,OAAO,UAAU,aAAa,MAAM,SAAS,IAAI,CAAC;AAC9F,IAAM,gBAAgB,IAAI,kBAAkB,EAAE,OAAO,SAAS,CAAC;AAC/D,IAAM,gBAAgB,IAAI,eAAe,GAAG,IAAI,CAAC;AAIjD,IAAM,aAAa,CAAC,QAAuB,UAAyB;AAAA,EAClE,MAAM,WAAW,IAAI;AAAA,EACrB,SAAS,aAAa,YAAY,IAAI,uBAAuB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AAAA,EAC5F,MAAM,MAAM,IAAI,KAAK,UAAU,WAAW;AAAA,EAC1C,IAAI,UAAU,MAAG;AAAA,IAAG;AAAA;AAAA,EACpB,IAAI,mBAAmB;AAAA,EACvB,MAAM,IAAI,GAAG;AAAA,EACb,MAAM,SACJ,OAAO,SAAS,YACZ,YACA,IAAI,cAAc,eAAe,eAAe,UAAU;AAAA,EAChE,IAAI,WAAW,WAAW;AAAA,IACxB,OAAO,UAAU,MAAG;AAAA,MAAG;AAAA;AAAA,IACvB,OAAO,gBAAgB;AAAA,IACvB,MAAM,IAAI,MAAM;AAAA,EAClB;AAAA,EACA,OAAO,EAAE,KAAK,OAAO;AAAA;AAGvB,IAAM,gBAAgB,CAAC,WAAyB;AAAA,EAC9C,OAAO,IAAI,iBAAiB;AAAA,EAC5B,OAAO,IAAI,SAAS,QAAQ;AAAA,EAC5B,OAAO,QAAQ,iBAAiB;AAAA,EAChC,OAAO,QAAQ,QAAQ;AAAA;AAGzB,IAAM,SAAS,IAAI;AACnB,IAAM,KAAK,IAAI,QAAQ,GAAG,GAAG,CAAC;AAC9B,IAAM,WAAW,IAAI;AACrB,IAAM,OAAO,IAAI;AACjB,IAAM,OAAO,IAAI;AAGjB,IAAM,cAAc,CAClB,QACA,MACA,OACA,UACS;AAAA,EACT,IAAI,OAAO;AAAA,EACX,WAAW,cAAc,KAAK,OAAO,GAAG;AAAA,IACtC,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK;AAAA,IACnD,IAAI,SAAS,aAAa,SAAS,QAAQ,OAAO,YAAY;AAAA,MAC5D,QAAQ,GAAG,GAAG,MAAM,KAAK,UAAU;AAAA,MACnC,MAAM,IAAI,KAAK,UAAU;AAAA,MACzB,MAAM,SAAS,KAAK,UAAU;AAAA,MAC9B,OAAO,QAAQ,SAAS,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,UAAU,MAAM,CAAC;AAAA,MAC1F,OAAO,YAAY,MAAM,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,QAAQ;AAAA,EACf,OAAO,eAAe,cAAc;AAAA;AAgBtC,IAAM,YAAY,CAAC,SAAkE;AAAA,EACnF,QAAQ,UAAU,GAAG,aAAa,MAAM,KAAK;AAAA,EAE7C,OAAO;AAAA,IACL,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,IACrB,QAAQ;AAAA,MACN,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,MACzB,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,MAC7B,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAAA,IAC3B;AAAA,EACF;AAAA;AAuBK,IAAM,cAAc,CACzB,SACA,OACA,UACA,UACa;AAAA,EACb,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,SAAS;AAAA,EAEb,MAAM,YAAY,CAAC,WAAmC;AAAA,IACpD,MAAM,QAAQ,QAAQ,IAAI,MAAM;AAAA,IAChC,IAAI,UAAU;AAAA,MAAW,OAAO;AAAA,IAChC,MAAM,UAAmB;AAAA,MACvB,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM,CAAC,GAAG,CAAC;AAAA,MACX,SAAS,CAAC;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IACA,QAAQ,IAAI,QAAQ,OAAO;AAAA,IAC3B,IAAI,SAAS,GAAG,YAAY,QAAQ,QAAQ,yBAAyB,WAAW;AAAA,MAEzE,QAAQ,qBAAqB,EAAE,OAAO,OAAO,eAAe,CAAC,GAAG,KACnE,CAAC,YAAY;AAAA,QACX,IAAI,QAAQ,IAAI,MAAM,MAAM;AAAA,UAAS,QAAQ,UAAU;AAAA,QAClD;AAAA,kBAAQ,OAAO;AAAA,SAEtB,MAAG;AAAA,QAAG;AAAA,OACR;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,SAAS,CAAC,QAAuB,UAAyB;AAAA,IAC9D,QAAQ,OAAO,MAAM;AAAA,IACrB,IAAI,MAAM,WAAW;AAAA,MAAW,cAAc,MAAM,MAAM;AAAA,IAC1D,MAAM,SAAS,OAAO;AAAA,IACtB,MAAM,EAAE,MAAM,QAAQ,QAAQ,MAAM,GAAG,CAAC;AAAA;AAAA,EAG1C,MAAM,UAAU,CAAC,QAAuB,UAAyB;AAAA,IAC/D,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,QAAQ,aAAa,QAAQ,QAAQ,IAAI,YAAY;AAAA,MAAe;AAAA,IACxE,MAAM,OAAO,OAAO,MAAM;AAAA,IAC1B,YAAY,QAAQ,CAAC,QAAQ,UAAU;AAAA,MACrC,MAAM,UAAU,IAAI,QAAQ,QAAQ,WAAW;AAAA,MAC/C,IAAI,aAAa,MAAM,QAAQ,UAAU,QAAQ;AAAA,QAC/C,MAAM,QAAQ,SAAS;AAAA,QACvB,MAAM,EAAE,MAAM,UAAU,QAAQ,MAAM,IAAI,MAAM,QAAQ,QAAQ,CAAC;AAAA,MACnE;AAAA,KACD;AAAA,IACD,MAAM,OAAO,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC;AAAA,IAChD,MAAM,YAAY,eAAe,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK;AAAA,IAC1E,IAAI,cAAc,MAAM,OAAO;AAAA,MAC7B,MAAM,QAAQ;AAAA,MACd,MAAM,EAAE,MAAM,SAAS,QAAQ,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IAC5D;AAAA;AAAA,EAGF,MAAM,OAAO,CACX,QACA,OACA,KACA,OACA,UACG;AAAA,IACH,IAAI,SAAS,GAAG,eAAe,MAAM;AAAA,MACnC,IAAI,MAAM,WAAW;AAAA,QAAW,cAAc,MAAM,MAAM;AAAA,MAC1D,MAAM,SAAS;AAAA,MACf;AAAA,IACF;AAAA,IACA,MAAM,WAAW,WAAW,QAAQ,KAAK;AAAA,IACzC,OAAO,IAAI,IAAI,MAAM,IAAI;AAAA,IACzB,OAAO,IAAI,IAAI,MAAM,IAAI;AAAA,IAEzB,OAAO,OAAO,SAAS,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE;AAAA,IAC7D,OAAO,YAAY,IAAI,IAAI,EAAE;AAAA,IAC7B,MAAM,OAAO,IAAI,OAAO,KAAK,MAAM;AAAA,IAEnC,MAAM,OAAO,IAAI,UAAU,OAAO,SAAS;AAAA,IAC3C,IAAI,MAAM,OAAO,WAAW,aAAa,OAAO,SAAS,WAAW;AAAA,MAClE,YAAY,MAAM,OAAO,QAAQ,OAAO,MAAM,OAAO,KAAK;AAAA,IAC5D;AAAA;AAAA,EAGF,OAAO;AAAA,IACL,OAAO,CAAC,OAAO,UAAU;AAAA,MACvB,MAAM,UAAU,IAAI;AAAA,MACpB,WAAW,UAAU,QAAQ,cAAc;AAAA,QACzC,QAAQ,IAAI,MAAM;AAAA,QAClB,MAAM,QAAQ,UAAU,MAAM;AAAA,QAC9B,MAAM,OAAO,MAAM,QAAQ,OAAO,gBAAgB,KAAK;AAAA,QACvD,IAAI,SAAS,aAAa,SAAS,MAAM;AAAA,UACvC,MAAM,MAAM,MAAM,IAAI;AAAA,UACtB,MAAM,EAAE,MAAM,OAAO,QAAQ,MAAM,IAAI,IAAI,CAAC;AAAA,UAC5C,KAAK,QAAQ,OAAO,KAAK,OAAO,KAAK;AAAA,QACvC;AAAA,QACA,QAAQ,QAAQ,KAAK;AAAA,QACrB,IAAI,MAAM,YAAY,WAAW;AAAA,UAC/B,MAAM,SAAS,MAAM,kBAAkB,MAAM,OAAO,EAAE,IAAI,QAAQ,KAAK;AAAA,UACvE,MAAM,UAAU,WAAW,aAAa,WAAW,OAAO,YAAY,UAAU,MAAM;AAAA,QACxF;AAAA,MACF;AAAA,MACA,YAAY,QAAQ,UAAU;AAAA,QAAS,IAAI,CAAC,QAAQ,IAAI,MAAM;AAAA,UAAG,OAAO,QAAQ,KAAK;AAAA;AAAA,IAEvF,MAAM,CAAC,WAAW,UAAU,MAAM,EAAE;AAAA,IACpC,UAAU,CAAC,WAAW;AAAA,MACpB,MAAM,QAAQ,QAAQ,IAAI,MAAM;AAAA,MAChC,IAAI,OAAO,YAAY;AAAA,QAAW;AAAA,MAClC,MAAM,EAAE,MAAM,WAAW,QAAQ,MAAM,IAAI,MAAM,OAAO,MAAM,MAAM,MAAM,QAAQ,CAAC;AAAA;AAAA,IAErF,QAAQ,MAAM;AAAA,MACZ,MAAM,SAAS,CAAC,SAA4C;AAAA,QAC1D,YAAY,QAAQ,UAAU;AAAA,UAAS,IAAI,OAAO,eAAe;AAAA,YAAM,OAAO,MAAM;AAAA,QACpF,OAAO,CAAC,GAAG,CAAC;AAAA;AAAA,MAEd,OAAO,EAAE,MAAM,OAAO,MAAM,GAAG,OAAO,OAAO,OAAO,EAAE;AAAA;AAAA,IAExD,MAAM,MAAM;AAAA,MACV,YAAY,QAAQ,UAAU;AAAA,QAAS,OAAO,QAAQ,KAAK;AAAA;AAAA,EAE/D;AAAA;;;ACpSF;AAAA;AAAA;AAWA,4CAA0B,sCAAuB;AAejD,IAAM,QAAO,IAAI;AACjB,IAAM,SAAS,IAAI;AAEnB,IAAM,SAAS,CAAC,SAA0D;AAAA,EACxE,IAAI,SAAS,QAAQ,SAAS;AAAA,IAAW;AAAA,EACzC,QAAQ,UAAU,GAAG,aAAa,MAAM,KAAK;AAAA,EAC7C,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;AAAA;AAGvE,IAAM,WAAW,CAAC,GAAS,MAAqB,EAAE,MAAM,CAAC,OAAO,MAAM,UAAU,EAAE,EAAE;AAEpF,IAAM,aAAa,CAAC,GAAa,MAC/B,SAAS,EAAE,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,UAAU,EAAE,QAAQ;AAGrE,IAAM,cAAc,GAAG,WAAW,GAAG,GAAG,IAAI,eAA2C;AAAA,EACrF,MAAK,aAAa,OAAO,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC;AAAA,EACjD,OAAO,IAAI,iBAAiB,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,MAAK,GAAG,GAAG,MAAK,GAAG,GAAG,MAAK,GAAG,GAAG,MAAK,EAAE,CAAC;AAAA;AAIzF,IAAM,UAAU,CAAC,IAAY,OAAgB,SAA4B;AAAA,EACvE,OAAO,kBAAkB,MAAK,UAAU,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;AAAA,EAC7D,OAAO;AAAA,IACL;AAAA,IACA,aAAa,MAAM;AAAA,IACnB,OAAO,MAAM,iBAAiB;AAAA,IAC9B,UAAU,KAAK;AAAA,IACf,UAAU,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAAA,IACvC,SAAS,MAAM,QAAQ,IAAI,CAAC,UAAgB,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,EACzE;AAAA;AAIF,IAAM,cAAc,CAAC,UACnB,CAAC,MAAM,IAAI,MAAM,aAAa,MAAM,OAAO,GAAG,MAAM,UAAU,GAAG,MAAM,QAAQ,EAC5E,OAAO,MAAM,QAAQ,KAAK,CAAC,EAC3B,KAAK,GAAG;AAGb,IAAM,kBAAkB,CAAC,SACvB,CAAC,KAAK,IAAI,KAAK,OAAO,GAAG,KAAK,UAAU,GAAG,KAAK,QAAQ,EAAE,KAAK,GAAG;AAGpE,IAAM,iBAAiB,CAAC,SAAiC;AAAA,EACvD,MAAM,WAAW,IAAI;AAAA,EACrB,SAAS,SAAS,IAAI,gBAAgB,KAAK,SAAS,CAAC,CAAC;AAAA,EACtD,SAAS,aAAa,YAAY,IAAI,gBAAgB,KAAK,UAAU,CAAC,CAAC;AAAA,EACvE,SAAS,qBAAqB;AAAA,EAC9B,OAAO;AAAA;AAWT,IAAM,eAAe,CAAC,SAAqB;AAAA,EACzC,KAAK,SAAS;AAAA,EACd,KAAK,SAAS,QAAQ;AAAA;AASjB,IAAM,cAAc,CACzB,SACA,UACA,QACA,OACA,SACa;AAAA,EACb,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,SAAS,IAAI;AAAA,EACnB,IAAI,YAAY;AAAA,EAEhB,IAAI;AAAA,EACJ,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,aAAa,IAAI;AAAA,EACvB,IAAI,WAAW;AAAA,EACf,IAAI;AAAA,EAGJ,MAAM,cAAc,CAAC,OAAgB,UAAkC;AAAA,IACrE,MAAM,SAAS,SAAS,GAAG,WAAW,CAAC;AAAA,IACvC,MAAM,OAAO,IAAI;AAAA,IACjB,WAAW,QAAQ,QAAQ;AAAA,MACzB,KAAK,IAAI,KAAK,EAAE;AAAA,MAChB,MAAM,OAAO,QAAQ,IAAI,KAAK,EAAE;AAAA,MAChC,IAAI,SAAS,aAAa,WAAW,KAAK,MAAM,IAAI;AAAA,QAAG;AAAA,MACvD,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,QAAc,EAAE,MAAM,QAAQ,UAAU;AAAA,MAC9C,QAAQ,IAAI,KAAK,IAAI,KAAK;AAAA,MAErB,MAAM,eAAe,YAAY,IAAI,GAAG,KAAK,EAAE,KAClD,CAAC,WAAW;AAAA,QACV,IAAI,QAAQ,IAAI,KAAK,EAAE,MAAM;AAAA,UAAO,MAAM,SAAS;AAAA,QAC9C;AAAA,iBAAO,OAAO;AAAA,SAErB,MAAG;AAAA,QAAG;AAAA,OACR;AAAA,IACF;AAAA,IACA,YAAY,IAAI,SAAS,SAAS;AAAA,MAChC,IAAI,KAAK,IAAI,EAAE;AAAA,QAAG;AAAA,MAClB,KAAK,QAAQ,OAAO;AAAA,MACpB,QAAQ,OAAO,EAAE;AAAA,IACnB;AAAA;AAAA,EAQF,MAAM,aAAa,CAAC,OAAgB,UAAkC;AAAA,IACpE,OAAO,MAAM;AAAA,IACb,IAAI,SAAS,GAAG,WAAW,QAAQ,MAAM,mBAAmB;AAAA,MAAW;AAAA,IACvE,MAAM,QAAwB,CAAC;AAAA,IAC/B,WAAW,SAAS,MAAM,gBAAgB;AAAA,MACxC,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;AAAA,MAC3C,SAAS,IAAI,OAAO,EAAE;AAAA,MACtB,OAAO,IAAI,IAAI,KAAK;AAAA,MACpB,MAAM,OAAO,OAAO,MAAM,QAAQ,MAAM,YAAY,KAAK,CAAC;AAAA,MAC1D,IAAI,SAAS;AAAA,QAAW,MAAM,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,IAC7D;AAAA,IACA,MAAM,MAAM,MAAM,IAAI,WAAW,EAAE,KAAK,GAAG;AAAA,IAC3C,IAAI,QAAQ;AAAA,MAAU;AAAA,IACtB,WAAW;AAAA,IACX,MAAM,EAAE,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA;AAAA,EAIzC,MAAM,WAAW,CAAC,IAAY,SAAuB;AAAA,IACnD,MAAM,OAAO,WAAW,IAAI,EAAE;AAAA,IAG9B,IAAI,MAAM,aAAa,KAAK,YAAY,KAAK,YAAY,KAAK;AAAA,MAAS;AAAA,IACvE,IAAI,SAAS;AAAA,MAAW,aAAa,IAAI;AAAA,IACzC,MAAM,WAAW,eAAe,IAAI;AAAA,IACpC,WAAW,IAAI,IAAI;AAAA,MACjB,UAAU,KAAK;AAAA,MACf,SAAS,KAAK;AAAA,MACd;AAAA,MACA,UAAU,KAAK,iBAAiB,EAAE,GAAG,QAAQ;AAAA,IAC/C,CAAC;AAAA;AAAA,EAIH,MAAM,aAAa,CAAC,OAAgB,UAAkC;AAAA,IACpE,OAAO,MAAM;AAAA,IACb,IAAI,SAAS,GAAG,WAAW,QAAQ,MAAM,mBAAmB,WAAW;AAAA,MACrE,MAAM,QAAuB,CAAC;AAAA,MAC9B,WAAW,QAAQ,MAAM,gBAAgB;AAAA,QACvC,MAAM,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ;AAAA,QACxC,QAAQ,IAAI,MAAM,EAAE;AAAA,QACpB,OAAO,IAAI,IAAI,IAAI;AAAA,QACnB,SAAS,IAAI,IAAI;AAAA,QACjB,MAAM,OAAO,OAAO,MAAM,QAAQ,KAAK,WAAW,KAAK,CAAC;AAAA,QACxD,IAAI,SAAS,WAAW;AAAA,UACtB,OAAO,kBAAkB,MAAK,UAAU,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;AAAA,UAC7D,MAAM,KAAK;AAAA,YACT;AAAA,YACA,OAAO,KAAK,iBAAiB;AAAA,YAC7B,UAAU,KAAK;AAAA,YACf,UAAU,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAAA,UACzC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM,MAAM,MAAM,IAAI,eAAe,EAAE,KAAK,GAAG;AAAA,MAC/C,IAAI,QAAQ,gBAAgB;AAAA,QAC1B,iBAAiB;AAAA,QACjB,MAAM,EAAE,MAAM,UAAU,QAAQ,MAAM,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,IACA,YAAY,IAAI,SAAS,YAAY;AAAA,MACnC,IAAI,OAAO,IAAI,EAAE;AAAA,QAAG;AAAA,MACpB,aAAa,IAAI;AAAA,MACjB,WAAW,OAAO,EAAE;AAAA,IACtB;AAAA;AAAA,EAGF,MAAM,WAAW,CAAC,MAAc,YAAgD;AAAA,IAC9E,WAAW,UAAU,QAAQ,cAAc;AAAA,MACzC,IAAI,OAAO,eAAe,QAAS,OAAO,SAAS,cAAe;AAAA,QAAS,OAAO;AAAA,IACpF;AAAA,IACA;AAAA;AAAA,EAGF,MAAM,WACJ,CAAC,OAAgB,UACjB,CAAC,WAA0C;AAAA,IACzC,QAAQ,OAAO;AAAA,WACR;AAAA,QACH,OAAO,OAAO,MAAM,cAAc,KAAK,CAAC;AAAA,WACrC,SAAS;AAAA,QACZ,MAAM,QAAQ,SAAS,OAAO,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,KAAK;AAAA,QACjE,OAAO,UAAU,YAAY,YAAY,OAAO,MAAM,eAAe,OAAO,KAAK,CAAC;AAAA,MACpF;AAAA,WACK,cAAc;AAAA,QACjB,MAAM,SAAS,SAAS,OAAO,MAAM,KAAK;AAAA,QAC1C,MAAM,UAAU,OAAO,UAAU,SAAS,QAAQ,YAAY,QAAQ;AAAA,QACtE,OAAO,YAAY,YAAY,YAAY,OAAO,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,MACjF;AAAA,WACK,UAAU;AAAA,QACb,MAAM,SAAS,QAAQ,IAAI,OAAO,EAAE,GAAG;AAAA,QACvC,OAAO,WAAW,YACd,YACA,OAAO,MAAM,QAAQ,OAAO,aAAa,KAAK,CAAC;AAAA,MACrD;AAAA,WACK,SAAS;AAAA,QACZ,MAAM,QAAQ,OAAO,IAAI,OAAO,EAAE;AAAA,QAClC,OAAO,UAAU,YAAY,YAAY,OAAO,MAAM,QAAQ,MAAM,YAAY,KAAK,CAAC;AAAA,MACxF;AAAA,WACK,QAAQ;AAAA,QACX,MAAM,OAAO,OAAO,IAAI,OAAO,EAAE;AAAA,QACjC,OAAO,SAAS,YAAY,YAAY,OAAO,MAAM,QAAQ,KAAK,WAAW,KAAK,CAAC;AAAA,MACrF;AAAA;AAAA;AAAA,EAIN,OAAO;AAAA,IACL,OAAO,CAAC,OAAO,UAAU;AAAA,MACvB,YAAY,OAAO,KAAK;AAAA,MACxB,WAAW,OAAO,KAAK;AAAA,MACvB,WAAW,OAAO,KAAK;AAAA,MACvB,OAAO,SAAS,OAAO,KAAK,CAAC;AAAA;AAAA,IAE/B,MAAM,MAAM;AAAA,MACV,WAAW,QAAQ,QAAQ,OAAO;AAAA,QAAG,KAAK,QAAQ,OAAO;AAAA,MACzD,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,MACb,WAAW,QAAQ,WAAW,OAAO;AAAA,QAAG,aAAa,IAAI;AAAA,MACzD,WAAW,MAAM;AAAA,MACjB,OAAO,MAAG;AAAA,QAAG;AAAA,OAAS;AAAA;AAAA,EAE1B;AAAA;;;AHzPK,IAAM,cAAc,CACzB,UACA,OAAe,gBACf,aACmB;AAAA,EACnB,kBAAkB,CAAC,SAAS,cAAc;AAAA,EAC1C,kBAAkB;AAAA,IAChB,GAAG,CAAC,eAAe,iBAAiB,iBAAiB,SAAS,EAAE,OAC9D,CAAC,YAAY,YAAY,SAAS,cACpC;AAAA,IACA,GAAI,SAAS,SAAS,CAAC,iBAAiB,IAAI,CAAC;AAAA,IAC7C,GAAI,SAAS,SAAS,CAAC,gBAAgB,IAAI,CAAC;AAAA,IAC5C,GAAI,SAAS,cAAc,YAAY,YAAY,CAAC,aAAa,IAAI,CAAC;AAAA,IACtE,GAAI,SAAS,kBAAkB,SAAS,UAAU,CAAC,UAAU,IAAI,CAAC;AAAA,EACpE;AAAA,KACI,SAAS,cAAc,YAAY,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,EAAE,IAAI,CAAC;AAC1F;AAMA,IAAM,eAAe,CAAC,aAA0C;AAAA,EAC9D,OAAO,GAAG,GAAG,KAAK,SAAS;AAAA,EAC3B,MAAM,OAAO,CAAC,SAAS,UAAU;AAAA,EACjC,MAAM,MAAM,KAAK,IAAI,CAAC,SAAS,OAAO;AAAA,EACtC,MAAM,MAAM,KAAK,IAAI,CAAC,SAAS,OAAO;AAAA,EAEtC,OAAO,IAAI,iBACT,EAAE,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,IAAI,IAAI,GACrD,EAAE,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CACrD;AAAA;AAQF,IAAM,mBAAmB,CACvB,SACA,OACA,QACA,UACiB;AAAA,EACjB,MAAM,UAAU,CAAC,QAAqC,CAAC,UAA8B;AAAA,IACnF,MAAM,YAAY,MAAM;AAAA,IACxB,MAAM,OACJ,cAAc,OACV,YACA,MAAM,MAAM,QAAQ,MAAM,YAAY,gBAAgB,SAAS;AAAA,IACrE,IAAI,SAAS,aAAa,SAAS,MAAM;AAAA,MACvC,MAAM,EAAE,MAAM,KAAK,QAAQ,OAAO,KAAK,MAAM,WAAW,GAAG,KAAK,MAAM,IAAI,EAAE,CAAC;AAAA,IAC/E;AAAA,IACA,IAAI,QAAQ;AAAA,MAAa,OAAO,SAAS,MAAM,WAAW;AAAA;AAAA,EAE5D,MAAM,UAAU,QAAQ,aAAa;AAAA,EACrC,MAAM,QAAQ,QAAQ,WAAW;AAAA,EACjC,QAAQ,iBAAiB,eAAe,OAAO;AAAA,EAC/C,QAAQ,iBAAiB,aAAa,KAAK;AAAA,EAC3C,OAAO,MAAM;AAAA,IACX,QAAQ,oBAAoB,eAAe,OAAO;AAAA,IAClD,QAAQ,oBAAoB,aAAa,KAAK;AAAA;AAAA;AA0B3C,IAAM,UAAU,OACrB,UACA,SACA,UACA,WACA,UAC0B;AAAA,EAC1B,QAAQ,OAAO,MAAM,UAAU;AAAA,EAC/B,QAAQ,OAAO;AAAA,EACf,GAAG,UAAU;AAAA,EACb,GAAG,sBAAsB,SAAS,cAAc;AAAA,EAChD,GAAG,0BAA0B,SAAS,gBAAgB;AAAA,EACtD,IAAI;AAAA,EACJ,MAAM,SAAS,YAAY,SAAS,MAAM,SAAS,UAAU,QAAQ,OAAO,UAAU,IAAI;AAAA,EAC1F,IAAI,UAAU;AAAA,EAGd,IAAI,SAAS,YAAY,EAAE,QAAQ,SAAS,QAAQ,SAAS,SAAS,QAAQ,CAAC;AAAA,EAC/E,IAAI;AAAA,EACJ,IAAI,OAAgC;AAAA,EACpC,MAAM,QAAQ,CAAC,SAA0B;AAAA,IACvC,IAAI,SAAS;AAAA,MAAM,GAAG,kBAAkB,KAAK,wBAAwB,aAAa,IAAI,CAAC,CAAC;AAAA;AAAA,EAI1F,MAAM,YAAY,CAAC,MAAc,OAAgB,UAAkC;AAAA,IACjF,MAAM,UAAU,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,YAAY,SAAS,IAAI,CAAC;AAAA,IAC7E,WAAW;AAAA,IACX,IAAI,QAAQ,UAAU,QAAQ,WAAW;AAAA,MAAW;AAAA,IACpD,MAAM,OAAO,MAAM,cAAc,KAAK;AAAA,IACtC,MAAM,SAAS,YAAY,MAAM,UAAU,eAAe,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AAAA,IACpF,QAAQ,MAAM,UAAU,OAAO,OAAO;AAAA,IACtC,MAAM,OAAO,WAAW,QAAQ,QAAQ,OAAO,EAAE,MAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,OAAO;AAAA,IAC3F,IAAI,KAAK,OAAO,SAAS,OAAO;AAAA,MAAM,MAAM,KAAK,OAAO,IAAI;AAAA,IAC5D,SAAS,KAAK;AAAA,IACd,IAAI,KAAK,YAAY;AAAA,MAAW,MAAM,EAAE,MAAM,YAAY,KAAK,QAAQ,CAAC;AAAA;AAAA,EAI1E,SAAS,YAAY,CAAC,MAAc,OAAuB;AAAA,IACzD,IAAI,CAAC,GAAG;AAAA,MAAc;AAAA,IACtB,MAAM,QAAQ,GAAG,kBAAkB;AAAA,IACnC,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,MACzC,QAAQ,MAAM,OAAO,KAAK;AAAA,MAC1B,UAAU,MAAM,OAAO,KAAK;AAAA,MAE5B,OAAO,MAAM,OAAO,GAAG,kBAAkB,KAAK,KAAK;AAAA,IACrD;AAAA,IACA,KAAK;AAAA;AAAA,EAGP,SAAS,UAAU,YAAY;AAAA,EAC/B,MAAM,GAAG,WAAW,OAAO;AAAA,EAC3B,OAAO,GAAG,kBAAkB;AAAA,EAC5B,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,OAAO;AAAA,EACb,MAAM,IAAI,KAAK;AAAA,EACf,MAAM,UAAU,YAAY,SAAS,OAAO,MAAM,SAAS,KAAK;AAAA,EAChE,SAAS;AAAA,EACT,MAAM,cAAc,iBAAiB,SAAS,MAAM,GAAG,kBAAkB,GAAG,SAAS,KAAK;AAAA,EAC1F,QAAQ,iBACN,OACA,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,QAAQ,KAAK;AAAA,IACb,OAAO,KAAK;AAAA,IACZ,MAAM,iBAAiB;AAAA,IACvB,SAAS,UAAU,IAAI;AAAA,IACvB,GAAG,UAAU;AAAA,IACb,MAAM;AAAA,KAER,EAAE,MAAM,KAAK,CACf;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA,QAAQ,CAAC,SAAS;AAAA,MAChB,MAAM,QACJ,KAAK,OAAO,KAAK,CAAC,OAAO,MAAM,UAAU,QAAQ,OAAO,EAAE,KAC1D,KAAK,YAAY,QAAQ;AAAA,MAC3B,UAAU;AAAA,MACV,IAAI,CAAC;AAAA,QAAO;AAAA,MACZ,SAAS,YAAY,EAAE,QAAQ,KAAK,QAAQ,SAAS,KAAK,QAAQ,CAAC;AAAA,MACnE,MAAM,OAAO,IAAI;AAAA;AAAA,EAErB;AAAA;;;AI9JK,IAAM,cAAc,CAAC,WAA8C;AAAA,EACxE,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI;AAAA,EAEJ,MAAM,cAAc,MAAwE;AAAA,IAC1F,WAAW,UAAU,SAAS;AAAA,MAC5B,MAAM,WAAW,OAAO,SAAS;AAAA,MACjC,IAAI,aAAa;AAAA,QAAM,OAAO,EAAE,QAAQ,SAAS;AAAA,IACnD;AAAA,IACA;AAAA;AAAA,EAGF,MAAM,QAAQ,OAAO,SAAgC;AAAA,IACnD,IAAI,YAAY;AAAA,MAAW;AAAA,IAC3B,MAAM,KAAK,OAAO;AAAA,IAClB,IAAI,OAAO;AAAA,MAAW,MAAM,IAAI,MAAM,wCAAwC;AAAA,IAC9E,MAAM,SAAS,YAAY;AAAA,IAC3B,IAAI,WAAW;AAAA,MAAW,MAAM,IAAI,MAAM,+BAA+B;AAAA,IACzE,MAAM,WAAW,sBAAsB,OAAO,OAAO,MAAM;AAAA,IAC3D,IAAI,aAAa;AAAA,MAAW,MAAM,IAAI,MAAM,+CAA+C;AAAA,IAC3F,MAAM,UAAU,MAAM,GAAG,eACvB,MACA,YAAY,OAAO,UAAU,MAAM,OAAO,OAAO,OAAO,CAC1D;AAAA,IACA,QAAQ,WAAW;AAAA,IAEnB,MAAM,OAAO,MAAY;AAAA,MACvB,MAAM,WAAW,OAAO,SAAS;AAAA,MACjC,IAAI,aAAa;AAAA,QAAM,SAAS,aAAa,OAAO,QAAQ;AAAA,MAC5D,OAAO,KAAK;AAAA;AAAA,IAEd,MAAM,QAAQ,MAAY;AAAA,MACxB,UAAU;AAAA,MACV,OAAO,WAAW,IAAI;AAAA;AAAA,IAExB,MAAM,eAAe,MAAM,QACzB,UACA,SACA,OAAO,UACP;AAAA,MACE,OAAO,OAAO;AAAA,MACd;AAAA,MACA,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,OAAO,OAAO;AAAA,IAChB,GACA,KACF;AAAA,IACA,UAAU,EAAE,QAAQ,aAAa;AAAA,IACjC,OAAO,WAAW,IAAI;AAAA;AAAA,EAGxB,OAAO;AAAA,IACL,UAAU,CAAC,WAAW;AAAA,MACpB,QAAQ,IAAI,MAAM;AAAA,MAClB,OAAO,MAAM;AAAA,QACX,QAAQ,OAAO,MAAM;AAAA,QACrB,IAAI,SAAS,WAAW;AAAA,UAAa,QAAQ,aAAa,QAAQ,IAAI;AAAA;AAAA;AAAA,IAG1E,WAAW,OAAO,SAAU,MAAM,OAAO,GAAG,mBAAmB,IAAI,KAAM;AAAA,IACzE;AAAA,IACA,MAAM,YAAY;AAAA,MAChB,MAAM,SAAS,aAAa,QAAQ,IAAI;AAAA;AAAA,EAE5C;AAAA;;;ALpEK,IAAM,kBAAkB,CAAC,MAAuB,UAA8B,CAAC,MAAM;AAAA,EAC1F,MAAM,QAAuB,oBAAoB;AAAA,EACjD,MAAM,SAAS,WAAW,KAAK;AAAA,EAC/B,MAAM,QAAQ,YAAY,MAAM,KAAK,WAAW,EAAE;AAAA,EAClD,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ,wBAAwB,IAAI;AAAA,IACpC,UAAU,QAAQ,aAAa,CAAC,WAA8B,qBAAqB,MAAM;AAAA,IACzF,YAAY,QAAQ,cAAc;AAAA,IAClC,YAAY,QAAQ,cAAc,CAAC;AAAA,IAEnC,SAAS,QAAQ,QAAQ,QAAQ,OAAO;AAAA,IAExC,QAAQ,QAAQ;AAAA,IAEhB;AAAA,IAEA,IAAI,OAAO,KAAK;AAAA,IAEhB;AAAA,IAEA,SAAS,MAAM;AAAA,MACb,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA;AAAA,EAElB;AAAA;;AMnEF;AAAA;AAAA;AAAA;AAAA;AAAA,iBAUE;AAAA;AAEF,iBAAqB,iBAAM,kCAAuB;AAClD;;;ACRO,IAAM,eAAe,CAAC,SAAqC;AAAA,EAChE,MAAM,SAAS,KAAK,cAAc,cAAc,QAAQ;AAAA,EACxD,OAAO,MAAM,UAAU;AAAA,EACvB,OAAO,MAAM,QAAQ;AAAA,EACrB,OAAO,MAAM,SAAS;AAAA,EAEtB,OAAO,MAAM,cAAc;AAAA,EAC3B,KAAK,OAAO,MAAM;AAAA,EAClB,OAAO;AAAA;AAIF,IAAM,qBAAqB,CAAC,SAAkB,UAA4B;AAAA,EAC/E,QAAQ,cAAc,IAAI,YAAY,aAAa,MAAM,OAAO,EAAE,QAAQ,MAAM,CAAC,CAAC;AAAA;AAI7E,IAAM,qBAAqB,CAAC,SAAkB,UAA4B;AAAA,EAC/E,QAAQ,cAAc,IAAI,YAAY,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAAA;AAItE,IAAM,WAAW,CAAC,SAAkB,MAAM,aAAa,IAAI;AAC3D,IAAM,UAAU,CAAC,SAAoB,MAAM,KAAK,OAAO;AAEvD,IAAM,qBAAqB,CAAC,SAAkB,SAAgB,CAAC,UAAsB,MAAM;AAAA,EAChG,IAAI,KAAK,OAAO;AAAA,IAAG,mBAAmB,SAAS,KAAK;AAAA;AAE/C,IAAM,qBAAqB,CAAC,YAAqB,CAAC,UAAsB,MAC7E,mBAAmB,SAAS,KAAK;AAM5B,IAAM,qBACX,CAAC,SAAkB,UAAyB,CAAC,QAA2B,MAAM;AAAA,EAC5E,IAAI,IAAI,WAAW;AAAA,IAAG;AAAA,EACtB,QAAQ,cACN,IAAI,YAAY,oBAAoB,EAAE,QAAQ,UAAU,KAAK,MAAM,MAAM,CAAC,EAAE,CAAC,CAC/E;AAAA;;;ACzCG,IAAM,cAAc,CAAC,SAAyB;AAAA,EACnD,IAAI,UAAU;AAAA,EACd,OAAO;AAAA,IACL,QAAQ,MAAM;AAAA,IACd,KAAK,CAAC,SAAS;AAAA,MACb,UAAU;AAAA;AAAA,EAEd;AAAA;AAGF,IAAM,UAAgC,CAAC;AAGhC,IAAM,kBACX,CAAO,OAAc,UACrB,CAAC,UAA+B;AAAA,EAC9B,IAAI,CAAC,MAAM,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5B,OAAO,MAAM,KAAK;AAAA;AAIf,IAAM,WACX,CAAO,GAAoB,UAC3B,MACE,EAAE,KAAK;;;ACzBJ,IAAM,cAAc;AAAA,EACzB,KAAK;AAAA,EACL,WAAW;AACb;AAEA,IAAM,eAAc,CAAC,cACnB,eAAe,UAAU,OAAO,UAAU,gBAAgB,UAAU,SAClE,UAAU,SAAS,0BAA0B;AAIjD,IAAM,QAAQ,CAAC,SAAsB,cAAsC;AAAA,EACzE,QAAQ,UAAU;AAAA,EAClB,MAAM,YAAY,aAAY,SAAS;AAAA,EACvC,IAAI,MAAM,cAAc;AAAA,IAAW,MAAM,YAAY;AAAA,EACrD,MAAM,SAAS,OAAO,UAAU,MAAM;AAAA,EACtC,IAAI,MAAM,WAAW;AAAA,IAAQ,MAAM,SAAS;AAAA,EAC5C,MAAM,aAAa,UAAU,UAAU,YAAY;AAAA,EACnD,IAAI,MAAM,eAAe;AAAA,IAAY,MAAM,aAAa;AAAA;AAWnD,IAAM,sBAAsB,CAAC,SAAiC;AAAA,EACnE,IAAI,SAA0C,CAAC;AAAA,EAC/C,MAAM,UAAU,MAAY;AAAA,IAC1B,WAAW,aAAa,QAAQ;AAAA,MAC9B,MAAM,UAAU,KAAK,cACnB,IAAI,YAAY,cAAc,IAAI,OAAO,UAAU,GAAG,KACxD;AAAA,MACA,IAAI,mBAAmB;AAAA,QAAa,MAAM,SAAS,SAAS;AAAA,IAC9D;AAAA;AAAA,EAEF,OAAO;AAAA,IACL,OAAO,CAAC,eAAe;AAAA,MACrB,SAAS;AAAA,MACT,QAAQ;AAAA;AAAA,IAEV;AAAA,EACF;AAAA;AAIK,IAAM,kBAAkB,CAAC,SAAkB,MAAY;AAAA,EAC5D,IAAI,EAAE,gBAAgB;AAAA,IAAc;AAAA,EACpC,IAAI,iBAAiB,IAAI,EAAE,aAAa;AAAA,IAAU,KAAK,MAAM,WAAW;AAAA;;;AC9CnE,IAAM,oBAAoB,CAC/B,SACA,KACA,UACyB;AAAA,EACzB,MAAM,UAAmB,QAAQ,IAAI,SAAS,GAAG;AAAA,EACjD,IAAI,UAAU;AAAA,EACd,OAAO,eAAe,SAAS,KAAK;AAAA,IAClC,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,MAAM;AAAA,IACX,KAAK,CAAC,UAAmB;AAAA,MACvB,UAAU;AAAA,MACV,MAAM,KAAK;AAAA;AAAA,EAEf,CAAC;AAAA,EACD,OAAO;AAAA,IACL;AAAA,IACA,SAAS,MAAM;AAAA,MACb,OAAO,eAAe,SAAS,KAAK;AAAA,QAClC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACT,CAAC;AAAA;AAAA,EAEL;AAAA;;;AC/BF,IAAM,QAAQ,IAAI;AAGX,IAAM,YAAY,CAAC,UAA8C;AAAA,EACtE,MAAM,IAAI,OAAO,KAAK;AAAA,EACtB,OAAO;AAAA;AAIF,IAAM,aAAa,CAAC,UACzB,OAAO,UAAU,YAAY,UAAU,OAAO,MAAM,IAAI,KAAK,IAAI;;;ACb5D,IAAM,cACX,CAAI,QAAkC,UACtC,CAAC,UACD,MAAY;AAAA,EACV,OAAO,KAAK,EAAE;AAAA,EACd,WAAW,QAAQ;AAAA,IAAO,KAAK;AAAA;;;ACK5B,IAAM,kBAAkB,CAAC,WAAwB;AAAA,EACtD,IAAI,UAAU;AAAA,EACd,IAAI,aAAa;AAAA,EACjB,MAAM,QAAQ,MAAY,OAAO,QAAQ,WAAW,CAAC,UAAU;AAAA,EAC/D,OAAO;AAAA,IACL,YAAY,CAAC,SAAwB;AAAA,MACnC,UAAU;AAAA,MACV,MAAM;AAAA;AAAA,IAER,eAAe,CAAC,SAAwB;AAAA,MACtC,aAAa;AAAA,MACb,MAAM;AAAA;AAAA,EAEV;AAAA;AAMK,IAAM,oBAAoB,CAAC,SAAkB,MAAa,SAA8B;AAAA,EAC7F,IAAI,KAAK,OAAO;AAAA,IAAG,QAAQ,cAAc,IAAI,YAAY,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAAA;AAIrF,IAAM,WAAW,CAAC,WAWR;AAAA,EACf,QAAQ,MAAM;AAAA,EACd,SAAS,MAAM;AAAA,EACf,QAAQ,MAAM;AAAA,EACd,MAAM,MAAM;AAAA,EACZ,UAAU,MAAM;AAAA,EAChB,MAAM,MAAM;AAAA,EACZ,OAAO,MAAM;AAAA,EAEb,OAAO,CAAC,UAAU;AAAA,IAChB,IAAI,MAAM,KAAK,OAAO;AAAA,MAAG,MAAM,MAAM,KAAK;AAAA;AAAA,EAE5C,YAAY,CAAC,SAAS;AAAA,IACpB,MAAM,KAAK,cAAc,SAAS,IAAI;AAAA,IAEtC,IAAI,SAAS;AAAA,MAAM,MAAM,KAAK;AAAA,IAC9B,kBAAkB,MAAM,SAAS,MAAM,MAAM,IAAI;AAAA;AAErD;;;APTA,IAAM,qBAAqB,QAAO,oBAAoB,aAAY,gBAAgB;AAGlF,IAAM,cAAc,CAAC,UACnB,OAAO,cAAc,WAAW,KAAK,CAAC,EAAE,KACtC,OAAO,MAAM,EAAE,QAAQ,MAAM,mBAAmB,KAAK,GAAG,QAAQ,QAAO,QAAQ,CAAC,CAClF;AAEF,IAAM,SAAS,QAAO,GAAG,QAAO,QAAQ,MAAM,CAAC;AAE/C,IAAM,gBAAgB,CAAC,YAAqB;AAAA,EAC1C,MAAM,SAAS,QAAO,KAAK,SAAS,OAAO,CAAC;AAAA,EAC5C,OAAO,QAAO,eAAe,QAAQ,CAAC,WAAW,QAAO,KAAK,QAAQ,MAAM,CAAC,CAAC;AAAA;AAG/E,IAAM,sBAAsB,MAAM;AAAA,EAChC,MAAM,SAAS,MAAM,QAAiB,CAAC;AAAA,EACvC,OAAO,QAAO,eAAe,QAAQ,MAAM,QAAQ;AAAA;AAGrD,IAAM,eAAe,CAAC,SAAkB,YAAkC,MACxE,kBAAkB,SAAS,SAAS,CAAC,UAAU,MAAM,YAAY,SAAS,KAAK,CAAC;AAElF,IAAM,sBAAsB,CAAC,SAAkB,YAAkC;AAAA,EAC/E,MAAM,YAAY,QAAO,KAAK,aAAa,SAAS,OAAO,CAAC;AAAA,EAC5D,OAAO,QAAO,eAAe,WAAW,CAAC,gBAAgB,QAAO,KAAK,YAAY,OAAO,CAAC;AAAA;AAG3F,IAAM,mBACJ,CACE,QACA,SACA,mBAEF,MACE,iBAAiB,QAAQ,SAAS,cAAc;AAEpD,IAAM,iBAAiB,CAAC,QAAqB,YAAqB;AAAA,EAChE,MAAM,SAAS,QAAO,KACpB,iBACE,QACA,gBAAgB,QAAQ,MAAM,QAAQ,OAAO,OAAO,GACpD,eAAe,QAAQ,OAAO,KAAK,CACrC,CACF;AAAA,EACA,OAAO,QAAO,eAAe,QAAQ,QAAO,IAAI;AAAA;AAIlD,IAAM,iBAAiB,CAAC,YAAqB,MAC3C,QAAQ,YAAY,MAAM,SACxB,SAAS;AAAA,EACP,SAAS,QAAQ;AAAA,EACjB,QAAQ,QAAQ;AAAA,EAChB,MAAM,QAAQ;AAAA,EACd,MAAM,QAAQ;AAAA,EACd,UAAU,QAAQ,OAAO,MAAM;AAAA,EAC/B,MAAM,QAAQ,OAAO;AAAA,EACrB,OAAO,QAAQ,OAAO,MAAM;AAAA,EAC5B,QAAQ,QAAQ,OAAO,MAAM;AAAA,EAC7B,MAAM,QAAQ,OAAO,MAAM,MAAM;AAAA,EACjC,OAAO,QAAQ,OAAO;AACxB,CAAC,CACH;AAEF,IAAM,kBAAkB,CAAC,YAAqB;AAAA,EAC5C,MAAM,WAAW,QAAO,KAAK,eAAe,OAAO,CAAC;AAAA,EACpD,OAAO,QAAO,eAAe,UAAU,QAAO,IAAI;AAAA;AAIpD,IAAM,kBACJ,CAAI,YACJ,CAAC,UAAsC;AAAA,EACrC,MAAM,UAAU,QAAO,KAAK,SAAS,SAAS,CAAC,UAAa,MAAM,YAAY,OAAO,KAAK,CAAC,CAAC;AAAA,EAC5F,OAAO,QAAO,eAAe,SAAS,QAAO,IAAI;AAAA;AAGrD,IAAM,WAAW,CAAI,YACnB,OAAO,SAAY,gBAAgB,OAAO,CAAC;AAE7C,IAAM,cAAc,CAAC,YAAqB,CAAC,UAAmB;AAAA,EAC5D,MAAM,cAAc,mBAAmB,QAAQ,OAAO;AAAA,EACtD,MAAM,mBAAmB,YACvB,mBAAmB,QAAQ,SAAS,QAAQ,YAAY,KAAK,GAC7D,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,OAAO,KAAK,GAAG,QAAQ,SAAS,OAAO,CAClF;AAAA,EACA,MAAM,UAAU,YAAY,KAAK;AAAA,EACjC,MAAM,UAAU,QAAQ,KACtB,QAAO,QAAQ,QAAQ,OAAO,MAAM,GACpC,QAAO,QAAQ,CAAC,QAAQ,QAAO,KAAK,iBAAiB,GAAG,CAAC,CAAC,CAC5D;AAAA,EACA,OAAO,QAAQ,KACb,QAAO,UAAU;AAAA,IACf,aAAa,CAAC,UACZ,QAAO,KAAK,YAAY,EAAE,MAAM,kBAAkB,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,IAC3E,cAAc,GAAG,YAAY,QAAO,KAAK,YAAY,KAAK,CAAC;AAAA,EAC7D,CAAC,CACH;AAAA;AAGF,IAAM,SAAS,CAAC,YAAqB,MACnC,QAAQ,OAAO,OACb,gBACE,QAAQ,SACR,QAAQ,YAAY,KAAK,kBACzB,QAAQ,YAAY,UACtB,CACF;AAEF,IAAM,WAAW,CACf,SACA,SACA,qBACG;AAAA,EACH,MAAM,gBAAgB,mBAAmB,QAAQ,SAAS,QAAQ,IAAI;AAAA,EACtE,MAAM,QAAQ,SAAe,CAAC,SAAS,YAAY,QAAQ,SAAS,IAAI,CAAC;AAAA,EACzE,MAAM,SAAS,SAAe,CAAC,SAAS,kBAAkB,QAAQ,YAAY,MAAM,IAAI,CAAC;AAAA,EACzF,MAAM,aAAa,SAAkB,CAAC,SAAS,kBAAkB,QAAQ,SAAS,IAAI,CAAC;AAAA,EACvF,MAAM,gBAAgB,SAAkB,CAAC,SACvC,qBAAqB,QAAQ,YAAY,MAAM,IAAI,CACrD;AAAA,EACA,OAAO;AAAA,IACL,OAAO,WAAW,OAAO,UAAU,OAAO,GAAG,YAAY,OAAO,CAAC;AAAA,IACjE,OAAO,WAAW,QAAQ,OAAO,QAAQ,CAAC,UAAU,QAAO,KAAK,cAAc,KAAK,CAAC,CAAC;AAAA,IACrF,OAAO,WAAW,kBAAkB,CAAC,UACnC,QAAO,KAAK,SAAS,QAAQ,KAAK,KAAK,OAAO,KAAK,CAAC,CAAC,CACvD;AAAA,IACA,OAAO,WAAW,OAAO,OAAO,OAAO,CAAC;AAAA,IACxC,OAAO,WAAW,QAAQ,OAAO,OAAO,CAAC;AAAA,IACzC,OAAO,WAAW,YAAY,CAAC,YAC7B,QAAO,KAAK,SAAS,QAAQ,KAAK,YAAY,OAAO,CAAC,CACxD;AAAA,IACA,OAAO,WAAW,eAAe,CAAC,YAAY,QAAQ,OAAO,aAAa,CAAC,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAIF,MAAM,2BAA2B,MAAK,YAAY,oBAAoB,EAEnE;AAAC;AAEJ,IAAM,kBACJ,CACE,aACA,SACA,QACA,UACA,YAEF,CAAC,UAA4B;AAAA,EAC3B,MAAM,SAAS,kBAAkB,YAAY,MAAM;AAAA,EACnD,MAAM,UAAU,aAAa,KAAK;AAAA,IAChC;AAAA,IACA,UAAU,YAAY,SAAS,MAAM;AAAA,IACrC,YAAY,YAAY;AAAA,IACxB;AAAA,IACA,QAAQ,YAAY;AAAA,IACpB,eAAe,SAAS;AAAA,IACxB,UAAU,gBAAgB,SAAS,YAAY,KAAK,kBAAkB,YAAY,UAAU;AAAA,EAC9F,CAAC,EAAE,KACD,QAAO,eAAe,YAAY,aAAa,YAAY,cAAc,MAAM,CAAC,GAChF,QAAO,eAAe,iBAAiB,kBAAkB,EAAE,OAAO,YAAY,MAAM,CAAC,CACvF;AAAA,EACA,OAAO,QAAO,IAAI,SAAS,CAAC,YAAY,EAAE,QAAQ,OAAO,EAAE;AAAA;AAG/D,UAAU,QAAQ,CAChB,aACA,SACA,kBACA;AAAA,EACA,MAAM,SAAS,OAAO,cAAc,OAAO;AAAA,EAC3C,MAAM,UAAU,OAAO,oBAAoB;AAAA,EAC3C,MAAM,cAAc,OAAO,oBAAoB,SAAS,OAAO;AAAA,EAC/D,MAAM,UAAU,OAAO,YAAY,YAAY,OAAO;AAAA,EACtD,MAAM,WAAW,oBAAoB,OAAO;AAAA,EAC5C,OAAO,QAAO,KAAK,gBAAgB,OAAO,CAAC;AAAA,EAC3C,MAAM,UAAU,OAAO,QAAO,WAAW;AAAA,IACvC,KAAK,MAAM,YAAY;AAAA,IACvB,OAAO,CAAC,UAAU,IAAI,mBAAmB,EAAE,MAAM,CAAC;AAAA,EACpD,CAAC;AAAA,EACD,QAAQ,QAAQ,WAAW,OAAO,gBAChC,aACA,SACA,QACA,UACA,OACF,EAAE,OAAO;AAAA,EACT,MAAM,UAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,gBAAgB,MAAM;AAAA,IAC5B,MAAM,YAAY,IAAI;AAAA,EACxB;AAAA,EACA,OAAO,eAAe,QAAQ,OAAO;AAAA,EACrC,OAAO,gBAAgB,OAAO;AAAA,EAC9B,OAAO,QAAO,KAAK,gBAAgB,QAAQ,OAAO,KAAK,CAAC;AAAA,EACxD,OAAO,QAAO,KAAK,mBAAmB,SAAS,YAAY,KAAK,EAAE,OAAO,UAAU,CAAC;AAAA,EACpF,MAAM,QAAQ,SAAS,SAAS,SAAS,gBAAgB,EAAE,IAAI,CAAC,YAC9D,QAAO,WAAW,OAAO,CAC3B;AAAA,EACA,OAAO,QAAO,IAAI,OAAO,EAAE,aAAa,YAAY,CAAC;AAAA,EACrD,OAAO,eAAe,aAAa;AAAA;AAGrC,IAAM,UAAU,CAAC,WAAmB,eAAe,YAAY,EAAE,OAAO,CAAC;AAEzE,IAAM,eAAe;AAAA,EACnB,aAAa,CAAC,UACZ,QAAO,QAAQ,QAAQ,oBAAoB,MAAM,SAAS,CAAC;AAAA,EAC7D,cAAc,GAAG,YACf,QAAO,QAAQ,QAAQ,kBAAkB,MAAM,MAAM,CAAC;AAAA,EACxD,qBAAqB,MAAM,QAAO,QAAQ,QAAQ,sBAAsB,CAAC;AAAA,EACzE,oBAAoB,MAAM,QAAO,QAAQ,QAAQ,qBAAqB,CAAC;AACzE;AAOA,IAAM,aACJ,CAAC,gBACD,GAAG,SAAS,uBAAqC;AAAA,EAC/C,MAAM,QAAQ,QAAO,IAAI,MAAM,SAAS,aAAa,SAAS,gBAAgB,CAAC;AAAA,EAC/E,OAAO,MAAM,KAAK,QAAO,UAAU,YAAY,CAAC;AAAA;AAO7C,IAAM,iBAAiB,CAAC,gBAC7B,MAAM,OAAO,oBAAoB;AAAA,EAC/B,UAAU,CAAC,eAAe,cAAc,eAAe,WAAW;AAAA,EAClE,SAAS,WAAW,WAAW;AACjC,CAAC;;AQvSH,kBAAS,eAAc;AACvB,kBAAS;;;ACeF,IAAM,eAAe,CAC1B,OACA,aAEA,SAAS,WAAW,IAChB,QACA,KAAK,OAAO,UAAU,CAAC,GAAG,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE;AAIzF,IAAM,aAAa;AAAA,EACjB,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,eAAe;AAAA,EACf,WAAW;AACb;AAGO,IAAM,eAAe,CAC1B,GACA,aAEA,SAAS,WAAW,IAChB,CAAC,IACD;AAAA,EACE,EAAE,IACA,CAAC,EAAE,MAAM,UAAU,CAAC,GACpB,SAAS,IAAI,GAAG,SAAS,SAAS,gBAAgB,aAChD,EAAE,MAAM,KAAK,EACX,QAAQ,KACR;AAAA,IACE,EAAE,cAAc,YAAY,KAAK,QAAQ,GAAG;AAAA,IAE5C,EAAE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,EACH,GACA,CAAC,OAAO,CACV,CACF,CACF;AACF;;;ADuIN,IAAM,QAAQ,QAAO;AAGd,IAAM,OAAO,CAClB,QACA,MACS;AAAA,EACT,MAAM,UAAU,aAAa,YAAY,CAAC;AAAA,EAC1C,MAAM,WAAW,IAAI,SAAS;AAAA,IAC5B,QAAO,IAAI,MAAM,OAAO,OAAO,GAAG,QAAQ,YAAY;AAAA,IACtD,QAAO,IAAI,MAAM,OAAO,aAAa,GAAG,QAAQ,kBAAkB;AAAA,IAClE,QAAO,IAAI,MAAM,OAAO,aAAa,GAAG,QAAQ,kBAAkB;AAAA,IAClE,QAAO,IAAI,MAAM,OAAO,aAAa,GAAG,QAAQ,kBAAkB;AAAA,IAClE,QAAO,IAAI,MAAM,OAAO,WAAW,GAAG,QAAQ,gBAAgB;AAAA,IAC9D,QAAO,IAAI,MAAM,OAAO,cAAc,GAAG,QAAQ,mBAAmB;AAAA,IACpE,QAAO,IAAI,MAAM,OAAO,aAAa,GAAG,QAAQ,kBAAkB;AAAA,IAClE,QAAO,IAAI,MAAM,OAAO,cAAc,GAAG,QAAQ,mBAAmB;AAAA,IACpE,QAAO,IAAI,MAAM,OAAO,eAAe,GAAG,QAAQ,oBAAoB;AAAA,IACtE,QAAO,IAAI,MAAM,OAAO,OAAO,GAAG,QAAQ,YAAY;AAAA,IACtD,QAAO,IAAI,MAAM,OAAO,MAAM,GAAG,QAAQ,WAAW;AAAA,IACpD,QAAO,IAAI,MAAM,OAAO,SAAS,GAAG,QAAQ,cAAc;AAAA,IAC1D,QAAO,IAAI,MAAM,OAAO,WAAW,GAAG,QAAQ,gBAAgB;AAAA,IAC9D,QAAO,IAAI,MAAM,OAAO,cAAc,GAAG,QAAQ,mBAAmB;AAAA,IACpE,QAAO,IAAI,MAAM,OAAO,UAAU,GAAG,QAAQ,eAAe;AAAA,IAC5D,QAAO,IAAI,MAAM,OAAO,eAAe,GAAG,QAAQ,oBAAoB;AAAA,IACtE,QAAO,IAAI,MAAM,OAAO,WAAW,GAAG,QAAQ,SAAS;AAAA,IACvD,QAAO,IAAI,MAAM,OAAO,SAAS,GAAG,QAAQ,cAAc;AAAA,IAC1D,QAAO,IAAI,MAAM,OAAO,UAAU,GAAG,QAAQ,eAAe;AAAA,IAC5D,QAAO,IAAI,MAAM,OAAO,WAAW,GAAG,QAAQ,gBAAgB;AAAA,IAC9D,QAAO,IAAI,MAAM,OAAO,SAAS,GAAG,QAAQ,cAAc;AAAA,IAC1D,QAAO,IAAI,MAAM,OAAO,UAAU,GAAG,QAAQ,eAAe;AAAA,IAC5D,QAAO,IAAI,MAAM,OAAO,UAAU,GAAG,QAAQ,eAAe;AAAA,IAC5D,QAAO,IAAI,MAAM,OAAO,aAAa,GAAG,QAAQ,kBAAkB;AAAA,IAClE,QAAO,IAAI,MAAM,OAAO,SAAS,GAAG,CAAC,cACnC,QAAQ,eAAe,CAAC,WAAW,UAAU,OAAO,OAAO,CAAC,CAC9D;AAAA,IACA,QAAO,IAAI,MAAM,OAAO,mBAAmB,GAAG,QAAQ,kBAAkB;AAAA,IACxE,QAAO,IAAI,MAAM,OAAO,OAAO,GAAG,QAAQ,YAAY;AAAA,IACtD,QAAO,IAAI,MAAM,OAAO,YAAY,GAAG,QAAQ,iBAAiB;AAAA,IAChE,QAAO,IAAI,MAAM,OAAO,SAAS,GAAG,EAAE,KAAK;AAAA,EAC7C,CAAC;AAAA,EACD,MAAM,YAAY,OAAM,WAAW,OAAO,MAAM,GAAG,OAAO,WAAW;AAAA,EACrE,MAAM,WAAW,OAAO,YAAY,CAAC;AAAA,EACrC,MAAM,QAAQ,UAAU,aAAa,OAAO,OAAO,QAAQ,CAAC;AAAA,EAC5D,OAAO,QACL,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE,QAAQ,SAAS,GAAG,GAAG,QAAQ,GACxD,aAAa,GAAG,QAAQ,CAC1B;AAAA;",
|
|
36
|
-
"debugId": "
|
|
35
|
+
"mappings": "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",
|
|
36
|
+
"debugId": "4118984BABDF337D64756E2164756E21",
|
|
37
37
|
"names": []
|
|
38
38
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opsydyn/effect-three-foldkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Thin Foldkit adapter for @opsydyn/effect-three.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"typescript": "7.0.2"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
|
-
"@opsydyn/effect-three": "0.
|
|
69
|
+
"@opsydyn/effect-three": "0.3.0",
|
|
70
70
|
"effect": "^4.0.0",
|
|
71
71
|
"foldkit": "0.167.0",
|
|
72
72
|
"three": ">=0.186.0 <0.187.0"
|
package/src/dom/webgpu.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
* contact shadows in TSL), post-processes with `RenderPipeline`, and presents in WebXR.
|
|
6
6
|
* It starts asynchronously (`init()`), which the runtime waits for.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Its kit shades with TSL, so labels come from a label engine's `createTsl` (troika's is
|
|
9
|
+
* `troikaLabels` from `@opsydyn/effect-three-troika/webgpu`); an engine without one draws
|
|
10
|
+
* no labels here.
|
|
10
11
|
*
|
|
11
12
|
* @module
|
|
12
13
|
*/
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
dot,
|
|
18
18
|
fract,
|
|
19
19
|
luminance,
|
|
20
|
+
max,
|
|
20
21
|
mix,
|
|
21
22
|
pass,
|
|
22
23
|
rand,
|
|
@@ -35,8 +36,14 @@ type Colour = Node<'vec4'>;
|
|
|
35
36
|
/** One effect applied to the colour so far. */
|
|
36
37
|
const applied = (input: Colour, effect: PostEffect): Colour => {
|
|
37
38
|
switch (effect._tag) {
|
|
38
|
-
case 'Bloom':
|
|
39
|
-
|
|
39
|
+
case 'Bloom': {
|
|
40
|
+
// BloomNode's output is opaque (alpha 1), which would fill a transparent canvas with
|
|
41
|
+
// black. Keep the scene's alpha and let the glow add its own where it shines, as the
|
|
42
|
+
// WebGL composer's additive bloom does.
|
|
43
|
+
const glow = bloom(input, effect.strength, effect.radius, effect.threshold);
|
|
44
|
+
const shine = max(glow.r, max(glow.g, glow.b));
|
|
45
|
+
return vec4(input.rgb.add(glow.rgb), clamp(input.a.add(shine), 0, 1));
|
|
46
|
+
}
|
|
40
47
|
case 'Vignette': {
|
|
41
48
|
// three's VignetteShader: towards `1 − darkness` with distance from the middle.
|
|
42
49
|
const centred = screenUV.sub(0.5).mul(effect.offset);
|