use-scroll-animate 6.1.1 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/dist/chunks/{base-Yno7N2eC.js → base-DchG4q_S.js} +2 -2
- package/dist/chunks/{base-Yno7N2eC.js.map → base-DchG4q_S.js.map} +1 -1
- package/dist/chunks/{core-BIOaYdgN.js → core-D2vF8kZb.js} +2 -2
- package/dist/chunks/{core-BIOaYdgN.js.map → core-D2vF8kZb.js.map} +1 -1
- package/dist/chunks/{core-CUGCsMsJ.js → core-DVyTlo9Q.js} +2 -2
- package/dist/chunks/{core-CUGCsMsJ.js.map → core-DVyTlo9Q.js.map} +1 -1
- package/dist/chunks/{fx-BqDeFywO.js → fx-DUMVKSvg.js} +2 -2
- package/dist/chunks/{fx-BqDeFywO.js.map → fx-DUMVKSvg.js.map} +1 -1
- package/dist/chunks/generative-BHIj-NU0.cjs +295 -0
- package/dist/chunks/generative-BHIj-NU0.cjs.map +1 -0
- package/dist/chunks/generative-BRUZaIsX.js +290 -0
- package/dist/chunks/generative-BRUZaIsX.js.map +1 -0
- package/dist/chunks/gpu-BBRLgEzM.cjs +388 -0
- package/dist/chunks/gpu-BBRLgEzM.cjs.map +1 -0
- package/dist/chunks/gpu-XHWzeNb5.js +381 -0
- package/dist/chunks/gpu-XHWzeNb5.js.map +1 -0
- package/dist/chunks/registry-Bu5NrAyA.js +121 -0
- package/dist/chunks/registry-Bu5NrAyA.js.map +1 -0
- package/dist/chunks/registry-DehBVRDV.cjs +131 -0
- package/dist/chunks/registry-DehBVRDV.cjs.map +1 -0
- package/dist/chunks/shared-eweTlzxv.js +50 -0
- package/dist/chunks/shared-eweTlzxv.js.map +1 -0
- package/dist/chunks/shared-jkgRH-Hx.cjs +58 -0
- package/dist/chunks/shared-jkgRH-Hx.cjs.map +1 -0
- package/dist/chunks/{spring-DfQO5USi.js → spring-BhoT09Qb.js} +2 -2
- package/dist/chunks/{spring-DfQO5USi.js.map → spring-BhoT09Qb.js.map} +1 -1
- package/dist/chunks/{variants-VNscPeTD.js → variants-C_hv_s23.js} +2 -2
- package/dist/chunks/{variants-VNscPeTD.js.map → variants-C_hv_s23.js.map} +1 -1
- package/dist/components/a11y.js +2 -2
- package/dist/components/angular.cjs +1 -0
- package/dist/components/angular.cjs.map +1 -1
- package/dist/components/angular.js +7 -6
- package/dist/components/angular.js.map +1 -1
- package/dist/components/background.js +2 -2
- package/dist/components/bridge.js +1 -1
- package/dist/components/cards.js +2 -2
- package/dist/components/click.js +3 -3
- package/dist/components/depth.js +3 -3
- package/dist/components/effects.cjs +72 -403
- package/dist/components/effects.cjs.map +1 -1
- package/dist/components/effects.js +9 -339
- package/dist/components/effects.js.map +1 -1
- package/dist/components/feedback.js +1 -1
- package/dist/components/fx-gpu.cjs +13 -0
- package/dist/components/fx-gpu.cjs.map +1 -0
- package/dist/components/fx-gpu.d.cts +63 -0
- package/dist/components/fx-gpu.d.ts +63 -0
- package/dist/components/fx-gpu.js +6 -0
- package/dist/components/fx-gpu.js.map +1 -0
- package/dist/components/fx-text.cjs +267 -0
- package/dist/components/fx-text.cjs.map +1 -0
- package/dist/components/fx-text.d.cts +70 -0
- package/dist/components/fx-text.d.ts +70 -0
- package/dist/components/fx-text.js +263 -0
- package/dist/components/fx-text.js.map +1 -0
- package/dist/components/fx.cjs +13 -133
- package/dist/components/fx.cjs.map +1 -1
- package/dist/components/fx.js +6 -125
- package/dist/components/fx.js.map +1 -1
- package/dist/components/fx2.cjs +32 -0
- package/dist/components/fx2.cjs.map +1 -0
- package/dist/components/fx2.d.cts +162 -0
- package/dist/components/fx2.d.ts +162 -0
- package/dist/components/fx2.js +22 -0
- package/dist/components/fx2.js.map +1 -0
- package/dist/components/gesture.js +4 -4
- package/dist/components/interaction.js +1 -1
- package/dist/components/layout.js +1 -1
- package/dist/components/lite.cjs +5 -9
- package/dist/components/lite.cjs.map +1 -1
- package/dist/components/lite.js +5 -9
- package/dist/components/lite.js.map +1 -1
- package/dist/components/packs.js +1 -1
- package/dist/components/page.js +3 -3
- package/dist/components/perf.js +2 -2
- package/dist/components/physics.js +3 -3
- package/dist/components/reveal.js +1 -1
- package/dist/components/solid.cjs +1 -0
- package/dist/components/solid.cjs.map +1 -1
- package/dist/components/solid.js +7 -6
- package/dist/components/solid.js.map +1 -1
- package/dist/components/svelte.cjs +1 -0
- package/dist/components/svelte.cjs.map +1 -1
- package/dist/components/svelte.js +7 -6
- package/dist/components/svelte.js.map +1 -1
- package/dist/components/svg.js +1 -1
- package/dist/components/text.js +2 -2
- package/dist/components/timeline.js +3 -3
- package/dist/components/transitions.js +1 -1
- package/dist/components/ui.js +4 -4
- package/dist/components/vue.cjs +1 -0
- package/dist/components/vue.cjs.map +1 -1
- package/dist/components/vue.js +7 -6
- package/dist/components/vue.js.map +1 -1
- package/dist/components/webgl.js +1 -1
- package/dist/components/widgets.cjs +1174 -0
- package/dist/components/widgets.cjs.map +1 -0
- package/dist/components/widgets.d.cts +206 -0
- package/dist/components/widgets.d.ts +206 -0
- package/dist/components/widgets.js +1155 -0
- package/dist/components/widgets.js.map +1 -0
- package/dist/components.cjs +10 -9
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +10 -9
- package/dist/components.js.map +1 -1
- package/dist/components.umd.js +2 -2
- package/dist/components.umd.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/widgets.umd.js +2 -0
- package/dist/widgets.umd.js.map +1 -0
- package/docs/ROADMAP.md +10 -11
- package/docs/components.md +61 -0
- package/package.json +41 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generative-BRUZaIsX.js","sources":["../../src/components/effects/generative.ts"],"sourcesContent":["/**\n * 5.5 — generative backgrounds on Canvas 2D, registered through\n * `registerEffect()` (kind `background`): `flow-field`, `voronoi`,\n * `mesh-gradient`, `starfield`, `metaballs`, `contours`.\n *\n * Shared runner (`canvasBackground()`): a canvas behind the element's content\n * (`aria-hidden`, pointer-transparent), rendering only while visible\n * (IntersectionObserver) and the tab is shown, with adaptive quality — the\n * render scale drops when frames get slow and recovers when they are fast.\n * Reduced motion: one static frame, no loop.\n */\nimport type { EffectContext, EffectDefinition } from '../fx/registry';\nimport { PALETTE } from './shared';\n\nexport interface GenFrame {\n ctx: CanvasRenderingContext2D;\n /** CSS-pixel size of the canvas. */\n w: number;\n h: number;\n /** Seconds since start (0 for the static reduced-motion frame). */\n t: number;\n /** Render scale 0.35–1 (adaptive quality). */\n quality: number;\n /** Per-effect state, created by `init`. */\n state: any;\n /** Merged options. */\n o: any;\n}\n\nexport interface GenerativeSpec {\n init?: (w: number, h: number, o: any) => any;\n draw: (f: GenFrame) => void;\n}\n\n/** Deterministic smooth pseudo-noise in [-1, 1] (sum of sines — cheap, no tables). */\nexport function noise2(x: number, y: number, t = 0): number {\n return (Math.sin(x * 1.7 + t) * Math.cos(y * 1.3 - t * 0.7) + Math.sin((x + y) * 0.9 + t * 0.5) * 0.5 + Math.cos(x * 0.6 - y * 1.1 - t * 0.3) * 0.5) / 2;\n}\n\n/** Hex `#rrggbb` → [r, g, b]. */\nexport function hexRgb(hex: string): [number, number, number] {\n const m = /^#?([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/i.exec(hex.trim());\n return m ? [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16)] : [124, 92, 255];\n}\n\n/**\n * Mount a generative canvas behind `el` and run `spec` on it. Returns the\n * cleanup. Exposed for custom generative effects.\n */\nexport function canvasBackground(el: HTMLElement, fx: EffectContext, spec: GenerativeSpec, o: any): () => void {\n const canvas = document.createElement('canvas');\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 const ctx = canvas.getContext('2d');\n let raf = 0;\n let visible = true;\n let quality = Math.min(1, Math.max(0.35, Number(o.quality) || 1));\n let w = 0;\n let h = 0;\n let state: any = null;\n const t0 = performance.now();\n let last = t0;\n let slow = 0;\n let fast = 0;\n const resize = () => {\n const r = el.getBoundingClientRect();\n w = Math.max(1, Math.round(r.width));\n h = Math.max(1, Math.round(r.height));\n const dpr = Math.min(2, (typeof devicePixelRatio === 'number' ? devicePixelRatio : 1) || 1) * quality;\n canvas.width = Math.max(1, Math.round(w * dpr));\n canvas.height = Math.max(1, Math.round(h * dpr));\n if (ctx) ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n state = spec.init ? spec.init(w, h, o) : {};\n };\n const frame = (now: number) => {\n raf = 0;\n if (!ctx) return;\n const dt = now - last;\n last = now;\n // adaptive quality: sustained slow frames lower the render scale, fast ones raise it\n if (dt > 28) slow++;\n else if (dt < 18) fast++;\n if (slow > 20 && quality > 0.35) {\n quality = Math.max(0.35, quality - 0.15);\n slow = fast = 0;\n resize();\n } else if (fast > 240 && quality < 1) {\n quality = Math.min(1, quality + 0.15);\n slow = fast = 0;\n resize();\n }\n spec.draw({ ctx, w, h, t: (now - t0) / 1000, quality, state, o });\n if (visible && !document.hidden) raf = requestAnimationFrame(frame);\n };\n const start = () => {\n if (!raf && ctx && !fx.reduced) {\n last = performance.now();\n raf = requestAnimationFrame(frame);\n }\n };\n resize();\n if (ctx) spec.draw({ ctx, w, h, t: 0, quality, state, o }); // first / static frame\n const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => {\n visible = es.some((e) => e.isIntersecting);\n if (visible) start();\n }) : null;\n io?.observe(el);\n const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => {\n resize();\n if (ctx && fx.reduced) spec.draw({ ctx, w, h, t: 0, quality, state, o });\n }) : 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 raf = 0;\n io?.disconnect();\n ro?.disconnect();\n document.removeEventListener('visibilitychange', vis);\n canvas.remove();\n for (const [k, v] of restore) el.style[k as 'position'] = v;\n };\n}\n\nconst gen = (name: string, description: string, defaults: Record<string, unknown>, spec: GenerativeSpec): EffectDefinition => ({\n name,\n kind: 'background',\n description,\n reduced: 'run',\n defaults: { colors: PALETTE, background: '#0b0d12', speed: 1, quality: 1, ...defaults },\n run: (el, o: any, ctx) => canvasBackground(el, ctx, spec, o),\n});\n\n/** Low-resolution scalar field → ImageData, drawn scaled up (used by voronoi / metaballs / contours). */\nfunction field(f: GenFrame, cell: number, px: (x: number, y: number, out: Uint8ClampedArray, i: number) => void): void {\n const step = Math.max(2, Math.round(cell / f.quality));\n const cw = Math.max(1, Math.ceil(f.w / step));\n const ch = Math.max(1, Math.ceil(f.h / step));\n const st = f.state;\n if (!st.buf || st.buf.width !== cw || st.buf.height !== ch) {\n st.buf = document.createElement('canvas');\n st.buf.width = cw;\n st.buf.height = ch;\n st.bctx = st.buf.getContext('2d');\n st.img = st.bctx?.createImageData(cw, ch);\n }\n if (!st.bctx || !st.img) return;\n const d = st.img.data as Uint8ClampedArray;\n for (let y = 0; y < ch; y++) for (let x = 0; x < cw; x++) px(x * step, y * step, d, (y * cw + x) * 4);\n st.bctx.putImageData(st.img, 0, 0);\n f.ctx.imageSmoothingEnabled = true;\n f.ctx.drawImage(st.buf, 0, 0, f.w, f.h);\n}\n\nexport const GENERATIVE_FX: EffectDefinition[] = [\n gen('flow-field', 'Particles drift along a slowly changing flow field, leaving silky trails.', { count: 600, fade: 0.06 }, {\n init: (w, h, o) => ({ p: Array.from({ length: o.count }, () => [Math.random() * w, Math.random() * h]) }),\n draw: ({ ctx, w, h, t, state, o, quality }) => {\n ctx.fillStyle = o.background;\n ctx.globalAlpha = t === 0 ? 1 : o.fade;\n ctx.fillRect(0, 0, w, h);\n ctx.globalAlpha = 0.8;\n const n = Math.round(state.p.length * quality);\n const steps = t === 0 ? 40 : 1;\n for (let i = 0; i < n; i++) {\n const q = state.p[i];\n ctx.fillStyle = o.colors[i % o.colors.length];\n for (let s = 0; s < steps; s++) {\n const a = noise2(q[0] * 0.004, q[1] * 0.004, t * 0.15 * o.speed) * Math.PI * 2;\n q[0] += Math.cos(a) * 1.2 * o.speed;\n q[1] += Math.sin(a) * 1.2 * o.speed;\n if (q[0] < 0 || q[0] > w || q[1] < 0 || q[1] > h) (q[0] = Math.random() * w), (q[1] = Math.random() * h);\n ctx.fillRect(q[0], q[1], 1.4, 1.4);\n }\n }\n ctx.globalAlpha = 1;\n },\n }),\n gen('voronoi', 'Drifting Voronoi cells in the palette, with darker borders.', { seeds: 14, cell: 6 }, {\n init: (w, h, o) => ({ s: Array.from({ length: o.seeds }, (_, i) => ({ x: Math.random() * w, y: Math.random() * h, vx: Math.random() - 0.5, vy: Math.random() - 0.5, c: hexRgb(o.colors[i % o.colors.length]) })) }),\n draw: (f) => {\n const { w, h, state, o } = f;\n for (const s of state.s) {\n s.x += s.vx * o.speed;\n s.y += s.vy * o.speed;\n if (s.x < 0 || s.x > w) s.vx *= -1;\n if (s.y < 0 || s.y > h) s.vy *= -1;\n }\n field(f, o.cell, (x, y, d, i) => {\n let b = Infinity;\n let b2 = Infinity;\n let c = state.s[0].c;\n for (const s of state.s) {\n const dd = (s.x - x) ** 2 + (s.y - y) ** 2;\n if (dd < b) (b2 = b), (b = dd), (c = s.c);\n else if (dd < b2) b2 = dd;\n }\n const edge = Math.sqrt(b2) - Math.sqrt(b) < 6 ? 0.55 : 1;\n d[i] = c[0] * edge;\n d[i + 1] = c[1] * edge;\n d[i + 2] = c[2] * edge;\n d[i + 3] = 255;\n });\n },\n }),\n gen('mesh-gradient', 'Soft blobs of colour orbit and blend into a living mesh gradient.', { blobs: 4, blur: 0.65 }, {\n draw: ({ ctx, w, h, t, o }) => {\n ctx.fillStyle = o.background;\n ctx.fillRect(0, 0, w, h);\n const r = Math.max(w, h) * o.blur;\n for (let i = 0; i < o.blobs; i++) {\n const a = t * 0.25 * o.speed + (i * Math.PI * 2) / o.blobs;\n const x = w / 2 + Math.cos(a * (1 + i * 0.13)) * w * 0.32;\n const y = h / 2 + Math.sin(a * (0.8 + i * 0.11)) * h * 0.32;\n const [cr, cg, cb] = hexRgb(o.colors[i % o.colors.length]);\n const g = ctx.createRadialGradient(x, y, 0, x, y, r);\n g.addColorStop(0, `rgba(${cr},${cg},${cb},0.7)`);\n g.addColorStop(1, `rgba(${cr},${cg},${cb},0)`);\n ctx.fillStyle = g;\n ctx.fillRect(0, 0, w, h);\n }\n },\n }),\n gen('starfield', 'Stars stream toward the viewer (warp speed with `speed: 4`).', { stars: 400, color: '#ffffff' }, {\n init: (_w, _h, o) => ({ s: Array.from({ length: o.stars }, () => [Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random()]) }),\n draw: ({ ctx, w, h, t, state, o, quality }) => {\n ctx.fillStyle = o.background;\n ctx.fillRect(0, 0, w, h);\n ctx.fillStyle = o.color;\n const n = Math.round(state.s.length * quality);\n for (let i = 0; i < n; i++) {\n const s = state.s[i];\n if (t > 0) s[2] -= 0.004 * o.speed;\n if (s[2] <= 0.01) (s[0] = Math.random() * 2 - 1), (s[1] = Math.random() * 2 - 1), (s[2] = 1);\n const x = w / 2 + (s[0] / s[2]) * w * 0.5;\n const y = h / 2 + (s[1] / s[2]) * h * 0.5;\n if (x < 0 || x > w || y < 0 || y > h) continue;\n const size = (1 - s[2]) * 2.6;\n ctx.globalAlpha = Math.min(1, (1 - s[2]) * 1.6);\n ctx.fillRect(x, y, size, size);\n }\n ctx.globalAlpha = 1;\n },\n }),\n gen('metaballs', 'Gooey blobs that merge and split (low-resolution field, scaled up).', { balls: 6, cell: 5, threshold: 1 }, {\n init: (w, h, o) => ({ b: Array.from({ length: o.balls }, () => ({ x: Math.random() * w, y: Math.random() * h, vx: (Math.random() - 0.5) * 1.6, vy: (Math.random() - 0.5) * 1.6, r: Math.min(w, h) * (0.08 + Math.random() * 0.08) })) }),\n draw: (f) => {\n const { w, h, state, o } = f;\n for (const b of state.b) {\n b.x += b.vx * o.speed;\n b.y += b.vy * o.speed;\n if (b.x < 0 || b.x > w) b.vx *= -1;\n if (b.y < 0 || b.y > h) b.vy *= -1;\n }\n const [ar, ag, ab] = hexRgb(o.colors[0]);\n const [br, bg, bb] = hexRgb(o.colors[1] || o.colors[0]);\n const [kr, kg, kb] = hexRgb(o.background);\n field(f, o.cell, (x, y, d, i) => {\n let v = 0;\n for (const b of state.b) v += (b.r * b.r) / ((b.x - x) ** 2 + (b.y - y) ** 2 + 1);\n const inside = v >= o.threshold;\n const k = Math.min(1, (v - o.threshold) * 0.8);\n d[i] = inside ? ar + (br - ar) * k : kr;\n d[i + 1] = inside ? ag + (bg - ag) * k : kg;\n d[i + 2] = inside ? ab + (bb - ab) * k : kb;\n d[i + 3] = 255;\n });\n },\n }),\n gen('contours', 'Topographic contour lines over a slowly shifting height field.', { levels: 9, cell: 4, color: '#7c5cff' }, {\n draw: (f) => {\n const { t, o } = f;\n const [lr, lg, lb] = hexRgb(o.color);\n const [kr, kg, kb] = hexRgb(o.background);\n const z = (x: number, y: number) => (noise2(x * 0.006, y * 0.006, t * 0.2 * o.speed) + 1) / 2;\n const step = Math.max(2, Math.round(o.cell / f.quality));\n field(f, o.cell, (x, y, d, i) => {\n const a = Math.floor(z(x, y) * o.levels);\n const line = a !== Math.floor(z(x + step, y) * o.levels) || a !== Math.floor(z(x, y + step) * o.levels);\n const shade = 0.12 + (a / o.levels) * 0.18;\n d[i] = line ? lr : kr + (lr - kr) * shade;\n d[i + 1] = line ? lg : kg + (lg - kg) * shade;\n d[i + 2] = line ? lb : kb + (lb - kb) * shade;\n d[i + 3] = 255;\n });\n },\n }),\n];\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var registry = require('./registry-DehBVRDV.cjs');
|
|
4
|
+
var generative = require('./generative-BHIj-NU0.cjs');
|
|
5
|
+
var shared = require('./shared-jkgRH-Hx.cjs');
|
|
6
|
+
|
|
7
|
+
/** GLSL shared by every shader: uniforms, hash, value noise, fbm. */
|
|
8
|
+
const GLSL_HEAD = `#version 300 es
|
|
9
|
+
precision highp float;
|
|
10
|
+
uniform 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;
|
|
11
|
+
out vec4 o;
|
|
12
|
+
float h(vec2 p){return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5453);}
|
|
13
|
+
float 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);}
|
|
14
|
+
float 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;}
|
|
15
|
+
`;
|
|
16
|
+
const VERT = `#version 300 es
|
|
17
|
+
in vec2 a;void main(){gl_Position=vec4(a,0.,1.);}`;
|
|
18
|
+
/** `true` when this browser can create a WebGL2 context (cached). */
|
|
19
|
+
let gl2 = null;
|
|
20
|
+
function supportsWebGL2() {
|
|
21
|
+
if (gl2 !== null)
|
|
22
|
+
return gl2;
|
|
23
|
+
try {
|
|
24
|
+
gl2 = typeof document !== 'undefined' && !!document.createElement('canvas').getContext('webgl2');
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
gl2 = false;
|
|
28
|
+
}
|
|
29
|
+
return gl2;
|
|
30
|
+
}
|
|
31
|
+
function compile(gl, frag) {
|
|
32
|
+
const mk = (type, src) => {
|
|
33
|
+
const s = gl.createShader(type);
|
|
34
|
+
gl.shaderSource(s, src);
|
|
35
|
+
gl.compileShader(s);
|
|
36
|
+
return gl.getShaderParameter(s, gl.COMPILE_STATUS) ? s : null;
|
|
37
|
+
};
|
|
38
|
+
const v = mk(gl.VERTEX_SHADER, VERT);
|
|
39
|
+
const f = mk(gl.FRAGMENT_SHADER, frag);
|
|
40
|
+
if (!v || !f)
|
|
41
|
+
return null;
|
|
42
|
+
const p = gl.createProgram();
|
|
43
|
+
gl.attachShader(p, v);
|
|
44
|
+
gl.attachShader(p, f);
|
|
45
|
+
gl.bindAttribLocation(p, 0, 'a');
|
|
46
|
+
gl.linkProgram(p);
|
|
47
|
+
return gl.getProgramParameter(p, gl.LINK_STATUS) ? p : null;
|
|
48
|
+
}
|
|
49
|
+
const rgb = (c) => generative.hexRgb(c).map((v) => v / 255);
|
|
50
|
+
/**
|
|
51
|
+
* Mount a shader background behind `el` (options: `colors` [3 hex], `speed`,
|
|
52
|
+
* `scale`, `quality`, `backend` = `'auto' | 'webgl2' | 'canvas'`). Returns the cleanup.
|
|
53
|
+
*/
|
|
54
|
+
function shaderBackground(el, fx, spec, o) {
|
|
55
|
+
const fallback = () => {
|
|
56
|
+
el.dataset.usaBackend = 'canvas';
|
|
57
|
+
const stop = generative.canvasBackground(el, fx, spec.fallback, o);
|
|
58
|
+
return () => {
|
|
59
|
+
stop();
|
|
60
|
+
delete el.dataset.usaBackend;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
if (o.backend === 'canvas' || !supportsWebGL2())
|
|
64
|
+
return fallback();
|
|
65
|
+
const canvas = document.createElement('canvas');
|
|
66
|
+
const gl = canvas.getContext('webgl2', { alpha: false, antialias: false, preserveDrawingBuffer: false });
|
|
67
|
+
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}}`);
|
|
68
|
+
if (!gl || !prog)
|
|
69
|
+
return fallback();
|
|
70
|
+
el.dataset.usaBackend = 'webgl2';
|
|
71
|
+
canvas.setAttribute('aria-hidden', 'true');
|
|
72
|
+
canvas.setAttribute('data-usa-fx-canvas', '');
|
|
73
|
+
canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1;border-radius:inherit';
|
|
74
|
+
const restore = [];
|
|
75
|
+
const set = (k, v) => {
|
|
76
|
+
restore.push([k, el.style[k]]);
|
|
77
|
+
el.style[k] = v;
|
|
78
|
+
};
|
|
79
|
+
if (getComputedStyle(el).position === 'static')
|
|
80
|
+
set('position', 'relative');
|
|
81
|
+
set('isolation', 'isolate');
|
|
82
|
+
el.prepend(canvas);
|
|
83
|
+
gl.useProgram(prog);
|
|
84
|
+
const buf = gl.createBuffer();
|
|
85
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buf);
|
|
86
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 3, -1, -1, 3]), gl.STATIC_DRAW);
|
|
87
|
+
gl.enableVertexAttribArray(0);
|
|
88
|
+
gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
|
|
89
|
+
const U = (n) => gl.getUniformLocation(prog, n);
|
|
90
|
+
const cols = o.colors || [];
|
|
91
|
+
['u_c0', 'u_c1', 'u_c2'].forEach((u, i) => gl.uniform3fv(U(u), rgb(cols[i] || cols[0] || '#7c5cff')));
|
|
92
|
+
gl.uniform1f(U('u_speed'), Number(o.speed) || 1);
|
|
93
|
+
gl.uniform1f(U('u_scale'), Number(o.scale) || 3);
|
|
94
|
+
const uRes = U('u_res');
|
|
95
|
+
const uT = U('u_t');
|
|
96
|
+
const uPtr = U('u_ptr');
|
|
97
|
+
let ptr = [0.5, 0.5];
|
|
98
|
+
let quality = Math.min(1, Math.max(0.3, Number(o.quality) || 0.75));
|
|
99
|
+
let raf = 0;
|
|
100
|
+
let visible = true;
|
|
101
|
+
let slow = 0;
|
|
102
|
+
let last = 0;
|
|
103
|
+
const t0 = performance.now();
|
|
104
|
+
const resize = () => {
|
|
105
|
+
const r = el.getBoundingClientRect();
|
|
106
|
+
const dpr = Math.min(2, devicePixelRatio || 1) * quality;
|
|
107
|
+
canvas.width = Math.max(1, Math.round(r.width * dpr));
|
|
108
|
+
canvas.height = Math.max(1, Math.round(r.height * dpr));
|
|
109
|
+
gl.viewport(0, 0, canvas.width, canvas.height);
|
|
110
|
+
gl.uniform2f(uRes, canvas.width, canvas.height);
|
|
111
|
+
};
|
|
112
|
+
const draw = (t) => {
|
|
113
|
+
gl.uniform1f(uT, t);
|
|
114
|
+
gl.uniform2f(uPtr, ptr[0], ptr[1]);
|
|
115
|
+
gl.drawArrays(gl.TRIANGLES, 0, 3);
|
|
116
|
+
};
|
|
117
|
+
const frame = (now) => {
|
|
118
|
+
raf = 0;
|
|
119
|
+
if (last && now - last > 34 && ++slow > 24 && quality > 0.3) {
|
|
120
|
+
quality = Math.max(0.3, quality - 0.15);
|
|
121
|
+
slow = 0;
|
|
122
|
+
resize();
|
|
123
|
+
}
|
|
124
|
+
last = now;
|
|
125
|
+
draw((now - t0) / 1000);
|
|
126
|
+
if (visible && !document.hidden)
|
|
127
|
+
raf = requestAnimationFrame(frame);
|
|
128
|
+
};
|
|
129
|
+
const start = () => {
|
|
130
|
+
if (!raf && !fx.reduced)
|
|
131
|
+
raf = requestAnimationFrame(frame);
|
|
132
|
+
};
|
|
133
|
+
resize();
|
|
134
|
+
draw(fx.reduced ? 7 : 0);
|
|
135
|
+
const move = (e) => {
|
|
136
|
+
const r = el.getBoundingClientRect();
|
|
137
|
+
ptr = [(e.clientX - r.left) / Math.max(1, r.width), 1 - (e.clientY - r.top) / Math.max(1, r.height)];
|
|
138
|
+
};
|
|
139
|
+
el.addEventListener('pointermove', move);
|
|
140
|
+
const io = typeof IntersectionObserver === 'function' ? new IntersectionObserver((es) => (visible = es.some((e) => e.isIntersecting)) && start()) : null;
|
|
141
|
+
io?.observe(el);
|
|
142
|
+
const ro = typeof ResizeObserver === 'function' ? new ResizeObserver(() => (resize(), fx.reduced && draw(7))) : null;
|
|
143
|
+
ro?.observe(el);
|
|
144
|
+
const vis = () => !document.hidden && visible && start();
|
|
145
|
+
document.addEventListener('visibilitychange', vis);
|
|
146
|
+
let swapped = null;
|
|
147
|
+
const lost = (e) => {
|
|
148
|
+
e.preventDefault();
|
|
149
|
+
stop();
|
|
150
|
+
swapped = fallback();
|
|
151
|
+
};
|
|
152
|
+
canvas.addEventListener('webglcontextlost', lost);
|
|
153
|
+
const stop = () => {
|
|
154
|
+
cancelAnimationFrame(raf);
|
|
155
|
+
raf = 0;
|
|
156
|
+
io?.disconnect();
|
|
157
|
+
ro?.disconnect();
|
|
158
|
+
el.removeEventListener('pointermove', move);
|
|
159
|
+
document.removeEventListener('visibilitychange', vis);
|
|
160
|
+
canvas.removeEventListener('webglcontextlost', lost);
|
|
161
|
+
canvas.remove();
|
|
162
|
+
for (const [k, v] of restore)
|
|
163
|
+
el.style[k] = v;
|
|
164
|
+
};
|
|
165
|
+
start();
|
|
166
|
+
return () => {
|
|
167
|
+
if (swapped)
|
|
168
|
+
return swapped();
|
|
169
|
+
stop();
|
|
170
|
+
gl.getExtension('WEBGL_lose_context')?.loseContext();
|
|
171
|
+
delete el.dataset.usaBackend;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Canvas 2D fallback for a scalar field: `color(x, y, t)` (x, y in 0–1)
|
|
176
|
+
* returns `[r, g, b]` (0–255), sampled on a coarse grid and scaled up smoothly.
|
|
177
|
+
*/
|
|
178
|
+
function fieldFallback(color, cell = 8) {
|
|
179
|
+
return {
|
|
180
|
+
init: (w, h) => {
|
|
181
|
+
const c = document.createElement('canvas');
|
|
182
|
+
c.width = Math.max(2, Math.ceil(w / cell));
|
|
183
|
+
c.height = Math.max(2, Math.ceil(h / cell));
|
|
184
|
+
const x = c.getContext('2d');
|
|
185
|
+
return { c, x, img: x?.createImageData(c.width, c.height) };
|
|
186
|
+
},
|
|
187
|
+
draw: ({ ctx, w, h, t, state, o }) => {
|
|
188
|
+
const { c, x, img } = state;
|
|
189
|
+
if (!x || !img)
|
|
190
|
+
return;
|
|
191
|
+
const d = img.data;
|
|
192
|
+
for (let j = 0; j < c.height; j++)
|
|
193
|
+
for (let i = 0; i < c.width; i++) {
|
|
194
|
+
const [r, g, b] = color(i / c.width, 1 - j / c.height, t * (Number(o.speed) || 1), o);
|
|
195
|
+
const k = (j * c.width + i) * 4;
|
|
196
|
+
d[k] = r;
|
|
197
|
+
d[k + 1] = g;
|
|
198
|
+
d[k + 2] = b;
|
|
199
|
+
d[k + 3] = 255;
|
|
200
|
+
}
|
|
201
|
+
x.putImageData(img, 0, 0);
|
|
202
|
+
ctx.imageSmoothingEnabled = true;
|
|
203
|
+
ctx.drawImage(c, 0, 0, w, h);
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/** Linear blend of two `[r,g,b]` colors. */
|
|
208
|
+
const mixRgb = (a, b, k) => {
|
|
209
|
+
const q = Math.min(1, Math.max(0, k));
|
|
210
|
+
return [a[0] + (b[0] - a[0]) * q, a[1] + (b[1] - a[1]) * q, a[2] + (b[2] - a[2]) * q];
|
|
211
|
+
};
|
|
212
|
+
/** Smoothstep. */
|
|
213
|
+
const sstep = (a, b, x) => {
|
|
214
|
+
const t = Math.min(1, Math.max(0, (x - a) / (b - a)));
|
|
215
|
+
return t * t * (3 - 2 * t);
|
|
216
|
+
};
|
|
217
|
+
/** fbm-like noise in 0–1 built on `noise2`. */
|
|
218
|
+
const fbm2 = (x, y, t = 0) => 0.5 + 0.35 * generative.noise2(x, y, t) + 0.15 * generative.noise2(x * 2.1 + 3, y * 2.1 - 1, t * 1.3);
|
|
219
|
+
|
|
220
|
+
const shader = (name, description, colors, spec, extra = {}) => ({
|
|
221
|
+
name,
|
|
222
|
+
kind: 'background',
|
|
223
|
+
description,
|
|
224
|
+
reduced: 'run',
|
|
225
|
+
defaults: { colors, speed: 1, scale: 3, quality: 0.75, backend: 'auto', ...extra },
|
|
226
|
+
run: (el, o, ctx) => {
|
|
227
|
+
const stop = shaderBackground(el, ctx, spec, o);
|
|
228
|
+
ctx.onCleanup(stop);
|
|
229
|
+
return stop;
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
const C = (o) => o.colors.map(generative.hexRgb);
|
|
233
|
+
const GPU_FX = [
|
|
234
|
+
shader('fluid', 'Domain-warped fluid colors that swirl around the pointer (WebGL2, Canvas 2D fallback).', ['#1b1446', '#7c5cff', '#22d3ee'], {
|
|
235
|
+
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.);',
|
|
236
|
+
fallback: fieldFallback((x, y, t, o) => {
|
|
237
|
+
const [a, b, c] = C(o);
|
|
238
|
+
const q = fbm2(x * 3 + t * 0.1, y * 3);
|
|
239
|
+
const f = fbm2(x * 3 + q * 2, y * 3 + q * 2, t * 0.3);
|
|
240
|
+
return mixRgb(mixRgb(a, b, f * 1.7 - 0.2), c, q * 1.1 - 0.45);
|
|
241
|
+
}),
|
|
242
|
+
}),
|
|
243
|
+
shader('smoke', 'Soft smoke rising and curling (WebGL2, Canvas 2D fallback).', ['#0f172a', '#cbd5e1', '#64748b'], {
|
|
244
|
+
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.);',
|
|
245
|
+
fallback: fieldFallback((x, y, t, o) => {
|
|
246
|
+
const [bg, sm, ac] = C(o);
|
|
247
|
+
const f = fbm2(x * 3, y * 3 - t * 0.25, t * 0.2);
|
|
248
|
+
return mixRgb(bg, mixRgb(ac, sm, f), sstep(0.38, 0.92, f) * (1.05 - y * 0.55));
|
|
249
|
+
}),
|
|
250
|
+
}),
|
|
251
|
+
shader('fire', 'Licking flames from the bottom edge (WebGL2, Canvas 2D fallback).', ['#140404', '#e2401b', '#fbbf24'], {
|
|
252
|
+
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.);',
|
|
253
|
+
fallback: fieldFallback((x, y, t, o) => {
|
|
254
|
+
const [a, b, c] = C(o);
|
|
255
|
+
const g = fbm2(x * 4, y * 5 - t * 0.9, t) * (1.3 - y) * 1.7 - 0.3;
|
|
256
|
+
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));
|
|
257
|
+
}, 6),
|
|
258
|
+
}),
|
|
259
|
+
shader('ink', 'Ink blooming and drifting in water on a paper background (WebGL2, Canvas 2D fallback).', ['#f6f1e7', '#1e1b4b', '#be185d'], {
|
|
260
|
+
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.);',
|
|
261
|
+
fallback: fieldFallback((x, y, t, o) => {
|
|
262
|
+
const [bg, i1, i2] = C(o);
|
|
263
|
+
const q = fbm2(x * 2 + t * 0.04, y * 2);
|
|
264
|
+
const f = fbm2(x * 3 + q * 2.5, y * 3 + q * 2.5, t * 0.1);
|
|
265
|
+
return mixRgb(bg, mixRgb(i1, i2, q * 1.4 - 0.2), sstep(0.48, 0.74, f));
|
|
266
|
+
}),
|
|
267
|
+
}, { scale: 2.4 }),
|
|
268
|
+
shader('fireflies', 'Glowing fireflies wandering and blinking at dusk (WebGL2, Canvas 2D fallback).', ['#06121f', '#facc15', '#a3e635'], {
|
|
269
|
+
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.);',
|
|
270
|
+
fallback: {
|
|
271
|
+
init: (w, h) => ({ f: Array.from({ length: 28 }, () => [Math.random(), Math.random(), Math.random() * 6, Math.random()]) }),
|
|
272
|
+
draw: ({ ctx, w, h, t, state, o }) => {
|
|
273
|
+
ctx.fillStyle = o.colors[0];
|
|
274
|
+
ctx.fillRect(0, 0, w, h);
|
|
275
|
+
for (const [bx, by, ph, hue] of state.f) {
|
|
276
|
+
const x = ((bx + 0.07 * Math.sin(t * 0.3 + ph)) % 1) * w;
|
|
277
|
+
const y = ((by + 0.07 * Math.cos(t * 0.23 + ph)) % 1) * h;
|
|
278
|
+
const k = 0.5 + 0.5 * Math.sin(t * 2 + ph * 3);
|
|
279
|
+
const g = ctx.createRadialGradient(x, y, 0, x, y, 14);
|
|
280
|
+
g.addColorStop(0, hue > 0.5 ? o.colors[1] : o.colors[2]);
|
|
281
|
+
g.addColorStop(1, 'transparent');
|
|
282
|
+
ctx.globalAlpha = 0.25 + k * 0.75;
|
|
283
|
+
ctx.fillStyle = g;
|
|
284
|
+
ctx.fillRect(x - 14, y - 14, 28, 28);
|
|
285
|
+
}
|
|
286
|
+
ctx.globalAlpha = 1;
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
}),
|
|
290
|
+
];
|
|
291
|
+
const fall = (draw) => ({
|
|
292
|
+
init: (w, h, o) => ({ f: Array.from({ length: o.count }, () => ({ x: Math.random() * w, y: Math.random() * h, r: shared.rand(5, 11) * (o.size || 1), a: shared.rand(0, 6.3), va: shared.rand(-1.5, 1.5), vy: shared.rand(18, 46), ph: shared.rand(0, 6.3), c: o.colors[Math.floor(Math.random() * o.colors.length)] })), last: 0 }),
|
|
293
|
+
draw: ({ ctx, w, h, t, state, o, quality }) => {
|
|
294
|
+
const dt = state.last ? Math.min(0.05, t - state.last) : 0;
|
|
295
|
+
state.last = t;
|
|
296
|
+
ctx.clearRect(0, 0, w, h);
|
|
297
|
+
const n = Math.max(4, Math.round(state.f.length * quality));
|
|
298
|
+
for (let i = 0; i < n; i++) {
|
|
299
|
+
const f = state.f[i];
|
|
300
|
+
f.y += f.vy * dt * o.speed;
|
|
301
|
+
f.x += (Math.sin(t * 1.2 + f.ph) * 22 + (o.wind || 0)) * dt * o.speed;
|
|
302
|
+
f.a += f.va * dt * o.speed;
|
|
303
|
+
if (f.y > h + 16)
|
|
304
|
+
(f.y = -16), (f.x = Math.random() * w);
|
|
305
|
+
if (f.x > w + 16)
|
|
306
|
+
f.x = -16;
|
|
307
|
+
if (f.x < -16)
|
|
308
|
+
f.x = w + 16;
|
|
309
|
+
ctx.save();
|
|
310
|
+
ctx.translate(f.x, f.y);
|
|
311
|
+
ctx.rotate(f.a);
|
|
312
|
+
ctx.scale(1, 0.55 + 0.45 * Math.abs(Math.cos(t * 1.7 + f.ph)));
|
|
313
|
+
ctx.fillStyle = f.c;
|
|
314
|
+
draw(ctx, f);
|
|
315
|
+
ctx.restore();
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
const particles = (name, description, defaults, spec) => ({
|
|
320
|
+
name,
|
|
321
|
+
kind: 'background',
|
|
322
|
+
description,
|
|
323
|
+
reduced: 'run',
|
|
324
|
+
defaults: { speed: 1, quality: 1, ...defaults },
|
|
325
|
+
run: (el, o, ctx) => {
|
|
326
|
+
const stop = generative.canvasBackground(el, ctx, spec, o);
|
|
327
|
+
ctx.onCleanup(stop);
|
|
328
|
+
return stop;
|
|
329
|
+
},
|
|
330
|
+
});
|
|
331
|
+
GPU_FX.push(particles('sakura', 'Cherry-blossom petals drifting down, swaying and flipping (Canvas 2D).', { count: 46, colors: ['#ffc8dd', '#ffafcc', '#fde2e4', '#f9a8d4'], wind: 14 }, fall((ctx, f) => {
|
|
332
|
+
ctx.beginPath();
|
|
333
|
+
ctx.moveTo(0, -f.r);
|
|
334
|
+
ctx.bezierCurveTo(f.r, -f.r, f.r * 0.9, f.r * 0.6, 0, f.r);
|
|
335
|
+
ctx.bezierCurveTo(-f.r * 0.9, f.r * 0.6, -f.r, -f.r, 0, -f.r * 0.55);
|
|
336
|
+
ctx.fill();
|
|
337
|
+
})), 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) => {
|
|
338
|
+
ctx.beginPath();
|
|
339
|
+
ctx.moveTo(0, -f.r);
|
|
340
|
+
ctx.quadraticCurveTo(f.r * 0.9, -f.r * 0.2, 0, f.r);
|
|
341
|
+
ctx.quadraticCurveTo(-f.r * 0.9, -f.r * 0.2, 0, -f.r);
|
|
342
|
+
ctx.fill();
|
|
343
|
+
ctx.strokeStyle = 'rgba(0,0,0,.25)';
|
|
344
|
+
ctx.lineWidth = 1;
|
|
345
|
+
ctx.beginPath();
|
|
346
|
+
ctx.moveTo(0, -f.r * 0.8);
|
|
347
|
+
ctx.lineTo(0, f.r * 1.25);
|
|
348
|
+
ctx.stroke();
|
|
349
|
+
})));
|
|
350
|
+
GPU_FX.push({
|
|
351
|
+
name: 'splash',
|
|
352
|
+
kind: 'click',
|
|
353
|
+
description: 'A water splash from the pointer: a ring plus droplets that arc out and fall with gravity.',
|
|
354
|
+
defaults: { color: '#38bdf8', count: 14 },
|
|
355
|
+
run: (el, o, ctx) => {
|
|
356
|
+
const { x, y } = shared.origin(el, ctx);
|
|
357
|
+
if (ctx.reduced)
|
|
358
|
+
return shared.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 });
|
|
359
|
+
const anims = [
|
|
360
|
+
shared.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)' }),
|
|
361
|
+
];
|
|
362
|
+
for (let i = 0; i < o.count; i++) {
|
|
363
|
+
const ang = -Math.PI / 2 + shared.rand(-1.15, 1.15);
|
|
364
|
+
const v = shared.rand(50, 110);
|
|
365
|
+
const dx = Math.cos(ang) * v;
|
|
366
|
+
const s = shared.rand(4, 9);
|
|
367
|
+
const peak = Math.sin(ang) * v;
|
|
368
|
+
anims.push(shared.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, [
|
|
369
|
+
{ transform: 'translate(0,0) scale(1)', opacity: 1 },
|
|
370
|
+
{ transform: `translate(${dx * 0.6}px,${peak}px) scale(1)`, opacity: 1, offset: 0.45, easing: 'cubic-bezier(.3,0,.7,1)' },
|
|
371
|
+
{ transform: `translate(${dx}px,${peak + 90}px) scale(.6)`, opacity: 0 },
|
|
372
|
+
], { duration: shared.rand(650, 900), easing: 'cubic-bezier(.15,.6,.4,1)' }));
|
|
373
|
+
}
|
|
374
|
+
return shared.all(anims);
|
|
375
|
+
},
|
|
376
|
+
});
|
|
377
|
+
/** Register the 6.2 GPU pack (idempotent). */
|
|
378
|
+
function registerGpuEffects() {
|
|
379
|
+
registry.registerEffects(GPU_FX);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
exports.GLSL_HEAD = GLSL_HEAD;
|
|
383
|
+
exports.GPU_FX = GPU_FX;
|
|
384
|
+
exports.fieldFallback = fieldFallback;
|
|
385
|
+
exports.registerGpuEffects = registerGpuEffects;
|
|
386
|
+
exports.shaderBackground = shaderBackground;
|
|
387
|
+
exports.supportsWebGL2 = supportsWebGL2;
|
|
388
|
+
//# sourceMappingURL=gpu-BBRLgEzM.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpu-BBRLgEzM.cjs","sources":["../../src/components/fx2/gl.ts","../../src/components/fx2/gpu.ts"],"sourcesContent":["/**\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 { 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 /** 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' | 'webgl2' | 'canvas'`). Returns the cleanup.\n */\nexport function shaderBackground(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 registerGpuEffects(): void {\n registerEffects(GPU_FX);\n}\n"],"names":["hexRgb","canvasBackground","noise2","rand","origin","spawn","all","registerEffects"],"mappings":";;;;;;AAcA;AACO,MAAM,SAAS,GAAG,CAAA;;;;;;;;AAQzB,MAAM,IAAI,GAAG,CAAA;kDACqC;AASlD;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+BA,iBAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAA6B;AAE9G;;;AAGG;AACG,SAAU,gBAAgB,CAAC,EAAe,EAAE,EAAiB,EAAE,IAAgB,EAAE,CAAM,EAAA;IAC3F,MAAM,QAAQ,GAAG,MAAK;AACpB,QAAA,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ;AAChC,QAAA,MAAM,IAAI,GAAGC,2BAAgB,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,GAAGC,iBAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAGA,iBAAM,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;;AC/M5I,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,CAACF,iBAAM,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,EAAEG,WAAI,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAEA,WAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAEA,WAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAEA,WAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAEA,WAAI,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,GAAGF,2BAAgB,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,GAAGG,aAAM,CAAC,EAAE,EAAE,GAAG,CAAC;QAChC,IAAI,GAAG,CAAC,OAAO;AAAE,YAAA,OAAOC,YAAK,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;YAClCA,YAAK,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,GAAGF,WAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YAC5C,MAAM,CAAC,GAAGA,WAAI,CAAC,EAAE,EAAE,GAAG,CAAC;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAC5B,MAAM,CAAC,GAAGA,WAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,YAAA,KAAK,CAAC,IAAI,CAACE,YAAK,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,EAAEF,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxE;AACA,QAAA,OAAOG,UAAG,CAAC,KAAK,CAAC;IACnB,CAAC;AACF,CAAA,CAAC;AAEF;SACgB,kBAAkB,GAAA;IAChCC,wBAAe,CAAC,MAAM,CAAC;AACzB;;;;;;;;;"}
|