@stevejtrettel/shader-sandbox 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -23
- package/bin/cli.js +106 -14
- package/dist-lib/app/App.d.ts +143 -15
- package/dist-lib/app/App.d.ts.map +1 -1
- package/dist-lib/app/App.js +1343 -108
- package/dist-lib/app/app.css +349 -24
- package/dist-lib/app/types.d.ts +48 -5
- package/dist-lib/app/types.d.ts.map +1 -1
- package/dist-lib/editor/EditorPanel.d.ts +2 -2
- package/dist-lib/editor/EditorPanel.d.ts.map +1 -1
- package/dist-lib/editor/EditorPanel.js +1 -1
- package/dist-lib/editor/editor-panel.css +55 -32
- package/dist-lib/editor/prism-editor.css +16 -16
- package/dist-lib/embed.js +1 -1
- package/dist-lib/engine/{ShadertoyEngine.d.ts → ShaderEngine.d.ts} +134 -10
- package/dist-lib/engine/ShaderEngine.d.ts.map +1 -0
- package/dist-lib/engine/ShaderEngine.js +1523 -0
- package/dist-lib/engine/glHelpers.d.ts +24 -0
- package/dist-lib/engine/glHelpers.d.ts.map +1 -1
- package/dist-lib/engine/glHelpers.js +88 -0
- package/dist-lib/engine/std140.d.ts +47 -0
- package/dist-lib/engine/std140.d.ts.map +1 -0
- package/dist-lib/engine/std140.js +119 -0
- package/dist-lib/engine/types.d.ts +55 -5
- package/dist-lib/engine/types.d.ts.map +1 -1
- package/dist-lib/engine/types.js +1 -1
- package/dist-lib/index.d.ts +4 -3
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -1
- package/dist-lib/layouts/SplitLayout.d.ts +2 -1
- package/dist-lib/layouts/SplitLayout.d.ts.map +1 -1
- package/dist-lib/layouts/SplitLayout.js +3 -0
- package/dist-lib/layouts/TabbedLayout.d.ts.map +1 -1
- package/dist-lib/layouts/UILayout.d.ts +55 -0
- package/dist-lib/layouts/UILayout.d.ts.map +1 -0
- package/dist-lib/layouts/UILayout.js +147 -0
- package/dist-lib/layouts/default.css +2 -2
- package/dist-lib/layouts/index.d.ts +11 -1
- package/dist-lib/layouts/index.d.ts.map +1 -1
- package/dist-lib/layouts/index.js +17 -1
- package/dist-lib/layouts/split.css +33 -31
- package/dist-lib/layouts/tabbed.css +127 -74
- package/dist-lib/layouts/types.d.ts +14 -3
- package/dist-lib/layouts/types.d.ts.map +1 -1
- package/dist-lib/main.js +33 -0
- package/dist-lib/project/configHelpers.d.ts +45 -0
- package/dist-lib/project/configHelpers.d.ts.map +1 -0
- package/dist-lib/project/configHelpers.js +196 -0
- package/dist-lib/project/generatedLoader.d.ts +2 -2
- package/dist-lib/project/generatedLoader.d.ts.map +1 -1
- package/dist-lib/project/generatedLoader.js +23 -5
- package/dist-lib/project/loadProject.d.ts +6 -6
- package/dist-lib/project/loadProject.d.ts.map +1 -1
- package/dist-lib/project/loadProject.js +396 -144
- package/dist-lib/project/loaderHelper.d.ts +4 -4
- package/dist-lib/project/loaderHelper.d.ts.map +1 -1
- package/dist-lib/project/loaderHelper.js +278 -116
- package/dist-lib/project/types.d.ts +292 -13
- package/dist-lib/project/types.d.ts.map +1 -1
- package/dist-lib/project/types.js +13 -1
- package/dist-lib/styles/base.css +5 -1
- package/dist-lib/uniforms/UniformControls.d.ts +60 -0
- package/dist-lib/uniforms/UniformControls.d.ts.map +1 -0
- package/dist-lib/uniforms/UniformControls.js +518 -0
- package/dist-lib/uniforms/UniformStore.d.ts +74 -0
- package/dist-lib/uniforms/UniformStore.d.ts.map +1 -0
- package/dist-lib/uniforms/UniformStore.js +145 -0
- package/dist-lib/uniforms/UniformsPanel.d.ts +53 -0
- package/dist-lib/uniforms/UniformsPanel.d.ts.map +1 -0
- package/dist-lib/uniforms/UniformsPanel.js +124 -0
- package/dist-lib/uniforms/index.d.ts +11 -0
- package/dist-lib/uniforms/index.d.ts.map +1 -0
- package/dist-lib/uniforms/index.js +8 -0
- package/package.json +1 -1
- package/src/app/App.ts +1469 -126
- package/src/app/app.css +349 -24
- package/src/app/types.ts +53 -5
- package/src/editor/EditorPanel.ts +5 -5
- package/src/editor/editor-panel.css +55 -32
- package/src/editor/prism-editor.css +16 -16
- package/src/embed.ts +1 -1
- package/src/engine/ShaderEngine.ts +1934 -0
- package/src/engine/glHelpers.ts +117 -0
- package/src/engine/std140.ts +136 -0
- package/src/engine/types.ts +69 -5
- package/src/index.ts +4 -3
- package/src/layouts/SplitLayout.ts +8 -3
- package/src/layouts/TabbedLayout.ts +3 -3
- package/src/layouts/UILayout.ts +185 -0
- package/src/layouts/default.css +2 -2
- package/src/layouts/index.ts +20 -1
- package/src/layouts/split.css +33 -31
- package/src/layouts/tabbed.css +127 -74
- package/src/layouts/types.ts +19 -3
- package/src/layouts/ui.css +289 -0
- package/src/main.ts +39 -1
- package/src/project/configHelpers.ts +225 -0
- package/src/project/generatedLoader.ts +27 -6
- package/src/project/loadProject.ts +459 -173
- package/src/project/loaderHelper.ts +377 -130
- package/src/project/types.ts +360 -14
- package/src/styles/base.css +5 -1
- package/src/styles/theme.css +292 -0
- package/src/uniforms/UniformControls.ts +660 -0
- package/src/uniforms/UniformStore.ts +166 -0
- package/src/uniforms/UniformsPanel.ts +163 -0
- package/src/uniforms/index.ts +13 -0
- package/src/uniforms/uniform-controls.css +342 -0
- package/src/uniforms/uniforms-panel.css +277 -0
- package/templates/shaders/example-buffer/config.json +1 -0
- package/dist-lib/engine/ShadertoyEngine.d.ts.map +0 -1
- package/dist-lib/engine/ShadertoyEngine.js +0 -704
- package/src/engine/ShadertoyEngine.ts +0 -929
package/dist-lib/app/App.d.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Responsibilities:
|
|
5
5
|
* - Create and manage canvas
|
|
6
|
-
* - Initialize
|
|
6
|
+
* - Initialize ShaderEngine
|
|
7
7
|
* - Run animation loop (requestAnimationFrame)
|
|
8
8
|
* - Handle resize and mouse events
|
|
9
9
|
* - Present Image pass output to screen
|
|
10
10
|
*/
|
|
11
11
|
import './app.css';
|
|
12
|
-
import {
|
|
12
|
+
import { ShaderEngine } from '../engine/ShaderEngine';
|
|
13
13
|
import { AppOptions } from './types';
|
|
14
14
|
export declare class App {
|
|
15
15
|
private container;
|
|
@@ -21,18 +21,54 @@ export declare class App {
|
|
|
21
21
|
private animationId;
|
|
22
22
|
private startTime;
|
|
23
23
|
private mouse;
|
|
24
|
+
private isMouseDown;
|
|
25
|
+
private touchState;
|
|
26
|
+
private activePointers;
|
|
24
27
|
private fpsDisplay;
|
|
25
28
|
private frameCount;
|
|
26
29
|
private lastFpsUpdate;
|
|
27
30
|
private currentFps;
|
|
31
|
+
private statsContainer;
|
|
32
|
+
private statsGrid;
|
|
33
|
+
private timeDisplay;
|
|
34
|
+
private frameDisplay;
|
|
35
|
+
private resolutionDisplay;
|
|
36
|
+
private totalFrameCount;
|
|
37
|
+
private isStatsOpen;
|
|
28
38
|
private controlsContainer;
|
|
39
|
+
private controlsGrid;
|
|
40
|
+
private menuButton;
|
|
29
41
|
private playPauseButton;
|
|
30
42
|
private isPaused;
|
|
43
|
+
private isMenuOpen;
|
|
31
44
|
private errorOverlay;
|
|
45
|
+
private mediaBanner;
|
|
32
46
|
private resizeObserver;
|
|
33
47
|
private intersectionObserver;
|
|
34
48
|
private isVisible;
|
|
49
|
+
private contextLostOverlay;
|
|
50
|
+
private isContextLost;
|
|
51
|
+
private uniformsPanel;
|
|
52
|
+
private scriptAPI;
|
|
53
|
+
private scriptErrorCount;
|
|
54
|
+
private _lastOnFrameTime;
|
|
55
|
+
private static readonly MAX_SCRIPT_ERRORS;
|
|
56
|
+
private mediaInitialized;
|
|
57
|
+
private isRecording;
|
|
58
|
+
private mediaRecorder;
|
|
59
|
+
private recordedChunks;
|
|
60
|
+
private recordButton;
|
|
61
|
+
private recordingIndicator;
|
|
35
62
|
constructor(opts: AppOptions);
|
|
63
|
+
/**
|
|
64
|
+
* Initialize audio/webcam on first user gesture (required by browser policy).
|
|
65
|
+
* Video files are auto-started in the constructor since muted videos don't need gestures.
|
|
66
|
+
*/
|
|
67
|
+
private initMediaOnGesture;
|
|
68
|
+
/**
|
|
69
|
+
* Start video file playback (muted, doesn't require user gesture).
|
|
70
|
+
*/
|
|
71
|
+
private initVideoFiles;
|
|
36
72
|
/**
|
|
37
73
|
* Check if there were any shader compilation errors.
|
|
38
74
|
* Returns true if the engine has errors and should not be started.
|
|
@@ -42,7 +78,7 @@ export declare class App {
|
|
|
42
78
|
* Get the underlying engine instance.
|
|
43
79
|
* Used for live recompilation in editor mode.
|
|
44
80
|
*/
|
|
45
|
-
getEngine():
|
|
81
|
+
getEngine(): ShaderEngine;
|
|
46
82
|
/**
|
|
47
83
|
* Start the animation loop.
|
|
48
84
|
*/
|
|
@@ -58,9 +94,25 @@ export declare class App {
|
|
|
58
94
|
private animate;
|
|
59
95
|
/**
|
|
60
96
|
* Update FPS counter.
|
|
61
|
-
*
|
|
97
|
+
* FPS display updates once per second, frame count updates every frame.
|
|
62
98
|
*/
|
|
63
99
|
private updateFps;
|
|
100
|
+
/**
|
|
101
|
+
* Update frame count display.
|
|
102
|
+
*/
|
|
103
|
+
private updateFrameDisplay;
|
|
104
|
+
/**
|
|
105
|
+
* Update time display.
|
|
106
|
+
*/
|
|
107
|
+
private updateTimeDisplay;
|
|
108
|
+
/**
|
|
109
|
+
* Update resolution display.
|
|
110
|
+
*/
|
|
111
|
+
private updateResolutionDisplay;
|
|
112
|
+
/**
|
|
113
|
+
* Toggle the stats panel open/closed.
|
|
114
|
+
*/
|
|
115
|
+
private toggleStats;
|
|
64
116
|
/**
|
|
65
117
|
* Present the Image pass output to the screen.
|
|
66
118
|
*
|
|
@@ -71,9 +123,23 @@ export declare class App {
|
|
|
71
123
|
private updateCanvasSize;
|
|
72
124
|
private setupMouseTracking;
|
|
73
125
|
/**
|
|
74
|
-
*
|
|
126
|
+
* Set up pointer event tracking for touch support.
|
|
127
|
+
* Uses Pointer Events API for unified mouse/touch/pen handling.
|
|
128
|
+
*/
|
|
129
|
+
private setupTouchTracking;
|
|
130
|
+
/**
|
|
131
|
+
* Update touch state from active pointers.
|
|
132
|
+
* Calculates pinch gesture when 2+ fingers are active.
|
|
133
|
+
*/
|
|
134
|
+
private updateTouchState;
|
|
135
|
+
/**
|
|
136
|
+
* Create playback control buttons with collapsible menu.
|
|
75
137
|
*/
|
|
76
138
|
private createControls;
|
|
139
|
+
/**
|
|
140
|
+
* Toggle the controls menu open/closed.
|
|
141
|
+
*/
|
|
142
|
+
private toggleControlsMenu;
|
|
77
143
|
/**
|
|
78
144
|
* Set up keyboard tracking for shader keyboard texture.
|
|
79
145
|
* Tracks all key presses/releases and forwards to engine.
|
|
@@ -87,41 +153,103 @@ export declare class App {
|
|
|
87
153
|
* Set up keyboard shortcuts for playback control.
|
|
88
154
|
*/
|
|
89
155
|
private setupKeyboardShortcuts;
|
|
156
|
+
/**
|
|
157
|
+
* Set up handlers for WebGL context loss and restoration.
|
|
158
|
+
* Context can be lost due to GPU driver issues, system sleep, etc.
|
|
159
|
+
*/
|
|
160
|
+
private setupContextLossHandling;
|
|
161
|
+
/**
|
|
162
|
+
* Handle WebGL context loss - pause rendering and show overlay.
|
|
163
|
+
*/
|
|
164
|
+
private handleContextLost;
|
|
165
|
+
/**
|
|
166
|
+
* Handle WebGL context restoration - reinitialize and resume.
|
|
167
|
+
*/
|
|
168
|
+
private handleContextRestored;
|
|
169
|
+
/**
|
|
170
|
+
* Show overlay when WebGL context is lost.
|
|
171
|
+
*/
|
|
172
|
+
private showContextLostOverlay;
|
|
173
|
+
/**
|
|
174
|
+
* Hide the context lost overlay.
|
|
175
|
+
*/
|
|
176
|
+
private hideContextLostOverlay;
|
|
90
177
|
/**
|
|
91
178
|
* Toggle between play and pause states.
|
|
179
|
+
* Public for UILayout to call.
|
|
180
|
+
*/
|
|
181
|
+
togglePlayPause(): void;
|
|
182
|
+
/**
|
|
183
|
+
* Get current paused state.
|
|
92
184
|
*/
|
|
93
|
-
|
|
185
|
+
getPaused(): boolean;
|
|
94
186
|
/**
|
|
95
187
|
* Reset the shader to frame 0.
|
|
188
|
+
* Public for UILayout to call.
|
|
96
189
|
*/
|
|
97
|
-
|
|
190
|
+
reset(): void;
|
|
98
191
|
/**
|
|
99
192
|
* Capture and download a screenshot of the current canvas as PNG.
|
|
100
193
|
* Filename format: shadertoy-{folderName}-{timestamp}.png
|
|
194
|
+
* Public for UILayout to call.
|
|
195
|
+
*/
|
|
196
|
+
screenshot(): void;
|
|
197
|
+
/**
|
|
198
|
+
* Toggle video recording on/off.
|
|
199
|
+
* Public for UILayout to call.
|
|
200
|
+
*/
|
|
201
|
+
toggleRecording(): void;
|
|
202
|
+
/**
|
|
203
|
+
* Start recording the canvas as WebM video.
|
|
204
|
+
*/
|
|
205
|
+
private startRecording;
|
|
206
|
+
/**
|
|
207
|
+
* Stop recording and trigger download.
|
|
208
|
+
*/
|
|
209
|
+
private stopRecording;
|
|
210
|
+
/**
|
|
211
|
+
* Update record button appearance based on recording state.
|
|
212
|
+
*/
|
|
213
|
+
private updateRecordButton;
|
|
214
|
+
/**
|
|
215
|
+
* Show the recording indicator (pulsing red dot in corner).
|
|
216
|
+
*/
|
|
217
|
+
private showRecordingIndicator;
|
|
218
|
+
/**
|
|
219
|
+
* Hide the recording indicator.
|
|
220
|
+
*/
|
|
221
|
+
private hideRecordingIndicator;
|
|
222
|
+
/**
|
|
223
|
+
* Export the current shader as a standalone HTML file.
|
|
224
|
+
* Bakes in current uniform values and replaces textures with procedural grid.
|
|
225
|
+
*/
|
|
226
|
+
exportHTML(): void;
|
|
227
|
+
/**
|
|
228
|
+
* Generate standalone HTML with embedded shaders.
|
|
101
229
|
*/
|
|
102
|
-
private
|
|
230
|
+
private generateStandaloneHTML;
|
|
103
231
|
/**
|
|
104
232
|
* Update play/pause button icon based on current state.
|
|
105
233
|
*/
|
|
106
234
|
private updatePlayPauseButton;
|
|
235
|
+
private showMediaBanner;
|
|
236
|
+
private hideMediaBanner;
|
|
107
237
|
/**
|
|
108
238
|
* Display shader compilation errors in an overlay.
|
|
109
239
|
*/
|
|
110
240
|
private showErrorOverlay;
|
|
111
241
|
/**
|
|
112
|
-
* Parse
|
|
242
|
+
* Parse WebGL error messages into user-friendly format with correct line numbers.
|
|
113
243
|
*/
|
|
114
244
|
private parseShaderError;
|
|
115
245
|
/**
|
|
116
|
-
*
|
|
117
|
-
* Returns HTML with the error line highlighted.
|
|
246
|
+
* Add helpful hints to common GLSL error messages.
|
|
118
247
|
*/
|
|
119
|
-
private
|
|
248
|
+
private friendlyGLSLError;
|
|
120
249
|
/**
|
|
121
|
-
*
|
|
122
|
-
* Similar to extractCodeContext but uses the original common source.
|
|
250
|
+
* Build code context HTML around an error line (±3 lines) from source.
|
|
123
251
|
*/
|
|
124
|
-
private
|
|
252
|
+
private buildCodeContext;
|
|
125
253
|
/**
|
|
126
254
|
* Escape HTML to prevent XSS.
|
|
127
255
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/app/App.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,WAAW,CAAC;AAEnB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/app/App.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAe,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAuC,MAAM,SAAS,CAAC;AA2C1E,qBAAa,GAAG;IACd,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAa;IAG9B,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,UAAU,CAMhB;IAGF,OAAO,CAAC,cAAc,CAAuC;IAG7D,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,WAAW,CAAkB;IAGrC,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAkB;IAGpC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAA4B;IAG/C,OAAO,CAAC,cAAc,CAAiB;IAGvC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,SAAS,CAAiB;IAGlC,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,aAAa,CAA8B;IAGnD,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IAG/C,OAAO,CAAC,gBAAgB,CAAkB;IAG1C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,kBAAkB,CAA4B;gBAE1C,IAAI,EAAE,UAAU;IAkL5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;;OAGG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;IACH,OAAO,IAAI,IAAI;IAwBf,OAAO,CAAC,OAAO,CAoDb;IAEF;;;OAGG;IACH,OAAO,CAAC,SAAS;IAwBjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,kBAAkB;IAuC1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0F1B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA0DxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmGtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAWhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+B9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;;OAGG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAeb;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAwClB;;;OAGG;IACH,eAAe,IAAI,IAAI;IAQvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgEtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;OAGG;IACH,UAAU,IAAI,IAAI;IAmDlB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAma9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyFxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAMzB"}
|