@quiltdata/benchling-webhook 0.5.4 → 0.6.1-20251104T043302Z

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 (107) hide show
  1. package/README.md +295 -12
  2. package/dist/bin/benchling-webhook.d.ts +1 -1
  3. package/dist/bin/benchling-webhook.d.ts.map +1 -1
  4. package/dist/bin/benchling-webhook.js +12 -22
  5. package/dist/bin/benchling-webhook.js.map +1 -1
  6. package/dist/bin/cdk-dev.js +59 -3
  7. package/dist/bin/cli.js +27 -9
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/commands/deploy.d.ts +6 -2
  10. package/dist/bin/commands/deploy.d.ts.map +1 -1
  11. package/dist/bin/commands/deploy.js +151 -90
  12. package/dist/bin/commands/deploy.js.map +1 -1
  13. package/dist/bin/commands/setup-wizard.d.ts +22 -0
  14. package/dist/bin/commands/setup-wizard.d.ts.map +1 -0
  15. package/dist/bin/commands/setup-wizard.js +47 -0
  16. package/dist/bin/commands/setup-wizard.js.map +1 -0
  17. package/dist/bin/config-profiles.d.ts +59 -0
  18. package/dist/bin/config-profiles.d.ts.map +1 -0
  19. package/dist/bin/config-profiles.js +272 -0
  20. package/dist/bin/config-profiles.js.map +1 -0
  21. package/dist/bin/create-secret.d.ts +25 -0
  22. package/dist/bin/create-secret.d.ts.map +1 -0
  23. package/dist/bin/create-secret.js +239 -0
  24. package/dist/bin/create-secret.js.map +1 -0
  25. package/dist/lib/benchling-auth-validator.d.ts +65 -0
  26. package/dist/lib/benchling-auth-validator.d.ts.map +1 -0
  27. package/dist/lib/benchling-auth-validator.js +213 -0
  28. package/dist/lib/benchling-auth-validator.js.map +1 -0
  29. package/dist/lib/benchling-webhook-stack.d.ts +13 -10
  30. package/dist/lib/benchling-webhook-stack.d.ts.map +1 -1
  31. package/dist/lib/benchling-webhook-stack.js +25 -69
  32. package/dist/lib/benchling-webhook-stack.js.map +1 -1
  33. package/dist/lib/config-logger.d.ts +191 -0
  34. package/dist/lib/config-logger.d.ts.map +1 -0
  35. package/dist/lib/config-logger.js +372 -0
  36. package/dist/lib/config-logger.js.map +1 -0
  37. package/dist/lib/configuration-saver.d.ts +75 -0
  38. package/dist/lib/configuration-saver.d.ts.map +1 -0
  39. package/dist/lib/configuration-saver.js +145 -0
  40. package/dist/lib/configuration-saver.js.map +1 -0
  41. package/dist/lib/configuration-validator.d.ts +63 -0
  42. package/dist/lib/configuration-validator.d.ts.map +1 -0
  43. package/dist/lib/configuration-validator.js +136 -0
  44. package/dist/lib/configuration-validator.js.map +1 -0
  45. package/dist/lib/configuration-wizard.d.ts +52 -0
  46. package/dist/lib/configuration-wizard.d.ts.map +1 -0
  47. package/dist/lib/configuration-wizard.js +193 -0
  48. package/dist/lib/configuration-wizard.js.map +1 -0
  49. package/dist/lib/fargate-service.d.ts +18 -9
  50. package/dist/lib/fargate-service.d.ts.map +1 -1
  51. package/dist/lib/fargate-service.js +177 -61
  52. package/dist/lib/fargate-service.js.map +1 -1
  53. package/dist/lib/quilt-config-resolver.d.ts +53 -0
  54. package/dist/lib/quilt-config-resolver.d.ts.map +1 -0
  55. package/dist/lib/quilt-config-resolver.js +100 -0
  56. package/dist/lib/quilt-config-resolver.js.map +1 -0
  57. package/dist/lib/s3-bucket-validator.d.ts +76 -0
  58. package/dist/lib/s3-bucket-validator.d.ts.map +1 -0
  59. package/dist/lib/s3-bucket-validator.js +237 -0
  60. package/dist/lib/s3-bucket-validator.js.map +1 -0
  61. package/dist/lib/types/config.d.ts +398 -0
  62. package/dist/lib/types/config.d.ts.map +1 -0
  63. package/dist/lib/types/config.js +11 -0
  64. package/dist/lib/types/config.js.map +1 -0
  65. package/dist/lib/utils/config-loader.d.ts +48 -0
  66. package/dist/lib/utils/config-loader.d.ts.map +1 -0
  67. package/dist/lib/utils/config-loader.js +109 -0
  68. package/dist/lib/utils/config-loader.js.map +1 -0
  69. package/dist/lib/utils/config-resolver.d.ts +138 -0
  70. package/dist/lib/utils/config-resolver.d.ts.map +1 -0
  71. package/dist/lib/utils/config-resolver.js +272 -0
  72. package/dist/lib/utils/config-resolver.js.map +1 -0
  73. package/dist/lib/utils/config.d.ts +50 -0
  74. package/dist/lib/utils/config.d.ts.map +1 -1
  75. package/dist/lib/utils/config.js +86 -0
  76. package/dist/lib/utils/config.js.map +1 -1
  77. package/dist/lib/utils/secrets.d.ts +174 -0
  78. package/dist/lib/utils/secrets.d.ts.map +1 -0
  79. package/dist/lib/utils/secrets.js +351 -0
  80. package/dist/lib/utils/secrets.js.map +1 -0
  81. package/dist/lib/xdg-cli-wrapper.d.ts +113 -0
  82. package/dist/lib/xdg-cli-wrapper.d.ts.map +1 -0
  83. package/dist/lib/xdg-cli-wrapper.js +288 -0
  84. package/dist/lib/xdg-cli-wrapper.js.map +1 -0
  85. package/dist/lib/xdg-config.d.ts +187 -0
  86. package/dist/lib/xdg-config.d.ts.map +1 -0
  87. package/dist/lib/xdg-config.js +562 -0
  88. package/dist/lib/xdg-config.js.map +1 -0
  89. package/dist/package.json +34 -26
  90. package/dist/scripts/config-health-check.d.ts +78 -0
  91. package/dist/scripts/config-health-check.d.ts.map +1 -0
  92. package/dist/scripts/config-health-check.js +559 -0
  93. package/dist/scripts/config-health-check.js.map +1 -0
  94. package/dist/scripts/infer-quilt-config.d.ts +50 -0
  95. package/dist/scripts/infer-quilt-config.d.ts.map +1 -0
  96. package/dist/scripts/infer-quilt-config.js +353 -0
  97. package/dist/scripts/infer-quilt-config.js.map +1 -0
  98. package/dist/scripts/install-wizard.d.ts +34 -0
  99. package/dist/scripts/install-wizard.d.ts.map +1 -0
  100. package/dist/scripts/install-wizard.js +719 -0
  101. package/dist/scripts/install-wizard.js.map +1 -0
  102. package/dist/scripts/sync-secrets.d.ts +63 -0
  103. package/dist/scripts/sync-secrets.d.ts.map +1 -0
  104. package/dist/scripts/sync-secrets.js +424 -0
  105. package/dist/scripts/sync-secrets.js.map +1 -0
  106. package/env.template +60 -47
  107. package/package.json +34 -26
@@ -0,0 +1,353 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Quilt Catalog Auto-Inference
5
+ *
6
+ * Automatically infers Quilt catalog configuration from:
7
+ * 1. quilt3 CLI command (`quilt3 config`)
8
+ * 2. AWS CloudFormation stack inspection
9
+ * 3. Interactive catalog selection (if multiple catalogs available)
10
+ *
11
+ * @module scripts/infer-quilt-config
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.inferQuiltConfig = inferQuiltConfig;
48
+ exports.inferenceResultToDerivedConfig = inferenceResultToDerivedConfig;
49
+ const child_process_1 = require("child_process");
50
+ const readline = __importStar(require("readline"));
51
+ const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
52
+ /**
53
+ * Executes quilt3 config command to get current catalog URL
54
+ *
55
+ * @returns Catalog URL from quilt3 CLI or null if command fails
56
+ */
57
+ function getQuilt3Catalog() {
58
+ try {
59
+ const output = (0, child_process_1.execSync)("quilt3 config", { encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] });
60
+ const catalogUrl = output.trim();
61
+ if (catalogUrl && catalogUrl.startsWith("http")) {
62
+ console.log(`Found quilt3 CLI configuration: ${catalogUrl}`);
63
+ return { catalogUrl };
64
+ }
65
+ return null;
66
+ }
67
+ catch {
68
+ // quilt3 command not available or failed
69
+ return null;
70
+ }
71
+ }
72
+ /**
73
+ * Finds Quilt CloudFormation stacks in AWS account
74
+ *
75
+ * @param region - AWS region to search (defaults to us-east-1)
76
+ * @param profile - AWS profile to use
77
+ * @returns Array of Quilt stack information
78
+ */
79
+ async function findQuiltStacks(region = "us-east-1", profile) {
80
+ try {
81
+ const clientConfig = { region };
82
+ if (profile) {
83
+ // Load AWS profile credentials
84
+ const { fromIni } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/credential-providers")));
85
+ clientConfig.credentials = fromIni({ profile });
86
+ }
87
+ const client = new client_cloudformation_1.CloudFormationClient(clientConfig);
88
+ // List all stacks
89
+ const listCommand = new client_cloudformation_1.ListStacksCommand({
90
+ StackStatusFilter: ["CREATE_COMPLETE", "UPDATE_COMPLETE"],
91
+ });
92
+ const listResponse = await client.send(listCommand);
93
+ const stacks = listResponse.StackSummaries || [];
94
+ // Filter for Quilt stacks (containing "quilt" in the name)
95
+ const quiltStacks = stacks.filter((stack) => stack.StackName?.toLowerCase().includes("quilt") ||
96
+ stack.StackName?.toLowerCase().includes("catalog"));
97
+ // Get detailed information for each stack
98
+ const stackInfos = [];
99
+ for (const stack of quiltStacks) {
100
+ if (!stack.StackName)
101
+ continue;
102
+ try {
103
+ const describeCommand = new client_cloudformation_1.DescribeStacksCommand({
104
+ StackName: stack.StackName,
105
+ });
106
+ const describeResponse = await client.send(describeCommand);
107
+ const stackDetail = describeResponse.Stacks?.[0];
108
+ if (!stackDetail)
109
+ continue;
110
+ const outputs = stackDetail.Outputs || [];
111
+ const stackInfo = {
112
+ stackName: stack.StackName,
113
+ stackArn: stackDetail.StackId || "",
114
+ region: region,
115
+ };
116
+ // Extract outputs
117
+ for (const output of outputs) {
118
+ const key = output.OutputKey || "";
119
+ const value = output.OutputValue || "";
120
+ if (key === "QuiltWebHost") {
121
+ stackInfo.catalogUrl = value;
122
+ }
123
+ else if (key.includes("ucket")) {
124
+ stackInfo.bucket = value;
125
+ }
126
+ else if (key === "UserAthenaDatabaseName" || key.includes("Database")) {
127
+ stackInfo.database = value;
128
+ }
129
+ else if (key.includes("Queue")) {
130
+ stackInfo.queueArn = value;
131
+ }
132
+ }
133
+ stackInfos.push(stackInfo);
134
+ }
135
+ catch (describeError) {
136
+ console.error(`Warning: Failed to describe stack ${stack.StackName}: ${describeError.message}`);
137
+ }
138
+ }
139
+ return stackInfos;
140
+ }
141
+ catch (error) {
142
+ console.error(`Warning: Failed to list CloudFormation stacks: ${error.message}`);
143
+ return [];
144
+ }
145
+ }
146
+ /**
147
+ * Prompts user to select from multiple catalog options
148
+ *
149
+ * @param options - Array of catalog options
150
+ * @returns Selected catalog index
151
+ */
152
+ async function promptCatalogSelection(options) {
153
+ console.log("\nMultiple Quilt catalog configurations found:");
154
+ options.forEach((opt, idx) => {
155
+ console.log(` ${idx + 1}. ${opt}`);
156
+ });
157
+ const rl = readline.createInterface({
158
+ input: process.stdin,
159
+ output: process.stdout,
160
+ });
161
+ return new Promise((resolve) => {
162
+ rl.question(`\nSelect catalog (1-${options.length}): `, (answer) => {
163
+ rl.close();
164
+ const selection = parseInt(answer.trim(), 10);
165
+ if (isNaN(selection) || selection < 1 || selection > options.length) {
166
+ console.log("Invalid selection, using first option.");
167
+ resolve(0);
168
+ }
169
+ else {
170
+ resolve(selection - 1);
171
+ }
172
+ });
173
+ });
174
+ }
175
+ /**
176
+ * Infers Quilt configuration from multiple sources
177
+ *
178
+ * Priority order:
179
+ * 1. quilt3 CLI command (`quilt3 config`)
180
+ * 2. CloudFormation stack inspection
181
+ * 3. Interactive selection if multiple options
182
+ *
183
+ * @param options - Inference options
184
+ * @returns Inferred configuration
185
+ */
186
+ async function inferQuiltConfig(options) {
187
+ const { region = "us-east-1", profile, interactive = true } = options;
188
+ const result = {
189
+ source: "none",
190
+ };
191
+ // Step 1: Try quilt3 CLI command
192
+ console.log("Checking quilt3 CLI configuration...");
193
+ const quilt3Config = getQuilt3Catalog();
194
+ if (quilt3Config?.catalogUrl) {
195
+ result.catalogUrl = quilt3Config.catalogUrl;
196
+ result.source = "quilt3-cli";
197
+ }
198
+ else {
199
+ console.log("No quilt3 CLI configuration found.");
200
+ }
201
+ // Step 2: Search for CloudFormation stacks
202
+ console.log("\nSearching for Quilt CloudFormation stacks...");
203
+ const stacks = await findQuiltStacks(region, profile);
204
+ if (stacks.length === 0) {
205
+ console.log("No Quilt CloudFormation stacks found.");
206
+ return result;
207
+ }
208
+ console.log(`Found ${stacks.length} Quilt stack(s):\n`);
209
+ let selectedStack;
210
+ // If we have a catalog URL from quilt3, try to find matching stack
211
+ if (result.catalogUrl && stacks.length > 1) {
212
+ // Normalize URLs for comparison (remove protocol and trailing slashes)
213
+ const normalizeUrl = (url) => url.replace(/^https?:\/\//, "").replace(/\/$/, "");
214
+ const targetUrl = normalizeUrl(result.catalogUrl);
215
+ const matchingStack = stacks.find((s) => s.catalogUrl && normalizeUrl(s.catalogUrl) === targetUrl);
216
+ if (matchingStack) {
217
+ selectedStack = matchingStack;
218
+ console.log(`Auto-selected stack matching catalog URL: ${selectedStack.stackName}`);
219
+ }
220
+ else {
221
+ // No match found, prompt user
222
+ console.log(`No stack found matching catalog URL: ${result.catalogUrl}`);
223
+ if (interactive) {
224
+ const options = stacks.map((s) => `${s.stackName} (${s.region})`);
225
+ const selectedIndex = await promptCatalogSelection(options);
226
+ selectedStack = stacks[selectedIndex];
227
+ console.log(`\nSelected: ${selectedStack.stackName}`);
228
+ }
229
+ else {
230
+ selectedStack = stacks[0];
231
+ console.log(`Using first stack: ${selectedStack.stackName}`);
232
+ }
233
+ }
234
+ }
235
+ else if (stacks.length === 1) {
236
+ selectedStack = stacks[0];
237
+ console.log(`Using stack: ${selectedStack.stackName}`);
238
+ }
239
+ else if (interactive) {
240
+ const options = stacks.map((s) => `${s.stackName} (${s.region})`);
241
+ const selectedIndex = await promptCatalogSelection(options);
242
+ selectedStack = stacks[selectedIndex];
243
+ console.log(`\nSelected: ${selectedStack.stackName}`);
244
+ }
245
+ else {
246
+ selectedStack = stacks[0];
247
+ console.log(`Using first stack: ${selectedStack.stackName}`);
248
+ }
249
+ // Populate result from selected stack
250
+ if (selectedStack.stackArn) {
251
+ result.quiltStackArn = selectedStack.stackArn;
252
+ }
253
+ if (selectedStack.bucket) {
254
+ result.quiltUserBucket = selectedStack.bucket;
255
+ }
256
+ if (selectedStack.queueArn) {
257
+ result.queueArn = selectedStack.queueArn;
258
+ }
259
+ if (selectedStack.catalogUrl && !result.catalogUrl) {
260
+ result.catalogUrl = selectedStack.catalogUrl;
261
+ }
262
+ if (selectedStack.region) {
263
+ result.quiltRegion = selectedStack.region;
264
+ }
265
+ if (result.source === "quilt3-cli") {
266
+ result.source = "quilt3-cli+cloudformation";
267
+ }
268
+ else {
269
+ result.source = "cloudformation";
270
+ }
271
+ return result;
272
+ }
273
+ /**
274
+ * Converts inference result to DerivedConfig
275
+ *
276
+ * @param result - Inference result
277
+ * @returns DerivedConfig object
278
+ */
279
+ function inferenceResultToDerivedConfig(result) {
280
+ const config = {
281
+ _metadata: {
282
+ inferredAt: new Date().toISOString(),
283
+ inferredFrom: result.source,
284
+ source: "infer-quilt-config",
285
+ version: "0.6.0",
286
+ },
287
+ };
288
+ if (result.catalogUrl) {
289
+ config.catalogUrl = result.catalogUrl;
290
+ config.quiltCatalog = result.catalogUrl;
291
+ }
292
+ if (result.quiltUserBucket) {
293
+ config.quiltUserBucket = result.quiltUserBucket;
294
+ }
295
+ if (result.quiltStackArn) {
296
+ config.quiltStackArn = result.quiltStackArn;
297
+ }
298
+ if (result.quiltRegion) {
299
+ config.quiltRegion = result.quiltRegion;
300
+ }
301
+ if (result.queueArn) {
302
+ config.queueArn = result.queueArn;
303
+ }
304
+ return config;
305
+ }
306
+ /**
307
+ * Main execution for CLI usage
308
+ */
309
+ async function main() {
310
+ const args = process.argv.slice(2);
311
+ const options = {
312
+ interactive: true,
313
+ };
314
+ // Parse command line arguments
315
+ for (let i = 0; i < args.length; i++) {
316
+ if (args[i] === "--region" && i + 1 < args.length) {
317
+ options.region = args[i + 1];
318
+ i++;
319
+ }
320
+ else if (args[i] === "--profile" && i + 1 < args.length) {
321
+ options.profile = args[i + 1];
322
+ i++;
323
+ }
324
+ else if (args[i] === "--non-interactive") {
325
+ options.interactive = false;
326
+ }
327
+ }
328
+ console.log("Quilt Catalog Auto-Inference\n");
329
+ const result = await inferQuiltConfig(options);
330
+ console.log("\n=== Inference Results ===");
331
+ console.log(`Source: ${result.source}`);
332
+ if (result.catalogUrl)
333
+ console.log(`Catalog URL: ${result.catalogUrl}`);
334
+ if (result.quiltUserBucket)
335
+ console.log(`User Bucket: ${result.quiltUserBucket}`);
336
+ if (result.quiltStackArn)
337
+ console.log(`Stack ARN: ${result.quiltStackArn}`);
338
+ if (result.quiltRegion)
339
+ console.log(`Region: ${result.quiltRegion}`);
340
+ if (result.queueArn)
341
+ console.log(`Queue ARN: ${result.queueArn}`);
342
+ const derivedConfig = inferenceResultToDerivedConfig(result);
343
+ console.log("\n=== Derived Configuration ===");
344
+ console.log(JSON.stringify(derivedConfig, null, 4));
345
+ }
346
+ // Run main if executed directly
347
+ if (require.main === module) {
348
+ main().catch((error) => {
349
+ console.error("Error:", error.message);
350
+ process.exit(1);
351
+ });
352
+ }
353
+ //# sourceMappingURL=infer-quilt-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infer-quilt-config.js","sourceRoot":"","sources":["../../scripts/infer-quilt-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Interactive Configuration Wizard
4
+ *
5
+ * Guided configuration setup with comprehensive validation:
6
+ * - Benchling tenant and OAuth credentials
7
+ * - S3 bucket access verification
8
+ * - Quilt API connectivity testing
9
+ * - AWS Secrets Manager integration
10
+ *
11
+ * Supports both interactive and non-interactive (CI/CD) modes.
12
+ *
13
+ * @module scripts/install-wizard
14
+ */
15
+ import { UserConfig, ProfileName } from "../lib/types/config";
16
+ /**
17
+ * Wizard configuration options
18
+ */
19
+ interface WizardOptions {
20
+ profile?: ProfileName;
21
+ nonInteractive?: boolean;
22
+ skipValidation?: boolean;
23
+ awsProfile?: string;
24
+ awsRegion?: string;
25
+ }
26
+ /**
27
+ * Runs the interactive configuration wizard
28
+ *
29
+ * @param options - Wizard options
30
+ * @returns Completed user configuration
31
+ */
32
+ export declare function runInstallWizard(options?: WizardOptions): Promise<UserConfig>;
33
+ export {};
34
+ //# sourceMappingURL=install-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-wizard.d.ts","sourceRoot":"","sources":["../../scripts/install-wizard.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAO9D;;GAEG;AACH,UAAU,aAAa;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AA6RD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2ZvF"}