@burmese/cursor 3.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.
- package/LICENSE +21 -0
- package/dist/check-cursor.d.ts +2 -0
- package/dist/check-cursor.d.ts.map +1 -0
- package/dist/check-cursor.js +660 -0
- package/dist/check-cursor.js.map +1 -0
- package/dist/cursor-mcp.d.ts +29 -0
- package/dist/cursor-mcp.d.ts.map +1 -0
- package/dist/cursor-mcp.js +42 -0
- package/dist/cursor-mcp.js.map +1 -0
- package/dist/cursor-previews.d.ts +15 -0
- package/dist/cursor-previews.d.ts.map +1 -0
- package/dist/cursor-previews.js +133 -0
- package/dist/cursor-previews.js.map +1 -0
- package/dist/cursor-rules.d.ts +42 -0
- package/dist/cursor-rules.d.ts.map +1 -0
- package/dist/cursor-rules.js +294 -0
- package/dist/cursor-rules.js.map +1 -0
- package/dist/cursor-status.d.ts +37 -0
- package/dist/cursor-status.d.ts.map +1 -0
- package/dist/cursor-status.js +365 -0
- package/dist/cursor-status.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { chmodSync, closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join, parse, resolve } from "node:path";
|
|
4
|
+
export const maxCursorRulesBytes = 64 * 1024;
|
|
5
|
+
export const cursorRulesStartMarker = "<!-- OPENPETS:CURSOR_RULES:START -->";
|
|
6
|
+
export const cursorRulesEndMarker = "<!-- OPENPETS:CURSOR_RULES:END -->";
|
|
7
|
+
const cursorRulesFrontmatter = "---\ndescription: Use OpenPets MCP tools for lightweight coding-status feedback.\n---";
|
|
8
|
+
export function getCursorProjectRulesPath(projectDir) {
|
|
9
|
+
return join(projectDir, ".cursor", "rules", "openpets.mdc");
|
|
10
|
+
}
|
|
11
|
+
export function buildCursorOpenPetsRule() {
|
|
12
|
+
return `${cursorRulesFrontmatter}
|
|
13
|
+
|
|
14
|
+
${cursorRulesStartMarker}
|
|
15
|
+
# OpenPets status feedback
|
|
16
|
+
|
|
17
|
+
You may use the OpenPets MCP tools as a brief, safe status channel during meaningful coding work.
|
|
18
|
+
|
|
19
|
+
- Use \`burmese_say\` sparingly for major milestones, blocking states, completion, or when review is needed.
|
|
20
|
+
- Prefer \`burmese_react\` over speech for lightweight progress such as thinking, working, testing, success, or error.
|
|
21
|
+
- Keep messages short, user-facing, and safe.
|
|
22
|
+
- Do not send prompts, tool input/output, code, logs, stack traces, credentials, private file contents, URLs, file paths, or other sensitive content through OpenPets.
|
|
23
|
+
- Do not spam every internal step; use OpenPets only for meaningful progress changes and continue normally if a status update is unnecessary.
|
|
24
|
+
- If OpenPets is unavailable, continue the coding task without failing.
|
|
25
|
+
${cursorRulesEndMarker}
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
export function buildCursorRulesPreview() {
|
|
29
|
+
return buildCursorOpenPetsRule();
|
|
30
|
+
}
|
|
31
|
+
export function readCursorOpenPetsRules(projectDir) {
|
|
32
|
+
try {
|
|
33
|
+
const rulesPath = getCursorProjectRulesPath(projectDir);
|
|
34
|
+
const pathSafety = assertSafeRulesPath(projectDir, rulesPath);
|
|
35
|
+
if (!pathSafety.ok)
|
|
36
|
+
return pathSafety;
|
|
37
|
+
const existing = assertSafeExistingRulesFile(rulesPath, true);
|
|
38
|
+
if (!existing.ok)
|
|
39
|
+
return existing;
|
|
40
|
+
if (!existsSync(rulesPath))
|
|
41
|
+
return { ok: true, content: "", exists: false };
|
|
42
|
+
const content = readFileSync(rulesPath, "utf8");
|
|
43
|
+
if (Buffer.byteLength(content, "utf8") > maxCursorRulesBytes) {
|
|
44
|
+
return { ok: false, message: "Cursor OpenPets rule file exceeds 64 KiB limit.", reason: "size" };
|
|
45
|
+
}
|
|
46
|
+
return { ok: true, content, exists: true };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return { ok: false, message: `IO error: ${error instanceof Error ? error.message : String(error)}`, reason: "io" };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function classifyCursorRulesStatus(readResult, rulesPath, expectedContent = buildCursorOpenPetsRule()) {
|
|
53
|
+
if (!readResult.ok) {
|
|
54
|
+
return {
|
|
55
|
+
status: readResult.reason === "io" ? "error" : "invalid",
|
|
56
|
+
message: cursorRulesErrorMessage(readResult.reason),
|
|
57
|
+
rulesPath,
|
|
58
|
+
canInstall: false,
|
|
59
|
+
canReplace: false,
|
|
60
|
+
canRemove: false,
|
|
61
|
+
redactedDetails: readResult.message,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (!readResult.exists) {
|
|
65
|
+
return {
|
|
66
|
+
status: "missing",
|
|
67
|
+
message: "Cursor OpenPets project rule is not installed.",
|
|
68
|
+
rulesPath,
|
|
69
|
+
canInstall: true,
|
|
70
|
+
canReplace: false,
|
|
71
|
+
canRemove: false,
|
|
72
|
+
previewContent: expectedContent,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const managedShape = classifyManagedRuleShape(readResult.content);
|
|
76
|
+
if (managedShape !== "managed") {
|
|
77
|
+
return {
|
|
78
|
+
status: "conflict",
|
|
79
|
+
message: managedShape,
|
|
80
|
+
rulesPath,
|
|
81
|
+
canInstall: false,
|
|
82
|
+
canReplace: true,
|
|
83
|
+
canRemove: false,
|
|
84
|
+
redactedDetails: "Existing .cursor/rules/openpets.mdc is not an exact OpenPets-managed rules file.",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
if (normalizeNewlines(readResult.content) === normalizeNewlines(expectedContent)) {
|
|
88
|
+
return {
|
|
89
|
+
status: "installed",
|
|
90
|
+
message: "Cursor OpenPets project rule is installed and up to date.",
|
|
91
|
+
rulesPath,
|
|
92
|
+
canInstall: false,
|
|
93
|
+
canReplace: false,
|
|
94
|
+
canRemove: true,
|
|
95
|
+
previewContent: expectedContent,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
status: "needs-update",
|
|
100
|
+
message: "Cursor OpenPets project rule needs update.",
|
|
101
|
+
rulesPath,
|
|
102
|
+
canInstall: true,
|
|
103
|
+
canReplace: true,
|
|
104
|
+
canRemove: true,
|
|
105
|
+
previewContent: expectedContent,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export function isManagedCursorOpenPetsRule(content) {
|
|
109
|
+
return classifyManagedRuleShape(content) === "managed";
|
|
110
|
+
}
|
|
111
|
+
export function planCursorRulesInstall(projectDir, allowReplace = false) {
|
|
112
|
+
const rulesPath = getCursorProjectRulesPath(projectDir);
|
|
113
|
+
const existing = readCursorOpenPetsRules(projectDir);
|
|
114
|
+
if (!existing.ok)
|
|
115
|
+
return existing;
|
|
116
|
+
const status = classifyCursorRulesStatus(existing, rulesPath);
|
|
117
|
+
if (status.status === "invalid" || status.status === "error") {
|
|
118
|
+
return { ok: false, message: status.message, reason: "io" };
|
|
119
|
+
}
|
|
120
|
+
if (status.status === "conflict" && !allowReplace) {
|
|
121
|
+
return { ok: false, message: "Cannot install: .cursor/rules/openpets.mdc has user content. Use --force to replace only that file.", reason: "unsafe-path" };
|
|
122
|
+
}
|
|
123
|
+
if (status.status === "installed") {
|
|
124
|
+
return { ok: false, message: "Cursor OpenPets project rule is already installed.", reason: "io" };
|
|
125
|
+
}
|
|
126
|
+
return buildRulesWritePlan(projectDir, buildCursorOpenPetsRule());
|
|
127
|
+
}
|
|
128
|
+
export function planCursorRulesReplace(projectDir) {
|
|
129
|
+
const rulesPath = getCursorProjectRulesPath(projectDir);
|
|
130
|
+
const existing = readCursorOpenPetsRules(projectDir);
|
|
131
|
+
if (!existing.ok)
|
|
132
|
+
return existing;
|
|
133
|
+
const status = classifyCursorRulesStatus(existing, rulesPath);
|
|
134
|
+
if (status.status === "invalid" || status.status === "error") {
|
|
135
|
+
return { ok: false, message: status.message, reason: "io" };
|
|
136
|
+
}
|
|
137
|
+
if (status.status === "missing") {
|
|
138
|
+
return { ok: false, message: "Cannot replace: Cursor OpenPets project rule is not installed. Use install instead.", reason: "io" };
|
|
139
|
+
}
|
|
140
|
+
if (status.status === "installed") {
|
|
141
|
+
return { ok: false, message: "Cannot replace: Cursor OpenPets project rule is already installed.", reason: "io" };
|
|
142
|
+
}
|
|
143
|
+
return buildRulesWritePlan(projectDir, buildCursorOpenPetsRule());
|
|
144
|
+
}
|
|
145
|
+
export function planCursorRulesRemove(projectDir) {
|
|
146
|
+
const rulesPath = getCursorProjectRulesPath(projectDir);
|
|
147
|
+
const existing = readCursorOpenPetsRules(projectDir);
|
|
148
|
+
if (!existing.ok)
|
|
149
|
+
return existing;
|
|
150
|
+
const status = classifyCursorRulesStatus(existing, rulesPath);
|
|
151
|
+
if (status.status === "missing")
|
|
152
|
+
return { ok: false, message: "Cursor OpenPets project rule is not installed.", reason: "io" };
|
|
153
|
+
if (status.status === "conflict")
|
|
154
|
+
return { ok: false, message: "Cannot remove: .cursor/rules/openpets.mdc is not managed by OpenPets.", reason: "unsafe-path" };
|
|
155
|
+
if (status.status === "invalid" || status.status === "error")
|
|
156
|
+
return { ok: false, message: status.message, reason: "io" };
|
|
157
|
+
return buildRulesWritePlan(projectDir, undefined, true);
|
|
158
|
+
}
|
|
159
|
+
export function executeCursorRulesWrite(plan) {
|
|
160
|
+
const parent = resolve(plan.targetPath, "..");
|
|
161
|
+
const parentSafety = assertSafeParentDirectory(parent);
|
|
162
|
+
if (!parentSafety.ok)
|
|
163
|
+
throw new Error(parentSafety.message);
|
|
164
|
+
const targetSafety = assertSafeExistingRulesFile(plan.targetPath, true);
|
|
165
|
+
if (!targetSafety.ok)
|
|
166
|
+
throw new Error(targetSafety.message);
|
|
167
|
+
mkdirSync(parent, { recursive: true, mode: 0o700 });
|
|
168
|
+
if (plan.backupPath && existsSync(plan.targetPath)) {
|
|
169
|
+
const backupFd = openSync(plan.backupPath, "wx", 0o600);
|
|
170
|
+
try {
|
|
171
|
+
writeFileSync(backupFd, readFileSync(plan.targetPath));
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
closeSync(backupFd);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (plan.remove) {
|
|
178
|
+
rmSync(plan.targetPath);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (typeof plan.content !== "string")
|
|
182
|
+
throw new Error("Cursor rules write plan is missing content.");
|
|
183
|
+
const fd = openSync(plan.tempPath, "wx", 0o600);
|
|
184
|
+
try {
|
|
185
|
+
writeFileSync(fd, plan.content, "utf8");
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
closeSync(fd);
|
|
189
|
+
}
|
|
190
|
+
renameSync(plan.tempPath, plan.targetPath);
|
|
191
|
+
try {
|
|
192
|
+
chmodSync(plan.targetPath, 0o600);
|
|
193
|
+
}
|
|
194
|
+
catch { /* best effort */ }
|
|
195
|
+
}
|
|
196
|
+
function buildRulesWritePlan(projectDir, content, remove = false) {
|
|
197
|
+
const rulesPath = getCursorProjectRulesPath(projectDir);
|
|
198
|
+
const pathSafety = assertSafeRulesPath(projectDir, rulesPath);
|
|
199
|
+
if (!pathSafety.ok)
|
|
200
|
+
return pathSafety;
|
|
201
|
+
const existing = assertSafeExistingRulesFile(rulesPath, true);
|
|
202
|
+
if (!existing.ok)
|
|
203
|
+
return existing;
|
|
204
|
+
const parent = resolve(rulesPath, "..");
|
|
205
|
+
const stamp = `${process.pid}-${Date.now()}-${randomUUID()}`;
|
|
206
|
+
const backupPath = existsSync(rulesPath) ? uniquePath(`${rulesPath}.openpets-backup-${stamp}.mdc`) : undefined;
|
|
207
|
+
const tempPath = uniquePath(join(parent, `.openpets-rules-${stamp}.tmp`));
|
|
208
|
+
return { targetPath: rulesPath, backupPath, tempPath, content, remove };
|
|
209
|
+
}
|
|
210
|
+
function classifyManagedRuleShape(content) {
|
|
211
|
+
const normalized = normalizeNewlines(content);
|
|
212
|
+
if (countOccurrences(normalized, cursorRulesStartMarker) !== 1 || countOccurrences(normalized, cursorRulesEndMarker) !== 1) {
|
|
213
|
+
return "Cursor OpenPets rule file has missing or duplicate managed markers.";
|
|
214
|
+
}
|
|
215
|
+
const start = normalized.indexOf(cursorRulesStartMarker);
|
|
216
|
+
const end = normalized.indexOf(cursorRulesEndMarker);
|
|
217
|
+
if (start < 0 || end < 0 || start > end)
|
|
218
|
+
return "Cursor OpenPets rule file has malformed managed markers.";
|
|
219
|
+
const before = normalized.slice(0, start).trim();
|
|
220
|
+
const after = normalized.slice(end + cursorRulesEndMarker.length).trim();
|
|
221
|
+
if (before !== cursorRulesFrontmatter)
|
|
222
|
+
return "Cursor OpenPets rule file has unknown frontmatter or user content before the managed block.";
|
|
223
|
+
if (after !== "")
|
|
224
|
+
return "Cursor OpenPets rule file has user content after the managed block.";
|
|
225
|
+
return "managed";
|
|
226
|
+
}
|
|
227
|
+
function cursorRulesErrorMessage(reason) {
|
|
228
|
+
const messages = {
|
|
229
|
+
size: "Cursor OpenPets rule file is too large.",
|
|
230
|
+
symlink: "Cursor OpenPets rule path is a symlink.",
|
|
231
|
+
"not-regular": "Cursor OpenPets rule path is not a regular file.",
|
|
232
|
+
"unsafe-path": "Cursor OpenPets rule path is unsafe.",
|
|
233
|
+
io: "Failed to read Cursor OpenPets rule file.",
|
|
234
|
+
};
|
|
235
|
+
return messages[reason];
|
|
236
|
+
}
|
|
237
|
+
function assertSafeRulesPath(projectDir, rulesPath) {
|
|
238
|
+
const projectRoot = resolve(projectDir);
|
|
239
|
+
const expected = resolve(getCursorProjectRulesPath(projectRoot));
|
|
240
|
+
const resolvedRulesPath = resolve(rulesPath);
|
|
241
|
+
if (resolvedRulesPath !== expected) {
|
|
242
|
+
return { ok: false, message: "Cursor rules path must be <project>/.cursor/rules/openpets.mdc.", reason: "unsafe-path" };
|
|
243
|
+
}
|
|
244
|
+
return assertSafeParentDirectory(resolve(rulesPath, ".."));
|
|
245
|
+
}
|
|
246
|
+
function assertSafeExistingRulesFile(path, allowMissing = false) {
|
|
247
|
+
const stat = lstatSync(path, { throwIfNoEntry: false });
|
|
248
|
+
if (!stat)
|
|
249
|
+
return allowMissing ? { ok: true } : { ok: false, message: "Cursor rules file does not exist.", reason: "io" };
|
|
250
|
+
if (stat.isSymbolicLink())
|
|
251
|
+
return { ok: false, message: "Cursor rules file is a symlink.", reason: "symlink" };
|
|
252
|
+
if (!stat.isFile())
|
|
253
|
+
return { ok: false, message: "Cursor rules path is not a regular file.", reason: "not-regular" };
|
|
254
|
+
if (stat.size > maxCursorRulesBytes)
|
|
255
|
+
return { ok: false, message: "Cursor rules file exceeds 64 KiB limit.", reason: "size" };
|
|
256
|
+
return { ok: true };
|
|
257
|
+
}
|
|
258
|
+
function assertSafeParentDirectory(path) {
|
|
259
|
+
if (path.split(/[\\/]+/u).includes("..")) {
|
|
260
|
+
return { ok: false, message: "Cursor rules parent path must not contain parent traversal segments.", reason: "unsafe-path" };
|
|
261
|
+
}
|
|
262
|
+
const absolutePath = resolve(path);
|
|
263
|
+
const root = parse(absolutePath).root;
|
|
264
|
+
const parts = absolutePath.slice(root.length).split(/[\\/]+/u).filter(Boolean);
|
|
265
|
+
let current = root;
|
|
266
|
+
for (const part of parts) {
|
|
267
|
+
current = join(current, part);
|
|
268
|
+
const stat = lstatSync(current, { throwIfNoEntry: false });
|
|
269
|
+
if (!stat)
|
|
270
|
+
break;
|
|
271
|
+
if (stat.isSymbolicLink())
|
|
272
|
+
return { ok: false, message: "Cursor rules parent must not contain symlink segments.", reason: "symlink" };
|
|
273
|
+
if (!stat.isDirectory())
|
|
274
|
+
return { ok: false, message: "Cursor rules parent path segment must be a directory.", reason: "unsafe-path" };
|
|
275
|
+
}
|
|
276
|
+
return { ok: true };
|
|
277
|
+
}
|
|
278
|
+
function uniquePath(path) {
|
|
279
|
+
if (!existsSync(path))
|
|
280
|
+
return path;
|
|
281
|
+
for (let index = 1; index < 1000; index += 1) {
|
|
282
|
+
const candidate = `${path}.${index}`;
|
|
283
|
+
if (!existsSync(candidate))
|
|
284
|
+
return candidate;
|
|
285
|
+
}
|
|
286
|
+
throw new Error("Unable to allocate unique temp path.");
|
|
287
|
+
}
|
|
288
|
+
function normalizeNewlines(value) {
|
|
289
|
+
return value.replace(/\r\n?/g, "\n");
|
|
290
|
+
}
|
|
291
|
+
function countOccurrences(value, needle) {
|
|
292
|
+
return value.split(needle).length - 1;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=cursor-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-rules.js","sourceRoot":"","sources":["../src/cursor-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type CursorMcpEntry, type CursorMcpPreviewOptions } from "./cursor-mcp.js";
|
|
2
|
+
export type CursorMcpStatus = "missing" | "installed" | "needs-update" | "conflict" | "invalid" | "error";
|
|
3
|
+
export interface CursorMcpStatusResult {
|
|
4
|
+
readonly status: CursorMcpStatus;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
readonly configPath: string;
|
|
7
|
+
readonly canInstall: boolean;
|
|
8
|
+
readonly canReplace: boolean;
|
|
9
|
+
readonly canRemove: boolean;
|
|
10
|
+
readonly previewEntry?: CursorMcpEntry;
|
|
11
|
+
readonly redactedDetails?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CursorConfigReadResult {
|
|
14
|
+
readonly ok: true;
|
|
15
|
+
readonly config: Record<string, unknown>;
|
|
16
|
+
readonly exists: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface CursorConfigError {
|
|
19
|
+
readonly ok: false;
|
|
20
|
+
readonly message: string;
|
|
21
|
+
readonly reason: "parse" | "size" | "symlink" | "not-regular" | "unsafe-path" | "invalid-schema" | "io";
|
|
22
|
+
}
|
|
23
|
+
export interface CursorPlannedWrite {
|
|
24
|
+
readonly targetPath: string;
|
|
25
|
+
readonly backupPath?: string;
|
|
26
|
+
readonly tempPath: string;
|
|
27
|
+
readonly content: string;
|
|
28
|
+
}
|
|
29
|
+
export declare const maxCursorConfigBytes: number;
|
|
30
|
+
export declare function classifyCursorMcpStatus(configResult: CursorConfigReadResult | CursorConfigError, configPath: string, expected: CursorMcpPreviewOptions): CursorMcpStatusResult;
|
|
31
|
+
export declare function isManagedOpenPetsMcpEntry(value: unknown): boolean;
|
|
32
|
+
export declare function readCursorMcpConfig(configPath: string): CursorConfigReadResult | CursorConfigError;
|
|
33
|
+
export declare function planCursorMcpInstall(configPath: string, options: CursorMcpPreviewOptions, allowReplace?: boolean): CursorPlannedWrite | CursorConfigError;
|
|
34
|
+
export declare function planCursorMcpReplace(configPath: string, options: CursorMcpPreviewOptions): CursorPlannedWrite | CursorConfigError;
|
|
35
|
+
export declare function planCursorMcpRemove(configPath: string): CursorPlannedWrite | CursorConfigError;
|
|
36
|
+
export declare function executeCursorMcpWrite(plan: CursorPlannedWrite): void;
|
|
37
|
+
//# sourceMappingURL=cursor-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-status.d.ts","sourceRoot":"","sources":["../src/cursor-status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAqC,MAAM,iBAAiB,CAAC;AAE5I,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1G,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAAC;CACzG;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,oBAAoB,QAAa,CAAC;AAE/C,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,sBAAsB,GAAG,iBAAiB,EACxD,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,uBAAuB,GAChC,qBAAqB,CAmGvB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAkBjE;AAwCD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,GAAG,iBAAiB,CAsClG;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,EAChC,YAAY,UAAQ,GACnB,kBAAkB,GAAG,iBAAiB,CA6BxC;AAED,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,kBAAkB,GAAG,iBAAiB,CA4BxC;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,CAqB9F;AAiBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAkCpE"}
|