lobstercage-cli 0.1.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.
Files changed (58) hide show
  1. package/README.md +64 -0
  2. package/dist/commands/auth.d.ts +39 -0
  3. package/dist/commands/auth.d.ts.map +1 -0
  4. package/dist/commands/auth.js +393 -0
  5. package/dist/commands/auth.js.map +1 -0
  6. package/dist/commands/billing.d.ts +11 -0
  7. package/dist/commands/billing.d.ts.map +1 -0
  8. package/dist/commands/billing.js +181 -0
  9. package/dist/commands/billing.js.map +1 -0
  10. package/dist/commands/cages.d.ts +87 -0
  11. package/dist/commands/cages.d.ts.map +1 -0
  12. package/dist/commands/cages.js +603 -0
  13. package/dist/commands/cages.js.map +1 -0
  14. package/dist/commands/env.d.ts +42 -0
  15. package/dist/commands/env.d.ts.map +1 -0
  16. package/dist/commands/env.js +287 -0
  17. package/dist/commands/env.js.map +1 -0
  18. package/dist/commands/exec.d.ts +12 -0
  19. package/dist/commands/exec.d.ts.map +1 -0
  20. package/dist/commands/exec.js +127 -0
  21. package/dist/commands/exec.js.map +1 -0
  22. package/dist/commands/tunnel.d.ts +29 -0
  23. package/dist/commands/tunnel.d.ts.map +1 -0
  24. package/dist/commands/tunnel.js +232 -0
  25. package/dist/commands/tunnel.js.map +1 -0
  26. package/dist/index.d.ts +31 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +138 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/api.d.ts +96 -0
  31. package/dist/lib/api.d.ts.map +1 -0
  32. package/dist/lib/api.js +348 -0
  33. package/dist/lib/api.js.map +1 -0
  34. package/dist/lib/config.d.ts +63 -0
  35. package/dist/lib/config.d.ts.map +1 -0
  36. package/dist/lib/config.js +193 -0
  37. package/dist/lib/config.js.map +1 -0
  38. package/dist/lib/docker.d.ts +52 -0
  39. package/dist/lib/docker.d.ts.map +1 -0
  40. package/dist/lib/docker.js +210 -0
  41. package/dist/lib/docker.js.map +1 -0
  42. package/dist/lib/error-handler.d.ts +30 -0
  43. package/dist/lib/error-handler.d.ts.map +1 -0
  44. package/dist/lib/error-handler.js +113 -0
  45. package/dist/lib/error-handler.js.map +1 -0
  46. package/dist/lib/output.d.ts +71 -0
  47. package/dist/lib/output.d.ts.map +1 -0
  48. package/dist/lib/output.js +237 -0
  49. package/dist/lib/output.js.map +1 -0
  50. package/dist/lib/utils.d.ts +17 -0
  51. package/dist/lib/utils.d.ts.map +1 -0
  52. package/dist/lib/utils.js +71 -0
  53. package/dist/lib/utils.js.map +1 -0
  54. package/dist/types/index.d.ts +158 -0
  55. package/dist/types/index.d.ts.map +1 -0
  56. package/dist/types/index.js +8 -0
  57. package/dist/types/index.js.map +1 -0
  58. package/package.json +63 -0
package/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # @lobstercage/cli
2
+
3
+ Command-line interface for [LobsterCage](https://github.com/aptheon/lobster-cage) — Secure AI Agent Sandboxes.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @lobstercage/cli
9
+ ```
10
+
11
+ Requires Node.js >= 20.0.0.
12
+
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ # Authenticate
17
+ lobster login --browser
18
+
19
+ # Deploy a new cage
20
+ lobster deploy my-cage
21
+
22
+ # Open an interactive shell
23
+ lobster ssh my-cage
24
+
25
+ # Tunnel a port to localhost
26
+ lobster tunnel my-cage --port 3000
27
+
28
+ # Run a command inside a cage
29
+ lobster exec my-cage -- ls -la /workspace
30
+ ```
31
+
32
+ ## Commands
33
+
34
+ | Command | Description |
35
+ | --- | --- |
36
+ | `lobster login` | Authenticate with LobsterCage |
37
+ | `lobster deploy <name>` | Create and start a new cage |
38
+ | `lobster list` | List all cages |
39
+ | `lobster status <name>` | Show cage status |
40
+ | `lobster start <name>` | Start a stopped cage |
41
+ | `lobster stop <name>` | Stop a running cage |
42
+ | `lobster hibernate <name>` | Hibernate a cage (preserves state) |
43
+ | `lobster wake <name>` | Wake a hibernated cage |
44
+ | `lobster destroy <name>` | Delete a cage permanently |
45
+ | `lobster logs <name>` | View cage logs |
46
+ | `lobster env list <cage>` | List environment variables |
47
+ | `lobster env set <cage> KEY=VAL` | Set environment variables |
48
+ | `lobster env get <cage> <key>` | Get an environment variable |
49
+ | `lobster env delete <cage> <key>` | Delete an environment variable |
50
+ | `lobster env scan <cage>` | Scan for leaked secrets |
51
+ | `lobster tunnel <name> --port <port>` | Tunnel a port to localhost |
52
+ | `lobster ssh <name>` | Interactive shell into a cage |
53
+ | `lobster exec <name> -- <cmd>` | Run a command in a cage |
54
+ | `lobster billing` | View billing status |
55
+ | `lobster billing portal` | Open the billing portal |
56
+ | `lobster upgrade` | Upgrade to Pro plan |
57
+
58
+ ## Documentation
59
+
60
+ See the [Quickstart Guide](../docs/QUICKSTART.md) for the full walkthrough.
61
+
62
+ ## License
63
+
64
+ [BUSL-1.1](../LICENSE)
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Authentication Commands
3
+ *
4
+ * login, logout, register, whoami
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Login command handler
9
+ */
10
+ export declare function loginHandler(options: {
11
+ email?: string;
12
+ browser?: boolean;
13
+ json?: boolean;
14
+ }): Promise<void>;
15
+ /**
16
+ * Register command handler
17
+ */
18
+ export declare function registerHandler(options: {
19
+ email?: string;
20
+ name?: string;
21
+ json?: boolean;
22
+ }): Promise<void>;
23
+ /**
24
+ * Logout command handler
25
+ */
26
+ export declare function logoutHandler(options: {
27
+ json?: boolean;
28
+ }): Promise<void>;
29
+ /**
30
+ * Whoami command handler
31
+ */
32
+ export declare function whoamiHandler(options: {
33
+ json?: boolean;
34
+ }): Promise<void>;
35
+ /**
36
+ * Create auth commands
37
+ */
38
+ export declare function createAuthCommands(program: Command): void;
39
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqJpC;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChH;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE/G;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B9E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4BzD"}
@@ -0,0 +1,393 @@
1
+ "use strict";
2
+ /**
3
+ * Authentication Commands
4
+ *
5
+ * login, logout, register, whoami
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.loginHandler = loginHandler;
45
+ exports.registerHandler = registerHandler;
46
+ exports.logoutHandler = logoutHandler;
47
+ exports.whoamiHandler = whoamiHandler;
48
+ exports.createAuthCommands = createAuthCommands;
49
+ const http = __importStar(require("http"));
50
+ const url = __importStar(require("url"));
51
+ const node_crypto_1 = require("node:crypto");
52
+ const inquirer_1 = __importDefault(require("inquirer"));
53
+ const ora_1 = __importDefault(require("ora"));
54
+ const chalk_1 = __importDefault(require("chalk"));
55
+ const api = __importStar(require("../lib/api"));
56
+ const config = __importStar(require("../lib/config"));
57
+ const output = __importStar(require("../lib/output"));
58
+ const error_handler_1 = require("../lib/error-handler");
59
+ /**
60
+ * Validates email format
61
+ */
62
+ function isValidEmail(email) {
63
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
64
+ return emailRegex.test(email);
65
+ }
66
+ /**
67
+ * Validates password strength
68
+ */
69
+ function isValidPassword(password) {
70
+ if (password.length < 12) {
71
+ return { valid: false, message: 'Password must be at least 12 characters' };
72
+ }
73
+ if (!/[a-z]/.test(password)) {
74
+ return { valid: false, message: 'Password must contain a lowercase letter' };
75
+ }
76
+ if (!/[A-Z]/.test(password)) {
77
+ return { valid: false, message: 'Password must contain an uppercase letter' };
78
+ }
79
+ if (!/[0-9]/.test(password)) {
80
+ return { valid: false, message: 'Password must contain a number' };
81
+ }
82
+ if (!/[^a-zA-Z0-9]/.test(password)) {
83
+ return { valid: false, message: 'Password must contain a special character' };
84
+ }
85
+ return { valid: true };
86
+ }
87
+ /**
88
+ * Start a local HTTP server and wait for the browser callback with token
89
+ */
90
+ function waitForBrowserCallback(port, expectedState, timeoutMs = 120000) {
91
+ return new Promise((resolve, reject) => {
92
+ const server = http.createServer((req, res) => {
93
+ const parsed = url.parse(req.url || '', true);
94
+ if (parsed.pathname === '/callback') {
95
+ const token = parsed.query.token;
96
+ const errorMsg = parsed.query.error;
97
+ const state = parsed.query.state;
98
+ if (errorMsg) {
99
+ res.writeHead(200, { 'Content-Type': 'text/html' });
100
+ res.end('<html><body style="font-family:sans-serif;text-align:center;padding:40px"><h2>Authentication Failed</h2><p>You can close this tab.</p></body></html>');
101
+ server.close();
102
+ reject(new Error(errorMsg));
103
+ return;
104
+ }
105
+ if (state !== expectedState) {
106
+ res.writeHead(200, { 'Content-Type': 'text/html' });
107
+ res.end('<html><body style="font-family:sans-serif;text-align:center;padding:40px"><h2>Authentication Failed</h2><p>Invalid state parameter. You can close this tab.</p></body></html>');
108
+ server.close();
109
+ reject(new Error('State mismatch — possible CSRF attack. Please try again.'));
110
+ return;
111
+ }
112
+ if (token) {
113
+ res.writeHead(200, { 'Content-Type': 'text/html' });
114
+ res.end('<html><body style="font-family:sans-serif;text-align:center;padding:40px"><h2>Authenticated!</h2><p>You can close this tab and return to the terminal.</p></body></html>');
115
+ server.close();
116
+ resolve(token);
117
+ return;
118
+ }
119
+ }
120
+ res.writeHead(404);
121
+ res.end('Not found');
122
+ });
123
+ const timeout = setTimeout(() => {
124
+ server.close();
125
+ reject(new Error('Browser login timed out after 2 minutes'));
126
+ }, timeoutMs);
127
+ server.on('close', () => clearTimeout(timeout));
128
+ server.listen(port, '127.0.0.1');
129
+ });
130
+ }
131
+ /**
132
+ * Browser login — opens dashboard in browser, receives API key via local callback
133
+ */
134
+ async function browserLoginHandler(options) {
135
+ // Find a free port
136
+ const server = http.createServer();
137
+ const port = await new Promise((resolve, reject) => {
138
+ server.listen(0, '127.0.0.1', () => {
139
+ const addr = server.address();
140
+ if (addr && typeof addr === 'object') {
141
+ const p = addr.port;
142
+ server.close(() => resolve(p));
143
+ }
144
+ else {
145
+ reject(new Error('Failed to find free port'));
146
+ }
147
+ });
148
+ });
149
+ const state = (0, node_crypto_1.randomBytes)(32).toString('hex');
150
+ const dashboardUrl = `https://app.lobstercage.ai/cli-auth?port=${port}&state=${state}`;
151
+ output.info('Opening browser for authentication...');
152
+ console.log(` ${chalk_1.default.cyan.underline(dashboardUrl)}`);
153
+ console.log();
154
+ // Try to open browser
155
+ try {
156
+ const open = (await Promise.resolve().then(() => __importStar(require('open')))).default;
157
+ await open(dashboardUrl);
158
+ }
159
+ catch {
160
+ output.warning('Could not open browser automatically.');
161
+ output.info('Open the URL above in your browser to continue.');
162
+ }
163
+ const spinner = (0, ora_1.default)('Waiting for browser authentication...').start();
164
+ try {
165
+ const token = await waitForBrowserCallback(port, state);
166
+ spinner.stop();
167
+ // Store the API key as access token
168
+ config.updateConfig({
169
+ accessToken: token,
170
+ });
171
+ if (options.json) {
172
+ output.json({ success: true, method: 'browser' });
173
+ }
174
+ else {
175
+ output.success('Authenticated via browser!');
176
+ }
177
+ }
178
+ catch (err) {
179
+ (0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'browser authentication' });
180
+ }
181
+ }
182
+ /**
183
+ * Login command handler
184
+ */
185
+ async function loginHandler(options) {
186
+ if (options.browser) {
187
+ return browserLoginHandler(options);
188
+ }
189
+ let email = options.email;
190
+ let password;
191
+ // Interactive prompts if not provided
192
+ if (!email) {
193
+ const answers = await inquirer_1.default.prompt([
194
+ {
195
+ type: 'input',
196
+ name: 'email',
197
+ message: 'Email:',
198
+ validate: (input) => isValidEmail(input) || 'Invalid email address',
199
+ },
200
+ ]);
201
+ email = answers.email;
202
+ }
203
+ const passwordAnswer = await inquirer_1.default.prompt([
204
+ {
205
+ type: 'password',
206
+ name: 'password',
207
+ message: 'Password:',
208
+ mask: '*',
209
+ },
210
+ ]);
211
+ password = passwordAnswer.password;
212
+ const spinner = (0, ora_1.default)('Logging in...').start();
213
+ try {
214
+ const result = await api.login(email, password);
215
+ spinner.stop();
216
+ if (options.json) {
217
+ output.json({ success: true, user: result.user });
218
+ }
219
+ else {
220
+ output.success(`Logged in as ${result.user.email}`);
221
+ console.log(` Plan: ${result.user.plan}`);
222
+ }
223
+ }
224
+ catch (err) {
225
+ (0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'logging in' });
226
+ }
227
+ }
228
+ /**
229
+ * Register command handler
230
+ */
231
+ async function registerHandler(options) {
232
+ let email = options.email;
233
+ let name = options.name;
234
+ let password;
235
+ // Interactive prompts
236
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
237
+ const prompts = [];
238
+ if (!email) {
239
+ prompts.push({
240
+ type: 'input',
241
+ name: 'email',
242
+ message: 'Email:',
243
+ validate: (input) => isValidEmail(input) || 'Invalid email address',
244
+ });
245
+ }
246
+ if (!name) {
247
+ prompts.push({
248
+ type: 'input',
249
+ name: 'name',
250
+ message: 'Name (optional):',
251
+ });
252
+ }
253
+ prompts.push({
254
+ type: 'password',
255
+ name: 'password',
256
+ message: 'Password:',
257
+ mask: '*',
258
+ validate: (input) => {
259
+ const result = isValidPassword(input);
260
+ return result.valid || result.message;
261
+ },
262
+ });
263
+ prompts.push({
264
+ type: 'password',
265
+ name: 'confirmPassword',
266
+ message: 'Confirm password:',
267
+ mask: '*',
268
+ validate: (input, answers) => {
269
+ return input === answers.password || 'Passwords do not match';
270
+ },
271
+ });
272
+ const answers = await inquirer_1.default.prompt(prompts);
273
+ email = email || answers.email;
274
+ name = name || answers.name;
275
+ password = answers.password;
276
+ const spinner = (0, ora_1.default)('Creating account...').start();
277
+ try {
278
+ const result = await api.register(email, password, name || undefined);
279
+ spinner.stop();
280
+ if (options.json) {
281
+ output.json({ success: true, user: result.user });
282
+ }
283
+ else {
284
+ output.success(`Account created! Logged in as ${result.user.email}`);
285
+ }
286
+ }
287
+ catch (err) {
288
+ (0, error_handler_1.handleError)(err, { spinner, json: options.json, context: 'creating account' });
289
+ }
290
+ }
291
+ /**
292
+ * Logout command handler
293
+ */
294
+ async function logoutHandler(options) {
295
+ if (!config.isAuthenticated()) {
296
+ if (options.json) {
297
+ output.json({ success: true, message: 'Not logged in' });
298
+ }
299
+ else {
300
+ output.info('Not logged in');
301
+ }
302
+ return;
303
+ }
304
+ const spinner = (0, ora_1.default)('Logging out...').start();
305
+ try {
306
+ await api.logout();
307
+ spinner.stop();
308
+ if (options.json) {
309
+ output.json({ success: true });
310
+ }
311
+ else {
312
+ output.success('Logged out');
313
+ }
314
+ }
315
+ catch (err) {
316
+ spinner.stop();
317
+ // Even if API call fails, local auth is cleared
318
+ if (options.json) {
319
+ output.json({ success: true });
320
+ }
321
+ else {
322
+ output.success('Logged out');
323
+ }
324
+ }
325
+ }
326
+ /**
327
+ * Whoami command handler
328
+ */
329
+ async function whoamiHandler(options) {
330
+ if (!config.isAuthenticated()) {
331
+ if (options.json) {
332
+ output.json({ authenticated: false });
333
+ }
334
+ else {
335
+ output.info('Not logged in. Run `lobster login` to authenticate.');
336
+ }
337
+ return;
338
+ }
339
+ try {
340
+ const account = await api.getAccount();
341
+ if (options.json) {
342
+ output.json({ authenticated: true, ...account });
343
+ }
344
+ else {
345
+ console.log();
346
+ console.log(` Email: ${account.user.email}`);
347
+ console.log(` Name: ${account.user.name || '-'}`);
348
+ console.log(` Plan: ${account.plan.displayName}`);
349
+ console.log();
350
+ console.log(' Limits:');
351
+ console.log(` Max cages: ${account.limits.maxCages}`);
352
+ console.log(` Max CPU: ${account.limits.maxCpuPerCage / 1024} vCPU`);
353
+ console.log(` Max RAM: ${account.limits.maxMemoryPerCage} MB`);
354
+ if (account.limits.monthlyComputeHours) {
355
+ console.log(` Compute: ${account.limits.monthlyComputeHours} hours/month`);
356
+ }
357
+ console.log();
358
+ }
359
+ }
360
+ catch (err) {
361
+ (0, error_handler_1.handleError)(err, { json: options.json, context: 'fetching account info' });
362
+ }
363
+ }
364
+ /**
365
+ * Create auth commands
366
+ */
367
+ function createAuthCommands(program) {
368
+ program
369
+ .command('login')
370
+ .description('Login to LobsterCage')
371
+ .option('-e, --email <email>', 'Email address')
372
+ .option('-b, --browser', 'Authenticate via browser (opens dashboard)')
373
+ .option('--json', 'Output as JSON')
374
+ .action(loginHandler);
375
+ program
376
+ .command('register')
377
+ .description('Create a new LobsterCage account')
378
+ .option('-e, --email <email>', 'Email address')
379
+ .option('-n, --name <name>', 'Your name')
380
+ .option('--json', 'Output as JSON')
381
+ .action(registerHandler);
382
+ program
383
+ .command('logout')
384
+ .description('Logout from LobsterCage')
385
+ .option('--json', 'Output as JSON')
386
+ .action(logoutHandler);
387
+ program
388
+ .command('whoami')
389
+ .description('Display current user information')
390
+ .option('--json', 'Output as JSON')
391
+ .action(whoamiHandler);
392
+ }
393
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Billing Commands
3
+ *
4
+ * View billing status and manage subscription.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register billing commands
9
+ */
10
+ export declare function createBillingCommands(program: Command): void;
11
+ //# sourceMappingURL=billing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwIpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}