@kya-os/cli 1.1.0 → 1.2.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/dist/commands/build.d.ts +5 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +173 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +9 -31
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/claim.d.ts +7 -1
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +196 -44
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/demo.d.ts +10 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +584 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/dev.d.ts +5 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +111 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +11 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +530 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +113 -15
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/identity.d.ts +14 -0
- package/dist/commands/identity.d.ts.map +1 -0
- package/dist/commands/identity.js +204 -0
- package/dist/commands/identity.js.map +1 -0
- package/dist/commands/init.d.ts +6 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +86 -670
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/receipts.d.ts +11 -0
- package/dist/commands/receipts.d.ts.map +1 -0
- package/dist/commands/receipts.js +179 -0
- package/dist/commands/receipts.js.map +1 -0
- package/dist/commands/register.d.ts +15 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +220 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/rotate.d.ts +7 -1
- package/dist/commands/rotate.d.ts.map +1 -1
- package/dist/commands/rotate.js +149 -109
- package/dist/commands/rotate.js.map +1 -1
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +129 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +177 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/verify.d.ts +22 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +491 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/components/claim-experience.d.ts +21 -0
- package/dist/components/claim-experience.d.ts.map +1 -0
- package/dist/components/claim-experience.js +138 -0
- package/dist/components/claim-experience.js.map +1 -0
- package/dist/effects/animation-engine.d.ts +173 -0
- package/dist/effects/animation-engine.d.ts.map +1 -0
- package/dist/effects/animation-engine.js +254 -0
- package/dist/effects/animation-engine.js.map +1 -0
- package/dist/effects/cli-integration.js +8 -8
- package/dist/effects/cli-integration.js.map +1 -1
- package/dist/effects/config.d.ts +86 -10
- package/dist/effects/config.d.ts.map +1 -1
- package/dist/effects/config.js +201 -18
- package/dist/effects/config.js.map +1 -1
- package/dist/effects/effect-runner.d.ts +69 -0
- package/dist/effects/effect-runner.d.ts.map +1 -0
- package/dist/effects/effect-runner.js +255 -0
- package/dist/effects/effect-runner.js.map +1 -0
- package/dist/effects/gradient.d.ts +131 -0
- package/dist/effects/gradient.d.ts.map +1 -0
- package/dist/effects/gradient.js +236 -0
- package/dist/effects/gradient.js.map +1 -0
- package/dist/effects/implementations/beams.d.ts +80 -0
- package/dist/effects/implementations/beams.d.ts.map +1 -0
- package/dist/effects/implementations/beams.js +221 -0
- package/dist/effects/implementations/beams.js.map +1 -0
- package/dist/effects/implementations/blackhole.d.ts +98 -0
- package/dist/effects/implementations/blackhole.d.ts.map +1 -0
- package/dist/effects/implementations/blackhole.js +421 -0
- package/dist/effects/implementations/blackhole.js.map +1 -0
- package/dist/effects/implementations/burn.d.ts +74 -0
- package/dist/effects/implementations/burn.d.ts.map +1 -0
- package/dist/effects/implementations/burn.js +234 -0
- package/dist/effects/implementations/burn.js.map +1 -0
- package/dist/effects/implementations/decrypt.d.ts +115 -0
- package/dist/effects/implementations/decrypt.d.ts.map +1 -0
- package/dist/effects/implementations/decrypt.js +394 -0
- package/dist/effects/implementations/decrypt.js.map +1 -0
- package/dist/effects/implementations/waves.d.ts +78 -0
- package/dist/effects/implementations/waves.d.ts.map +1 -0
- package/dist/effects/implementations/waves.js +278 -0
- package/dist/effects/implementations/waves.js.map +1 -0
- package/dist/effects/index.d.ts +34 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +114 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/motion-engine.d.ts +168 -0
- package/dist/effects/motion-engine.d.ts.map +1 -0
- package/dist/effects/motion-engine.js +353 -0
- package/dist/effects/motion-engine.js.map +1 -0
- package/dist/effects/safe-executor.d.ts +55 -0
- package/dist/effects/safe-executor.d.ts.map +1 -0
- package/dist/effects/safe-executor.js +210 -0
- package/dist/effects/safe-executor.js.map +1 -0
- package/dist/effects/types.d.ts +199 -0
- package/dist/effects/types.d.ts.map +1 -0
- package/dist/effects/types.js +80 -0
- package/dist/effects/types.js.map +1 -0
- package/dist/effects/utils.d.ts +104 -0
- package/dist/effects/utils.d.ts.map +1 -0
- package/dist/effects/utils.js +280 -0
- package/dist/effects/utils.js.map +1 -0
- package/dist/index.js +154 -19
- package/dist/utils/env-manager.d.ts +6 -7
- package/dist/utils/env-manager.d.ts.map +1 -1
- package/dist/utils/env-manager.js +52 -40
- package/dist/utils/env-manager.js.map +1 -1
- package/dist/utils/identity-manager.d.ts +41 -0
- package/dist/utils/identity-manager.d.ts.map +1 -0
- package/dist/utils/identity-manager.js +159 -0
- package/dist/utils/identity-manager.js.map +1 -0
- package/dist/utils/kta-api.d.ts +67 -0
- package/dist/utils/kta-api.d.ts.map +1 -0
- package/dist/utils/kta-api.js +137 -0
- package/dist/utils/kta-api.js.map +1 -0
- package/package.json +8 -7
- package/dist/utils/validation.d.ts +0 -101
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -109
- package/dist/utils/validation.js.map +0 -1
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beams Effect
|
|
3
|
+
* Creates beams which travel over the canvas illuminating the characters
|
|
4
|
+
*/
|
|
5
|
+
import { BaseEffect } from "../types.js";
|
|
6
|
+
import { ANSI, easeInOutSine } from "../utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Beams effect implementation
|
|
9
|
+
*/
|
|
10
|
+
export class BeamsEffect extends BaseEffect {
|
|
11
|
+
constructor(options = {}) {
|
|
12
|
+
super();
|
|
13
|
+
this.name = "Beams";
|
|
14
|
+
this.description = "Creates beams which travel over the canvas illuminating the characters";
|
|
15
|
+
this.beams = [];
|
|
16
|
+
this.animationFrameCount = 0;
|
|
17
|
+
this.totalFrames = 0;
|
|
18
|
+
this.nextBeamId = 0;
|
|
19
|
+
this.lastBeamSpawn = 0;
|
|
20
|
+
this._isEffectComplete = false;
|
|
21
|
+
this.options = {
|
|
22
|
+
duration: 5000,
|
|
23
|
+
beamCount: 8,
|
|
24
|
+
beamWidth: 5,
|
|
25
|
+
beamSpeedRange: [1.0, 3.0],
|
|
26
|
+
beamColors: ["ffffff", "00D1FF", "8A008A"],
|
|
27
|
+
illuminationBrightness: 2.0,
|
|
28
|
+
baseColor: "202020",
|
|
29
|
+
...options,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the effect
|
|
34
|
+
*/
|
|
35
|
+
onInitialize() {
|
|
36
|
+
this.totalFrames = Math.floor((this.options.duration / 1000) * this.config.frameRate);
|
|
37
|
+
this.beams = [];
|
|
38
|
+
this.animationFrameCount = 0;
|
|
39
|
+
this.nextBeamId = 0;
|
|
40
|
+
this.lastBeamSpawn = 0;
|
|
41
|
+
this._isEffectComplete = false;
|
|
42
|
+
// Set base color for all characters
|
|
43
|
+
for (const char of this.characters) {
|
|
44
|
+
char.visual.colors.fg = this.options.baseColor;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Render the next frame
|
|
49
|
+
*/
|
|
50
|
+
async render() {
|
|
51
|
+
if (!this.isInitialized) {
|
|
52
|
+
throw new Error("Effect not initialized");
|
|
53
|
+
}
|
|
54
|
+
// Update beams
|
|
55
|
+
this.updateBeams();
|
|
56
|
+
// Render text with beam effects line by line
|
|
57
|
+
const lines = this.text.split("\n");
|
|
58
|
+
const renderedLines = [];
|
|
59
|
+
for (let y = 0; y < lines.length; y++) {
|
|
60
|
+
let line = "";
|
|
61
|
+
const chars = [...lines[y]];
|
|
62
|
+
for (let x = 0; x < chars.length; x++) {
|
|
63
|
+
const char = chars[x];
|
|
64
|
+
let color = this.options.baseColor;
|
|
65
|
+
// Check if character is illuminated by any beam
|
|
66
|
+
for (const beam of this.beams) {
|
|
67
|
+
if (!beam.active)
|
|
68
|
+
continue;
|
|
69
|
+
const distance = beam.direction === "horizontal"
|
|
70
|
+
? Math.abs(y - beam.position.y)
|
|
71
|
+
: Math.abs(x - beam.position.x);
|
|
72
|
+
if (distance <= beam.width) {
|
|
73
|
+
const intensity = 1 - distance / beam.width;
|
|
74
|
+
const easedIntensity = easeInOutSine(intensity);
|
|
75
|
+
const beamColor = this.getBeamColor(beam);
|
|
76
|
+
color = this.applyIllumination(color, beamColor, easedIntensity);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const colorCode = this.getColorCode(color);
|
|
80
|
+
const resetCode = ANSI.reset;
|
|
81
|
+
line += colorCode + char + resetCode;
|
|
82
|
+
}
|
|
83
|
+
renderedLines.push(line);
|
|
84
|
+
}
|
|
85
|
+
this.animationFrameCount++;
|
|
86
|
+
return renderedLines;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Update beam positions and states
|
|
90
|
+
*/
|
|
91
|
+
updateBeams() {
|
|
92
|
+
const dimensions = this.getCanvasDimensions();
|
|
93
|
+
const spawnInterval = Math.floor(this.totalFrames / (this.options.beamCount * 3));
|
|
94
|
+
// Spawn new beams more frequently
|
|
95
|
+
if (this.beams.filter(b => b.active).length < this.options.beamCount &&
|
|
96
|
+
this.animationFrameCount - this.lastBeamSpawn > spawnInterval &&
|
|
97
|
+
this.animationFrameCount < this.totalFrames * 0.8) {
|
|
98
|
+
this.spawnBeam();
|
|
99
|
+
this.lastBeamSpawn = this.animationFrameCount;
|
|
100
|
+
}
|
|
101
|
+
// Update existing beams
|
|
102
|
+
for (const beam of this.beams) {
|
|
103
|
+
if (!beam.active)
|
|
104
|
+
continue;
|
|
105
|
+
// Update position based on direction
|
|
106
|
+
if (beam.direction === "horizontal") {
|
|
107
|
+
beam.position.x += beam.speed;
|
|
108
|
+
// Deactivate if off screen
|
|
109
|
+
if (beam.position.x > dimensions.width + beam.width) {
|
|
110
|
+
beam.active = false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
beam.position.y += beam.speed;
|
|
115
|
+
// Deactivate if off screen
|
|
116
|
+
if (beam.position.y > dimensions.height + beam.width) {
|
|
117
|
+
beam.active = false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Check if effect is complete
|
|
122
|
+
const activeBeams = this.beams.filter((b) => b.active).length;
|
|
123
|
+
this._isEffectComplete =
|
|
124
|
+
activeBeams === 0 && this.animationFrameCount >= this.totalFrames * 0.8;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Spawn a new beam
|
|
128
|
+
*/
|
|
129
|
+
spawnBeam() {
|
|
130
|
+
const dimensions = this.getCanvasDimensions();
|
|
131
|
+
const isHorizontal = Math.random() > 0.5;
|
|
132
|
+
const beam = {
|
|
133
|
+
id: this.nextBeamId++,
|
|
134
|
+
position: {
|
|
135
|
+
x: isHorizontal
|
|
136
|
+
? -this.options.beamWidth
|
|
137
|
+
: Math.random() * dimensions.width,
|
|
138
|
+
y: isHorizontal
|
|
139
|
+
? Math.random() * dimensions.height
|
|
140
|
+
: -this.options.beamWidth,
|
|
141
|
+
},
|
|
142
|
+
direction: isHorizontal ? "horizontal" : "vertical",
|
|
143
|
+
speed: this.options.beamSpeedRange[0] +
|
|
144
|
+
Math.random() *
|
|
145
|
+
(this.options.beamSpeedRange[1] - this.options.beamSpeedRange[0]),
|
|
146
|
+
width: this.options.beamWidth,
|
|
147
|
+
progress: 0,
|
|
148
|
+
active: true,
|
|
149
|
+
};
|
|
150
|
+
this.beams.push(beam);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get beam color based on its properties
|
|
154
|
+
*/
|
|
155
|
+
getBeamColor(beam) {
|
|
156
|
+
// Cycle through colors based on beam ID
|
|
157
|
+
const colorIndex = beam.id % this.options.beamColors.length;
|
|
158
|
+
return this.options.beamColors[colorIndex];
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Apply illumination to a base color
|
|
162
|
+
*/
|
|
163
|
+
applyIllumination(baseColor, beamColor, intensity) {
|
|
164
|
+
// Parse colors
|
|
165
|
+
const baseR = parseInt(baseColor.substring(0, 2), 16);
|
|
166
|
+
const baseG = parseInt(baseColor.substring(2, 4), 16);
|
|
167
|
+
const baseB = parseInt(baseColor.substring(4, 6), 16);
|
|
168
|
+
const beamR = parseInt(beamColor.substring(0, 2), 16);
|
|
169
|
+
const beamG = parseInt(beamColor.substring(2, 4), 16);
|
|
170
|
+
const beamB = parseInt(beamColor.substring(4, 6), 16);
|
|
171
|
+
// Apply illumination with brightness multiplier
|
|
172
|
+
const brightness = 1 + (this.options.illuminationBrightness - 1) * intensity;
|
|
173
|
+
const r = Math.min(255, Math.round(baseR + (beamR - baseR) * intensity * brightness));
|
|
174
|
+
const g = Math.min(255, Math.round(baseG + (beamG - baseG) * intensity * brightness));
|
|
175
|
+
const b = Math.min(255, Math.round(baseB + (beamB - baseB) * intensity * brightness));
|
|
176
|
+
return [r, g, b]
|
|
177
|
+
.map((c) => Math.max(0, Math.min(255, c)).toString(16).padStart(2, "0"))
|
|
178
|
+
.join("");
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get ANSI color code for a color
|
|
182
|
+
*/
|
|
183
|
+
getColorCode(color) {
|
|
184
|
+
if (!color || this.config.noColor) {
|
|
185
|
+
return "";
|
|
186
|
+
}
|
|
187
|
+
// For RGB colors, convert to ANSI 24-bit color
|
|
188
|
+
if (typeof color === "string") {
|
|
189
|
+
const r = parseInt(color.substring(0, 2), 16);
|
|
190
|
+
const g = parseInt(color.substring(2, 4), 16);
|
|
191
|
+
const b = parseInt(color.substring(4, 6), 16);
|
|
192
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
193
|
+
}
|
|
194
|
+
// For XTerm colors
|
|
195
|
+
return `\x1b[38;5;${color}m`;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Render fallback for when effects are disabled
|
|
199
|
+
*/
|
|
200
|
+
renderFallback() {
|
|
201
|
+
return this.text.split("\n");
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if effect is complete
|
|
205
|
+
*/
|
|
206
|
+
isComplete() {
|
|
207
|
+
return this._isEffectComplete;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Reset the effect
|
|
211
|
+
*/
|
|
212
|
+
onReset() {
|
|
213
|
+
this.beams = [];
|
|
214
|
+
this.animationFrameCount = 0;
|
|
215
|
+
this.nextBeamId = 0;
|
|
216
|
+
this.lastBeamSpawn = 0;
|
|
217
|
+
this._isEffectComplete = false;
|
|
218
|
+
this.onInitialize();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=beams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beams.js","sourceRoot":"","sources":["../../../src/effects/implementations/beams.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blackhole Effect
|
|
3
|
+
* Characters are consumed by a black hole and explode outwards
|
|
4
|
+
*/
|
|
5
|
+
import { BaseEffect } from "../types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Configuration options for the Blackhole effect
|
|
8
|
+
*/
|
|
9
|
+
export interface BlackholeEffectOptions {
|
|
10
|
+
/** Duration in milliseconds */
|
|
11
|
+
duration?: number;
|
|
12
|
+
/** Color for the blackhole border stars */
|
|
13
|
+
blackholeColor?: string;
|
|
14
|
+
/** Colors for stars during explosion */
|
|
15
|
+
starColors?: string[];
|
|
16
|
+
/** Final color for characters */
|
|
17
|
+
finalColor?: string;
|
|
18
|
+
/** Use gradient for final color */
|
|
19
|
+
useGradient?: boolean;
|
|
20
|
+
/** Gradient direction */
|
|
21
|
+
gradientDirection?: "vertical" | "horizontal" | "diagonal";
|
|
22
|
+
/** Size of the blackhole relative to canvas (0.1 - 0.5) */
|
|
23
|
+
blackholeSize?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Blackhole effect implementation
|
|
27
|
+
*/
|
|
28
|
+
export declare class BlackholeEffect extends BaseEffect {
|
|
29
|
+
readonly name = "Blackhole";
|
|
30
|
+
readonly description = "Characters are consumed by a black hole and explode outwards";
|
|
31
|
+
private options;
|
|
32
|
+
private characterStates;
|
|
33
|
+
private animationFrameCount;
|
|
34
|
+
private totalFrames;
|
|
35
|
+
private _isEffectComplete;
|
|
36
|
+
private currentPhase;
|
|
37
|
+
private phaseProgress;
|
|
38
|
+
private blackholeCenter;
|
|
39
|
+
private blackholeRadius;
|
|
40
|
+
private blackholeChars;
|
|
41
|
+
private consumptionQueue;
|
|
42
|
+
private readonly starSymbols;
|
|
43
|
+
private readonly starfieldColors;
|
|
44
|
+
constructor(options?: BlackholeEffectOptions);
|
|
45
|
+
/**
|
|
46
|
+
* Initialize the effect
|
|
47
|
+
*/
|
|
48
|
+
protected onInitialize(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Calculate gradient colors
|
|
51
|
+
*/
|
|
52
|
+
private calculateGradientColors;
|
|
53
|
+
/**
|
|
54
|
+
* Get gradient key based on direction
|
|
55
|
+
*/
|
|
56
|
+
private getGradientKey;
|
|
57
|
+
/**
|
|
58
|
+
* Render the next frame
|
|
59
|
+
*/
|
|
60
|
+
render(): Promise<string[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Update animation state for all characters
|
|
63
|
+
*/
|
|
64
|
+
private updateAnimationState;
|
|
65
|
+
/**
|
|
66
|
+
* Update individual character position
|
|
67
|
+
*/
|
|
68
|
+
private updateCharacterPosition;
|
|
69
|
+
/**
|
|
70
|
+
* Create visual representation of a character
|
|
71
|
+
*/
|
|
72
|
+
private createCharacterVisual;
|
|
73
|
+
/**
|
|
74
|
+
* Calculate distance between two coordinates
|
|
75
|
+
*/
|
|
76
|
+
private calculateDistance;
|
|
77
|
+
/**
|
|
78
|
+
* Get ANSI color code for a color
|
|
79
|
+
*/
|
|
80
|
+
private getColorCode;
|
|
81
|
+
/**
|
|
82
|
+
* Interpolate between two colors
|
|
83
|
+
*/
|
|
84
|
+
private interpolateColor;
|
|
85
|
+
/**
|
|
86
|
+
* Render fallback for when effects are disabled
|
|
87
|
+
*/
|
|
88
|
+
renderFallback(): string[];
|
|
89
|
+
/**
|
|
90
|
+
* Check if effect is complete
|
|
91
|
+
*/
|
|
92
|
+
isComplete(): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Reset the effect
|
|
95
|
+
*/
|
|
96
|
+
protected onReset(): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=blackhole.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blackhole.d.ts","sourceRoot":"","sources":["../../../src/effects/implementations/blackhole.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EAMX,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;IAC3D,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAyBD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,kEAC6C;IAEjE,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,eAAe,CAAmD;IAC1E,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,YAAY,CAKO;IAE3B,OAAO,CAAC,aAAa,CAAa;IAGlC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,cAAc,CAAyB;IAE/C,OAAO,CAAC,gBAAgB,CAAyB;IAGjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAC7E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAO9B;gBAEU,OAAO,GAAE,sBAA2B;IAchD;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAsF9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwC/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAyCjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwI/B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkE7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;CAU1B"}
|