motionary 6.8.0 → 7.0.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 +39 -0
- package/README.md +2 -2
- package/README_ja.md +2 -2
- package/README_zh.md +2 -2
- package/bin/usa-codemod-7.mjs +91 -0
- package/dist/chunks/{gpu-CsP2ZB3x.js → gpu-Bkw605Ds.js} +183 -5
- package/dist/chunks/gpu-Bkw605Ds.js.map +1 -0
- package/dist/chunks/{gpu-BBRLgEzM.cjs → gpu-Dx0H875w.cjs} +187 -4
- package/dist/chunks/gpu-Dx0H875w.cjs.map +1 -0
- package/dist/chunks/{index-tags-wv0R_vkO.cjs → index-tags-BTMwrfgV.cjs} +3 -3
- package/dist/chunks/index-tags-BTMwrfgV.cjs.map +1 -0
- package/dist/chunks/{index-tags-DucKMQr_.js → index-tags-C04JP8g4.js} +3 -3
- package/dist/chunks/index-tags-C04JP8g4.js.map +1 -0
- package/dist/chunks/player-C-TwEEy6.js +516 -0
- package/dist/chunks/player-C-TwEEy6.js.map +1 -0
- package/dist/chunks/player-PS6_FzNw.cjs +525 -0
- package/dist/chunks/player-PS6_FzNw.cjs.map +1 -0
- package/dist/components/a11y.cjs +1 -1
- package/dist/components/a11y.d.cts +2 -2
- package/dist/components/a11y.d.ts +2 -2
- package/dist/components/a11y.js +1 -1
- package/dist/components/angular.cjs +2 -2
- package/dist/components/angular.cjs.map +1 -1
- package/dist/components/angular.d.cts +5 -36
- package/dist/components/angular.d.ts +5 -36
- package/dist/components/angular.js +2 -2
- package/dist/components/angular.js.map +1 -1
- package/dist/components/effects.cjs +13 -522
- package/dist/components/effects.cjs.map +1 -1
- package/dist/components/effects.js +5 -513
- package/dist/components/effects.js.map +1 -1
- package/dist/components/fx-3d.cjs +2 -2
- package/dist/components/fx-3d.cjs.map +1 -1
- package/dist/components/fx-3d.d.cts +2 -2
- package/dist/components/fx-3d.d.ts +2 -2
- package/dist/components/fx-3d.js +2 -2
- package/dist/components/fx-3d.js.map +1 -1
- package/dist/components/fx-focus.cjs +125 -0
- package/dist/components/fx-focus.cjs.map +1 -0
- package/dist/components/fx-focus.d.cts +65 -0
- package/dist/components/fx-focus.d.ts +65 -0
- package/dist/components/fx-focus.js +122 -0
- package/dist/components/fx-focus.js.map +1 -0
- package/dist/components/fx-gpu.cjs +2 -2
- package/dist/components/fx-gpu.d.cts +2 -2
- package/dist/components/fx-gpu.d.ts +2 -2
- package/dist/components/fx-gpu.js +1 -1
- package/dist/components/fx-light.cjs +2 -2
- package/dist/components/fx-light.cjs.map +1 -1
- package/dist/components/fx-light.d.cts +2 -2
- package/dist/components/fx-light.d.ts +2 -2
- package/dist/components/fx-light.js +2 -2
- package/dist/components/fx-light.js.map +1 -1
- package/dist/components/fx-morph.cjs +2 -2
- package/dist/components/fx-morph.cjs.map +1 -1
- package/dist/components/fx-morph.d.cts +2 -2
- package/dist/components/fx-morph.d.ts +2 -2
- package/dist/components/fx-morph.js +2 -2
- package/dist/components/fx-morph.js.map +1 -1
- package/dist/components/fx-physics.cjs +2 -2
- package/dist/components/fx-physics.cjs.map +1 -1
- package/dist/components/fx-physics.d.cts +2 -2
- package/dist/components/fx-physics.d.ts +2 -2
- package/dist/components/fx-physics.js +2 -2
- package/dist/components/fx-physics.js.map +1 -1
- package/dist/components/fx-text.cjs +2 -2
- package/dist/components/fx-text.cjs.map +1 -1
- package/dist/components/fx-text.d.cts +2 -2
- package/dist/components/fx-text.d.ts +2 -2
- package/dist/components/fx-text.js +2 -2
- package/dist/components/fx-text.js.map +1 -1
- package/dist/components/fx-transitions.cjs +2 -2
- package/dist/components/fx-transitions.cjs.map +1 -1
- package/dist/components/fx-transitions.d.cts +2 -2
- package/dist/components/fx-transitions.d.ts +2 -2
- package/dist/components/fx-transitions.js +2 -2
- package/dist/components/fx-transitions.js.map +1 -1
- package/dist/components/fx-weather.cjs +2 -2
- package/dist/components/fx-weather.cjs.map +1 -1
- package/dist/components/fx-weather.d.cts +2 -2
- package/dist/components/fx-weather.d.ts +2 -2
- package/dist/components/fx-weather.js +2 -2
- package/dist/components/fx-weather.js.map +1 -1
- package/dist/components/fx2.cjs +37 -22
- package/dist/components/fx2.cjs.map +1 -1
- package/dist/components/fx2.d.cts +135 -14
- package/dist/components/fx2.d.ts +135 -14
- package/dist/components/fx2.js +25 -21
- package/dist/components/fx2.js.map +1 -1
- package/dist/components/interaction.cjs +11 -94
- package/dist/components/interaction.cjs.map +1 -1
- package/dist/components/interaction.css +0 -1
- package/dist/components/interaction.d.cts +3 -21
- package/dist/components/interaction.d.ts +3 -21
- package/dist/components/interaction.js +12 -94
- package/dist/components/interaction.js.map +1 -1
- package/dist/components/jsx.d.cts +2 -2
- package/dist/components/jsx.d.ts +2 -2
- package/dist/components/lazy.cjs +1 -1
- package/dist/components/lazy.d.cts +2 -2
- package/dist/components/lazy.d.ts +2 -2
- package/dist/components/lazy.js +1 -1
- package/dist/components/lite.cjs +115 -256
- package/dist/components/lite.cjs.map +1 -1
- package/dist/components/lite.js +116 -255
- package/dist/components/lite.js.map +1 -1
- package/dist/components/marketplace.cjs +82 -0
- package/dist/components/marketplace.cjs.map +1 -0
- package/dist/components/marketplace.d.cts +108 -0
- package/dist/components/marketplace.d.ts +108 -0
- package/dist/components/marketplace.js +77 -0
- package/dist/components/marketplace.js.map +1 -0
- package/dist/components/perf.cjs +1 -1
- package/dist/components/perf.d.cts +2 -2
- package/dist/components/perf.d.ts +2 -2
- package/dist/components/perf.js +1 -1
- package/dist/components/react.cjs +2 -2
- package/dist/components/react.cjs.map +1 -1
- package/dist/components/react.js +2 -2
- package/dist/components/react.js.map +1 -1
- package/dist/components/solid.cjs +2 -2
- package/dist/components/solid.cjs.map +1 -1
- package/dist/components/solid.d.cts +4 -35
- package/dist/components/solid.d.ts +4 -35
- package/dist/components/solid.js +2 -2
- package/dist/components/solid.js.map +1 -1
- package/dist/components/svelte.cjs +2 -2
- package/dist/components/svelte.cjs.map +1 -1
- package/dist/components/svelte.d.cts +5 -36
- package/dist/components/svelte.d.ts +5 -36
- package/dist/components/svelte.js +2 -2
- package/dist/components/svelte.js.map +1 -1
- package/dist/components/ui.cjs +16 -74
- package/dist/components/ui.cjs.map +1 -1
- package/dist/components/ui.css +0 -1
- package/dist/components/ui.d.cts +3 -18
- package/dist/components/ui.d.ts +3 -18
- package/dist/components/ui.js +17 -74
- package/dist/components/ui.js.map +1 -1
- package/dist/components/vue.cjs +2 -2
- package/dist/components/vue.cjs.map +1 -1
- package/dist/components/vue.d.cts +5 -36
- package/dist/components/vue.d.ts +5 -36
- package/dist/components/vue.js +2 -2
- package/dist/components/vue.js.map +1 -1
- package/dist/components/widgets.cjs +622 -53
- package/dist/components/widgets.cjs.map +1 -1
- package/dist/components/widgets.d.cts +106 -2
- package/dist/components/widgets.d.ts +106 -2
- package/dist/components/widgets.js +615 -54
- package/dist/components/widgets.js.map +1 -1
- package/dist/components.cjs +1 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.css +0 -2
- package/dist/components.d.cts +6 -39
- package/dist/components.d.ts +6 -39
- package/dist/components.js +3 -3
- package/dist/components.umd.js +2 -2
- package/dist/components.umd.js.map +1 -1
- package/dist/widgets.umd.js +1 -1
- package/dist/widgets.umd.js.map +1 -1
- package/docs/ROADMAP.md +12 -12
- package/docs/accessibility.md +2 -2
- package/docs/components.md +41 -2
- package/docs/deprecations.md +4 -0
- package/docs/frameworks-ssr.md +4 -4
- package/docs/hybrid-apps.md +2 -2
- package/docs/upgrading-7.md +43 -0
- package/docs/windows-apps.md +1 -1
- package/package.json +133 -2
- package/dist/chunks/gpu-BBRLgEzM.cjs.map +0 -1
- package/dist/chunks/gpu-CsP2ZB3x.js.map +0 -1
- package/dist/chunks/index-tags-DucKMQr_.js.map +0 -1
- package/dist/chunks/index-tags-wv0R_vkO.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [7.0.0] - 2026-10-08
|
|
11
|
+
|
|
12
|
+
### ⚠️ Breaking — removed (deprecated in 6.9; `npx usa-codemod-7 --write src`)
|
|
13
|
+
- `registerFx2()` → `registerEffectPacks()`; `FX2_PACKS` → `EFFECT_PACKS`.
|
|
14
|
+
- `registerGpuEffects` / `registerTextEffects3` / `registerLightEffects` / `register3dEffects` / `registerMorphEffects2` / `registerTransitionEffects2` / `registerWeatherEffects` / `registerPhysicsEffects2` → `registerGpuPack` / `registerTextPack` / `registerLightPack` / `register3dPack` / `registerMorphPack` / `registerTransitionsPack` / `registerWeatherPack` / `registerPhysicsPack`.
|
|
15
|
+
- `<usa-tooltip>` (`defineTooltip`) → `<usa-tip>` (`defineTip`, 6.6); `<usa-toggle>` (`defineToggle`) → `<usa-switch>` (`defineSwitch`, 6.7). Docs, framework examples and the showcase use the new tags.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- **WebGPU backend** for shader backgrounds: `backend: 'auto'` now tries WebGPU first (the GLSL body is translated by `glslToWgsl()`, or a spec ships `wgsl`), then WebGL2, then Canvas 2D; `el.dataset.usaBackend` = `webgpu` / `webgl2` / `canvas`. New exports `supportsWebGPU()`, `glslToWgsl()`, `wgslModule()`, `webgpuBackground()`, `WGSL_HEAD`.
|
|
19
|
+
- **Per-pack entries**: `motionary/fx` (every pack) and `motionary/fx/gpu`, `/fx/text`, `/fx/light`, `/fx/3d`, `/fx/morph`, `/fx/transitions`, `/fx/weather`, `/fx/physics`, `/fx/focus`, `/fx/marketplace` (same builds as `motionary/components/fx-*`, which keep working).
|
|
20
|
+
- **docs/ROADMAP.md** replaced by the post-7.0 roadmap (v7.1 → v8.0).
|
|
21
|
+
- npm: `motionary@7.0.0` and the `use-scroll-animate@7.0.0` alias are published with the `latest` tag.
|
|
22
|
+
|
|
23
|
+
### Upgrading
|
|
24
|
+
- See [docs/upgrading-7.md](./docs/upgrading-7.md). Everything else (browser baseline, `<usa-player>` JSON, every 6.x widget API) is unchanged.
|
|
25
|
+
|
|
26
|
+
## [6.9.0] - 2026-10-08
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- **4 new components (6.9)** in `motionary/components/widgets` (also in `dist/widgets.umd.js`):
|
|
30
|
+
- `<usa-date-picker>` — inline calendar: months slide in from the direction of travel, the chosen day pops in a spring circle, today has a ring; full date-grid keyboard (arrows, PageUp / PageDown, Home / End, Enter), `min` / `max`, `first-day`, `locale`; `usa:change`. Helpers `monthGrid()`, `parseISODate()`.
|
|
31
|
+
- `<usa-color-picker>` — saturation / brightness square + hue strip (keyboard sliders, Shift ×10) with spring-follow thumbs, morphing preview chip, popping `swatches`; `value` `#rrggbb`; `usa:input` / `usa:change`. Helpers `hsvToHex()`, `hexToHsv()`.
|
|
32
|
+
- `<usa-file-drop>` — drop zone with marching-ants on drag-over and a lifting icon; files (dropped or browsed via the built-in input) fly into a list with progress bars and a drawn check; `setProgress(i, p)`, `simulate`, `accept`, `multiple`; `usa:files`.
|
|
33
|
+
- `<usa-keyframe-editor>` — **animation editor 2.0**: a timeline for `<usa-player>` JSON — drag bars to move tracks, drag edges to resize (or ← / →, Shift + ← / →), scrub or play the preview of the `for` element; reads / writes format `use-scroll-animate/animation` v1; `usa:change`.
|
|
34
|
+
- **Focus & feedback — `motionary/components/fx-focus`** (`registerFocusPack()`): `focus-draw`, `marching-ants`, `success-check`, `highlight-sweep`.
|
|
35
|
+
- **Effect marketplace manifest — `motionary/components/marketplace`**: format `motionary/effect-pack` v1; `packManifest()`, `validateManifest()`, `loadEffectPack(url | module, { override })` (validates, refuses to replace existing effects unless `override`). Also exported from `motionary/components/fx2`.
|
|
36
|
+
- **`npx usa-codemod-7`** (new bin) and **[docs/upgrading-7.md](./docs/upgrading-7.md)**.
|
|
37
|
+
- Consistent pack registrars: `registerGpuPack()`, `registerTextPack()`, `registerLightPack()`, `register3dPack()`, `registerMorphPack()`, `registerTransitionsPack()`, `registerWeatherPack()`, `registerPhysicsPack()`, `registerFocusPack()`; `registerEffectPacks()` + `EFFECT_PACKS` for all of them.
|
|
38
|
+
- Showcase: 6 new gallery cards with copyable code; Animation Store “Components 6.x” 52 → 58 entries (279 → 285 items).
|
|
39
|
+
|
|
40
|
+
### Deprecated (removed in 7.0 — warn once in the console)
|
|
41
|
+
- `registerFx2()` → `registerEffectPacks()`; `FX2_PACKS` → `EFFECT_PACKS`.
|
|
42
|
+
- `registerGpuEffects` / `registerTextEffects3` / `registerLightEffects` / `register3dEffects` / `registerMorphEffects2` / `registerTransitionEffects2` / `registerWeatherEffects` / `registerPhysicsEffects2` → the `register*Pack()` names above.
|
|
43
|
+
- `<usa-tooltip>` → `<usa-tip>` (6.6); `<usa-toggle>` → `<usa-switch>` (6.7). Same attributes.
|
|
44
|
+
- `npx usa-codemod-7 --write src` rewrites all of the above (manual report for `defineTooltip` / `defineToggle`, `createElement` and CSS selectors).
|
|
45
|
+
|
|
46
|
+
### Accessibility
|
|
47
|
+
- Date picker is a `grid` with labelled cells, `aria-selected`, `aria-disabled` and a live month title; color picker areas are `slider`s with `aria-valuetext`; file drop is a keyboard button around a real file input with a polite list; editor clips are keyboard sliders. Reduced motion: no slide / pop / ants / fly-in; the editor preview jumps to the end; every focus effect becomes a fade (marching-ants static).
|
|
48
|
+
|
|
10
49
|
## [6.8.0] - 2026-10-08
|
|
11
50
|
|
|
12
51
|
### Added
|
package/README.md
CHANGED
|
@@ -147,14 +147,14 @@ Import one category (`motionary/components/cards`), everything (`motionary/compo
|
|
|
147
147
|
|---|---|
|
|
148
148
|
| **Scroll reveal** (`/components/reveal`) | `<usa-reveal>` · `<usa-stagger>` · `<usa-scroll-progress>` · `<usa-scrolly>` |
|
|
149
149
|
| **Text** (`/components/text`) | `<usa-typewriter>` · `<usa-split-text>` · `<usa-scramble>` · `<usa-counter>` · `<usa-shimmer-text>` · `<usa-text-rotate>` · `<usa-wave-text>` · `<usa-glitch>` · `<usa-gradient-text>` · `<usa-handwriting>` · `<usa-scroll-highlight>` |
|
|
150
|
-
| **Interaction** (`/components/interaction`) | `<usa-ripple>` · `<usa-magnetic>` · `<usa-tilt>` · `<usa-spotlight>` · `<usa-press>` · `<usa-
|
|
150
|
+
| **Interaction** (`/components/interaction`) | `<usa-ripple>` · `<usa-magnetic>` · `<usa-tilt>` · `<usa-spotlight>` · `<usa-press>` · `<usa-switch>` |
|
|
151
151
|
| **Feedback** (`/components/feedback`) | `<usa-spinner>` · `<usa-skeleton>` · `<usa-progress>` · `<usa-toaster>` · `<usa-check>` |
|
|
152
152
|
| **Backgrounds** (`/components/background`) | `<usa-aurora>` · `<usa-particles>` · `<usa-grain>` · `<usa-marquee>` · `<usa-acrylic>` · `<usa-grid-glow>` · `<usa-blobs>` · `<usa-water-ripple>` · `<usa-dot-network>` |
|
|
153
153
|
| **Transitions** (`/components/transitions`) | `<usa-dialog>` · `<usa-accordion>` · `<usa-view-switch>` |
|
|
154
154
|
| **Spring & physics** (`/components/physics`) | `<usa-spring>` · `<usa-draggable>` · `<usa-overscroll>` |
|
|
155
155
|
| **Cards** (`/components/cards`) | `<usa-card>` · `<usa-card-stack>` · `<usa-sticky-stack>` · `<usa-carousel-3d>` |
|
|
156
156
|
| **Click & buttons** (`/components/click`) | `<usa-click>` · `<usa-button>` · `<usa-icon-morph>` · `<usa-like>` · `<usa-hold>` · `<usa-double-tap>` · `<usa-checkbox>` |
|
|
157
|
-
| **UI kit** (`/components/ui`) | `<usa-tabs>` · `<usa-drawer>` · `<usa-bottom-sheet>` · `<usa-pull-refresh>` · `<usa-fab>` · `<usa-navbar>` · `<usa-slider>` · `<usa-rating>` · `<usa-
|
|
157
|
+
| **UI kit** (`/components/ui`) | `<usa-tabs>` · `<usa-drawer>` · `<usa-bottom-sheet>` · `<usa-pull-refresh>` · `<usa-fab>` · `<usa-navbar>` · `<usa-slider>` · `<usa-rating>` · `<usa-popover>` · `<usa-badge>` · `<usa-avatar-stack>` |
|
|
158
158
|
| **Page-wide** (`/components/page`) | `<usa-cursor>` · `<usa-fullpage>` · `<usa-loading-bar>` · `<usa-back-to-top>` · `<usa-ambient>` · `<usa-splash>` · `<usa-auto-skeleton>` · `<usa-motion-switch>` |
|
|
159
159
|
| **Timeline** (`/components/timeline`) | `<usa-timeline>` |
|
|
160
160
|
| **Gestures** (`/components/gesture`) | `<usa-swipeable>` · `<usa-pinch-zoom>` |
|
package/README_ja.md
CHANGED
|
@@ -147,14 +147,14 @@ export class Hero {}
|
|
|
147
147
|
|---|---|
|
|
148
148
|
| **スクロール表示** (`/components/reveal`) | `<usa-reveal>` · `<usa-stagger>` · `<usa-scroll-progress>` · `<usa-scrolly>` |
|
|
149
149
|
| **テキスト** (`/components/text`) | `<usa-typewriter>` · `<usa-split-text>` · `<usa-scramble>` · `<usa-counter>` · `<usa-shimmer-text>` · `<usa-text-rotate>` · `<usa-wave-text>` · `<usa-glitch>` · `<usa-gradient-text>` · `<usa-handwriting>` · `<usa-scroll-highlight>` |
|
|
150
|
-
| **インタラクション** (`/components/interaction`) | `<usa-ripple>` · `<usa-magnetic>` · `<usa-tilt>` · `<usa-spotlight>` · `<usa-press>` · `<usa-
|
|
150
|
+
| **インタラクション** (`/components/interaction`) | `<usa-ripple>` · `<usa-magnetic>` · `<usa-tilt>` · `<usa-spotlight>` · `<usa-press>` · `<usa-switch>` |
|
|
151
151
|
| **フィードバック** (`/components/feedback`) | `<usa-spinner>` · `<usa-skeleton>` · `<usa-progress>` · `<usa-toaster>` · `<usa-check>` |
|
|
152
152
|
| **背景** (`/components/background`) | `<usa-aurora>` · `<usa-particles>` · `<usa-grain>` · `<usa-marquee>` · `<usa-acrylic>` · `<usa-grid-glow>` · `<usa-blobs>` · `<usa-water-ripple>` · `<usa-dot-network>` |
|
|
153
153
|
| **トランジション** (`/components/transitions`) | `<usa-dialog>` · `<usa-accordion>` · `<usa-view-switch>` |
|
|
154
154
|
| **バネ・物理** (`/components/physics`) | `<usa-spring>` · `<usa-draggable>` · `<usa-overscroll>` |
|
|
155
155
|
| **カード** (`/components/cards`) | `<usa-card>` · `<usa-card-stack>` · `<usa-sticky-stack>` · `<usa-carousel-3d>` |
|
|
156
156
|
| **クリック・ボタン** (`/components/click`) | `<usa-click>` · `<usa-button>` · `<usa-icon-morph>` · `<usa-like>` · `<usa-hold>` · `<usa-double-tap>` · `<usa-checkbox>` |
|
|
157
|
-
| **UI キット** (`/components/ui`) | `<usa-tabs>` · `<usa-drawer>` · `<usa-bottom-sheet>` · `<usa-pull-refresh>` · `<usa-fab>` · `<usa-navbar>` · `<usa-slider>` · `<usa-rating>` · `<usa-
|
|
157
|
+
| **UI キット** (`/components/ui`) | `<usa-tabs>` · `<usa-drawer>` · `<usa-bottom-sheet>` · `<usa-pull-refresh>` · `<usa-fab>` · `<usa-navbar>` · `<usa-slider>` · `<usa-rating>` · `<usa-popover>` · `<usa-badge>` · `<usa-avatar-stack>` |
|
|
158
158
|
| **ページ全体** (`/components/page`) | `<usa-cursor>` · `<usa-fullpage>` · `<usa-loading-bar>` · `<usa-back-to-top>` · `<usa-ambient>` · `<usa-splash>` · `<usa-auto-skeleton>` · `<usa-motion-switch>` |
|
|
159
159
|
| **タイムライン** (`/components/timeline`) | `<usa-timeline>` |
|
|
160
160
|
| **ジェスチャー** (`/components/gesture`) | `<usa-swipeable>` · `<usa-pinch-zoom>` |
|
package/README_zh.md
CHANGED
|
@@ -147,14 +147,14 @@ export class Hero {}
|
|
|
147
147
|
|---|---|
|
|
148
148
|
| **滚动揭示** (`/components/reveal`) | `<usa-reveal>` · `<usa-stagger>` · `<usa-scroll-progress>` · `<usa-scrolly>` |
|
|
149
149
|
| **文字** (`/components/text`) | `<usa-typewriter>` · `<usa-split-text>` · `<usa-scramble>` · `<usa-counter>` · `<usa-shimmer-text>` · `<usa-text-rotate>` · `<usa-wave-text>` · `<usa-glitch>` · `<usa-gradient-text>` · `<usa-handwriting>` · `<usa-scroll-highlight>` |
|
|
150
|
-
| **交互** (`/components/interaction`) | `<usa-ripple>` · `<usa-magnetic>` · `<usa-tilt>` · `<usa-spotlight>` · `<usa-press>` · `<usa-
|
|
150
|
+
| **交互** (`/components/interaction`) | `<usa-ripple>` · `<usa-magnetic>` · `<usa-tilt>` · `<usa-spotlight>` · `<usa-press>` · `<usa-switch>` |
|
|
151
151
|
| **反馈** (`/components/feedback`) | `<usa-spinner>` · `<usa-skeleton>` · `<usa-progress>` · `<usa-toaster>` · `<usa-check>` |
|
|
152
152
|
| **背景与装饰** (`/components/background`) | `<usa-aurora>` · `<usa-particles>` · `<usa-grain>` · `<usa-marquee>` · `<usa-acrylic>` · `<usa-grid-glow>` · `<usa-blobs>` · `<usa-water-ripple>` · `<usa-dot-network>` |
|
|
153
153
|
| **转场** (`/components/transitions`) | `<usa-dialog>` · `<usa-accordion>` · `<usa-view-switch>` |
|
|
154
154
|
| **弹簧与物理** (`/components/physics`) | `<usa-spring>` · `<usa-draggable>` · `<usa-overscroll>` |
|
|
155
155
|
| **卡片** (`/components/cards`) | `<usa-card>` · `<usa-card-stack>` · `<usa-sticky-stack>` · `<usa-carousel-3d>` |
|
|
156
156
|
| **点击与按钮** (`/components/click`) | `<usa-click>` · `<usa-button>` · `<usa-icon-morph>` · `<usa-like>` · `<usa-hold>` · `<usa-double-tap>` · `<usa-checkbox>` |
|
|
157
|
-
| **UI 组件** (`/components/ui`) | `<usa-tabs>` · `<usa-drawer>` · `<usa-bottom-sheet>` · `<usa-pull-refresh>` · `<usa-fab>` · `<usa-navbar>` · `<usa-slider>` · `<usa-rating>` · `<usa-
|
|
157
|
+
| **UI 组件** (`/components/ui`) | `<usa-tabs>` · `<usa-drawer>` · `<usa-bottom-sheet>` · `<usa-pull-refresh>` · `<usa-fab>` · `<usa-navbar>` · `<usa-slider>` · `<usa-rating>` · `<usa-popover>` · `<usa-badge>` · `<usa-avatar-stack>` |
|
|
158
158
|
| **整页** (`/components/page`) | `<usa-cursor>` · `<usa-fullpage>` · `<usa-loading-bar>` · `<usa-back-to-top>` · `<usa-ambient>` · `<usa-splash>` · `<usa-auto-skeleton>` · `<usa-motion-switch>` |
|
|
159
159
|
| **时间线** (`/components/timeline`) | `<usa-timeline>` |
|
|
160
160
|
| **手势** (`/components/gesture`) | `<usa-swipeable>` · `<usa-pinch-zoom>` |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// motionary 6.x → 7.0 codemod.
|
|
3
|
+
// npx usa-codemod-7 [--write] [paths…] (default: ./src; dry run without --write)
|
|
4
|
+
// Rewrites (6.9 deprecations, removed in 7.0):
|
|
5
|
+
// 1. 6.x effect-pack registrars → the *Pack names:
|
|
6
|
+
// registerFx2 → registerEffectPacks, registerGpuEffects → registerGpuPack,
|
|
7
|
+
// registerTextEffects3 → registerTextPack, registerLightEffects → registerLightPack,
|
|
8
|
+
// register3dEffects → register3dPack, registerMorphEffects2 → registerMorphPack,
|
|
9
|
+
// registerTransitionEffects2 → registerTransitionsPack, registerWeatherEffects → registerWeatherPack,
|
|
10
|
+
// registerPhysicsEffects2 → registerPhysicsPack, FX2_PACKS → EFFECT_PACKS
|
|
11
|
+
// (identifiers, imports and UsaWidgets.* globals).
|
|
12
|
+
// 2. <usa-tooltip …> → <usa-tip …> (same text / placement / delay attributes).
|
|
13
|
+
// 3. <usa-toggle …> → <usa-switch …> (same checked / disabled / label / name / value).
|
|
14
|
+
// Reported for a manual change:
|
|
15
|
+
// 4. defineTooltip / defineToggle imports (use defineTip / defineSwitch from motionary/components/widgets),
|
|
16
|
+
// document.createElement('usa-tooltip' | 'usa-toggle'), CSS selectors on the old tags.
|
|
17
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from 'node:fs';
|
|
18
|
+
import { join, extname } from 'node:path';
|
|
19
|
+
import { pathToFileURL } from 'node:url';
|
|
20
|
+
|
|
21
|
+
const EXT = new Set(['.js', '.mjs', '.cjs', '.jsx', '.ts', '.tsx', '.mts', '.cts', '.vue', '.svelte', '.html', '.astro', '.md', '.mdx']);
|
|
22
|
+
export const RENAMES = {
|
|
23
|
+
registerFx2: 'registerEffectPacks',
|
|
24
|
+
registerGpuEffects: 'registerGpuPack',
|
|
25
|
+
registerTextEffects3: 'registerTextPack',
|
|
26
|
+
registerLightEffects: 'registerLightPack',
|
|
27
|
+
register3dEffects: 'register3dPack',
|
|
28
|
+
registerMorphEffects2: 'registerMorphPack',
|
|
29
|
+
registerTransitionEffects2: 'registerTransitionsPack',
|
|
30
|
+
registerWeatherEffects: 'registerWeatherPack',
|
|
31
|
+
registerPhysicsEffects2: 'registerPhysicsPack',
|
|
32
|
+
FX2_PACKS: 'EFFECT_PACKS',
|
|
33
|
+
};
|
|
34
|
+
export const TAGS = { 'usa-tooltip': 'usa-tip', 'usa-toggle': 'usa-switch' };
|
|
35
|
+
|
|
36
|
+
/** Apply every rewrite to one file's source. Returns { code, changes, manual }. */
|
|
37
|
+
export function transform(source) {
|
|
38
|
+
const changes = [];
|
|
39
|
+
const manual = [];
|
|
40
|
+
let code = source;
|
|
41
|
+
for (const [from, to] of Object.entries(RENAMES)) {
|
|
42
|
+
const re = new RegExp(`(?<![\\w$])${from}(?![\\w$])`, 'g');
|
|
43
|
+
const n = (code.match(re) || []).length;
|
|
44
|
+
if (n) {
|
|
45
|
+
code = code.replace(re, to);
|
|
46
|
+
changes.push(`${from} → ${to} (${n}×)`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
for (const [from, to] of Object.entries(TAGS)) {
|
|
50
|
+
const re = new RegExp(`<(/?)${from}(?=[\\s>/])`, 'g');
|
|
51
|
+
const n = (code.match(re) || []).length;
|
|
52
|
+
if (n) {
|
|
53
|
+
code = code.replace(re, `<$1${to}`);
|
|
54
|
+
changes.push(`<${from}> → <${to}> (${n}×)`);
|
|
55
|
+
}
|
|
56
|
+
if (new RegExp(`createElement\\((['"\`])${from}\\1\\)`).test(code) || new RegExp(`(^|[\\s,{}>+~])${from}(?=[\\s.:#\\[{,>+~)]|$)`, 'm').test(code.replace(/<\/?[a-z][^>]*>/g, ''))) manual.push(`${from} is removed in 7.0 — use <${to}> (createElement / CSS selectors are not rewritten)`);
|
|
57
|
+
}
|
|
58
|
+
if (/\bdefineTooltip\b/.test(code)) manual.push("defineTooltip() is removed in 7.0 — import { defineTip } from 'motionary/components/widgets'");
|
|
59
|
+
if (/\bdefineToggle\b/.test(code)) manual.push("defineToggle() is removed in 7.0 — import { defineSwitch } from 'motionary/components/widgets'");
|
|
60
|
+
return { code, changes, manual };
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function* walk(p) {
|
|
64
|
+
const st = statSync(p);
|
|
65
|
+
if (st.isDirectory()) {
|
|
66
|
+
for (const f of readdirSync(p)) if (!['node_modules', 'dist', '.git'].includes(f)) yield* walk(join(p, f));
|
|
67
|
+
} else if (EXT.has(extname(p))) yield p;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function run(args) {
|
|
71
|
+
const write = args.includes('--write');
|
|
72
|
+
const paths = args.filter((a) => !a.startsWith('--'));
|
|
73
|
+
let files = 0;
|
|
74
|
+
let edits = 0;
|
|
75
|
+
let todo = 0;
|
|
76
|
+
for (const root of paths.length ? paths : ['src'])
|
|
77
|
+
for (const f of walk(root)) {
|
|
78
|
+
const src = readFileSync(f, 'utf8');
|
|
79
|
+
const { code, changes, manual } = transform(src);
|
|
80
|
+
if (!changes.length && !manual.length) continue;
|
|
81
|
+
files++;
|
|
82
|
+
edits += changes.length;
|
|
83
|
+
todo += manual.length;
|
|
84
|
+
console.log(`${f}${changes.map((c) => `\n - ${c}`).join('')}${manual.map((c) => `\n ! manual: ${c}`).join('')}`);
|
|
85
|
+
if (write && changes.length) writeFileSync(f, code);
|
|
86
|
+
}
|
|
87
|
+
console.log(`\n${files} file(s), ${edits} rewrite(s)${write ? ' applied' : ' (dry run — pass --write to apply)'}, ${todo} manual change(s).`);
|
|
88
|
+
return { files, edits, todo };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (import.meta.url === pathToFileURL(process.argv[1] || '').href) run(process.argv.slice(2));
|
|
@@ -1,7 +1,166 @@
|
|
|
1
1
|
import { registerEffects } from './registry-D23neB4M.js';
|
|
2
|
-
import {
|
|
2
|
+
import { h as hexRgb, c as canvasBackground, n as noise2 } from './generative-2LhxG5BJ.js';
|
|
3
3
|
import { b as origin, s as spawn, a as all, r as rand } from './shared-CkKHWrtJ.js';
|
|
4
4
|
|
|
5
|
+
/** WGSL shared by every shader: uniforms, hash, value noise, fbm (mirrors `GLSL_HEAD`). */
|
|
6
|
+
const WGSL_HEAD = `struct U{res:vec2f,ptr:vec2f,t:f32,speed:f32,scale:f32,pad:f32,c0:vec4f,c1:vec4f,c2:vec4f};
|
|
7
|
+
@group(0) @binding(0) var<uniform> u:U;
|
|
8
|
+
fn h(p:vec2f)->f32{return fract(sin(dot(p,vec2f(127.1,311.7)))*43758.5453);}
|
|
9
|
+
fn n(p:vec2f)->f32{let i=floor(p);var f=fract(p);f=f*f*(3.0-2.0*f);return mix(mix(h(i),h(i+vec2f(1.0,0.0)),f.x),mix(h(i+vec2f(0.0,1.0)),h(i+vec2f(1.0,1.0)),f.x),f.y);}
|
|
10
|
+
fn fbm(p0:vec2f)->f32{var v=0.0;var a=0.5;var p=p0;for(var k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2f(1.7,9.2);a*=0.5;}return v;}
|
|
11
|
+
@vertex fn vs(@builtin(vertex_index) i:u32)->@builtin(position) vec4f{var q=array<vec2f,3>(vec2f(-1.0,-1.0),vec2f(3.0,-1.0),vec2f(-1.0,3.0));return vec4f(q[i],0.0,1.0);}
|
|
12
|
+
`;
|
|
13
|
+
/**
|
|
14
|
+
* Translate a GLSL `main()` body (the 6.x `ShaderSpec.body` dialect) to WGSL
|
|
15
|
+
* statements. Throws on constructs it does not support (ternaries, `mod`,
|
|
16
|
+
* `discard`, user functions) so the caller can fall back to WebGL2.
|
|
17
|
+
*/
|
|
18
|
+
function glslToWgsl(body) {
|
|
19
|
+
if (/[?]|\bmod\s*\(|\bdiscard\b|\bstruct\b|\buniform\b|\bvoid\b/.test(body))
|
|
20
|
+
throw new Error('unsupported GLSL construct');
|
|
21
|
+
let s = body;
|
|
22
|
+
s = s.replace(/\bu_c([012])\b/g, 'u.c$1.xyz').replace(/\bu_ptr\b/g, 'u.ptr').replace(/\bu_res\b/g, 'u.res').replace(/\bu_t\b/g, 'u.t');
|
|
23
|
+
s = s.replace(/for\s*\(\s*int\s+(\w+)\s*=/g, 'for(var $1:i32=');
|
|
24
|
+
s = s.replace(/\bfloat\s+(\w+)\s*=/g, 'var $1:f32=');
|
|
25
|
+
s = s.replace(/\bvec([234])\s+(\w+)\s*=/g, 'var $2:vec$1f=');
|
|
26
|
+
s = s.replace(/\bint\s+(\w+)\s*=/g, 'var $1:i32=');
|
|
27
|
+
s = s.replace(/\bvec([234])\s*\(/g, 'vec$1f(').replace(/\bfloat\s*\(/g, 'f32(').replace(/\bint\s*\(/g, 'i32(').replace(/\batan\s*\(([^(),]+),/g, 'atan2($1,');
|
|
28
|
+
s = s.replace(/(\d)\.(?![\d\w])/g, '$1.0');
|
|
29
|
+
s = s.replace(/(^|[^\w.])\.(\d)/g, '$10.$2');
|
|
30
|
+
if (/\b(float|vec[234]|int|mat[234])\s+\w+\s*[,;]/.test(s))
|
|
31
|
+
throw new Error('unsupported declaration');
|
|
32
|
+
return s;
|
|
33
|
+
}
|
|
34
|
+
/** The full WGSL module for a body. */
|
|
35
|
+
const wgslModule = (body) => `${WGSL_HEAD}@fragment fn fs(@builtin(position) fc:vec4f)->@location(0) vec4f{var uv=vec2f(fc.x,u.res.y-fc.y)/u.res;var p=uv*vec2f(u.res.x/u.res.y,1.0)*u.scale;var t=u.t*u.speed;var o=vec4f(0.0,0.0,0.0,1.0);${body}return o;}`;
|
|
36
|
+
/** `true` when `navigator.gpu` exists (the adapter may still be refused). */
|
|
37
|
+
const supportsWebGPU = () => typeof navigator !== 'undefined' && !!navigator.gpu;
|
|
38
|
+
const rgb$1 = (c) => [...hexRgb(c).map((v) => v / 255), 1];
|
|
39
|
+
/**
|
|
40
|
+
* Start a WebGPU shader background behind `el`. Resolves to its cleanup, or
|
|
41
|
+
* `null` when WebGPU cannot run this shader (the caller falls back).
|
|
42
|
+
*/
|
|
43
|
+
async function webgpuBackground(el, fx, spec, o) {
|
|
44
|
+
if (!supportsWebGPU())
|
|
45
|
+
return null;
|
|
46
|
+
let code;
|
|
47
|
+
try {
|
|
48
|
+
code = wgslModule(spec.wgsl || glslToWgsl(spec.body));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const gpu = navigator.gpu;
|
|
54
|
+
try {
|
|
55
|
+
const adapter = await gpu.requestAdapter({ powerPreference: 'low-power' });
|
|
56
|
+
if (!adapter)
|
|
57
|
+
return null;
|
|
58
|
+
const device = await adapter.requestDevice();
|
|
59
|
+
const module = device.createShaderModule({ code });
|
|
60
|
+
const info = await module.getCompilationInfo?.();
|
|
61
|
+
if (info?.messages?.some((m) => m.type === 'error'))
|
|
62
|
+
return (device.destroy?.(), null);
|
|
63
|
+
if (!el.isConnected)
|
|
64
|
+
return (device.destroy?.(), null);
|
|
65
|
+
const canvas = document.createElement('canvas');
|
|
66
|
+
const ctx = canvas.getContext('webgpu');
|
|
67
|
+
if (!ctx)
|
|
68
|
+
return (device.destroy?.(), null);
|
|
69
|
+
const format = gpu.getPreferredCanvasFormat();
|
|
70
|
+
ctx.configure({ device, format, alphaMode: 'opaque' });
|
|
71
|
+
device.pushErrorScope?.('validation');
|
|
72
|
+
const pipeline = device.createRenderPipeline({ layout: 'auto', vertex: { module, entryPoint: 'vs' }, fragment: { module, entryPoint: 'fs', targets: [{ format }] }, primitive: { topology: 'triangle-list' } });
|
|
73
|
+
const ubuf = device.createBuffer({ size: 80, usage: 0x40 | 0x8 /* UNIFORM | COPY_DST */ });
|
|
74
|
+
const bind = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries: [{ binding: 0, resource: { buffer: ubuf } }] });
|
|
75
|
+
const err = await device.popErrorScope?.();
|
|
76
|
+
if (err)
|
|
77
|
+
return (device.destroy?.(), null);
|
|
78
|
+
canvas.setAttribute('aria-hidden', 'true');
|
|
79
|
+
canvas.setAttribute('data-usa-fx-canvas', '');
|
|
80
|
+
canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';
|
|
81
|
+
const restore = [];
|
|
82
|
+
const set = (k, v) => {
|
|
83
|
+
restore.push([k, el.style[k]]);
|
|
84
|
+
el.style[k] = v;
|
|
85
|
+
};
|
|
86
|
+
if (getComputedStyle(el).position === 'static')
|
|
87
|
+
set('position', 'relative');
|
|
88
|
+
set('isolation', 'isolate');
|
|
89
|
+
el.prepend(canvas);
|
|
90
|
+
el.dataset.usaBackend = 'webgpu';
|
|
91
|
+
const cols = o.colors || [];
|
|
92
|
+
const data = new Float32Array(20);
|
|
93
|
+
data.set([Number(o.speed) || 1, Number(o.scale) || 3, 0], 5);
|
|
94
|
+
[0, 1, 2].forEach((i) => data.set(rgb$1(cols[i] || cols[0] || '#7c5cff'), 8 + i * 4));
|
|
95
|
+
let ptr = [0.5, 0.5];
|
|
96
|
+
let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));
|
|
97
|
+
let raf = 0;
|
|
98
|
+
let visible = true;
|
|
99
|
+
const t0 = performance.now();
|
|
100
|
+
const resize = () => {
|
|
101
|
+
const r = el.getBoundingClientRect();
|
|
102
|
+
const dpr = Math.min(2, devicePixelRatio || 1) * quality;
|
|
103
|
+
canvas.width = Math.max(1, Math.round(r.width * dpr));
|
|
104
|
+
canvas.height = Math.max(1, Math.round(r.height * dpr));
|
|
105
|
+
};
|
|
106
|
+
const draw = (t) => {
|
|
107
|
+
data.set([canvas.width, canvas.height, ptr[0], ptr[1], t], 0);
|
|
108
|
+
device.queue.writeBuffer(ubuf, 0, data);
|
|
109
|
+
const enc = device.createCommandEncoder();
|
|
110
|
+
const pass = enc.beginRenderPass({ colorAttachments: [{ view: ctx.getCurrentTexture().createView(), loadOp: 'clear', storeOp: 'store', clearValue: { r: 0, g: 0, b: 0, a: 1 } }] });
|
|
111
|
+
pass.setPipeline(pipeline);
|
|
112
|
+
pass.setBindGroup(0, bind);
|
|
113
|
+
pass.draw(3);
|
|
114
|
+
pass.end();
|
|
115
|
+
device.queue.submit([enc.finish()]);
|
|
116
|
+
};
|
|
117
|
+
let last = 0;
|
|
118
|
+
let slow = 0;
|
|
119
|
+
const frame = (now) => {
|
|
120
|
+
raf = 0;
|
|
121
|
+
if (last && now - last > 34 && ++slow > 24 && quality > 0.3)
|
|
122
|
+
((quality = Math.max(0.3, quality - 0.15)), (slow = 0), resize());
|
|
123
|
+
last = now;
|
|
124
|
+
draw((now - t0) / 1000);
|
|
125
|
+
if (visible && !document.hidden)
|
|
126
|
+
raf = requestAnimationFrame(frame);
|
|
127
|
+
};
|
|
128
|
+
const start = () => {
|
|
129
|
+
if (!raf && !fx.reduced)
|
|
130
|
+
raf = requestAnimationFrame(frame);
|
|
131
|
+
};
|
|
132
|
+
resize();
|
|
133
|
+
draw(fx.reduced ? 7 : 0);
|
|
134
|
+
const move = (e) => {
|
|
135
|
+
const r = el.getBoundingClientRect();
|
|
136
|
+
ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];
|
|
137
|
+
};
|
|
138
|
+
el.addEventListener('pointermove', move);
|
|
139
|
+
const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;
|
|
140
|
+
io?.observe(el);
|
|
141
|
+
const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;
|
|
142
|
+
ro?.observe(el);
|
|
143
|
+
const vis = () => !document.hidden && visible && start();
|
|
144
|
+
document.addEventListener('visibilitychange', vis);
|
|
145
|
+
start();
|
|
146
|
+
return () => {
|
|
147
|
+
cancelAnimationFrame(raf);
|
|
148
|
+
io?.disconnect();
|
|
149
|
+
ro?.disconnect();
|
|
150
|
+
el.removeEventListener('pointermove', move);
|
|
151
|
+
document.removeEventListener('visibilitychange', vis);
|
|
152
|
+
canvas.remove();
|
|
153
|
+
for (const [k, v] of restore)
|
|
154
|
+
el.style[k] = v;
|
|
155
|
+
delete el.dataset.usaBackend;
|
|
156
|
+
device.destroy?.();
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
5
164
|
/** GLSL shared by every shader: uniforms, hash, value noise, fbm. */
|
|
6
165
|
const GLSL_HEAD = `#version 300 es
|
|
7
166
|
precision highp float;
|
|
@@ -47,9 +206,28 @@ function compile(gl, frag) {
|
|
|
47
206
|
const rgb = (c) => hexRgb(c).map((v) => v / 255);
|
|
48
207
|
/**
|
|
49
208
|
* Mount a shader background behind `el` (options: `colors` [3 hex], `speed`,
|
|
50
|
-
* `scale`, `quality`, `backend` = `'auto' | 'webgl2' | 'canvas'`).
|
|
209
|
+
* `scale`, `quality`, `backend` = `'auto' | 'webgpu' | 'webgl2' | 'canvas'`).
|
|
210
|
+
* 7.0: `auto` tries WebGPU first, then WebGL2, then Canvas 2D
|
|
211
|
+
* (`el.dataset.usaBackend` names the one running). Returns the cleanup.
|
|
51
212
|
*/
|
|
52
213
|
function shaderBackground(el, fx, spec, o) {
|
|
214
|
+
const want = o.backend || 'auto';
|
|
215
|
+
if ((want === 'auto' || want === 'webgpu') && supportsWebGPU()) {
|
|
216
|
+
let stop = null;
|
|
217
|
+
let dead = false;
|
|
218
|
+
webgpuBackground(el, fx, spec, o).then((s) => {
|
|
219
|
+
if (dead)
|
|
220
|
+
return s?.();
|
|
221
|
+
stop = s || webglBackground(el, fx, spec, o);
|
|
222
|
+
});
|
|
223
|
+
return () => {
|
|
224
|
+
dead = true;
|
|
225
|
+
stop?.();
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return webglBackground(el, fx, spec, o);
|
|
229
|
+
}
|
|
230
|
+
function webglBackground(el, fx, spec, o) {
|
|
53
231
|
const fallback = () => {
|
|
54
232
|
el.dataset.usaBackend = 'canvas';
|
|
55
233
|
const stop = canvasBackground(el, fx, spec.fallback, o);
|
|
@@ -373,9 +551,9 @@ GPU_FX.push({
|
|
|
373
551
|
},
|
|
374
552
|
});
|
|
375
553
|
/** Register the 6.2 GPU pack (idempotent). */
|
|
376
|
-
function
|
|
554
|
+
function registerGpuPack() {
|
|
377
555
|
registerEffects(GPU_FX);
|
|
378
556
|
}
|
|
379
557
|
|
|
380
|
-
export { GPU_FX as G, GLSL_HEAD as a, supportsWebGL2 as b, fieldFallback as f,
|
|
381
|
-
//# sourceMappingURL=gpu-
|
|
558
|
+
export { GPU_FX as G, WGSL_HEAD as W, GLSL_HEAD as a, supportsWebGL2 as b, supportsWebGPU as c, wgslModule as d, fieldFallback as f, glslToWgsl as g, registerGpuPack as r, shaderBackground as s, webgpuBackground as w };
|
|
559
|
+
//# sourceMappingURL=gpu-Bkw605Ds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpu-Bkw605Ds.js","sources":["../../src/components/fx2/webgpu.ts","../../src/components/fx2/gl.ts","../../src/components/fx2/gpu.ts"],"sourcesContent":["/**\n * 7.0 — WebGPU backend for the shader backgrounds (`shaderBackground()`).\n *\n * Every 6.x shader is written once as a small GLSL `main()` body. 7.0 runs it\n * on **WebGPU** where the browser has it: `glslToWgsl()` translates the body\n * (types, constructors, literals, loops, uniforms) into a WGSL fragment\n * shader with the same noise helpers; a spec can also ship hand-written\n * `wgsl`. If WebGPU is missing, the adapter / device is refused, or the\n * shader does not compile, the effect falls back to **WebGL2**, then to the\n * Canvas 2D fallback — `el.dataset.usaBackend` says which one runs.\n */\nimport type { EffectContext } from '../fx/registry';\nimport { hexRgb } from '../effects/generative';\n\n/** WGSL shared by every shader: uniforms, hash, value noise, fbm (mirrors `GLSL_HEAD`). */\nexport const WGSL_HEAD = `struct U{res:vec2f,ptr:vec2f,t:f32,speed:f32,scale:f32,pad:f32,c0:vec4f,c1:vec4f,c2:vec4f};\n@group(0) @binding(0) var<uniform> u:U;\nfn h(p:vec2f)->f32{return fract(sin(dot(p,vec2f(127.1,311.7)))*43758.5453);}\nfn n(p:vec2f)->f32{let i=floor(p);var f=fract(p);f=f*f*(3.0-2.0*f);return mix(mix(h(i),h(i+vec2f(1.0,0.0)),f.x),mix(h(i+vec2f(0.0,1.0)),h(i+vec2f(1.0,1.0)),f.x),f.y);}\nfn fbm(p0:vec2f)->f32{var v=0.0;var a=0.5;var p=p0;for(var k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2f(1.7,9.2);a*=0.5;}return v;}\n@vertex fn vs(@builtin(vertex_index) i:u32)->@builtin(position) vec4f{var q=array<vec2f,3>(vec2f(-1.0,-1.0),vec2f(3.0,-1.0),vec2f(-1.0,3.0));return vec4f(q[i],0.0,1.0);}\n`;\n\n/**\n * Translate a GLSL `main()` body (the 6.x `ShaderSpec.body` dialect) to WGSL\n * statements. Throws on constructs it does not support (ternaries, `mod`,\n * `discard`, user functions) so the caller can fall back to WebGL2.\n */\nexport function glslToWgsl(body: string): string {\n if (/[?]|\\bmod\\s*\\(|\\bdiscard\\b|\\bstruct\\b|\\buniform\\b|\\bvoid\\b/.test(body)) throw new Error('unsupported GLSL construct');\n let s = body;\n s = s.replace(/\\bu_c([012])\\b/g, 'u.c$1.xyz').replace(/\\bu_ptr\\b/g, 'u.ptr').replace(/\\bu_res\\b/g, 'u.res').replace(/\\bu_t\\b/g, 'u.t');\n s = s.replace(/for\\s*\\(\\s*int\\s+(\\w+)\\s*=/g, 'for(var $1:i32=');\n s = s.replace(/\\bfloat\\s+(\\w+)\\s*=/g, 'var $1:f32=');\n s = s.replace(/\\bvec([234])\\s+(\\w+)\\s*=/g, 'var $2:vec$1f=');\n s = s.replace(/\\bint\\s+(\\w+)\\s*=/g, 'var $1:i32=');\n s = s.replace(/\\bvec([234])\\s*\\(/g, 'vec$1f(').replace(/\\bfloat\\s*\\(/g, 'f32(').replace(/\\bint\\s*\\(/g, 'i32(').replace(/\\batan\\s*\\(([^(),]+),/g, 'atan2($1,');\n s = s.replace(/(\\d)\\.(?![\\d\\w])/g, '$1.0');\n s = s.replace(/(^|[^\\w.])\\.(\\d)/g, '$10.$2');\n if (/\\b(float|vec[234]|int|mat[234])\\s+\\w+\\s*[,;]/.test(s)) throw new Error('unsupported declaration');\n return s;\n}\n\n/** The full WGSL module for a body. */\nexport const wgslModule = (body: string): string =>\n `${WGSL_HEAD}@fragment fn fs(@builtin(position) fc:vec4f)->@location(0) vec4f{var uv=vec2f(fc.x,u.res.y-fc.y)/u.res;var p=uv*vec2f(u.res.x/u.res.y,1.0)*u.scale;var t=u.t*u.speed;var o=vec4f(0.0,0.0,0.0,1.0);${body}return o;}`;\n\n/** `true` when `navigator.gpu` exists (the adapter may still be refused). */\nexport const supportsWebGPU = (): boolean => typeof navigator !== 'undefined' && !!(navigator as Navigator & { gpu?: unknown }).gpu;\n\nconst rgb = (c: string): number[] => [...hexRgb(c).map((v) => v / 255), 1];\n\n/**\n * Start a WebGPU shader background behind `el`. Resolves to its cleanup, or\n * `null` when WebGPU cannot run this shader (the caller falls back).\n */\nexport async function webgpuBackground(el: HTMLElement, fx: EffectContext, spec: { body: string; wgsl?: string }, o: any): Promise<(() => void) | null> {\n if (!supportsWebGPU()) return null;\n let code: string;\n try {\n code = wgslModule(spec.wgsl || glslToWgsl(spec.body));\n } catch {\n return null;\n }\n const gpu = (navigator as any).gpu;\n try {\n const adapter = await gpu.requestAdapter({ powerPreference: 'low-power' });\n if (!adapter) return null;\n const device = await adapter.requestDevice();\n const module = device.createShaderModule({ code });\n const info = await module.getCompilationInfo?.();\n if (info?.messages?.some((m: any) => m.type === 'error')) return (device.destroy?.(), null);\n if (!el.isConnected) return (device.destroy?.(), null);\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('webgpu') as any;\n if (!ctx) return (device.destroy?.(), null);\n const format = gpu.getPreferredCanvasFormat();\n ctx.configure({ device, format, alphaMode: 'opaque' });\n device.pushErrorScope?.('validation');\n const pipeline = device.createRenderPipeline({ layout: 'auto', vertex: { module, entryPoint: 'vs' }, fragment: { module, entryPoint: 'fs', targets: [{ format }] }, primitive: { topology: 'triangle-list' } });\n const ubuf = device.createBuffer({ size: 80, usage: 0x40 | 0x8 /* UNIFORM | COPY_DST */ });\n const bind = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries: [{ binding: 0, resource: { buffer: ubuf } }] });\n const err = await device.popErrorScope?.();\n if (err) return (device.destroy?.(), null);\n canvas.setAttribute('aria-hidden', 'true');\n canvas.setAttribute('data-usa-fx-canvas', '');\n canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';\n const restore: [string, string][] = [];\n const set = (k: 'position' | 'isolation', v: string) => {\n restore.push([k, el.style[k]]);\n el.style[k] = v;\n };\n if (getComputedStyle(el).position === 'static') set('position', 'relative');\n set('isolation', 'isolate');\n el.prepend(canvas);\n el.dataset.usaBackend = 'webgpu';\n const cols: string[] = o.colors || [];\n const data = new Float32Array(20);\n data.set([Number(o.speed) || 1, Number(o.scale) || 3, 0], 5);\n [0, 1, 2].forEach((i) => data.set(rgb(cols[i] || cols[0] || '#7c5cff'), 8 + i * 4));\n let ptr: [number, number] = [0.5, 0.5];\n let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));\n let raf = 0;\n let visible = true;\n const t0 = performance.now();\n const resize = () => {\n const r = el.getBoundingClientRect();\n const dpr = Math.min(2, devicePixelRatio || 1) * quality;\n canvas.width = Math.max(1, Math.round(r.width * dpr));\n canvas.height = Math.max(1, Math.round(r.height * dpr));\n };\n const draw = (t: number) => {\n data.set([canvas.width, canvas.height, ptr[0], ptr[1], t], 0);\n device.queue.writeBuffer(ubuf, 0, data);\n const enc = device.createCommandEncoder();\n const pass = enc.beginRenderPass({ colorAttachments: [{ view: ctx.getCurrentTexture().createView(), loadOp: 'clear', storeOp: 'store', clearValue: { r: 0, g: 0, b: 0, a: 1 } }] });\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bind);\n pass.draw(3);\n pass.end();\n device.queue.submit([enc.finish()]);\n };\n let last = 0;\n let slow = 0;\n const frame = (now: number) => {\n raf = 0;\n if (last && now - last > 34 && ++slow > 24 && quality > 0.3) ((quality = Math.max(0.3, quality - 0.15)), (slow = 0), resize());\n last = now;\n draw((now - t0) / 1000);\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && !fx.reduced) raf = requestAnimationFrame(frame);\n };\n resize();\n draw(fx.reduced ? 7 : 0);\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];\n };\n el.addEventListener('pointermove', move);\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;\n ro?.observe(el);\n const vis = () => !document.hidden && visible && start();\n document.addEventListener('visibilitychange', vis);\n start();\n return () => {\n cancelAnimationFrame(raf);\n io?.disconnect();\n ro?.disconnect();\n el.removeEventListener('pointermove', move);\n document.removeEventListener('visibilitychange', vis);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n delete el.dataset.usaBackend;\n device.destroy?.();\n };\n } catch {\n return null;\n }\n}\n","/**\n * 6.2 — tiny WebGL2 full-screen shader runner with a Canvas 2D fallback, shared\n * by the 6.x GPU effect packs. One canvas behind the element (aria-hidden,\n * pointer-transparent), renders only while visible and the tab is shown,\n * adaptive resolution, pointer uniform, and a static first frame under reduced\n * motion. No WebGL2 (or a lost context / compile error) → the Canvas 2D\n * `fallback` spec runs through `canvasBackground()` instead.\n * `el.dataset.usaBackend` tells which one is active: `webgl2` or `canvas`.\n */\nimport type { EffectContext } from '../fx/registry';\nimport { webgpuBackground, supportsWebGPU } from './webgpu';\nimport { canvasBackground, hexRgb, noise2, type GenerativeSpec } from '../effects/generative';\n\nexport { hexRgb, noise2 };\n\n/** GLSL shared by every shader: uniforms, hash, value noise, fbm. */\nexport const GLSL_HEAD = `#version 300 es\nprecision highp float;\nuniform vec2 u_res;uniform float u_t;uniform vec3 u_c0,u_c1,u_c2;uniform vec2 u_ptr;uniform float u_speed,u_scale;\nout vec4 o;\nfloat h(vec2 p){return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5453);}\nfloat n(vec2 p){vec2 i=floor(p),f=fract(p);f=f*f*(3.-2.*f);return mix(mix(h(i),h(i+vec2(1,0)),f.x),mix(h(i+vec2(0,1)),h(i+1.),f.x),f.y);}\nfloat fbm(vec2 p){float v=0.,a=.5;for(int k=0;k<5;k++){v+=a*n(p);p=p*2.03+vec2(1.7,9.2);a*=.5;}return v;}\n`;\nconst VERT = `#version 300 es\nin vec2 a;void main(){gl_Position=vec4(a,0.,1.);}`;\n\nexport interface ShaderSpec {\n /** 7.0: hand-written WGSL statements for the WebGPU backend (default: `glslToWgsl(body)`). */\n wgsl?: string;\n /** GLSL body of `main()`: `uv` (0–1), `p` (aspect-corrected, scaled), `t` (s × speed) are in scope; write `o`. */\n body: string;\n /** Canvas 2D fallback. */\n fallback: GenerativeSpec;\n}\n\n/** `true` when this browser can create a WebGL2 context (cached). */\nlet gl2: boolean | null = null;\nexport function supportsWebGL2(): boolean {\n if (gl2 !== null) return gl2;\n try {\n gl2 = typeof document !== 'undefined' && !!document.createElement('canvas').getContext('webgl2');\n } catch {\n gl2 = false;\n }\n return gl2;\n}\n\nfunction compile(gl: WebGL2RenderingContext, frag: string): WebGLProgram | null {\n const mk = (type: number, src: string) => {\n const s = gl.createShader(type)!;\n gl.shaderSource(s, src);\n gl.compileShader(s);\n return gl.getShaderParameter(s, gl.COMPILE_STATUS) ? s : null;\n };\n const v = mk(gl.VERTEX_SHADER, VERT);\n const f = mk(gl.FRAGMENT_SHADER, frag);\n if (!v || !f) return null;\n const p = gl.createProgram()!;\n gl.attachShader(p, v);\n gl.attachShader(p, f);\n gl.bindAttribLocation(p, 0, 'a');\n gl.linkProgram(p);\n return gl.getProgramParameter(p, gl.LINK_STATUS) ? p : null;\n}\n\nconst rgb = (c: string): [number, number, number] => hexRgb(c).map((v) => v / 255) as [number, number, number];\n\n/**\n * Mount a shader background behind `el` (options: `colors` [3 hex], `speed`,\n * `scale`, `quality`, `backend` = `'auto' | 'webgpu' | 'webgl2' | 'canvas'`).\n * 7.0: `auto` tries WebGPU first, then WebGL2, then Canvas 2D\n * (`el.dataset.usaBackend` names the one running). Returns the cleanup.\n */\nexport function shaderBackground(el: HTMLElement, fx: EffectContext, spec: ShaderSpec, o: any): () => void {\n const want = o.backend || 'auto';\n if ((want === 'auto' || want === 'webgpu') && supportsWebGPU()) {\n let stop: (() => void) | null = null;\n let dead = false;\n webgpuBackground(el, fx, spec, o).then((s) => {\n if (dead) return s?.();\n stop = s || webglBackground(el, fx, spec, o);\n });\n return () => {\n dead = true;\n stop?.();\n };\n }\n return webglBackground(el, fx, spec, o);\n}\n\nfunction webglBackground(el: HTMLElement, fx: EffectContext, spec: ShaderSpec, o: any): () => void {\n const fallback = () => {\n el.dataset.usaBackend = 'canvas';\n const stop = canvasBackground(el, fx, spec.fallback, o);\n return () => {\n stop();\n delete el.dataset.usaBackend;\n };\n };\n if (o.backend === 'canvas' || !supportsWebGL2()) return fallback();\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl2', { alpha: false, antialias: false, preserveDrawingBuffer: false }) as WebGL2RenderingContext | null;\n const prog = gl && compile(gl, `${GLSL_HEAD}void main(){vec2 uv=gl_FragCoord.xy/u_res;vec2 p=uv*vec2(u_res.x/u_res.y,1.)*u_scale;float t=u_t*u_speed;${spec.body}}`);\n if (!gl || !prog) return fallback();\n el.dataset.usaBackend = 'webgl2';\n canvas.setAttribute('aria-hidden', 'true');\n canvas.setAttribute('data-usa-fx-canvas', '');\n canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';\n const restore: [string, string][] = [];\n const set = (k: 'position' | 'isolation', v: string) => {\n restore.push([k, el.style[k]]);\n el.style[k] = v;\n };\n if (getComputedStyle(el).position === 'static') set('position', 'relative');\n set('isolation', 'isolate');\n el.prepend(canvas);\n gl.useProgram(prog);\n const buf = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 3, -1, -1, 3]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(0);\n gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);\n const U = (n: string) => gl.getUniformLocation(prog, n);\n const cols: string[] = o.colors || [];\n ['u_c0', 'u_c1', 'u_c2'].forEach((u, i) => gl.uniform3fv(U(u), rgb(cols[i] || cols[0] || '#7c5cff')));\n gl.uniform1f(U('u_speed'), Number(o.speed) || 1);\n gl.uniform1f(U('u_scale'), Number(o.scale) || 3);\n const uRes = U('u_res');\n const uT = U('u_t');\n const uPtr = U('u_ptr');\n let ptr: [number, number] = [0.5, 0.5];\n let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));\n let raf = 0;\n let visible = true;\n let slow = 0;\n let last = 0;\n const t0 = performance.now();\n const resize = () => {\n const r = el.getBoundingClientRect();\n const dpr = Math.min(2, devicePixelRatio || 1) * quality;\n canvas.width = Math.max(1, Math.round(r.width * dpr));\n canvas.height = Math.max(1, Math.round(r.height * dpr));\n gl.viewport(0, 0, canvas.width, canvas.height);\n gl.uniform2f(uRes, canvas.width, canvas.height);\n };\n const draw = (t: number) => {\n gl.uniform1f(uT, t);\n gl.uniform2f(uPtr, ptr[0], ptr[1]);\n gl.drawArrays(gl.TRIANGLES, 0, 3);\n };\n const frame = (now: number) => {\n raf = 0;\n if (last && now - last > 34 && ++slow > 24 && quality > 0.3) {\n quality = Math.max(0.3, quality - 0.15);\n slow = 0;\n resize();\n }\n last = now;\n draw((now - t0) / 1000);\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && !fx.reduced) raf = requestAnimationFrame(frame);\n };\n resize();\n draw(fx.reduced ? 7 : 0);\n const move = (e: PointerEvent) => {\n const r = el.getBoundingClientRect();\n ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];\n };\n el.addEventListener('pointermove', move);\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;\n ro?.observe(el);\n const vis = () => !document.hidden && visible && start();\n document.addEventListener('visibilitychange', vis);\n let swapped: (() => void) | null = null;\n const lost = (e: Event) => {\n e.preventDefault();\n stop();\n swapped = fallback();\n };\n canvas.addEventListener('webglcontextlost', lost);\n const stop = () => {\n cancelAnimationFrame(raf);\n raf = 0;\n io?.disconnect();\n ro?.disconnect();\n el.removeEventListener('pointermove', move);\n document.removeEventListener('visibilitychange', vis);\n canvas.removeEventListener('webglcontextlost', lost);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n };\n start();\n return () => {\n if (swapped) return swapped();\n stop();\n gl.getExtension('WEBGL_lose_context')?.loseContext();\n delete el.dataset.usaBackend;\n };\n}\n\n/**\n * Canvas 2D fallback for a scalar field: `color(x, y, t)` (x, y in 0–1)\n * returns `[r, g, b]` (0–255), sampled on a coarse grid and scaled up smoothly.\n */\nexport function fieldFallback(color: (x: number, y: number, t: number, o: any) => [number, number, number], cell = 8): GenerativeSpec {\n return {\n init: (w, h) => {\n const c = document.createElement('canvas');\n c.width = Math.max(2, Math.ceil(w / cell));\n c.height = Math.max(2, Math.ceil(h / cell));\n const x = c.getContext('2d');\n return { c, x, img: x?.createImageData(c.width, c.height) };\n },\n draw: ({ ctx, w, h, t, state, o }) => {\n const { c, x, img } = state;\n if (!x || !img) return;\n const d = img.data;\n for (let j = 0; j < c.height; j++)\n for (let i = 0; i < c.width; i++) {\n const [r, g, b] = color(i / c.width, 1 - j / c.height, t * (Number(o.speed) || 1), o);\n const k = (j * c.width + i) * 4;\n d[k] = r;\n d[k + 1] = g;\n d[k + 2] = b;\n d[k + 3] = 255;\n }\n x.putImageData(img, 0, 0);\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(c, 0, 0, w, h);\n },\n };\n}\n\n/** Linear blend of two `[r,g,b]` colors. */\nexport const mixRgb = (a: number[], b: number[], k: number): [number, number, number] => {\n const q = Math.min(1, Math.max(0, k));\n return [a[0] + (b[0] - a[0]) * q, a[1] + (b[1] - a[1]) * q, a[2] + (b[2] - a[2]) * q];\n};\n/** Smoothstep. */\nexport const sstep = (a: number, b: number, x: number): number => {\n const t = Math.min(1, Math.max(0, (x - a) / (b - a)));\n return t * t * (3 - 2 * t);\n};\n/** fbm-like noise in 0–1 built on `noise2`. */\nexport const fbm2 = (x: number, y: number, t = 0): number => 0.5 + 0.35 * noise2(x, y, t) + 0.15 * noise2(x * 2.1 + 3, y * 2.1 - 1, t * 1.3);\n","/**\n * 6.2 — GPU effect pack (`motionary/components/fx-gpu`), registered through\n * `registerEffect()`:\n *\n * - WebGL2 shaders with a Canvas 2D fallback (kind `background`): `fluid`\n * (domain-warped fluid that swirls around the pointer), `smoke`, `fire`,\n * `ink` (ink blooming in water), `fireflies`.\n * - Canvas 2D particles (kind `background`): `sakura` (falling cherry\n * petals), `leaves` (tumbling autumn leaves).\n * - `splash` (kind `click`): droplets + a ring burst from the pointer.\n *\n * Every background renders only while visible, lowers its resolution when\n * frames are slow, and draws one static frame under reduced motion.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { registerEffects } from '../fx/registry';\nimport { canvasBackground, type GenerativeSpec } from '../effects/generative';\nimport { origin, spawn, rand, all } from '../effects/shared';\nimport { shaderBackground, fieldFallback, hexRgb, mixRgb, sstep, fbm2, type ShaderSpec } from './gl';\n\nconst shader = (name: string, description: string, colors: string[], spec: ShaderSpec, extra: Record<string, unknown> = {}): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { colors, speed: 1, scale: 3, quality: 0.75, backend: 'auto', ...extra },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = shaderBackground(el, ctx, spec, o);\n ctx.onCleanup(stop);\n return stop;\n },\n});\n\nconst C = (o: any) => (o.colors as string[]).map(hexRgb);\n\nexport const GPU_FX: EffectDefinition[] = [\n shader('fluid', 'Domain-warped fluid colors that swirl around the pointer (WebGL2, Canvas 2D fallback).', ['#1b1446', '#7c5cff', '#22d3ee'], {\n body: 'vec2 q=vec2(fbm(p+t*.1),fbm(p+vec2(5.2,1.3)-t*.08));vec2 d=uv-u_ptr;q+=.5*exp(-dot(d,d)*14.)*vec2(sin(t*1.3),cos(t*1.1));float f=fbm(p+3.*q+t*.05);vec3 c=mix(u_c0,u_c1,clamp(f*1.7-.2,0.,1.));c=mix(c,u_c2,clamp(length(q)*1.1-.45,0.,1.));o=vec4(c,1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [a, b, c] = C(o);\n const q = fbm2(x * 3 + t * 0.1, y * 3);\n const f = fbm2(x * 3 + q * 2, y * 3 + q * 2, t * 0.3);\n return mixRgb(mixRgb(a, b, f * 1.7 - 0.2), c, q * 1.1 - 0.45);\n }),\n }),\n shader('smoke', 'Soft smoke rising and curling (WebGL2, Canvas 2D fallback).', ['#0f172a', '#cbd5e1', '#64748b'], {\n body: 'vec2 s=p;s.y-=t*.25;float f=fbm(s+fbm(s*1.5+t*.1));float a=smoothstep(.38,.92,f)*(1.05-uv.y*.55);o=vec4(mix(u_c0,mix(u_c2,u_c1,f),a),1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [bg, sm, ac] = C(o);\n const f = fbm2(x * 3, y * 3 - t * 0.25, t * 0.2);\n return mixRgb(bg, mixRgb(ac, sm, f), sstep(0.38, 0.92, f) * (1.05 - y * 0.55));\n }),\n }),\n shader('fire', 'Licking flames from the bottom edge (WebGL2, Canvas 2D fallback).', ['#140404', '#e2401b', '#fbbf24'], {\n body: 'vec2 s=p*vec2(1.,1.4);s.y-=t*.9;float f=fbm(s*1.6+fbm(s*2.+t*.3));float g=f*(1.3-uv.y)*1.7-.3;vec3 c=mix(u_c0,u_c1,smoothstep(0.,.4,g));c=mix(c,u_c2,smoothstep(.35,.72,g));c=mix(c,vec3(1.,.96,.82),smoothstep(.72,1.05,g));o=vec4(c,1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [a, b, c] = C(o);\n const g = fbm2(x * 4, y * 5 - t * 0.9, t) * (1.3 - y) * 1.7 - 0.3;\n return mixRgb(mixRgb(mixRgb(a, b, sstep(0, 0.4, g)), c, sstep(0.35, 0.72, g)), [255, 245, 210], sstep(0.72, 1.05, g));\n }, 6),\n }),\n shader('ink', 'Ink blooming and drifting in water on a paper background (WebGL2, Canvas 2D fallback).', ['#f6f1e7', '#1e1b4b', '#be185d'], {\n body: 'vec2 q=vec2(fbm(p*.8+t*.04),fbm(p*.8+vec2(3.1,7.7)+t*.05));float f=fbm(p*1.2+2.5*q);float b=smoothstep(.48,.74,f+.12*sin(t*.4));o=vec4(mix(u_c0,mix(u_c1,u_c2,clamp(q.x*1.4-.2,0.,1.)),b),1.);',\n fallback: fieldFallback((x, y, t, o) => {\n const [bg, i1, i2] = C(o);\n const q = fbm2(x * 2 + t * 0.04, y * 2);\n const f = fbm2(x * 3 + q * 2.5, y * 3 + q * 2.5, t * 0.1);\n return mixRgb(bg, mixRgb(i1, i2, q * 1.4 - 0.2), sstep(0.48, 0.74, f));\n }),\n }, { scale: 2.4 }),\n shader('fireflies', 'Glowing fireflies wandering and blinking at dusk (WebGL2, Canvas 2D fallback).', ['#06121f', '#facc15', '#a3e635'], {\n body: 'vec3 c=u_c0*(.55+.45*uv.y);float ar=u_res.x/u_res.y;for(int i=0;i<28;i++){float fi=float(i);vec2 b=vec2(h(vec2(fi,1.)),h(vec2(fi,2.)));vec2 pos=fract(b+.07*vec2(sin(t*.3+fi),cos(t*.23+fi*1.7)));vec2 d=(uv-pos)*vec2(ar,1.);float k=.5+.5*sin(t*(1.+h(vec2(fi,3.))*2.)+fi*2.1);c+=mix(u_c1,u_c2,h(vec2(fi,4.)))*k*.00055/(dot(d,d)+.0003);}o=vec4(min(c,vec3(1.)),1.);',\n fallback: {\n init: (w, h) => ({ f: Array.from({ length: 28 }, () => [Math.random(), Math.random(), Math.random() * 6, Math.random()]) }),\n draw: ({ ctx, w, h, t, state, o }) => {\n ctx.fillStyle = o.colors[0];\n ctx.fillRect(0, 0, w, h);\n for (const [bx, by, ph, hue] of state.f) {\n const x = ((bx + 0.07 * Math.sin(t * 0.3 + ph)) % 1) * w;\n const y = ((by + 0.07 * Math.cos(t * 0.23 + ph)) % 1) * h;\n const k = 0.5 + 0.5 * Math.sin(t * 2 + ph * 3);\n const g = ctx.createRadialGradient(x, y, 0, x, y, 14);\n g.addColorStop(0, hue > 0.5 ? o.colors[1] : o.colors[2]);\n g.addColorStop(1, 'transparent');\n ctx.globalAlpha = 0.25 + k * 0.75;\n ctx.fillStyle = g;\n ctx.fillRect(x - 14, y - 14, 28, 28);\n }\n ctx.globalAlpha = 1;\n },\n },\n }),\n];\n\ninterface Flake {\n x: number;\n y: number;\n r: number;\n a: number;\n va: number;\n vy: number;\n ph: number;\n c: string;\n}\nconst fall = (draw: (ctx: CanvasRenderingContext2D, f: Flake) => void): GenerativeSpec => ({\n init: (w, h, o) => ({ f: Array.from({ length: o.count }, (): Flake => ({ x: Math.random() * w, y: Math.random() * h, r: rand(5, 11) * (o.size || 1), a: rand(0, 6.3), va: rand(-1.5, 1.5), vy: rand(18, 46), ph: rand(0, 6.3), c: o.colors[Math.floor(Math.random() * o.colors.length)] })), last: 0 }),\n draw: ({ ctx, w, h, t, state, o, quality }) => {\n const dt = state.last ? Math.min(0.05, t - state.last) : 0;\n state.last = t;\n ctx.clearRect(0, 0, w, h);\n const n = Math.max(4, Math.round(state.f.length * quality));\n for (let i = 0; i < n; i++) {\n const f: Flake = state.f[i];\n f.y += f.vy * dt * o.speed;\n f.x += (Math.sin(t * 1.2 + f.ph) * 22 + (o.wind || 0)) * dt * o.speed;\n f.a += f.va * dt * o.speed;\n if (f.y > h + 16) (f.y = -16), (f.x = Math.random() * w);\n if (f.x > w + 16) f.x = -16;\n if (f.x < -16) f.x = w + 16;\n ctx.save();\n ctx.translate(f.x, f.y);\n ctx.rotate(f.a);\n ctx.scale(1, 0.55 + 0.45 * Math.abs(Math.cos(t * 1.7 + f.ph)));\n ctx.fillStyle = f.c;\n draw(ctx, f);\n ctx.restore();\n }\n },\n});\nconst particles = (name: string, description: string, defaults: Record<string, unknown>, spec: GenerativeSpec): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { speed: 1, quality: 1, ...defaults },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const stop = canvasBackground(el, ctx, spec, o);\n ctx.onCleanup(stop);\n return stop;\n },\n});\n\nGPU_FX.push(\n particles('sakura', 'Cherry-blossom petals drifting down, swaying and flipping (Canvas 2D).', { count: 46, colors: ['#ffc8dd', '#ffafcc', '#fde2e4', '#f9a8d4'], wind: 14 }, fall((ctx, f) => {\n ctx.beginPath();\n ctx.moveTo(0, -f.r);\n ctx.bezierCurveTo(f.r, -f.r, f.r * 0.9, f.r * 0.6, 0, f.r);\n ctx.bezierCurveTo(-f.r * 0.9, f.r * 0.6, -f.r, -f.r, 0, -f.r * 0.55);\n ctx.fill();\n })),\n particles('leaves', 'Autumn leaves tumbling down in the wind (Canvas 2D).', { count: 30, size: 1.4, colors: ['#ea580c', '#d97706', '#b45309', '#dc2626', '#ca8a04'], wind: 26 }, fall((ctx, f) => {\n ctx.beginPath();\n ctx.moveTo(0, -f.r);\n ctx.quadraticCurveTo(f.r * 0.9, -f.r * 0.2, 0, f.r);\n ctx.quadraticCurveTo(-f.r * 0.9, -f.r * 0.2, 0, -f.r);\n ctx.fill();\n ctx.strokeStyle = 'rgba(0,0,0,.25)';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(0, -f.r * 0.8);\n ctx.lineTo(0, f.r * 1.25);\n ctx.stroke();\n }))\n);\n\nGPU_FX.push({\n name: 'splash',\n kind: 'click',\n description: 'A water splash from the pointer: a ring plus droplets that arc out and fall with gravity.',\n defaults: { color: '#38bdf8', count: 14 },\n run: (el: HTMLElement, o: any, ctx: EffectContext) => {\n const { x, y } = origin(el, ctx);\n if (ctx.reduced) return spawn(x - 12, y - 12, `width:24px;height:24px;border-radius:50%;background:${o.color};opacity:.5`, ctx, [{ opacity: 0.5 }, { opacity: 0 }], { duration: 300 });\n const anims: (Animation | null)[] = [\n spawn(x - 30, y - 30, `width:60px;height:60px;border-radius:50%;border:3px solid ${o.color}`, ctx, [{ transform: 'scale(.2)', opacity: 1 }, { transform: 'scale(1.6)', opacity: 0 }], { duration: 520, easing: 'cubic-bezier(.2,.8,.3,1)' }),\n ];\n for (let i = 0; i < o.count; i++) {\n const ang = -Math.PI / 2 + rand(-1.15, 1.15);\n const v = rand(50, 110);\n const dx = Math.cos(ang) * v;\n const s = rand(4, 9);\n const peak = Math.sin(ang) * v;\n anims.push(spawn(x - s / 2, y - s / 2, `width:${s}px;height:${s * 1.25}px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:${o.color}`, ctx, [\n { transform: 'translate(0,0) scale(1)', opacity: 1 },\n { transform: `translate(${dx * 0.6}px,${peak}px) scale(1)`, opacity: 1, offset: 0.45, easing: 'cubic-bezier(.3,0,.7,1)' },\n { transform: `translate(${dx}px,${peak + 90}px) scale(.6)`, opacity: 0 },\n ], { duration: rand(650, 900), easing: 'cubic-bezier(.15,.6,.4,1)' }));\n }\n return all(anims);\n },\n});\n\n/** Register the 6.2 GPU pack (idempotent). */\nexport function registerGpuPack(): void {\n registerEffects(GPU_FX);\n}\n\n"],"names":["rgb"],"mappings":";;;;AAcA;AACO,MAAM,SAAS,GAAG,CAAA;;;;;;;AAQzB;;;;AAIG;AACG,SAAU,UAAU,CAAC,IAAY,EAAA;AACrC,IAAA,IAAI,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC1H,IAAI,CAAC,GAAG,IAAI;AACZ,IAAA,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;IACtI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,6BAA6B,EAAE,iBAAiB,CAAC;IAC/D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,aAAa,CAAC;IACpD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,2BAA2B,EAAE,gBAAgB,CAAC;IAC5D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC;AAClD,IAAA,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC;IAC7J,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAC1C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC;AAC5C,IAAA,IAAI,8CAA8C,CAAC,IAAI,CAAC,CAAC,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACtG,IAAA,OAAO,CAAC;AACV;AAEA;AACO,MAAM,UAAU,GAAG,CAAC,IAAY,KACrC,CAAA,EAAG,SAAS,CAAA,kMAAA,EAAqM,IAAI;AAEvN;AACO,MAAM,cAAc,GAAG,MAAe,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAE,SAA2C,CAAC;AAEhI,MAAMA,KAAG,GAAG,CAAC,CAAS,KAAe,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAE1E;;;AAGG;AACI,eAAe,gBAAgB,CAAC,EAAe,EAAE,EAAiB,EAAE,IAAqC,EAAE,CAAM,EAAA;IACtH,IAAI,CAAC,cAAc,EAAE;AAAE,QAAA,OAAO,IAAI;AAClC,IAAA,IAAI,IAAY;AAChB,IAAA,IAAI;AACF,QAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,GAAG,GAAI,SAAiB,CAAC,GAAG;AAClC,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,IAAI;AAChD,QAAA,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;YAAE,QAAQ,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI;QAC1F,IAAI,CAAC,EAAE,CAAC,WAAW;YAAE,QAAQ,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAQ;AAC9C,QAAA,IAAI,CAAC,GAAG;YAAE,QAAQ,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI;AAC1C,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,wBAAwB,EAAE;AAC7C,QAAA,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACtD,QAAA,MAAM,CAAC,cAAc,GAAG,YAAY,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC;QAC/M,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,2BAA2B,CAAC;AAC1F,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACtI,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,IAAI;AAC1C,QAAA,IAAI,GAAG;YAAE,QAAQ,MAAM,CAAC,OAAO,IAAI,EAAE,IAAI;AACzC,QAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC1C,QAAA,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC;AAC7C,QAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,uGAAuG;QAC9H,MAAM,OAAO,GAAuB,EAAE;AACtC,QAAA,MAAM,GAAG,GAAG,CAAC,CAA2B,EAAE,CAAS,KAAI;AACrD,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACjB,QAAA,CAAC;AACD,QAAA,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,QAAQ;AAAE,YAAA,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;AAC3E,QAAA,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;AAC3B,QAAA,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AAClB,QAAA,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ;AAChC,QAAA,MAAM,IAAI,GAAa,CAAC,CAAC,MAAM,IAAI,EAAE;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5D,QAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAACA,KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,QAAA,IAAI,GAAG,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;QACtC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QACnE,IAAI,GAAG,GAAG,CAAC;QACX,IAAI,OAAO,GAAG,IAAI;AAClB,QAAA,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAK;AAClB,YAAA,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,IAAI,CAAC,CAAC,GAAG,OAAO;YACxD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACzD,QAAA,CAAC;AACD,QAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAI;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;AACvC,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,EAAE;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACnL,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,QAAA,CAAC;QACD,IAAI,IAAI,GAAG,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;YAC5B,GAAG,GAAG,CAAC;AACP,YAAA,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,OAAO,GAAG,GAAG;gBAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE;YAC7H,IAAI,GAAG,GAAG;YACV,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC;AACvB,YAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;AAAE,gBAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACrE,QAAA,CAAC;QACD,MAAM,KAAK,GAAG,MAAK;AACjB,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO;AAAE,gBAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7D,QAAA,CAAC;AACD,QAAA,MAAM,EAAE;AACR,QAAA,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,QAAA,MAAM,IAAI,GAAG,CAAC,CAAe,KAAI;AAC/B,YAAA,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE;YACpC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACtG,QAAA,CAAC;AACD,QAAA,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC;AACxC,QAAA,MAAM,EAAE,GAAG,OAAO,oBAAoB,KAAK,UAAU,GAAG,IAAI,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI;AACxJ,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACf,QAAA,MAAM,EAAE,GAAG,OAAO,cAAc,KAAK,UAAU,GAAG,IAAI,cAAc,CAAC,OAAO,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACpH,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACf,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,EAAE;AACxD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,CAAC;AAClD,QAAA,KAAK,EAAE;AACP,QAAA,OAAO,MAAK;YACV,oBAAoB,CAAC,GAAG,CAAC;YACzB,EAAE,EAAE,UAAU,EAAE;YAChB,EAAE,EAAE,UAAU,EAAE;AAChB,YAAA,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;AAC3C,YAAA,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,GAAG,CAAC;YACrD,MAAM,CAAC,MAAM,EAAE;AACf,YAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO;AAAE,gBAAA,EAAE,CAAC,KAAK,CAAC,CAAe,CAAC,GAAG,CAAC;AAC3D,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU;AAC5B,YAAA,MAAM,CAAC,OAAO,IAAI;AACpB,QAAA,CAAC;IACH;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,IAAI;IACb;AACF;;ACnJA;AACO,MAAM,SAAS,GAAG,CAAA;;;;;;;;AAQzB,MAAM,IAAI,GAAG,CAAA;kDACqC;AAWlD;AACA,IAAI,GAAG,GAAmB,IAAI;SACd,cAAc,GAAA;IAC5B,IAAI,GAAG,KAAK,IAAI;AAAE,QAAA,OAAO,GAAG;AAC5B,IAAA,IAAI;AACF,QAAA,GAAG,GAAG,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClG;AAAE,IAAA,MAAM;QACN,GAAG,GAAG,KAAK;IACb;AACA,IAAA,OAAO,GAAG;AACZ;AAEA,SAAS,OAAO,CAAC,EAA0B,EAAE,IAAY,EAAA;AACvD,IAAA,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,GAAW,KAAI;QACvC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAE;AAChC,QAAA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC;AACvB,QAAA,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACnB,QAAA,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI;AAC/D,IAAA,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC;IACpC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC;AACtC,IAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAAE,QAAA,OAAO,IAAI;AACzB,IAAA,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,EAAG;AAC7B,IAAA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,IAAA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IACrB,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAChC,IAAA,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACjB,IAAA,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;AAC7D;AAEA,MAAM,GAAG,GAAG,CAAC,CAAS,KAA+B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAA6B;AAE9G;;;;;AAKG;AACG,SAAU,gBAAgB,CAAC,EAAe,EAAE,EAAiB,EAAE,IAAgB,EAAE,CAAM,EAAA;AAC3F,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,MAAM;AAChC,IAAA,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,KAAK,cAAc,EAAE,EAAE;QAC9D,IAAI,IAAI,GAAwB,IAAI;QACpC,IAAI,IAAI,GAAG,KAAK;AAChB,QAAA,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC3C,YAAA,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI;AACtB,YAAA,IAAI,GAAG,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAK;YACV,IAAI,GAAG,IAAI;YACX,IAAI,IAAI;AACV,QAAA,CAAC;IACH;IACA,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC;AAEA,SAAS,eAAe,CAAC,EAAe,EAAE,EAAiB,EAAE,IAAgB,EAAE,CAAM,EAAA;IACnF,MAAM,QAAQ,GAAG,MAAK;AACpB,QAAA,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ;AAChC,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,EAAE;AACN,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU;AAC9B,QAAA,CAAC;AACH,IAAA,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,QAAQ,EAAE;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;IAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAkC;AACzI,IAAA,MAAM,IAAI,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAA,EAAG,SAAS,4GAA4G,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;AACpK,IAAA,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,EAAE;AACnC,IAAA,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ;AAChC,IAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC1C,IAAA,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC;AAC7C,IAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,uGAAuG;IAC9H,MAAM,OAAO,GAAuB,EAAE;AACtC,IAAA,MAAM,GAAG,GAAG,CAAC,CAA2B,EAAE,CAAS,KAAI;AACrD,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AACjB,IAAA,CAAC;AACD,IAAA,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,QAAQ;AAAE,QAAA,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;AAC3E,IAAA,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;AAC3B,IAAA,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AAClB,IAAA,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,IAAA,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,EAAE;IAC7B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC;AACnC,IAAA,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC;AACxF,IAAA,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC7B,IAAA,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,IAAA,MAAM,CAAC,GAAG,CAAC,CAAS,KAAK,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,IAAA,MAAM,IAAI,GAAa,CAAC,CAAC,MAAM,IAAI,EAAE;AACrC,IAAA,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;AACrG,IAAA,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChD,IAAA,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChD,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;AACvB,IAAA,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;AACnB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;AACvB,IAAA,IAAI,GAAG,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IACnE,IAAI,GAAG,GAAG,CAAC;IACX,IAAI,OAAO,GAAG,IAAI;IAClB,IAAI,IAAI,GAAG,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;IAC5B,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,IAAI,CAAC,CAAC,GAAG,OAAO;QACxD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACvD,QAAA,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AAC9C,QAAA,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACjD,IAAA,CAAC;AACD,IAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAI;AACzB,QAAA,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;AACnB,QAAA,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AACnC,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;QAC5B,GAAG,GAAG,CAAC;AACP,QAAA,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,OAAO,GAAG,GAAG,EAAE;YAC3D,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;YACvC,IAAI,GAAG,CAAC;AACR,YAAA,MAAM,EAAE;QACV;QACA,IAAI,GAAG,GAAG;QACV,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC;AACvB,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;AAAE,YAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACrE,IAAA,CAAC;IACD,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO;AAAE,YAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7D,IAAA,CAAC;AACD,IAAA,MAAM,EAAE;AACR,IAAA,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,IAAA,MAAM,IAAI,GAAG,CAAC,CAAe,KAAI;AAC/B,QAAA,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE;QACpC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACtG,IAAA,CAAC;AACD,IAAA,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC;AACxC,IAAA,MAAM,EAAE,GAAG,OAAO,oBAAoB,KAAK,UAAU,GAAG,IAAI,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI;AACxJ,IAAA,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACf,IAAA,MAAM,EAAE,GAAG,OAAO,cAAc,KAAK,UAAU,GAAG,IAAI,cAAc,CAAC,OAAO,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACpH,IAAA,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACf,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,EAAE;AACxD,IAAA,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAClD,IAAI,OAAO,GAAwB,IAAI;AACvC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAQ,KAAI;QACxB,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,EAAE;QACN,OAAO,GAAG,QAAQ,EAAE;AACtB,IAAA,CAAC;AACD,IAAA,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC;IACjD,MAAM,IAAI,GAAG,MAAK;QAChB,oBAAoB,CAAC,GAAG,CAAC;QACzB,GAAG,GAAG,CAAC;QACP,EAAE,EAAE,UAAU,EAAE;QAChB,EAAE,EAAE,UAAU,EAAE;AAChB,QAAA,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;AAC3C,QAAA,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,GAAG,CAAC;AACrD,QAAA,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC;QACpD,MAAM,CAAC,MAAM,EAAE;AACf,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO;AAAE,YAAA,EAAE,CAAC,KAAK,CAAC,CAAe,CAAC,GAAG,CAAC;AAC7D,IAAA,CAAC;AACD,IAAA,KAAK,EAAE;AACP,IAAA,OAAO,MAAK;AACV,QAAA,IAAI,OAAO;YAAE,OAAO,OAAO,EAAE;AAC7B,QAAA,IAAI,EAAE;QACN,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE;AACpD,QAAA,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU;AAC9B,IAAA,CAAC;AACH;AAEA;;;AAGG;SACa,aAAa,CAAC,KAA4E,EAAE,IAAI,GAAG,CAAC,EAAA;IAClH,OAAO;AACL,QAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YACb,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC1C,YAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1C,YAAA,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;QAC7D,CAAC;AACD,QAAA,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAI;YACnC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG;gBAAE;AAChB,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AAC/B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AAChC,oBAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,oBAAA,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC;AAC/B,oBAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACR,oBAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACZ,oBAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACZ,oBAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;gBAChB;YACF,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzB,YAAA,GAAG,CAAC,qBAAqB,GAAG,IAAI;AAChC,YAAA,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;KACF;AACH;AAEA;AACO,MAAM,MAAM,GAAG,CAAC,CAAW,EAAE,CAAW,EAAE,CAAS,KAA8B;AACtF,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvF,CAAC;AACD;AACO,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,KAAY;IAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AACD;AACO,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAC,GAAG,CAAC,KAAa,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;;ACrO5I,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAE,MAAgB,EAAE,IAAgB,EAAE,KAAA,GAAiC,EAAE,MAAwB;IAChJ,IAAI;AACJ,IAAA,IAAI,EAAE,YAAY;IAClB,WAAW;AACX,IAAA,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;IAClF,GAAG,EAAE,CAAC,EAAe,EAAE,CAAM,EAAE,GAAkB,KAAI;AACnD,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAA,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACnB,QAAA,OAAO,IAAI;IACb,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,CAAC,GAAG,CAAC,CAAM,KAAM,CAAC,CAAC,MAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;AAEjD,MAAM,MAAM,GAAuB;AACxC,IAAA,MAAM,CAAC,OAAO,EAAE,wFAAwF,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AAC3I,QAAA,IAAI,EAAE,2PAA2P;AACjQ,QAAA,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACrD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC/D,QAAA,CAAC,CAAC;KACH,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,EAAE,6DAA6D,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AAChH,QAAA,IAAI,EAAE,2IAA2I;AACjJ,QAAA,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;AAChD,YAAA,OAAO,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAChF,QAAA,CAAC,CAAC;KACH,CAAC;AACF,IAAA,MAAM,CAAC,MAAM,EAAE,mEAAmE,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACrH,QAAA,IAAI,EAAE,4OAA4O;AAClP,QAAA,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;YACjE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvH,CAAC,EAAE,CAAC,CAAC;KACN,CAAC;AACF,IAAA,MAAM,CAAC,KAAK,EAAE,wFAAwF,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACzI,QAAA,IAAI,EAAE,gMAAgM;AACtM,QAAA,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;YACzD,OAAO,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxE,QAAA,CAAC,CAAC;AACH,KAAA,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClB,IAAA,MAAM,CAAC,WAAW,EAAE,gFAAgF,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;AACvI,QAAA,IAAI,EAAE,0WAA0W;AAChX,QAAA,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3H,YAAA,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAI;gBACnC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxB,gBAAA,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;oBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,oBAAA,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9C,oBAAA,MAAM,CAAC,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD,oBAAA,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC;oBAChC,GAAG,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI;AACjC,oBAAA,GAAG,CAAC,SAAS,GAAG,CAAC;AACjB,oBAAA,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBACtC;AACA,gBAAA,GAAG,CAAC,WAAW,GAAG,CAAC;YACrB,CAAC;AACF,SAAA;KACF,CAAC;;AAaJ,MAAM,IAAI,GAAG,CAAC,IAAuD,MAAsB;AACzF,IAAA,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,OAAc,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACvS,IAAA,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAI;QAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1D,QAAA,KAAK,CAAC,IAAI,GAAG,CAAC;QACd,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;AAC3D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK;AAC1B,YAAA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK;AACrE,YAAA,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK;AAC1B,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;gBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AAAE,gBAAA,CAAC,CAAC,CAAC,GAAG,GAAG;AAC3B,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;AAAE,gBAAA,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;YAC3B,GAAG,CAAC,IAAI,EAAE;YACV,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,YAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,YAAA,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACZ,GAAG,CAAC,OAAO,EAAE;QACf;IACF,CAAC;AACF,CAAA,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAE,QAAiC,EAAE,IAAoB,MAAwB;IACnI,IAAI;AACJ,IAAA,IAAI,EAAE,YAAY;IAClB,WAAW;AACX,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE;IAC/C,GAAG,EAAE,CAAC,EAAe,EAAE,CAAM,EAAE,GAAkB,KAAI;AACnD,QAAA,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAA,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACnB,QAAA,OAAO,IAAI;IACb,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,QAAQ,EAAE,wEAAwE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;IAC3L,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,IAAA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACpE,GAAG,CAAC,IAAI,EAAE;AACZ,CAAC,CAAC,CAAC,EACH,SAAS,CAAC,QAAQ,EAAE,sDAAsD,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;IAC/L,GAAG,CAAC,SAAS,EAAE;IACf,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,IAAI,EAAE;AACV,IAAA,GAAG,CAAC,WAAW,GAAG,iBAAiB;AACnC,IAAA,GAAG,CAAC,SAAS,GAAG,CAAC;IACjB,GAAG,CAAC,SAAS,EAAE;AACf,IAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACzB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACzB,GAAG,CAAC,MAAM,EAAE;AACd,CAAC,CAAC,CAAC,CACJ;AAED,MAAM,CAAC,IAAI,CAAC;AACV,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,WAAW,EAAE,2FAA2F;IACxG,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IACzC,GAAG,EAAE,CAAC,EAAe,EAAE,CAAM,EAAE,GAAkB,KAAI;AACnD,QAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC;QAChC,IAAI,GAAG,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,uDAAuD,CAAC,CAAC,KAAK,CAAA,WAAA,CAAa,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACtL,QAAA,MAAM,KAAK,GAAyB;YAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAA,0DAAA,EAA6D,CAAC,CAAC,KAAK,CAAA,CAAE,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;SAC7O;AACD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA,MAAA,EAAS,CAAC,CAAA,UAAA,EAAa,CAAC,GAAG,IAAI,CAAA,4DAAA,EAA+D,CAAC,CAAC,KAAK,CAAA,CAAE,EAAE,GAAG,EAAE;AACnJ,gBAAA,EAAE,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC,EAAE;gBACpD,EAAE,SAAS,EAAE,CAAA,UAAA,EAAa,EAAE,GAAG,GAAG,CAAA,GAAA,EAAM,IAAI,CAAA,YAAA,CAAc,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE;AACzH,gBAAA,EAAE,SAAS,EAAE,CAAA,UAAA,EAAa,EAAE,CAAA,GAAA,EAAM,IAAI,GAAG,EAAE,CAAA,aAAA,CAAe,EAAE,OAAO,EAAE,CAAC,EAAE;AACzE,aAAA,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxE;AACA,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;AACF,CAAA,CAAC;AAEF;SACgB,eAAe,GAAA;IAC7B,eAAe,CAAC,MAAM,CAAC;AACzB;;;;"}
|