erosolar-cli 1.7.117 → 1.7.119

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.
Files changed (36) hide show
  1. package/dist/core/agent.js +4 -4
  2. package/dist/core/agent.js.map +1 -1
  3. package/dist/shell/systemPrompt.d.ts.map +1 -1
  4. package/dist/shell/systemPrompt.js +3 -4
  5. package/dist/shell/systemPrompt.js.map +1 -1
  6. package/dist/tools/editTools.d.ts.map +1 -1
  7. package/dist/tools/editTools.js +29 -6
  8. package/dist/tools/editTools.js.map +1 -1
  9. package/dist/tools/fileTools.d.ts.map +1 -1
  10. package/dist/tools/fileTools.js +2 -126
  11. package/dist/tools/fileTools.js.map +1 -1
  12. package/dist/ui/EnhancedPinnedChatBox.d.ts +2 -0
  13. package/dist/ui/EnhancedPinnedChatBox.d.ts.map +1 -0
  14. package/dist/ui/EnhancedPinnedChatBox.js +3 -0
  15. package/dist/ui/EnhancedPinnedChatBox.js.map +1 -0
  16. package/dist/ui/persistentPrompt.d.ts +32 -2
  17. package/dist/ui/persistentPrompt.d.ts.map +1 -1
  18. package/dist/ui/persistentPrompt.js +231 -79
  19. package/dist/ui/persistentPrompt.js.map +1 -1
  20. package/package.json +1 -1
  21. package/dist/shell/enhancedInteractiveShell.d.ts +0 -42
  22. package/dist/shell/enhancedInteractiveShell.d.ts.map +0 -1
  23. package/dist/shell/enhancedInteractiveShell.js +0 -139
  24. package/dist/shell/enhancedInteractiveShell.js.map +0 -1
  25. package/dist/shell/enhancedShellApp.d.ts +0 -22
  26. package/dist/shell/enhancedShellApp.d.ts.map +0 -1
  27. package/dist/shell/enhancedShellApp.js +0 -148
  28. package/dist/shell/enhancedShellApp.js.map +0 -1
  29. package/dist/ui/enhancedPinnedChatBox.d.ts +0 -93
  30. package/dist/ui/enhancedPinnedChatBox.d.ts.map +0 -1
  31. package/dist/ui/enhancedPinnedChatBox.js +0 -372
  32. package/dist/ui/enhancedPinnedChatBox.js.map +0 -1
  33. package/dist/ui/persistentChatBox.d.ts +0 -137
  34. package/dist/ui/persistentChatBox.d.ts.map +0 -1
  35. package/dist/ui/persistentChatBox.js +0 -298
  36. package/dist/ui/persistentChatBox.js.map +0 -1
@@ -1,372 +0,0 @@
1
- /**
2
- * EnhancedPinnedChatBox - Modified version of PinnedChatBox with persistent visibility during streaming
3
- * and enhanced paste handling
4
- */
5
- import { theme } from './theme.js';
6
- import { ANSI } from './ansi.js';
7
- export class EnhancedPinnedChatBox {
8
- writeStream;
9
- state;
10
- reservedLines = 2;
11
- _lastRenderedHeight = 0;
12
- inputBuffer = '';
13
- cursorPosition = 0;
14
- commandIdCounter = 0;
15
- onCommandQueued;
16
- onInputSubmit;
17
- renderScheduled = false;
18
- isEnabled = true;
19
- isDisposed = false;
20
- lastRenderTime = 0;
21
- renderThrottleMs = 16;
22
- maxInputLength = 10000;
23
- maxQueueSize = 100;
24
- ansiPattern = /[\u001B\u009B][[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
25
- oscPattern = /\u001b\][^\u0007]*(?:\u0007|\u001b\\)/g;
26
- maxStatusMessageLength = 200;
27
- // Scroll region management
28
- scrollRegionActive = false;
29
- // Input history
30
- inputHistory = [];
31
- historyIndex = -1;
32
- tempCurrentInput = '';
33
- maxHistorySize = 100;
34
- // Enhanced paste tracking
35
- isPastedBlock = false;
36
- pastedFullContent = '';
37
- pasteStartTime = 0;
38
- pasteLineCount = 0;
39
- maxPasteLines = 50;
40
- outputInterceptorCleanup;
41
- constructor(writeStream, _promptText = '> ', options = {}) {
42
- this.writeStream = writeStream;
43
- this.onCommandQueued = options.onCommandQueued;
44
- this.onInputSubmit = options.onInputSubmit;
45
- this.maxInputLength = options.maxInputLength ?? this.maxInputLength;
46
- this.maxQueueSize = options.maxQueueSize ?? this.maxQueueSize;
47
- this.state = {
48
- isProcessing: false,
49
- queuedCommands: [],
50
- currentInput: '',
51
- contextUsage: 0,
52
- statusMessage: null,
53
- isVisible: true,
54
- };
55
- }
56
- /**
57
- * Enhanced paste detection with summarization
58
- */
59
- handlePaste(content) {
60
- if (this.isDisposed)
61
- return;
62
- const lines = content.split('\n');
63
- const lineCount = lines.length;
64
- const charCount = content.length;
65
- this.pasteStartTime = Date.now();
66
- this.pasteLineCount = lineCount;
67
- // For large pastes, show summary instead of full content
68
- if (lineCount > this.maxPasteLines || charCount > 2000) {
69
- this.isPastedBlock = true;
70
- this.pastedFullContent = content;
71
- const summaryLines = lines.slice(0, 5);
72
- const remainingLines = lineCount - 5;
73
- const summary = summaryLines.join('\n') +
74
- (remainingLines > 0 ? `\n... (${remainingLines} more lines)` : '');
75
- this.inputBuffer = summary;
76
- this.cursorPosition = summary.length;
77
- this.state.currentInput = summary;
78
- this.setStatusMessage(`📋 Pasted ${lineCount} lines, ${charCount} chars - hit Enter to submit`);
79
- }
80
- else {
81
- this.isPastedBlock = false;
82
- this.pastedFullContent = '';
83
- this.inputBuffer = content;
84
- this.cursorPosition = content.length;
85
- this.state.currentInput = content;
86
- }
87
- this.scheduleRender();
88
- }
89
- /**
90
- * Clear paste state
91
- */
92
- clearPastedBlock() {
93
- this.isPastedBlock = false;
94
- this.pastedFullContent = '';
95
- this.pasteStartTime = 0;
96
- this.pasteLineCount = 0;
97
- }
98
- /**
99
- * Handle character input with paste detection
100
- */
101
- handleCharacter(char) {
102
- if (this.isDisposed)
103
- return;
104
- const now = Date.now();
105
- if (this.pasteStartTime > 0 && now - this.pasteStartTime < 100) {
106
- // Rapid input detected - treat as paste continuation
107
- this.inputBuffer = this.inputBuffer.slice(0, this.cursorPosition) +
108
- char +
109
- this.inputBuffer.slice(this.cursorPosition);
110
- this.cursorPosition += char.length;
111
- this.state.currentInput = this.inputBuffer;
112
- this.scheduleRender();
113
- return;
114
- }
115
- // Normal character input
116
- this.inputBuffer = this.inputBuffer.slice(0, this.cursorPosition) +
117
- char +
118
- this.inputBuffer.slice(this.cursorPosition);
119
- this.cursorPosition += char.length;
120
- this.state.currentInput = this.inputBuffer;
121
- this.clearPastedBlock();
122
- this.scheduleRender();
123
- }
124
- /**
125
- * Handle Enter key - only submit when explicitly pressed
126
- */
127
- handleEnter() {
128
- if (this.isDisposed)
129
- return null;
130
- let input;
131
- // If we have a pasted block, use the full content
132
- if (this.isPastedBlock && this.pastedFullContent) {
133
- input = this.sanitizeCommandText(this.pastedFullContent);
134
- }
135
- else {
136
- input = this.sanitizeCommandText(this.inputBuffer);
137
- }
138
- if (!input)
139
- return null;
140
- // Add to history before processing
141
- const historyEntry = this.isPastedBlock
142
- ? `[Pasted ${this.pasteLineCount} lines] ${input.slice(0, 100)}...`
143
- : input;
144
- this.addToHistory(historyEntry);
145
- // If processing, queue the command instead of submitting
146
- if (this.state.isProcessing) {
147
- const type = input.startsWith('/') ? 'slash' : 'request';
148
- const queued = this.queueCommand(input, type);
149
- if (!queued) {
150
- this.setStatusMessage(`Queue is full (${this.maxQueueSize}). Submit after current task or clear queued items.`);
151
- return null;
152
- }
153
- this.clearInput();
154
- return null;
155
- }
156
- // Clear input and paste state, then notify
157
- this.clearInput();
158
- if (this.onInputSubmit) {
159
- this.onInputSubmit(input);
160
- }
161
- return input;
162
- }
163
- /**
164
- * Enhanced render that always shows during processing
165
- */
166
- render() {
167
- if (!this.state.isVisible || !this.supportsRendering())
168
- return;
169
- // ALWAYS render during processing - use persistent input mode
170
- if (this.state.isProcessing) {
171
- this.renderPersistentInput();
172
- return;
173
- }
174
- // Not processing - render the standard status box
175
- this.lastRenderTime = Date.now();
176
- try {
177
- const cols = Math.max(this.writeStream.columns || 80, 40);
178
- const separatorWidth = Math.min(cols - 2, 72);
179
- // Build status message
180
- const statusParts = [];
181
- // Processing status
182
- if (this.state.statusMessage) {
183
- const maxLen = Math.max(20, cols - 30);
184
- const msg = this.state.statusMessage.length > maxLen
185
- ? `${this.state.statusMessage.slice(0, maxLen - 3)}...`
186
- : this.state.statusMessage;
187
- statusParts.push(theme.ui.muted(msg));
188
- }
189
- if (statusParts.length === 0) {
190
- // Not processing and no status - nothing to show
191
- return;
192
- }
193
- const statusLine = statusParts.join(' │ ');
194
- const separator = theme.ui.border('─'.repeat(separatorWidth));
195
- // Write the 3-line pinned box
196
- this.safeWrite(`\r${ANSI.CLEAR_LINE}${separator}\n`);
197
- this.safeWrite(`${ANSI.CLEAR_LINE}${statusLine}\n`);
198
- this.safeWrite(`${ANSI.CLEAR_LINE}${theme.ui.muted('>')} `);
199
- this._lastRenderedHeight = 3;
200
- }
201
- catch {
202
- // Silently handle render errors
203
- }
204
- }
205
- /**
206
- * Render persistent input during processing
207
- */
208
- renderPersistentInput() {
209
- if (!this.supportsRendering())
210
- return;
211
- const rows = this.writeStream.rows || 24;
212
- const cols = Math.max(this.writeStream.columns || 80, 40);
213
- // Save cursor position
214
- this.safeWrite(ANSI.SAVE_CURSOR);
215
- // Move to the reserved bottom area (outside scroll region)
216
- this.safeWrite(ANSI.CURSOR_TO_BOTTOM(rows - 1));
217
- // Build status line
218
- const queueCount = this.state.queuedCommands.length;
219
- let statusText = '';
220
- if (this.state.isProcessing) {
221
- const queuePart = queueCount > 0 ? ` (${queueCount} queued)` : '';
222
- statusText = `🔄 AI is streaming...${queuePart} [Enter: queue additional prompts]`;
223
- }
224
- else if (this.state.statusMessage) {
225
- statusText = this.state.statusMessage;
226
- }
227
- else if (queueCount > 0) {
228
- statusText = `${queueCount} follow-up${queueCount === 1 ? '' : 's'} queued`;
229
- }
230
- // Render separator and status on bottom lines
231
- const separatorWidth = Math.min(cols - 2, 72);
232
- const separator = theme.ui.border('─'.repeat(separatorWidth));
233
- // Line rows-1: separator
234
- this.safeWrite(ANSI.CLEAR_LINE);
235
- this.safeWrite(separator);
236
- // Line rows: input line with prompt or status
237
- this.safeWrite(`\n${ANSI.CLEAR_LINE}`);
238
- // Show actual input line during processing so user can see what they're typing
239
- const promptPrefix = theme.ui.muted('> ');
240
- const currentInput = this.inputBuffer;
241
- const maxInputDisplay = cols - 4;
242
- // Truncate input if too long, showing end of input
243
- let displayInput = currentInput;
244
- if (displayInput.length > maxInputDisplay) {
245
- displayInput = '…' + displayInput.slice(-(maxInputDisplay - 1));
246
- }
247
- // Render prompt + input
248
- this.safeWrite(promptPrefix);
249
- this.safeWrite(displayInput);
250
- // Show status hint on the right if there's room
251
- if (statusText && currentInput.length < maxInputDisplay - statusText.length - 5) {
252
- const padding = cols - 3 - currentInput.length - statusText.length - 3;
253
- if (padding > 3) {
254
- this.safeWrite(' '.repeat(padding));
255
- this.safeWrite(theme.ui.muted(statusText.slice(0, cols - currentInput.length - 6)));
256
- }
257
- }
258
- // Restore cursor to scroll region
259
- this.safeWrite(ANSI.RESTORE_CURSOR);
260
- }
261
- // ... (other methods remain largely the same as PinnedChatBox)
262
- supportsRendering() {
263
- return this.isEnabled &&
264
- !this.isDisposed &&
265
- this.writeStream.writable &&
266
- this.writeStream.isTTY;
267
- }
268
- safeWrite(content) {
269
- try {
270
- if (this.writeStream.writable) {
271
- this.writeStream.write(content);
272
- }
273
- }
274
- catch {
275
- // Swallow write errors
276
- }
277
- }
278
- sanitizeCommandText(text) {
279
- return text
280
- .replace(this.ansiPattern, '')
281
- .replace(this.oscPattern, '')
282
- .trim();
283
- }
284
- sanitizeStatusMessage(message) {
285
- if (!message)
286
- return null;
287
- return message
288
- .replace(this.ansiPattern, '')
289
- .replace(this.oscPattern, '')
290
- .slice(0, this.maxStatusMessageLength);
291
- }
292
- addToHistory(entry) {
293
- if (!entry.trim())
294
- return;
295
- const existingIndex = this.inputHistory.indexOf(entry);
296
- if (existingIndex >= 0) {
297
- this.inputHistory.splice(existingIndex, 1);
298
- }
299
- this.inputHistory.push(entry);
300
- if (this.inputHistory.length > this.maxHistorySize) {
301
- this.inputHistory = this.inputHistory.slice(-this.maxHistorySize);
302
- }
303
- }
304
- setEnabled(enabled) {
305
- if (this.isDisposed)
306
- return;
307
- if (!enabled && this.isEnabled) {
308
- this.clear();
309
- }
310
- this.isEnabled = enabled;
311
- if (enabled) {
312
- this.scheduleRender();
313
- }
314
- }
315
- setProcessing(isProcessing) {
316
- if (this.isDisposed)
317
- return;
318
- this.state.isProcessing = isProcessing;
319
- this.scheduleRender();
320
- }
321
- setContextUsage(percentage) {
322
- if (this.isDisposed)
323
- return;
324
- const value = Number.isFinite(percentage) ? percentage : 0;
325
- this.state.contextUsage = Math.max(0, Math.min(100, value));
326
- }
327
- setStatusMessage(message) {
328
- if (this.isDisposed)
329
- return;
330
- this.state.statusMessage = this.sanitizeStatusMessage(message);
331
- this.scheduleRender();
332
- }
333
- queueCommand(text, type = 'request') {
334
- if (this.isDisposed)
335
- return null;
336
- if (typeof text !== 'string')
337
- return null;
338
- const sanitizedText = this.sanitizeCommandText(text);
339
- if (!sanitizedText)
340
- return null;
341
- if (this.state.queuedCommands.length >= this.maxQueueSize) {
342
- const idx = this.state.queuedCommands.findIndex(c => c.type !== 'slash');
343
- if (idx >= 0) {
344
- this.state.queuedCommands.splice(idx, 1);
345
- }
346
- else {
347
- return null;
348
- }
349
- }
350
- const truncated = sanitizedText.slice(0, this.maxInputLength);
351
- const preview = truncated.length > 60 ? `${truncated.slice(0, 57)}...` : truncated;
352
- const cmd = {
353
- id: `cmd-${++this.commandIdCounter}`,
354
- text: truncated,
355
- type,
356
- timestamp: Date.now(),
357
- preview,
358
- };
359
- this.state.queuedCommands.push(cmd);
360
- this.scheduleRender();
361
- if (this.onCommandQueued) {
362
- this.onCommandQueued(cmd);
363
- }
364
- return cmd;
365
- }
366
- clearQueue() {
367
- if (this.isDisposed)
368
- return;
369
- this.state.que;
370
- }
371
- }
372
- //# sourceMappingURL=enhancedPinnedChatBox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhancedPinnedChatBox.js","sourceRoot":"","sources":["../../src/ui/enhancedPinnedChatBox.ts"],"names":[],"mappings":"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"}
@@ -1,137 +0,0 @@
1
- /**
2
- * Persistent Chat Box - Stays at bottom during AI streaming
3
- *
4
- * Features:
5
- * - Always visible at bottom of terminal
6
- * - Supports typing while AI is streaming
7
- * - Gracefully handles long pastes without errors
8
- * - Only submits to AI when user hits enter key
9
- * - Integrates with existing multiline paste handler
10
- */
11
- export interface PersistentChatBoxConfig {
12
- /** Whether chat box is enabled */
13
- enabled: boolean;
14
- /** Position from bottom (lines) */
15
- position: number;
16
- /** Maximum lines for chat box display */
17
- maxLines: number;
18
- /** Whether to show paste summaries */
19
- showPasteSummaries: boolean;
20
- /** Whether to auto-scroll during streaming */
21
- autoScroll: boolean;
22
- }
23
- export interface ChatBoxState {
24
- /** Current input text */
25
- input: string;
26
- /** Whether AI is currently streaming */
27
- isStreaming: boolean;
28
- /** Whether user is currently typing */
29
- isTyping: boolean;
30
- /** Whether paste mode is active */
31
- isPasteMode: boolean;
32
- /** Cursor position */
33
- cursorPosition: number;
34
- /** History of inputs */
35
- history: string[];
36
- /** Current history index */
37
- historyIndex: number;
38
- }
39
- export type ChatBoxSubmitCallback = (input: string) => void;
40
- export type ChatBoxCancelCallback = () => void;
41
- export declare class PersistentChatBox {
42
- private rl;
43
- private config;
44
- private state;
45
- private onSubmit;
46
- private onCancel;
47
- private isActive;
48
- private originalPrompt;
49
- private pasteBuffer;
50
- private pasteMode;
51
- constructor(onSubmit: ChatBoxSubmitCallback, onCancel: ChatBoxCancelCallback, config?: Partial<PersistentChatBoxConfig>);
52
- /**
53
- * Setup readline event handlers
54
- */
55
- private setupEventHandlers;
56
- /**
57
- * Handle line input (when user presses enter)
58
- */
59
- private handleLineInput;
60
- /**
61
- * Handle normal text input
62
- */
63
- private handleNormalInput;
64
- /**
65
- * Handle paste completion
66
- */
67
- private handlePasteComplete;
68
- /**
69
- * Handle raw data input for paste detection
70
- */
71
- private handleDataInput;
72
- /**
73
- * Handle cancel (Ctrl+C)
74
- */
75
- private handleCancel;
76
- /**
77
- * Handle close
78
- */
79
- private handleClose;
80
- /**
81
- * Handle history navigation - up
82
- */
83
- private handleHistoryUp;
84
- /**
85
- * Handle history navigation - down
86
- */
87
- private handleHistoryDown;
88
- /**
89
- * Update the readline prompt
90
- */
91
- private updatePrompt;
92
- /**
93
- * Set input text
94
- */
95
- private setInput;
96
- /**
97
- * Clear input
98
- */
99
- private clearInput;
100
- /**
101
- * Get default prompt based on streaming state
102
- */
103
- private getDefaultPrompt;
104
- /**
105
- * Activate the chat box
106
- */
107
- activate(): void;
108
- /**
109
- * Deactivate the chat box
110
- */
111
- deactivate(): void;
112
- /**
113
- * Set streaming state
114
- */
115
- setStreaming(isStreaming: boolean): void;
116
- /**
117
- * Add message to history
118
- */
119
- addToHistory(message: string): void;
120
- /**
121
- * Get current state
122
- */
123
- getState(): ChatBoxState;
124
- /**
125
- * Get config
126
- */
127
- getConfig(): PersistentChatBoxConfig;
128
- /**
129
- * Update config
130
- */
131
- updateConfig(config: Partial<PersistentChatBoxConfig>): void;
132
- /**
133
- * Dispose of resources
134
- */
135
- dispose(): void;
136
- }
137
- //# sourceMappingURL=PersistentChatBox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PersistentChatBox.d.ts","sourceRoot":"","sources":["../../src/ui/PersistentChatBox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAE/C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAkB;gBAGjC,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM;IAmC/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAQxC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASnC;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,SAAS,IAAI,uBAAuB;IAIpC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}