osagent-cli 0.1.12 → 0.1.13

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.
@@ -0,0 +1,285 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 OSAgent OC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Terminal UI utilities for consistent styling across commands
8
+ */
9
+ // ANSI color codes
10
+ export const colors = {
11
+ reset: '\x1b[0m',
12
+ bold: '\x1b[1m',
13
+ dim: '\x1b[2m',
14
+ italic: '\x1b[3m',
15
+ underline: '\x1b[4m',
16
+ // Foreground colors
17
+ black: '\x1b[30m',
18
+ red: '\x1b[31m',
19
+ green: '\x1b[32m',
20
+ yellow: '\x1b[33m',
21
+ blue: '\x1b[34m',
22
+ magenta: '\x1b[35m',
23
+ cyan: '\x1b[36m',
24
+ white: '\x1b[37m',
25
+ gray: '\x1b[90m',
26
+ // Bright colors
27
+ brightRed: '\x1b[91m',
28
+ brightGreen: '\x1b[92m',
29
+ brightYellow: '\x1b[93m',
30
+ brightBlue: '\x1b[94m',
31
+ brightMagenta: '\x1b[95m',
32
+ brightCyan: '\x1b[96m',
33
+ brightWhite: '\x1b[97m',
34
+ // Background colors
35
+ bgBlack: '\x1b[40m',
36
+ bgRed: '\x1b[41m',
37
+ bgGreen: '\x1b[42m',
38
+ bgYellow: '\x1b[43m',
39
+ bgBlue: '\x1b[44m',
40
+ bgMagenta: '\x1b[45m',
41
+ bgCyan: '\x1b[46m',
42
+ bgWhite: '\x1b[47m',
43
+ };
44
+ // Box drawing characters
45
+ export const box = {
46
+ topLeft: '╭',
47
+ topRight: '╮',
48
+ bottomLeft: '╰',
49
+ bottomRight: '╯',
50
+ horizontal: '─',
51
+ vertical: '│',
52
+ teeRight: '├',
53
+ teeLeft: '┤',
54
+ teeDown: '┬',
55
+ teeUp: '┴',
56
+ cross: '┼',
57
+ // Tree characters
58
+ branch: '├──',
59
+ lastBranch: '└──',
60
+ pipe: '│ ',
61
+ space: ' ',
62
+ };
63
+ // Status icons
64
+ export const icons = {
65
+ success: '✓',
66
+ error: '✗',
67
+ warning: '!',
68
+ info: 'ℹ',
69
+ pending: '○',
70
+ running: '◐',
71
+ arrow: '→',
72
+ bullet: '•',
73
+ star: '★',
74
+ check: '☑',
75
+ uncheck: '☐',
76
+ folder: '📁',
77
+ file: '📄',
78
+ gear: '⚙',
79
+ plug: '🔌',
80
+ key: '🔑',
81
+ lock: '🔒',
82
+ globe: '🌐',
83
+ rocket: '🚀',
84
+ sparkle: '✨',
85
+ wrench: '🔧',
86
+ package: '📦',
87
+ update: '🔄',
88
+ clock: '⏱',
89
+ shield: '🛡',
90
+ lightning: '⚡',
91
+ brain: '🧠',
92
+ robot: '🤖',
93
+ terminal: '💻',
94
+ doctor: '🩺',
95
+ };
96
+ /**
97
+ * Color a string
98
+ */
99
+ export function colorize(text, ...codes) {
100
+ return codes.join('') + text + colors.reset;
101
+ }
102
+ /**
103
+ * Create a styled status indicator
104
+ */
105
+ export function statusIcon(status) {
106
+ switch (status) {
107
+ case 'ok':
108
+ case 'success':
109
+ return colorize(icons.success, colors.green);
110
+ case 'warning':
111
+ return colorize(icons.warning, colors.yellow);
112
+ case 'error':
113
+ return colorize(icons.error, colors.red);
114
+ case 'info':
115
+ return colorize(icons.info, colors.blue);
116
+ case 'pending':
117
+ return colorize(icons.pending, colors.gray);
118
+ default:
119
+ return icons.bullet;
120
+ }
121
+ }
122
+ /**
123
+ * Create a box with title
124
+ */
125
+ export function createBox(title, width = 50) {
126
+ const innerWidth = width - 2;
127
+ const paddedTitle = ` ${title} `;
128
+ const titleStart = Math.floor((innerWidth - paddedTitle.length) / 2);
129
+ const titleEnd = innerWidth - titleStart - paddedTitle.length;
130
+ const top = box.topLeft +
131
+ box.horizontal.repeat(titleStart) +
132
+ colorize(paddedTitle, colors.bold, colors.cyan) +
133
+ box.horizontal.repeat(titleEnd) +
134
+ box.topRight;
135
+ const bottom = box.bottomLeft + box.horizontal.repeat(innerWidth) + box.bottomRight;
136
+ const line = (content) => {
137
+ const stripped = content.replace(/\x1b\[[0-9;]*m/g, '');
138
+ const padding = innerWidth - stripped.length;
139
+ return box.vertical + ' ' + content + ' '.repeat(Math.max(0, padding - 1)) + box.vertical;
140
+ };
141
+ return { top, bottom, line };
142
+ }
143
+ /**
144
+ * Create a simple divider
145
+ */
146
+ export function divider(width = 50, char = '─') {
147
+ return colorize(char.repeat(width), colors.gray);
148
+ }
149
+ /**
150
+ * Create a tree structure from items
151
+ */
152
+ export function createTree(items) {
153
+ const lines = [];
154
+ items.forEach((item, i) => {
155
+ const isLast = i === items.length - 1;
156
+ const prefix = isLast ? box.lastBranch : box.branch;
157
+ const statusStr = item.status ? statusIcon(item.status) + ' ' : '';
158
+ lines.push(`${prefix} ${statusStr}${item.label}`);
159
+ if (item.children) {
160
+ const childPrefix = isLast ? box.space : box.pipe;
161
+ item.children.forEach((child, j) => {
162
+ const isChildLast = j === item.children.length - 1;
163
+ const childBranch = isChildLast ? box.lastBranch : box.branch;
164
+ const childStatus = child.status ? statusIcon(child.status) + ' ' : '';
165
+ lines.push(`${childPrefix}${childBranch} ${childStatus}${child.label}`);
166
+ });
167
+ }
168
+ });
169
+ return lines;
170
+ }
171
+ /**
172
+ * Create a progress bar
173
+ */
174
+ export function progressBar(current, total, width = 30) {
175
+ const percentage = Math.min(100, Math.round((current / total) * 100));
176
+ const filled = Math.round((percentage / 100) * width);
177
+ const empty = width - filled;
178
+ const bar = colorize('█'.repeat(filled), colors.green) +
179
+ colorize('░'.repeat(empty), colors.gray);
180
+ return `[${bar}] ${percentage}%`;
181
+ }
182
+ /**
183
+ * Create a spinner frame (call repeatedly for animation)
184
+ */
185
+ const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
186
+ export function spinnerFrame(frame) {
187
+ return colorize(spinnerFrames[frame % spinnerFrames.length], colors.cyan);
188
+ }
189
+ /**
190
+ * Format a key-value pair
191
+ */
192
+ export function keyValue(key, value, keyWidth = 20) {
193
+ const paddedKey = key.padEnd(keyWidth);
194
+ return `${colorize(paddedKey, colors.gray)}${value}`;
195
+ }
196
+ /**
197
+ * Create a section header
198
+ */
199
+ export function sectionHeader(title, icon) {
200
+ const prefix = icon ? `${icon} ` : '';
201
+ return colorize(`${prefix}${title}`, colors.bold, colors.white);
202
+ }
203
+ /**
204
+ * Format bytes to human readable
205
+ */
206
+ export function formatBytes(bytes) {
207
+ if (bytes === 0)
208
+ return '0 B';
209
+ const k = 1024;
210
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
211
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
212
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
213
+ }
214
+ /**
215
+ * Format duration in ms to human readable
216
+ */
217
+ export function formatDuration(ms) {
218
+ if (ms < 1000)
219
+ return `${ms}ms`;
220
+ if (ms < 60000)
221
+ return `${(ms / 1000).toFixed(1)}s`;
222
+ if (ms < 3600000)
223
+ return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
224
+ return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;
225
+ }
226
+ /**
227
+ * Create an action prompt
228
+ */
229
+ export function actionPrompt(actions) {
230
+ return actions
231
+ .map(a => `[${colorize(a.key, colors.cyan)}] ${a.label}`)
232
+ .join(' ');
233
+ }
234
+ /**
235
+ * Truncate text with ellipsis
236
+ */
237
+ export function truncate(text, maxLength) {
238
+ if (text.length <= maxLength)
239
+ return text;
240
+ return text.slice(0, maxLength - 3) + '...';
241
+ }
242
+ /**
243
+ * Pad text to center
244
+ */
245
+ export function centerText(text, width) {
246
+ const stripped = text.replace(/\x1b\[[0-9;]*m/g, '');
247
+ const padding = Math.max(0, width - stripped.length);
248
+ const leftPad = Math.floor(padding / 2);
249
+ const rightPad = padding - leftPad;
250
+ return ' '.repeat(leftPad) + text + ' '.repeat(rightPad);
251
+ }
252
+ /**
253
+ * Create a table
254
+ */
255
+ export function createTable(headers, rows, options = {}) {
256
+ const { padding = 2, border = true } = options;
257
+ // Calculate column widths
258
+ const colWidths = headers.map((h, i) => {
259
+ const maxRowWidth = Math.max(...rows.map(r => (r[i] || '').replace(/\x1b\[[0-9;]*m/g, '').length));
260
+ return Math.max(h.length, maxRowWidth) + padding;
261
+ });
262
+ const lines = [];
263
+ if (border) {
264
+ lines.push(box.topLeft + colWidths.map(w => box.horizontal.repeat(w)).join(box.teeDown) + box.topRight);
265
+ }
266
+ // Header
267
+ const headerLine = headers.map((h, i) => centerText(colorize(h, colors.bold), colWidths[i])).join(border ? box.vertical : '');
268
+ lines.push(border ? box.vertical + headerLine + box.vertical : headerLine);
269
+ if (border) {
270
+ lines.push(box.teeRight + colWidths.map(w => box.horizontal.repeat(w)).join(box.cross) + box.teeLeft);
271
+ }
272
+ // Rows
273
+ for (const row of rows) {
274
+ const rowLine = row.map((cell, i) => {
275
+ const stripped = (cell || '').replace(/\x1b\[[0-9;]*m/g, '');
276
+ return ' ' + cell + ' '.repeat(Math.max(0, colWidths[i] - stripped.length - 1));
277
+ }).join(border ? box.vertical : '');
278
+ lines.push(border ? box.vertical + rowLine + box.vertical : rowLine);
279
+ }
280
+ if (border) {
281
+ lines.push(box.bottomLeft + colWidths.map(w => box.horizontal.repeat(w)).join(box.teeUp) + box.bottomRight);
282
+ }
283
+ return lines;
284
+ }
285
+ //# sourceMappingURL=terminalUI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminalUI.js","sourceRoot":"","sources":["../../../../src/ui/utils/terminalUI.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AAEH,mBAAmB;AACnB,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,SAAS;IACd,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IACpB,oBAAoB;IACpB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,gBAAgB;IAChB,SAAS,EAAE,UAAU;IACrB,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,UAAU;IACtB,aAAa,EAAE,UAAU;IACzB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,UAAU;IACvB,oBAAoB;IACpB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;CACX,CAAC;AAEX,yBAAyB;AACzB,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IACf,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,kBAAkB;IAClB,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;CACJ,CAAC;AAEX,eAAe;AACf,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;CACJ,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,GAAG,KAAe;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAmE;IAC5F,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3C,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C;YACE,OAAO,KAAK,CAAC,MAAM,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;IACjD,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAI,KAAK,GAAG,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IAE9D,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO;QACrB,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;QACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAC/C,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC;IAEf,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;IAEpF,MAAM,IAAI,GAAG,CAAC,OAAe,EAAU,EAAE;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7C,OAAO,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC5F,CAAC,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,GAAG;IAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAIE;IAEF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,CAAC,QAAS,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,WAAW,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,KAAK,GAAG,EAAE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAE3C,OAAO,IAAI,GAAG,KAAK,UAAU,GAAG,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,KAAa,EAAE,QAAQ,GAAG,EAAE;IAChE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,IAAa;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,GAAG,MAAM,GAAG,KAAK,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,IAAI,EAAE,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IAC1F,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA8C;IACzE,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;SACxD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,SAAiB;IACtD,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACnC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,OAAiB,EACjB,IAAgB,EAChB,UAAkD,EAAE;IAEpD,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/C,0BAA0B;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1G,CAAC;IAED,SAAS;IACT,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9H,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE3E,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACxG,CAAC;IAED,OAAO;IACP,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YAC7D,OAAO,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9G,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}