@codemarc/blt 1.4.1 → 1.4.2
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/cleanup/generated.d.ts +10 -0
- package/dist/commands/cleanup/generated.d.ts.map +1 -0
- package/dist/commands/cleanup/generated.js +37 -0
- package/dist/commands/cleanup/generated.js.map +1 -0
- package/dist/commands/cleanup/tags.d.ts +19 -0
- package/dist/commands/cleanup/tags.d.ts.map +1 -0
- package/dist/commands/cleanup/tags.js +149 -0
- package/dist/commands/cleanup/tags.js.map +1 -0
- package/dist/commands/cleanup.d.ts +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +48 -15
- package/dist/commands/cleanup.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Logger } from "@caporal/core";
|
|
2
|
+
export interface CleanupGeneratedOptions {
|
|
3
|
+
instance?: string;
|
|
4
|
+
all?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Cleanup generated SQL files and combined schema files
|
|
8
|
+
*/
|
|
9
|
+
export declare function cleanupGenerated(options: CleanupGeneratedOptions, _logger: Logger): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup/generated.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { getPaths } from "../../lib/constants";
|
|
4
|
+
import { getAvailableInstances } from "../../lib/instance-discovery";
|
|
5
|
+
/**
|
|
6
|
+
* Cleanup generated SQL files and combined schema files
|
|
7
|
+
*/
|
|
8
|
+
export async function cleanupGenerated(options, _logger) {
|
|
9
|
+
const paths = getPaths();
|
|
10
|
+
// Clean up generated SQL files in dist
|
|
11
|
+
console.log("Cleaning generated SQL files and combined schema files");
|
|
12
|
+
fs.rmSync(join(paths.DIST, "public.sql"), { recursive: true, force: true });
|
|
13
|
+
fs.rmSync(join(paths.DIST, "data.sql"), { recursive: true, force: true });
|
|
14
|
+
// Determine which instances to clean
|
|
15
|
+
let instancesToClean;
|
|
16
|
+
if (options.all) {
|
|
17
|
+
instancesToClean = getAvailableInstances();
|
|
18
|
+
console.log(`Cleaning all instances: ${instancesToClean.join(", ")}`);
|
|
19
|
+
}
|
|
20
|
+
else if (options.instance) {
|
|
21
|
+
instancesToClean = [options.instance];
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
// Default: clean default and joanne for backward compatibility
|
|
25
|
+
instancesToClean = ["default", "joanne"];
|
|
26
|
+
}
|
|
27
|
+
// Remove generated SQL directories for each instance
|
|
28
|
+
for (const instance of instancesToClean) {
|
|
29
|
+
const sqlDir = join(paths.INSTANCES_BASE, instance, "sql");
|
|
30
|
+
if (fs.existsSync(sqlDir)) {
|
|
31
|
+
fs.rmSync(sqlDir, { recursive: true, force: true });
|
|
32
|
+
console.log(`Removed generated SQL files: ${sqlDir}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
console.log("Cleanup complete");
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../../src/commands/cleanup/generated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAQrE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,OAAgC,EAChC,OAAe;IAEf,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,qCAAqC;IACrC,IAAI,gBAA0B,CAAC;IAE/B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,gBAAgB,GAAG,qBAAqB,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,2BAA2B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,gBAAgB,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACP,+DAA+D;QAC/D,gBAAgB,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,qDAAqD;IACrD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Logger } from "@caporal/core";
|
|
2
|
+
export interface CleanupTagsOptions {
|
|
3
|
+
minCount?: number;
|
|
4
|
+
dryRun?: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface TagStats {
|
|
7
|
+
totalTags: number;
|
|
8
|
+
validTags: number;
|
|
9
|
+
removedTags: number;
|
|
10
|
+
filesModified: number;
|
|
11
|
+
itemsModified: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Cleanup tags in YAML files for an instance
|
|
15
|
+
* Removes tags that appear less than minCount times across all items
|
|
16
|
+
*/
|
|
17
|
+
export declare function cleanupTags(instance: string, options: CleanupTagsOptions, _logger: Logger): Promise<TagStats>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup/tags.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,QAAQ;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACtB;AASD;;;GAGG;AACH,wBAAsB,WAAW,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,CAAC,CAsKnB"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import yaml from "js-yaml";
|
|
4
|
+
import { getPaths } from "../../lib/constants";
|
|
5
|
+
import { getAvailableInstances } from "../../lib/instance-discovery";
|
|
6
|
+
/**
|
|
7
|
+
* Cleanup tags in YAML files for an instance
|
|
8
|
+
* Removes tags that appear less than minCount times across all items
|
|
9
|
+
*/
|
|
10
|
+
export async function cleanupTags(instance, options, _logger) {
|
|
11
|
+
const paths = getPaths();
|
|
12
|
+
const minTagCount = options.minCount ?? 4;
|
|
13
|
+
const dryRun = options.dryRun ?? false;
|
|
14
|
+
// Validate instance exists
|
|
15
|
+
const availableInstances = getAvailableInstances();
|
|
16
|
+
if (!availableInstances.includes(instance)) {
|
|
17
|
+
throw new Error(`Instance "${instance}" not found. Available instances: ${availableInstances.join(", ")}`);
|
|
18
|
+
}
|
|
19
|
+
const yamlDir = join(paths.INSTANCES_BASE, instance, "yaml");
|
|
20
|
+
if (!fs.existsSync(yamlDir)) {
|
|
21
|
+
throw new Error(`YAML directory not found: ${yamlDir}`);
|
|
22
|
+
}
|
|
23
|
+
// Track all tags and their usage
|
|
24
|
+
const tagCounts = new Map();
|
|
25
|
+
const fileTagData = [];
|
|
26
|
+
// Read and parse all YAML files
|
|
27
|
+
const files = fs
|
|
28
|
+
.readdirSync(yamlDir)
|
|
29
|
+
.filter((f) => f.endsWith(".yml"))
|
|
30
|
+
.map((f) => join(yamlDir, f));
|
|
31
|
+
console.log(`Found ${files.length} YAML files to process in ${instance}\n`);
|
|
32
|
+
// First pass: collect all tags and count them
|
|
33
|
+
for (const filePath of files) {
|
|
34
|
+
const content = fs.readFileSync(filePath, "utf8");
|
|
35
|
+
let doc;
|
|
36
|
+
try {
|
|
37
|
+
doc = yaml.load(content);
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
const error = e;
|
|
41
|
+
console.error(`Error parsing ${filePath}: ${error.message}`);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (!doc || !doc.rows)
|
|
45
|
+
continue;
|
|
46
|
+
const rows = doc.rows;
|
|
47
|
+
for (const row of rows) {
|
|
48
|
+
if (!row || !row.row)
|
|
49
|
+
continue;
|
|
50
|
+
const item = row.row;
|
|
51
|
+
const tags = item?.props?.tags;
|
|
52
|
+
if (Array.isArray(tags)) {
|
|
53
|
+
// Count each tag
|
|
54
|
+
for (const tag of tags) {
|
|
55
|
+
tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
fileTagData.push({
|
|
60
|
+
filePath,
|
|
61
|
+
fileName: filePath.split("/").pop() || filePath,
|
|
62
|
+
doc,
|
|
63
|
+
originalContent: content,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// Filter tags that meet the minimum count requirement
|
|
67
|
+
const validTags = new Set();
|
|
68
|
+
for (const [tag, count] of tagCounts.entries()) {
|
|
69
|
+
if (count >= minTagCount) {
|
|
70
|
+
validTags.add(tag);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
console.log("Tag Usage Summary:");
|
|
74
|
+
console.log("==================\n");
|
|
75
|
+
// Sort tags by count (descending)
|
|
76
|
+
const sortedTags = Array.from(tagCounts.entries()).sort((a, b) => b[1] - a[1]);
|
|
77
|
+
for (const [tag, count] of sortedTags) {
|
|
78
|
+
const status = validTags.has(tag) ? "✓ KEEP" : "✗ REMOVE";
|
|
79
|
+
console.log(`${status.padEnd(10)} ${tag.padEnd(30)} (${count} items)`);
|
|
80
|
+
}
|
|
81
|
+
console.log(`\nTotal tags: ${tagCounts.size}`);
|
|
82
|
+
console.log(`Tags to keep (≥${minTagCount} items): ${validTags.size}`);
|
|
83
|
+
console.log(`Tags to remove: ${tagCounts.size - validTags.size}\n`);
|
|
84
|
+
if (dryRun) {
|
|
85
|
+
console.log("Dry run mode - no files will be modified\n");
|
|
86
|
+
}
|
|
87
|
+
// Second pass: update files with filtered tags
|
|
88
|
+
let totalFilesModified = 0;
|
|
89
|
+
let totalItemsModified = 0;
|
|
90
|
+
for (const { filePath, fileName, doc } of fileTagData) {
|
|
91
|
+
let modified = false;
|
|
92
|
+
let itemsModified = 0;
|
|
93
|
+
const rows = doc.rows;
|
|
94
|
+
// Process each item and filter its tags
|
|
95
|
+
for (const row of rows) {
|
|
96
|
+
if (!row || !row.row)
|
|
97
|
+
continue;
|
|
98
|
+
const item = row.row;
|
|
99
|
+
if (!item.props || !item.props.tags)
|
|
100
|
+
continue;
|
|
101
|
+
const originalTags = item.props.tags;
|
|
102
|
+
const filteredTags = originalTags.filter((tag) => validTags.has(tag));
|
|
103
|
+
if (filteredTags.length !== originalTags.length) {
|
|
104
|
+
itemsModified++;
|
|
105
|
+
if (!dryRun) {
|
|
106
|
+
if (filteredTags.length > 0) {
|
|
107
|
+
item.props.tags = filteredTags;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
delete item.props.tags;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
modified = true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (modified) {
|
|
117
|
+
if (!dryRun) {
|
|
118
|
+
// Write back with YAML formatting that preserves structure
|
|
119
|
+
const newContent = yaml.dump(doc, {
|
|
120
|
+
indent: 3,
|
|
121
|
+
lineWidth: -1,
|
|
122
|
+
quotingType: '"',
|
|
123
|
+
forceQuotes: false,
|
|
124
|
+
noRefs: true,
|
|
125
|
+
sortKeys: false,
|
|
126
|
+
flowLevel: -1,
|
|
127
|
+
styles: {
|
|
128
|
+
"!!null": "canonical",
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
fs.writeFileSync(filePath, newContent, "utf8");
|
|
132
|
+
}
|
|
133
|
+
totalFilesModified++;
|
|
134
|
+
totalItemsModified += itemsModified;
|
|
135
|
+
console.log(`${dryRun ? "[DRY RUN] Would modify" : "Modified"} ${fileName}: ${itemsModified} items updated`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
console.log("\n=== Summary ===");
|
|
139
|
+
console.log(`Files ${dryRun ? "that would be " : ""}modified: ${totalFilesModified}`);
|
|
140
|
+
console.log(`Items with tags ${dryRun ? "that would be " : ""}removed: ${totalItemsModified}`);
|
|
141
|
+
return {
|
|
142
|
+
totalTags: tagCounts.size,
|
|
143
|
+
validTags: validTags.size,
|
|
144
|
+
removedTags: tagCounts.size - validTags.size,
|
|
145
|
+
filesModified: totalFilesModified,
|
|
146
|
+
itemsModified: totalItemsModified,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/commands/cleanup/tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAO,EAAE,OAAO,QA2DtD"}
|
package/dist/commands/cleanup.js
CHANGED
|
@@ -1,23 +1,56 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { cleanupGenerated } from "./cleanup/generated";
|
|
2
|
+
import { cleanupTags } from "./cleanup/tags";
|
|
2
3
|
/**
|
|
3
|
-
* Register
|
|
4
|
+
* Register cleanup commands with the CLI program
|
|
4
5
|
*/
|
|
5
6
|
export default function cleanupCommand(program) {
|
|
7
|
+
const cleanupHelpText = `
|
|
8
|
+
cleanup utilities
|
|
9
|
+
|
|
10
|
+
Usage:
|
|
11
|
+
blt cleanup <operation>
|
|
12
|
+
|
|
13
|
+
Available operations:
|
|
14
|
+
generated Cleanup generated SQL files and instance SQL directories
|
|
15
|
+
tags Cleanup infrequently used tags in YAML files
|
|
16
|
+
|
|
17
|
+
Run 'blt cleanup <operation> --help' for more information on a specific command.
|
|
18
|
+
`;
|
|
6
19
|
program
|
|
7
|
-
.command("cleanup", "
|
|
20
|
+
.command("cleanup", "cleanup utilities")
|
|
21
|
+
.help(cleanupHelpText)
|
|
22
|
+
.action(() => {
|
|
23
|
+
console.log(cleanupHelpText);
|
|
24
|
+
});
|
|
25
|
+
// Cleanup generated files
|
|
26
|
+
program
|
|
27
|
+
.command("cleanup generated", "Cleanup generated SQL files and instance SQL directories")
|
|
28
|
+
.hide()
|
|
29
|
+
.option("-i, --instance <instance>", "Instance to clean (can be used multiple times)")
|
|
30
|
+
.option("-a, --all", "Clean all instances", { default: false })
|
|
31
|
+
.action(async ({ options, logger }) => {
|
|
32
|
+
await cleanupGenerated({
|
|
33
|
+
instance: options.instance,
|
|
34
|
+
all: options.all,
|
|
35
|
+
}, logger);
|
|
36
|
+
});
|
|
37
|
+
// Cleanup tags
|
|
38
|
+
program
|
|
39
|
+
.command("cleanup tags", "Cleanup infrequently used tags in YAML files")
|
|
40
|
+
.hide()
|
|
41
|
+
.argument("<instance>", "Instance name (e.g., 'default', 'joanne')")
|
|
42
|
+
.option("-m, --min-count <count>", "Minimum tag count to keep (default: 4)", {
|
|
43
|
+
default: 4,
|
|
44
|
+
validator: program.NUMBER,
|
|
45
|
+
})
|
|
46
|
+
.option("-d, --dry-run", "Show what would be changed without modifying files", {
|
|
47
|
+
default: false,
|
|
48
|
+
})
|
|
8
49
|
.action(async ({ args, options, logger }) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
fs.rmSync("schema/instances/default/sql/", {
|
|
14
|
-
recursive: true,
|
|
15
|
-
force: true,
|
|
16
|
-
});
|
|
17
|
-
fs.rmSync("schema/instances/joanne/sql/", {
|
|
18
|
-
recursive: true,
|
|
19
|
-
force: true,
|
|
20
|
-
});
|
|
50
|
+
await cleanupTags(args.instance, {
|
|
51
|
+
minCount: options.minCount,
|
|
52
|
+
dryRun: options.dryRun,
|
|
53
|
+
}, logger);
|
|
21
54
|
});
|
|
22
55
|
}
|
|
23
56
|
//# sourceMappingURL=cleanup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACtD,MAAM,eAAe,GAAG;;;;;;;;;;;CAWxB,CAAC;IAED,OAAO;SACL,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACvC,IAAI,CAAC,eAAe,CAAC;SACrB,MAAM,CAAC,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEJ,0BAA0B;IAC1B,OAAO;SACL,OAAO,CAAC,mBAAmB,EAAE,0DAA0D,CAAC;SACxF,IAAI,EAAE;SACN,MAAM,CAAC,2BAA2B,EAAE,gDAAgD,CAAC;SACrF,MAAM,CAAC,WAAW,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QACrC,MAAM,gBAAgB,CACrB;YACC,QAAQ,EAAE,OAAO,CAAC,QAA8B;YAChD,GAAG,EAAE,OAAO,CAAC,GAAc;SAC3B,EACD,MAAM,CACN,CAAC;IACH,CAAC,CAAC,CAAC;IAEJ,eAAe;IACf,OAAO;SACL,OAAO,CAAC,cAAc,EAAE,8CAA8C,CAAC;SACvE,IAAI,EAAE;SACN,QAAQ,CAAC,YAAY,EAAE,2CAA2C,CAAC;SACnE,MAAM,CAAC,yBAAyB,EAAE,wCAAwC,EAAE;QAC5E,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,OAAO,CAAC,MAAM;KACzB,CAAC;SACD,MAAM,CAAC,eAAe,EAAE,oDAAoD,EAAE;QAC9E,OAAO,EAAE,KAAK;KACd,CAAC;SACD,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC3C,MAAM,WAAW,CAChB,IAAI,CAAC,QAAkB,EACvB;YACC,QAAQ,EAAE,OAAO,CAAC,QAAkB;YACpC,MAAM,EAAE,OAAO,CAAC,MAAiB;SACjC,EACD,MAAM,CACN,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|