odai-dsh-agent 0.2.36 → 0.2.37
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/README.md +8 -8
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +0 -1
- package/build/src/installer.mjs.map +1 -1
- package/package.json +3 -3
- package/preset/odai/runtime/context-activation.d.mts +2 -11
- package/preset/odai/runtime/context-activation.d.mts.map +1 -1
- package/preset/odai/runtime/context-activation.mjs +2 -14
- package/preset/odai/runtime/context-activation.mjs.map +1 -1
- package/preset/odai/runtime/context-capability.d.mts +1 -1
- package/preset/odai/runtime/context-capability.d.mts.map +1 -1
- package/preset/odai/runtime/context-capability.mjs +1 -3
- package/preset/odai/runtime/context-capability.mjs.map +1 -1
- package/preset/odai/runtime/governance-bundle.d.mts +3 -3
- package/preset/odai/runtime/governance-bundle.d.mts.map +1 -1
- package/preset/odai/runtime/governance-bundle.mjs +2 -2
- package/preset/odai/runtime/governance-bundle.mjs.map +1 -1
- package/preset/odai/runtime/governance.d.mts +0 -1
- package/preset/odai/runtime/governance.d.mts.map +1 -1
- package/preset/odai/runtime/governance.mjs +0 -21
- package/preset/odai/runtime/governance.mjs.map +1 -1
- package/preset/odai/runtime/index.d.mts.map +1 -1
- package/preset/odai/runtime/index.mjs +4 -3
- package/preset/odai/runtime/index.mjs.map +1 -1
- package/preset/odai/runtime/prompt-runtime.d.mts +0 -2
- package/preset/odai/runtime/prompt-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/prompt-runtime.mjs +3 -38
- package/preset/odai/runtime/prompt-runtime.mjs.map +1 -1
- package/preset/odai/runtime/responsibility-gap.d.mts +0 -1
- package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -1
- package/preset/odai/runtime/responsibility-gap.mjs +0 -3
- package/preset/odai/runtime/responsibility-gap.mjs.map +1 -1
- package/preset/odai/runtime/runtime-config.d.mts +0 -1
- package/preset/odai/runtime/runtime-config.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-config.mjs +1 -7
- package/preset/odai/runtime/runtime-config.mjs.map +1 -1
- package/preset/odai/runtime/runtime-support.d.mts +1 -7
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.mjs +9 -4
- package/preset/odai/runtime/runtime-support.mjs.map +1 -1
- package/preset/odai/runtime/runtime-types.d.mts +0 -1
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
- package/preset/odai/runtime/semantic-memory.d.mts.map +1 -1
- package/preset/odai/runtime/semantic-memory.mjs +13 -7
- package/preset/odai/runtime/semantic-memory.mjs.map +1 -1
- package/preset/odai/runtime/skill-bundle.d.mts +2 -2
- package/preset/odai/runtime/skill-bundle.d.mts.map +1 -1
- package/preset/odai/runtime/skill-bundle.mjs +1 -1
- package/preset/odai/runtime/skill-bundle.mjs.map +1 -1
- package/preset/odai/runtime/tool-runtime.d.mts +1 -3
- package/preset/odai/runtime/tool-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/tool-runtime.mjs +2 -12
- package/preset/odai/runtime/tool-runtime.mjs.map +1 -1
- package/preset/odai/skills/odai/SKILL.md +28 -17
- package/preset/odai/skills/odai/manifest.json +4 -4
- package/preset/odai/skills/odai/references/craft.md +8 -2
- package/preset/odai/skills/odai/references/dao.md +5 -4
- package/preset/odai/skills/odai/references/leverage.md +4 -4
- package/preset/odai/skills/odai/references/memory.md +20 -0
- package/preset/odai/skills/odai/references/planning.md +6 -6
- package/preset/odai/skills/odai/references/verification.md +2 -2
- package/preset/odai/skills/odai-orchestration/SKILL.md +1 -11
- package/preset/odai/skills/odai-orchestration/assets/claude-agents/agent.md +0 -2
- package/preset/odai/skills/odai-orchestration/manifest.json +3 -2
- package/preset/odai/skills/odai-orchestration/references/install.md +10 -0
- package/preset/odai/skills/odai-orchestration/references/orchestration.md +0 -6
- package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.d.mts +3 -3
- package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.mjs +2 -2
- package/preset/odai/skills/odai-orchestration/scripts/install-routing.mjs +100 -55
- package/preset/odai/runtime/skill-evolution.d.mts +0 -112
- package/preset/odai/runtime/skill-evolution.d.mts.map +0 -1
- package/preset/odai/runtime/skill-evolution.mjs +0 -1440
- package/preset/odai/runtime/skill-evolution.mjs.map +0 -1
- package/preset/odai/skills/odai/references/support.md +0 -23
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, renameSync,
|
|
5
|
-
rmSync, unlinkSync, writeFileSync,
|
|
5
|
+
rmdirSync, rmSync, unlinkSync, writeFileSync,
|
|
6
6
|
} from "node:fs";
|
|
7
7
|
import { homedir, tmpdir } from "node:os";
|
|
8
8
|
import path from "node:path";
|
|
@@ -52,60 +52,70 @@ const previous = loadManifest(manifestPath);
|
|
|
52
52
|
assertSafeDestination(configRoot, layout, Object.keys(previous?.files || {}));
|
|
53
53
|
assertManagedState(configRoot, layout, previous);
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
if (hasMappingArgs(args)) fail("--uninstall 不接受模型、推理档或 policy 参数");
|
|
57
|
-
if (!previous) returnResult({ status: "not-installed", host: args.host, scope: args.scope, target: targetRoot, configRoot, requiresNewSession: false });
|
|
58
|
-
const removed = uninstall(configRoot, manifestPath, previous);
|
|
59
|
-
returnResult({ status: "uninstalled", host: args.host, scope: args.scope, target: targetRoot, configRoot, removed, requiresNewSession: true });
|
|
60
|
-
}
|
|
55
|
+
returnResult(main());
|
|
61
56
|
|
|
62
|
-
|
|
63
|
-
if (args.
|
|
64
|
-
if (args
|
|
65
|
-
if (!
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
57
|
+
function main() {
|
|
58
|
+
if (args.uninstall) {
|
|
59
|
+
if (hasMappingArgs(args)) fail("--uninstall 不接受模型、推理档或 policy 参数");
|
|
60
|
+
if (!previous) return { status: "not-installed", host: args.host, scope: args.scope, target: targetRoot, configRoot, requiresNewSession: false };
|
|
61
|
+
const removed = uninstall(configRoot, manifestPath, previous);
|
|
62
|
+
return { status: "uninstalled", host: args.host, scope: args.scope, target: targetRoot, configRoot, removed, requiresNewSession: true };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
for (const role of requiredRoles) if (!args[`${role}Model`]) fail(`缺少 --${role}-model`);
|
|
66
|
+
if (args.researcherEffort && !args.researcherModel) fail("--researcher-effort 需要同时提供 --researcher-model");
|
|
67
|
+
if (args.frontendEffort && !args.frontendModel) fail("--frontend-effort 需要同时提供 --frontend-model");
|
|
68
|
+
if (!existsSync(builder)) fail(`缺少路由生成器:${builder}`);
|
|
69
|
+
|
|
70
|
+
const generatedRoot = mkdtempSync(path.join(tmpdir(), `odai-${args.host}-routing-install-`));
|
|
71
|
+
const snapshots = new Map();
|
|
72
|
+
const newDirectories = [];
|
|
73
|
+
try {
|
|
74
|
+
const generated = buildAdapter(generatedRoot, configRoot);
|
|
75
|
+
const files = collectGeneratedFiles(generatedRoot, layout);
|
|
76
|
+
const originalFiles = prepareOriginalFiles(configRoot, previous, files);
|
|
77
|
+
const settings = planSettings(configRoot, layout, previous);
|
|
78
|
+
for (const relative of directoryAncestors([...files.keys(), manifestName, ...(settings ? [settings.file] : [])])) {
|
|
79
|
+
if (!existsSync(path.join(configRoot, relative))) newDirectories.push(relative);
|
|
80
|
+
}
|
|
81
|
+
const candidates = new Set([...layout.managedFiles, ...layout.retiredFiles, ...Object.keys(previous?.files || {}), manifestName]);
|
|
82
|
+
for (const relative of candidates) snapshot(configRoot, relative, snapshots);
|
|
83
|
+
if (settings) snapshot(configRoot, settings.file, snapshots);
|
|
84
|
+
for (const [relative, content] of files) atomicWrite(path.join(configRoot, relative), content);
|
|
85
|
+
if (settings) atomicWrite(path.join(configRoot, settings.file), Buffer.from(`${JSON.stringify(settings.value, null, 2)}\n`));
|
|
86
|
+
removeObsolete(configRoot, previous, files);
|
|
87
|
+
const manifest = {
|
|
88
|
+
version: 13,
|
|
89
|
+
id: "odai-routing-installation",
|
|
90
|
+
host: args.host,
|
|
91
|
+
scope: args.scope,
|
|
92
|
+
target: targetRoot,
|
|
93
|
+
installedAt: new Date().toISOString(),
|
|
94
|
+
generatedFrom: "skills/odai-orchestration/scripts/install-routing.mjs",
|
|
95
|
+
governance: generated.governance,
|
|
96
|
+
orchestration: generated.orchestration,
|
|
97
|
+
mapping: generated.mapping,
|
|
98
|
+
routingPolicy: generated.routing_policy,
|
|
99
|
+
activation: generated.activation,
|
|
100
|
+
files: Object.fromEntries([...files].map(([relative, content]) => [relative, sha256(content)])),
|
|
101
|
+
originalFiles,
|
|
102
|
+
createdDirectories: [...new Set([...(previous?.createdDirectories || []), ...newDirectories])],
|
|
103
|
+
settings: settings?.manifest || null,
|
|
104
|
+
};
|
|
105
|
+
atomicWrite(manifestPath, Buffer.from(`${JSON.stringify(manifest, null, 2)}\n`));
|
|
106
|
+
assertManagedState(configRoot, layout, manifest);
|
|
107
|
+
return {
|
|
108
|
+
status: previous ? "updated" : "installed", host: args.host, scope: args.scope,
|
|
109
|
+
target: targetRoot, configRoot, mapping: generated.mapping, routingPolicy: generated.routing_policy,
|
|
110
|
+
activation: generated.activation, requiresNewSession: true,
|
|
111
|
+
};
|
|
112
|
+
} catch (error) {
|
|
113
|
+
restore(configRoot, snapshots);
|
|
114
|
+
removeCreatedDirectories(configRoot, newDirectories);
|
|
115
|
+
throw error;
|
|
116
|
+
} finally {
|
|
117
|
+
rmSync(generatedRoot, { recursive: true, force: true });
|
|
118
|
+
}
|
|
109
119
|
}
|
|
110
120
|
|
|
111
121
|
function buildAdapter(outputRoot, root) {
|
|
@@ -310,6 +320,14 @@ function assertManagedState(root, layoutValue, manifest) {
|
|
|
310
320
|
fail("旧路由包含当前宿主不支持的设置记录");
|
|
311
321
|
}
|
|
312
322
|
const accepted = new Set([...(layoutValue.knownFiles || layoutValue.managedFiles), ...layoutValue.retiredFiles]);
|
|
323
|
+
if (manifest.createdDirectories !== undefined) {
|
|
324
|
+
const allowed = directoryAncestors([...accepted, manifestName, ...(expectedSetting ? [expectedSetting.file] : [])]);
|
|
325
|
+
if (!Array.isArray(manifest.createdDirectories)
|
|
326
|
+
|| manifest.createdDirectories.some(relative => typeof relative !== "string" || !allowed.has(relative))) {
|
|
327
|
+
fail("旧路由包含无效的托管目录记录");
|
|
328
|
+
}
|
|
329
|
+
assertSafeDestination(root, layoutValue, manifest.createdDirectories);
|
|
330
|
+
}
|
|
313
331
|
for (const [relative, expected] of Object.entries(manifest.files || {})) {
|
|
314
332
|
if (!accepted.has(relative)) fail(`旧路由包含未知文件:${relative}`);
|
|
315
333
|
const file = path.join(root, relative);
|
|
@@ -348,13 +366,16 @@ function uninstall(root, manifestPathValue, manifest) {
|
|
|
348
366
|
for (const relative of files) snapshot(root, relative, snapshots);
|
|
349
367
|
if (settingPlan) snapshot(root, settingPlan.relative, snapshots);
|
|
350
368
|
snapshot(root, manifestName, snapshots);
|
|
369
|
+
const removedDirectories = [];
|
|
351
370
|
|
|
352
371
|
try {
|
|
353
372
|
for (const [relative, content] of plannedFiles) applyFileState(path.join(root, relative), content);
|
|
354
373
|
if (settingPlan) applyFileState(path.join(root, settingPlan.relative), settingPlan.content);
|
|
355
374
|
unlinkSync(manifestPathValue);
|
|
375
|
+
removeCreatedDirectories(root, manifest.createdDirectories || [], removedDirectories);
|
|
356
376
|
} catch (error) {
|
|
357
377
|
try {
|
|
378
|
+
for (const relative of [...removedDirectories].reverse()) mkdirSync(path.join(root, relative), { recursive: true });
|
|
358
379
|
restore(root, snapshots);
|
|
359
380
|
} catch (restoreError) {
|
|
360
381
|
throw new AggregateError([error, restoreError], "路由卸载失败且无法完整回滚;请检查现有托管清单与文件状态");
|
|
@@ -376,6 +397,30 @@ function planSettingRestore(root, spec) {
|
|
|
376
397
|
};
|
|
377
398
|
}
|
|
378
399
|
|
|
400
|
+
function directoryAncestors(files) {
|
|
401
|
+
const directories = new Set(["."]);
|
|
402
|
+
for (const relative of files) {
|
|
403
|
+
let directory = path.dirname(relative);
|
|
404
|
+
while (directory !== ".") {
|
|
405
|
+
directories.add(directory);
|
|
406
|
+
directory = path.dirname(directory);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
return directories;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function removeCreatedDirectories(root, directories, removed = []) {
|
|
413
|
+
const depth = relative => relative === "." ? 0 : relative.split(/[\\/]/u).length;
|
|
414
|
+
for (const relative of [...new Set(directories)].sort((a, b) => depth(b) - depth(a))) {
|
|
415
|
+
try {
|
|
416
|
+
rmdirSync(path.join(root, relative));
|
|
417
|
+
removed.push(relative);
|
|
418
|
+
} catch (error) {
|
|
419
|
+
if (!["ENOENT", "ENOTEMPTY", "EEXIST"].includes(error?.code)) throw error;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
379
424
|
function applyFileState(file, content) {
|
|
380
425
|
if (content === null) rmSync(file, { force: true });
|
|
381
426
|
else atomicWrite(file, content);
|
|
@@ -447,5 +492,5 @@ Usage:
|
|
|
447
492
|
安装后用户只需正常使用 odai。总控是唯一持续任务线程并负责实施整合;planner、reviewer 以及可选 researcher、frontend 只在能改变结果时启动。researcher 与 frontend 映射默认不配置。更新会安全移除旧版 advisor、implementer、worker、executor 和 stage runner 托管文件。`);
|
|
448
493
|
}
|
|
449
494
|
|
|
450
|
-
function returnResult(value) { process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
495
|
+
function returnResult(value) { process.stdout.write(`${JSON.stringify(value, null, 2)}\n`); }
|
|
451
496
|
function fail(message) { throw new Error(message); }
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import type { SkillBundle } from "./skill-bundle.mjs";
|
|
2
|
-
import type { DshAgent, RuntimeTool, UnknownRecord } from "./runtime-types.mjs";
|
|
3
|
-
type StateAction = "activate" | "rollback" | "deactivate";
|
|
4
|
-
type AuthorizationLevel = "standard" | "breaking";
|
|
5
|
-
export interface GenerationAuthorization {
|
|
6
|
-
readonly action: "propose" | "rebase";
|
|
7
|
-
readonly phrase: string;
|
|
8
|
-
readonly turn: number;
|
|
9
|
-
readonly eventSeq: number;
|
|
10
|
-
readonly messageId: string;
|
|
11
|
-
}
|
|
12
|
-
interface HistoryEvent {
|
|
13
|
-
readonly revision: number;
|
|
14
|
-
readonly action: StateAction;
|
|
15
|
-
readonly from: string | null;
|
|
16
|
-
readonly to: string | null;
|
|
17
|
-
readonly at: string;
|
|
18
|
-
readonly evidence: readonly string[];
|
|
19
|
-
}
|
|
20
|
-
export interface SkillEvolutionState {
|
|
21
|
-
readonly schemaVersion: 1;
|
|
22
|
-
readonly revision: number;
|
|
23
|
-
readonly activeGenerationId?: string;
|
|
24
|
-
readonly history: readonly HistoryEvent[];
|
|
25
|
-
}
|
|
26
|
-
export interface GenerationSummary extends UnknownRecord {
|
|
27
|
-
generationId: string;
|
|
28
|
-
parentGenerationId?: string;
|
|
29
|
-
createdAt: string;
|
|
30
|
-
objective: string;
|
|
31
|
-
baseDigest: string;
|
|
32
|
-
resultDigest: string;
|
|
33
|
-
skillVersion: string;
|
|
34
|
-
runtimeContract: unknown;
|
|
35
|
-
changedPaths: readonly string[];
|
|
36
|
-
authorizationLevel: AuthorizationLevel;
|
|
37
|
-
activationPhrase: string;
|
|
38
|
-
breakingReasons: readonly string[];
|
|
39
|
-
creationAuthorization?: GenerationAuthorization;
|
|
40
|
-
}
|
|
41
|
-
export interface RebaseConflict {
|
|
42
|
-
readonly path: string;
|
|
43
|
-
readonly replacement: number;
|
|
44
|
-
readonly reason: string;
|
|
45
|
-
}
|
|
46
|
-
interface SelectionEvolutionState extends UnknownRecord {
|
|
47
|
-
status?: string;
|
|
48
|
-
generationId?: string;
|
|
49
|
-
baseDigest?: string;
|
|
50
|
-
upstreamDigest?: string;
|
|
51
|
-
rebaseRequired?: boolean;
|
|
52
|
-
hostOverride?: boolean;
|
|
53
|
-
}
|
|
54
|
-
export interface EvolutionSelection {
|
|
55
|
-
readonly mode: string;
|
|
56
|
-
readonly status: string;
|
|
57
|
-
readonly reasonCode: string;
|
|
58
|
-
readonly detail?: string;
|
|
59
|
-
readonly bundle: SkillBundle;
|
|
60
|
-
readonly candidate?: SkillBundle;
|
|
61
|
-
readonly rejections: readonly {
|
|
62
|
-
readonly source: string;
|
|
63
|
-
readonly reasonCode: string;
|
|
64
|
-
readonly detail?: string;
|
|
65
|
-
}[];
|
|
66
|
-
readonly upstream?: EvolutionSelection;
|
|
67
|
-
readonly evolution?: Readonly<SelectionEvolutionState>;
|
|
68
|
-
}
|
|
69
|
-
export interface EvolutionToolArguments extends UnknownRecord {
|
|
70
|
-
action?: unknown;
|
|
71
|
-
path?: unknown;
|
|
72
|
-
generationId?: unknown;
|
|
73
|
-
objective?: unknown;
|
|
74
|
-
expectedBundleDigest?: unknown;
|
|
75
|
-
expectedUpstreamDigest?: unknown;
|
|
76
|
-
changes?: unknown;
|
|
77
|
-
}
|
|
78
|
-
export interface EvolutionToolResult extends UnknownRecord {
|
|
79
|
-
action: string;
|
|
80
|
-
status: string;
|
|
81
|
-
error?: string;
|
|
82
|
-
path?: string;
|
|
83
|
-
bundleDigest?: string;
|
|
84
|
-
proposalPhrase?: string;
|
|
85
|
-
attemptId?: string;
|
|
86
|
-
conflicts?: readonly RebaseConflict[];
|
|
87
|
-
sha256?: string;
|
|
88
|
-
content?: string;
|
|
89
|
-
requiresNextTurn?: boolean;
|
|
90
|
-
generations?: readonly GenerationSummary[];
|
|
91
|
-
activeGenerationId?: string;
|
|
92
|
-
active?: GenerationSummary & {
|
|
93
|
-
rebaseRequired: boolean;
|
|
94
|
-
};
|
|
95
|
-
generation?: GenerationSummary;
|
|
96
|
-
}
|
|
97
|
-
interface CreateEvolutionToolOptions {
|
|
98
|
-
currentSelectionFor?: (agent: DshAgent) => EvolutionSelection;
|
|
99
|
-
selection?: EvolutionSelection;
|
|
100
|
-
onChanged?: (agent: DshAgent, result: EvolutionToolResult) => void;
|
|
101
|
-
now?: () => string;
|
|
102
|
-
disabled?: boolean;
|
|
103
|
-
}
|
|
104
|
-
export declare function readSkillEvolutionState(root: string): Readonly<SkillEvolutionState>;
|
|
105
|
-
export declare function resolveSkillEvolutionRoot(configuredPath: unknown, env?: Readonly<Record<string, string | undefined>>): string;
|
|
106
|
-
export declare function skillEvolutionDisabled(env?: Readonly<Record<string, string | undefined>>): boolean;
|
|
107
|
-
export declare function applySkillEvolutionSelection(upstream: EvolutionSelection, root: string, options?: {
|
|
108
|
-
disabled?: boolean;
|
|
109
|
-
}): EvolutionSelection;
|
|
110
|
-
export declare function createSkillEvolutionTool(root: string, options?: CreateEvolutionToolOptions): RuntimeTool<EvolutionToolArguments, EvolutionToolResult>;
|
|
111
|
-
export {};
|
|
112
|
-
//# sourceMappingURL=skill-evolution.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-evolution.d.mts","sourceRoot":"","sources":["../src/skill-evolution.mts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAY,WAAW,EAAiB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzG,KAAK,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAE1D,KAAK,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC;AAoBlD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAyBD,UAAU,YAAY;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AACD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C;AAWD,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,uBAAuB,CAAC;CACjD;AAGD,MAAM,WAAW,cAAc;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAmBhH,UAAU,uBAAwB,SAAQ,aAAa;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnH,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;CACxD;AACD,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC9E,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrF;AACD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC9D,WAAW,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG;QAAE,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CACvH;AACD,UAAU,0BAA0B;IAClC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,kBAAkB,CAAC;IAC9D,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkMD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CA4CnF;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,OAAO,EACvB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAWR;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAAG,OAAO,CAE/G;AAmpBD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,kBAAkB,CAmFpB;AAsKD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,0BAA+B,GACvC,WAAW,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CA8T1D"}
|