soloforge 1.2.2 → 1.2.4
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 +229 -28
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +319 -5
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -1
- package/dist/adapters/shared/workflow_template.js +26 -3
- package/dist/adapters/shared/workflow_template.js.map +1 -1
- package/dist/bin/soloforge.js +169 -13
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/audit_pool.d.ts +36 -0
- package/dist/engine/audit_pool.d.ts.map +1 -0
- package/dist/engine/audit_pool.js +83 -0
- package/dist/engine/audit_pool.js.map +1 -0
- package/dist/engine/audit_sampler.d.ts +15 -0
- package/dist/engine/audit_sampler.d.ts.map +1 -0
- package/dist/engine/audit_sampler.js +26 -0
- package/dist/engine/audit_sampler.js.map +1 -0
- package/dist/engine/capability_action_advisor.d.ts +24 -0
- package/dist/engine/capability_action_advisor.d.ts.map +1 -0
- package/dist/engine/capability_action_advisor.js +147 -0
- package/dist/engine/capability_action_advisor.js.map +1 -0
- package/dist/engine/capability_registry.d.ts +23 -1
- package/dist/engine/capability_registry.d.ts.map +1 -1
- package/dist/engine/capability_registry.js +511 -19
- package/dist/engine/capability_registry.js.map +1 -1
- package/dist/engine/capability_state_store.d.ts +50 -0
- package/dist/engine/capability_state_store.d.ts.map +1 -0
- package/dist/engine/capability_state_store.js +123 -0
- package/dist/engine/capability_state_store.js.map +1 -0
- package/dist/engine/cognitive_anchor.d.ts +59 -0
- package/dist/engine/cognitive_anchor.d.ts.map +1 -0
- package/dist/engine/cognitive_anchor.js +68 -0
- package/dist/engine/cognitive_anchor.js.map +1 -0
- package/dist/engine/conflict_gate.d.ts +36 -0
- package/dist/engine/conflict_gate.d.ts.map +1 -0
- package/dist/engine/conflict_gate.js +73 -0
- package/dist/engine/conflict_gate.js.map +1 -0
- package/dist/engine/decision_contract.d.ts +29 -0
- package/dist/engine/decision_contract.d.ts.map +1 -0
- package/dist/engine/decision_contract.js +41 -0
- package/dist/engine/decision_contract.js.map +1 -0
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +83 -0
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/developer_sovereignty.d.ts +62 -0
- package/dist/engine/developer_sovereignty.d.ts.map +1 -0
- package/dist/engine/developer_sovereignty.js +134 -0
- package/dist/engine/developer_sovereignty.js.map +1 -0
- package/dist/engine/diff_ownership.d.ts +74 -0
- package/dist/engine/diff_ownership.d.ts.map +1 -0
- package/dist/engine/diff_ownership.js +143 -0
- package/dist/engine/diff_ownership.js.map +1 -0
- package/dist/engine/diff_ownership_store.d.ts +76 -0
- package/dist/engine/diff_ownership_store.d.ts.map +1 -0
- package/dist/engine/diff_ownership_store.js +264 -0
- package/dist/engine/diff_ownership_store.js.map +1 -0
- package/dist/engine/escape_report.d.ts +45 -0
- package/dist/engine/escape_report.d.ts.map +1 -0
- package/dist/engine/escape_report.js +97 -0
- package/dist/engine/escape_report.js.map +1 -0
- package/dist/engine/exploration.d.ts +54 -0
- package/dist/engine/exploration.d.ts.map +1 -1
- package/dist/engine/exploration.js +138 -0
- package/dist/engine/exploration.js.map +1 -1
- package/dist/engine/governance_report.d.ts +36 -0
- package/dist/engine/governance_report.d.ts.map +1 -0
- package/dist/engine/governance_report.js +79 -0
- package/dist/engine/governance_report.js.map +1 -0
- package/dist/engine/java_quality_guard.d.ts +52 -0
- package/dist/engine/java_quality_guard.d.ts.map +1 -0
- package/dist/engine/java_quality_guard.js +237 -0
- package/dist/engine/java_quality_guard.js.map +1 -0
- package/dist/engine/job_manager.d.ts +76 -0
- package/dist/engine/job_manager.d.ts.map +1 -0
- package/dist/engine/job_manager.js +225 -0
- package/dist/engine/job_manager.js.map +1 -0
- package/dist/engine/knowledge_sovereignty.d.ts +61 -0
- package/dist/engine/knowledge_sovereignty.d.ts.map +1 -0
- package/dist/engine/knowledge_sovereignty.js +190 -0
- package/dist/engine/knowledge_sovereignty.js.map +1 -0
- package/dist/engine/mutation_audit.d.ts +43 -0
- package/dist/engine/mutation_audit.d.ts.map +1 -0
- package/dist/engine/mutation_audit.js +118 -0
- package/dist/engine/mutation_audit.js.map +1 -0
- package/dist/engine/policy_drift_detector.d.ts +46 -0
- package/dist/engine/policy_drift_detector.d.ts.map +1 -0
- package/dist/engine/policy_drift_detector.js +181 -0
- package/dist/engine/policy_drift_detector.js.map +1 -0
- package/dist/engine/regression_matrix.d.ts +102 -0
- package/dist/engine/regression_matrix.d.ts.map +1 -0
- package/dist/engine/regression_matrix.js +380 -0
- package/dist/engine/regression_matrix.js.map +1 -0
- package/dist/engine/risk_sampler.d.ts +37 -0
- package/dist/engine/risk_sampler.d.ts.map +1 -0
- package/dist/engine/risk_sampler.js +69 -0
- package/dist/engine/risk_sampler.js.map +1 -0
- package/dist/engine/runtime_safety.d.ts +80 -0
- package/dist/engine/runtime_safety.d.ts.map +1 -0
- package/dist/engine/runtime_safety.js +195 -0
- package/dist/engine/runtime_safety.js.map +1 -0
- package/dist/engine/scope_lease.d.ts +45 -0
- package/dist/engine/scope_lease.d.ts.map +1 -0
- package/dist/engine/scope_lease.js +122 -0
- package/dist/engine/scope_lease.js.map +1 -0
- package/dist/engine/semantic_evidence.d.ts +23 -0
- package/dist/engine/semantic_evidence.d.ts.map +1 -0
- package/dist/engine/semantic_evidence.js +81 -0
- package/dist/engine/semantic_evidence.js.map +1 -0
- package/dist/engine/task_context.d.ts +16 -0
- package/dist/engine/task_context.d.ts.map +1 -1
- package/dist/engine/task_context.js +58 -0
- package/dist/engine/task_context.js.map +1 -1
- package/dist/engine/verifier.d.ts.map +1 -1
- package/dist/engine/verifier.js +22 -1
- package/dist/engine/verifier.js.map +1 -1
- package/dist/engine/workspace_resumer.d.ts +43 -0
- package/dist/engine/workspace_resumer.d.ts.map +1 -1
- package/dist/engine/workspace_resumer.js +119 -4
- package/dist/engine/workspace_resumer.js.map +1 -1
- package/dist/engine/zero_config_init.d.ts +87 -0
- package/dist/engine/zero_config_init.d.ts.map +1 -0
- package/dist/engine/zero_config_init.js +427 -0
- package/dist/engine/zero_config_init.js.map +1 -0
- package/dist/knowledge/index_manager.d.ts +19 -0
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +31 -0
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/knowledge/writer.d.ts.map +1 -1
- package/dist/knowledge/writer.js +1 -0
- package/dist/knowledge/writer.js.map +1 -1
- package/dist/types.d.ts +61 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/templates/knowledge/patterns/core/Diff/345/275/222/345/261/236/350/277/275/350/270/252.md +47 -0
- package/templates/knowledge/patterns/core/Java/350/264/250/351/207/217/351/227/250/347/246/201.md +46 -0
- package/templates/knowledge/patterns/core/LLM/351/242/204/347/256/227/347/275/221/345/205/263.md +46 -0
- package/templates/knowledge/patterns/core//344/273/273/345/212/241/344/270/212/344/270/213/346/226/207/347/224/237/345/221/275/345/221/250/346/234/237.md +47 -0
- package/templates/knowledge/patterns/core//344/273/273/345/212/241/347/256/241/347/220/206/345/231/250.md +47 -0
- package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/344/270/216/345/257/206/351/222/245/346/213/246/346/210/252.md +46 -0
- package/templates/knowledge/patterns/core//344/275/234/347/224/250/345/237/237/347/247/237/347/272/246.md +47 -0
- package/templates/knowledge/patterns/core//345/206/262/347/252/201/351/227/250/347/246/201.md +47 -0
- package/templates/knowledge/patterns/core//345/206/263/347/255/226/347/275/221/345/205/263.md +30 -11
- package/templates/knowledge/patterns/core//345/217/230/345/274/202/345/256/241/350/256/241.md +20 -0
- package/templates/knowledge/patterns/core//345/233/236/345/275/222/347/237/251/351/230/265.md +46 -0
- package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/344/272/222/346/226/245/351/224/201.md +44 -0
- package/templates/knowledge/patterns/core//345/267/245/344/275/234/345/214/272/345/224/244/351/206/222.md +46 -0
- package/templates/knowledge/patterns/core//345/271/266/345/217/221/351/224/201.md +29 -16
- package/templates/knowledge/patterns/core//345/274/200/345/217/221/350/200/205/345/256/252/346/263/225.md +20 -0
- package/templates/knowledge/patterns/core//346/225/217/346/204/237/344/277/241/346/201/257/346/211/253/346/217/217.md +45 -0
- package/templates/knowledge/patterns/core//346/262/273/347/220/206/350/277/220/350/241/214/346/227/266/345/276/252/347/216/257.md +48 -0
- package/templates/knowledge/patterns/core//346/265/201/345/274/217/345/277/203/350/267/263.md +20 -0
- package/templates/knowledge/patterns/core//347/237/245/350/257/206/344/270/273/346/235/203.md +20 -0
- package/templates/knowledge/patterns/core//350/257/255/344/271/211/350/257/201/346/215/256.md +47 -0
- package/templates/knowledge/patterns/core//350/277/220/350/241/214/345/256/211/345/205/250/345/214/205.md +50 -0
- package/templates/knowledge/patterns/core//351/233/266/351/205/215/347/275/256/345/210/235/345/247/213/345/214/226.md +47 -0
- package/templates/knowledge/patterns/core//351/252/214/350/257/201/345/221/275/344/273/244/347/224/237/346/210/220.md +46 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 能力状态变更建议 — 基于 escape report 生成 downgrade/disable/promote_blocked/keep 决策。
|
|
3
|
+
* P2-4 范围: 只输出建议,不直接改 registry。
|
|
4
|
+
*
|
|
5
|
+
* 规则来源: 设计方案 7.7.3 降级规则表。
|
|
6
|
+
*/
|
|
7
|
+
const CRITICAL_ESCAPE_TYPES = new Set([
|
|
8
|
+
"ai_escape",
|
|
9
|
+
"rule_gap",
|
|
10
|
+
"tool_bug",
|
|
11
|
+
]);
|
|
12
|
+
const MEDIUM_ESCAPE_TYPES = new Set([
|
|
13
|
+
"weak_test",
|
|
14
|
+
"bad_evidence",
|
|
15
|
+
"human_miss",
|
|
16
|
+
]);
|
|
17
|
+
const FALSE_POSITIVE_TYPE = "false_positive";
|
|
18
|
+
const FALSE_POSITIVE_THRESHOLD = 2;
|
|
19
|
+
const RULE_CRITICAL_ESCAPE = {
|
|
20
|
+
rule_id: "R-CE",
|
|
21
|
+
description: "同一 policy_id 出现 1 次严重逃逸 (ai_escape/rule_gap/tool_bug) → enforced→advisory",
|
|
22
|
+
severity: "critical",
|
|
23
|
+
};
|
|
24
|
+
const RULE_TWO_MEDIUM_7DAYS = {
|
|
25
|
+
rule_id: "R-2M7D",
|
|
26
|
+
description: "7 天内同一 policy_id 出现 2 次中等逃逸 → enforced→advisory",
|
|
27
|
+
severity: "medium",
|
|
28
|
+
};
|
|
29
|
+
const RULE_REPEATED_FALSE_POSITIVE = {
|
|
30
|
+
rule_id: "R-FP",
|
|
31
|
+
description: `连续 ${FALSE_POSITIVE_THRESHOLD}+ 次误伤 → promote_blocked(暂停 hard block,保留 warning)`,
|
|
32
|
+
severity: "medium",
|
|
33
|
+
};
|
|
34
|
+
const RULE_STALE_ENFORCED = {
|
|
35
|
+
rule_id: "R-SE",
|
|
36
|
+
description: "advisory/experimental 下仍有逃逸累积 → disable 直到修复",
|
|
37
|
+
severity: "critical",
|
|
38
|
+
};
|
|
39
|
+
function withinDays(report, days, now) {
|
|
40
|
+
const created = new Date(report.created_at);
|
|
41
|
+
const cutoff = new Date(now.getTime() - days * 24 * 60 * 60 * 1000);
|
|
42
|
+
return created >= cutoff;
|
|
43
|
+
}
|
|
44
|
+
export function decideAction(reports, current_state, policy_id, now = new Date()) {
|
|
45
|
+
const relevant = reports.filter((r) => r.policy_id === policy_id);
|
|
46
|
+
const criticals = relevant.filter((r) => CRITICAL_ESCAPE_TYPES.has(r.failure_type) && r.capability_action !== "keep");
|
|
47
|
+
const mediumsRecent = relevant.filter((r) => MEDIUM_ESCAPE_TYPES.has(r.failure_type) &&
|
|
48
|
+
r.capability_action !== "keep" &&
|
|
49
|
+
withinDays(r, 7, now));
|
|
50
|
+
const falsePositives = relevant.filter((r) => r.failure_type === FALSE_POSITIVE_TYPE);
|
|
51
|
+
const triggered = [];
|
|
52
|
+
// Rule R-CE: 1 critical escape → downgrade enforced to advisory
|
|
53
|
+
if (criticals.length >= 1) {
|
|
54
|
+
triggered.push(RULE_CRITICAL_ESCAPE);
|
|
55
|
+
}
|
|
56
|
+
// Rule R-2M7D: 2 medium escapes in 7 days → downgrade enforced to advisory
|
|
57
|
+
if (mediumsRecent.length >= 2) {
|
|
58
|
+
triggered.push(RULE_TWO_MEDIUM_7DAYS);
|
|
59
|
+
}
|
|
60
|
+
// Rule R-FP: repeated false positives → promote_blocked
|
|
61
|
+
if (falsePositives.length >= FALSE_POSITIVE_THRESHOLD) {
|
|
62
|
+
triggered.push(RULE_REPEATED_FALSE_POSITIVE);
|
|
63
|
+
}
|
|
64
|
+
// Determine action based on triggered rules and current state
|
|
65
|
+
if (triggered.length === 0) {
|
|
66
|
+
return {
|
|
67
|
+
policy_id,
|
|
68
|
+
current_state,
|
|
69
|
+
recommended_action: "keep",
|
|
70
|
+
target_state: current_state,
|
|
71
|
+
reason: `No actionable escapes for ${policy_id}. Capability remains ${current_state}.`,
|
|
72
|
+
evidence_ids: [],
|
|
73
|
+
triggered_rules: [],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const evidenceIds = [
|
|
77
|
+
...criticals.map((r) => r.escape_id),
|
|
78
|
+
...mediumsRecent.map((r) => r.escape_id),
|
|
79
|
+
...falsePositives.map((r) => r.escape_id),
|
|
80
|
+
];
|
|
81
|
+
// R-FP promotes to blocked regardless of current state
|
|
82
|
+
const hasFP = triggered.some((r) => r.rule_id === "R-FP");
|
|
83
|
+
if (current_state === "enforced") {
|
|
84
|
+
// Critical or 2+ medium → downgrade to advisory
|
|
85
|
+
if (triggered.some((r) => r.rule_id === "R-CE" || r.rule_id === "R-2M7D")) {
|
|
86
|
+
return {
|
|
87
|
+
policy_id,
|
|
88
|
+
current_state,
|
|
89
|
+
recommended_action: "downgrade",
|
|
90
|
+
target_state: "advisory",
|
|
91
|
+
reason: `Enforced capability ${policy_id} triggered ${triggered.map((r) => r.rule_id).join(", ")}. Recommended downgrade to advisory.`,
|
|
92
|
+
evidence_ids: evidenceIds,
|
|
93
|
+
triggered_rules: triggered,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Only false positives → promote_blocked
|
|
97
|
+
if (hasFP) {
|
|
98
|
+
return {
|
|
99
|
+
policy_id,
|
|
100
|
+
current_state,
|
|
101
|
+
recommended_action: "promote_blocked",
|
|
102
|
+
target_state: "enforced",
|
|
103
|
+
reason: `Enforced capability ${policy_id} has ${falsePositives.length} false positive(s). Hard block suspended, warning preserved.`,
|
|
104
|
+
evidence_ids: evidenceIds,
|
|
105
|
+
triggered_rules: triggered,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (current_state === "advisory" || current_state === "experimental") {
|
|
110
|
+
// Already lowered + still accumulating escapes → disable
|
|
111
|
+
if (triggered.some((r) => r.rule_id === "R-CE" || r.rule_id === "R-2M7D")) {
|
|
112
|
+
triggered.push(RULE_STALE_ENFORCED);
|
|
113
|
+
return {
|
|
114
|
+
policy_id,
|
|
115
|
+
current_state,
|
|
116
|
+
recommended_action: "disable",
|
|
117
|
+
target_state: "removed",
|
|
118
|
+
reason: `${current_state} capability ${policy_id} continues to accumulate escapes. Recommended disable until fix.`,
|
|
119
|
+
evidence_ids: evidenceIds,
|
|
120
|
+
triggered_rules: triggered,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
// Only false positives at advisory/experimental → still promote_blocked
|
|
124
|
+
if (hasFP) {
|
|
125
|
+
return {
|
|
126
|
+
policy_id,
|
|
127
|
+
current_state,
|
|
128
|
+
recommended_action: "promote_blocked",
|
|
129
|
+
target_state: current_state,
|
|
130
|
+
reason: `${current_state} capability ${policy_id} has ${falsePositives.length} false positive(s). Promotion to enforced blocked.`,
|
|
131
|
+
evidence_ids: evidenceIds,
|
|
132
|
+
triggered_rules: triggered,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// removed state or unhandled: keep
|
|
137
|
+
return {
|
|
138
|
+
policy_id,
|
|
139
|
+
current_state,
|
|
140
|
+
recommended_action: "keep",
|
|
141
|
+
target_state: current_state,
|
|
142
|
+
reason: `No state change recommended for ${policy_id} (current: ${current_state}).`,
|
|
143
|
+
evidence_ids: evidenceIds,
|
|
144
|
+
triggered_rules: triggered,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=capability_action_advisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability_action_advisor.js","sourceRoot":"","sources":["../../src/engine/capability_action_advisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 能力状态登记表 — 声明每个治理能力的当前等级,防止文档和实现过度承诺。
|
|
3
3
|
*
|
|
4
|
-
* P1-
|
|
4
|
+
* P1-4 范围: 状态登记 + policy_id + 交叉引用 + 晋级/降级条件与证据要求(只读)。
|
|
5
|
+
* 不做自动晋级/降级,不接抽检池,不改状态。
|
|
5
6
|
*
|
|
6
7
|
* 状态等级:
|
|
7
8
|
* - enforced: 强制执行,违规即 hard fail,阻断流程
|
|
@@ -16,6 +17,15 @@ export interface CapabilityEntry {
|
|
|
16
17
|
state: CapabilityState;
|
|
17
18
|
owner_module: string;
|
|
18
19
|
evidence: string;
|
|
20
|
+
policy_id: string;
|
|
21
|
+
code_files: string[];
|
|
22
|
+
test_files: string[];
|
|
23
|
+
lifecycle_test_files: string[];
|
|
24
|
+
knowledge_docs: string[];
|
|
25
|
+
prompt_files: string[];
|
|
26
|
+
promotion_conditions: string[];
|
|
27
|
+
demotion_conditions: string[];
|
|
28
|
+
evidence_requirements: string[];
|
|
19
29
|
promoted_at?: string;
|
|
20
30
|
demoted_at?: string;
|
|
21
31
|
reason: string;
|
|
@@ -33,4 +43,16 @@ export declare function getCapability(id: string): CapabilityEntry | undefined;
|
|
|
33
43
|
export declare function getCapsByState(state: CapabilityState): CapabilityEntry[];
|
|
34
44
|
export declare function canHardFail(id: string): boolean;
|
|
35
45
|
export declare function getSummary(): CapabilitySummary;
|
|
46
|
+
export interface PolicyRef {
|
|
47
|
+
policy_id: string;
|
|
48
|
+
capability_id: string;
|
|
49
|
+
state: CapabilityState;
|
|
50
|
+
code_files: string[];
|
|
51
|
+
test_files: string[];
|
|
52
|
+
lifecycle_test_files: string[];
|
|
53
|
+
knowledge_docs: string[];
|
|
54
|
+
prompt_files: string[];
|
|
55
|
+
}
|
|
56
|
+
export declare function getAllPolicyRefs(): PolicyRef[];
|
|
57
|
+
export declare function getDriftPolicyRefs(): PolicyRef[];
|
|
36
58
|
//# sourceMappingURL=capability_registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability_registry.d.ts","sourceRoot":"","sources":["../../src/engine/capability_registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capability_registry.d.ts","sourceRoot":"","sources":["../../src/engine/capability_registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA6iBD,wBAAgB,kBAAkB,IAAI,eAAe,EAAE,CAEtD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGrE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,EAAE,CAExE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED,wBAAgB,UAAU,IAAI,iBAAiB,CAc9C;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,eAAe,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAW9C;AAUD,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAahD"}
|