@keel_flow/schema 0.2.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.
@@ -0,0 +1,106 @@
1
+ import { z } from "zod";
2
+ import type { Diff, ArchitectureMap } from "./architecture.js";
3
+ export declare const PrincipleSeveritySchema: z.ZodEnum<["critical", "warning", "info"]>;
4
+ export type PrincipleSeverity = z.infer<typeof PrincipleSeveritySchema>;
5
+ export declare const PrincipleRefSchema: z.ZodObject<{
6
+ id: z.ZodString;
7
+ reason: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ id: string;
10
+ reason: string;
11
+ }, {
12
+ id: string;
13
+ reason: string;
14
+ }>;
15
+ export type PrincipleRef = z.infer<typeof PrincipleRefSchema>;
16
+ export declare const ViolationSchema: z.ZodObject<{
17
+ principleId: z.ZodString;
18
+ nodeId: z.ZodOptional<z.ZodString>;
19
+ file: z.ZodOptional<z.ZodString>;
20
+ line: z.ZodOptional<z.ZodNumber>;
21
+ severity: z.ZodEnum<["critical", "warning", "info"]>;
22
+ message: z.ZodString;
23
+ }, "strip", z.ZodTypeAny, {
24
+ message: string;
25
+ principleId: string;
26
+ severity: "critical" | "warning" | "info";
27
+ nodeId?: string | undefined;
28
+ file?: string | undefined;
29
+ line?: number | undefined;
30
+ }, {
31
+ message: string;
32
+ principleId: string;
33
+ severity: "critical" | "warning" | "info";
34
+ nodeId?: string | undefined;
35
+ file?: string | undefined;
36
+ line?: number | undefined;
37
+ }>;
38
+ export type Violation = z.infer<typeof ViolationSchema>;
39
+ export declare const PrincipleSchema: z.ZodObject<{
40
+ id: z.ZodString;
41
+ description: z.ZodString;
42
+ rationale: z.ZodString;
43
+ severity: z.ZodEnum<["critical", "warning", "info"]>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ id: string;
46
+ severity: "critical" | "warning" | "info";
47
+ description: string;
48
+ rationale: string;
49
+ }, {
50
+ id: string;
51
+ severity: "critical" | "warning" | "info";
52
+ description: string;
53
+ rationale: string;
54
+ }>;
55
+ export type Principle = z.infer<typeof PrincipleSchema>;
56
+ export type PrincipleWithCheck = Principle & {
57
+ check?: (ctx: {
58
+ diff: Diff;
59
+ architecture: ArchitectureMap;
60
+ cwd?: string;
61
+ }) => Violation[];
62
+ };
63
+ export declare const PrinciplePackSchema: z.ZodObject<{
64
+ id: z.ZodString;
65
+ version: z.ZodString;
66
+ description: z.ZodString;
67
+ principles: z.ZodArray<z.ZodObject<{
68
+ id: z.ZodString;
69
+ description: z.ZodString;
70
+ rationale: z.ZodString;
71
+ severity: z.ZodEnum<["critical", "warning", "info"]>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ id: string;
74
+ severity: "critical" | "warning" | "info";
75
+ description: string;
76
+ rationale: string;
77
+ }, {
78
+ id: string;
79
+ severity: "critical" | "warning" | "info";
80
+ description: string;
81
+ rationale: string;
82
+ }>, "many">;
83
+ }, "strip", z.ZodTypeAny, {
84
+ id: string;
85
+ description: string;
86
+ principles: {
87
+ id: string;
88
+ severity: "critical" | "warning" | "info";
89
+ description: string;
90
+ rationale: string;
91
+ }[];
92
+ version: string;
93
+ }, {
94
+ id: string;
95
+ description: string;
96
+ principles: {
97
+ id: string;
98
+ severity: "critical" | "warning" | "info";
99
+ description: string;
100
+ rationale: string;
101
+ }[];
102
+ version: string;
103
+ }>;
104
+ export type PrinciplePack = z.infer<typeof PrinciplePackSchema>;
105
+ export type { Diff, ArchitectureMap };
106
+ //# sourceMappingURL=principle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"principle.d.ts","sourceRoot":"","sources":["../src/principle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE/D,eAAO,MAAM,uBAAuB,4CAA0C,CAAC;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAK1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG;IAC3C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,eAAe,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,SAAS,EAAE,CAAC;CAC3F,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ export const PrincipleSeveritySchema = z.enum(["critical", "warning", "info"]);
3
+ export const PrincipleRefSchema = z.object({
4
+ id: z.string(),
5
+ reason: z.string(),
6
+ });
7
+ export const ViolationSchema = z.object({
8
+ principleId: z.string(),
9
+ nodeId: z.string().optional(),
10
+ file: z.string().optional(),
11
+ line: z.number().int().optional(),
12
+ severity: PrincipleSeveritySchema,
13
+ message: z.string(),
14
+ });
15
+ export const PrincipleSchema = z.object({
16
+ id: z.string(),
17
+ description: z.string(),
18
+ rationale: z.string(),
19
+ severity: PrincipleSeveritySchema,
20
+ });
21
+ export const PrinciplePackSchema = z.object({
22
+ id: z.string(),
23
+ version: z.string(),
24
+ description: z.string(),
25
+ principles: z.array(PrincipleSchema),
26
+ });
27
+ //# sourceMappingURL=principle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"principle.js","sourceRoot":"","sources":["../src/principle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAG/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,uBAAuB;CAClC,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CACrC,CAAC,CAAC"}
@@ -0,0 +1,194 @@
1
+ import { z } from "zod";
2
+ export declare const SpecRubricSchema: z.ZodObject<{
3
+ claims: z.ZodArray<z.ZodObject<{
4
+ id: z.ZodString;
5
+ text: z.ZodString;
6
+ weight: z.ZodEnum<["must", "should", "may"]>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ id: string;
9
+ text: string;
10
+ weight: "must" | "should" | "may";
11
+ }, {
12
+ id: string;
13
+ text: string;
14
+ weight: "must" | "should" | "may";
15
+ }>, "many">;
16
+ }, "strip", z.ZodTypeAny, {
17
+ claims: {
18
+ id: string;
19
+ text: string;
20
+ weight: "must" | "should" | "may";
21
+ }[];
22
+ }, {
23
+ claims: {
24
+ id: string;
25
+ text: string;
26
+ weight: "must" | "should" | "may";
27
+ }[];
28
+ }>;
29
+ export type SpecRubric = z.infer<typeof SpecRubricSchema>;
30
+ export declare const SpecClaimVerdictSchema: z.ZodObject<{
31
+ claimId: z.ZodString;
32
+ verdict: z.ZodEnum<["pass", "fail", "na", "partial"]>;
33
+ evidence: z.ZodOptional<z.ZodString>;
34
+ confidence: z.ZodNumber;
35
+ }, "strip", z.ZodTypeAny, {
36
+ claimId: string;
37
+ verdict: "pass" | "fail" | "na" | "partial";
38
+ confidence: number;
39
+ evidence?: string | undefined;
40
+ }, {
41
+ claimId: string;
42
+ verdict: "pass" | "fail" | "na" | "partial";
43
+ confidence: number;
44
+ evidence?: string | undefined;
45
+ }>;
46
+ export type SpecClaimVerdict = z.infer<typeof SpecClaimVerdictSchema>;
47
+ export declare const SpecCheckModeSchema: z.ZodEnum<["fast", "balanced", "strict"]>;
48
+ export type SpecCheckMode = z.infer<typeof SpecCheckModeSchema>;
49
+ export declare const SpecCheckResultSchema: z.ZodObject<{
50
+ mode: z.ZodEnum<["fast", "balanced", "strict"]>;
51
+ verdict: z.ZodEnum<["pass", "fail", "partial", "pending"]>;
52
+ rubric: z.ZodNullable<z.ZodObject<{
53
+ claims: z.ZodArray<z.ZodObject<{
54
+ id: z.ZodString;
55
+ text: z.ZodString;
56
+ weight: z.ZodEnum<["must", "should", "may"]>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ id: string;
59
+ text: string;
60
+ weight: "must" | "should" | "may";
61
+ }, {
62
+ id: string;
63
+ text: string;
64
+ weight: "must" | "should" | "may";
65
+ }>, "many">;
66
+ }, "strip", z.ZodTypeAny, {
67
+ claims: {
68
+ id: string;
69
+ text: string;
70
+ weight: "must" | "should" | "may";
71
+ }[];
72
+ }, {
73
+ claims: {
74
+ id: string;
75
+ text: string;
76
+ weight: "must" | "should" | "may";
77
+ }[];
78
+ }>>;
79
+ claims: z.ZodArray<z.ZodObject<{
80
+ claimId: z.ZodString;
81
+ verdict: z.ZodEnum<["pass", "fail", "na", "partial"]>;
82
+ evidence: z.ZodOptional<z.ZodString>;
83
+ confidence: z.ZodNumber;
84
+ }, "strip", z.ZodTypeAny, {
85
+ claimId: string;
86
+ verdict: "pass" | "fail" | "na" | "partial";
87
+ confidence: number;
88
+ evidence?: string | undefined;
89
+ }, {
90
+ claimId: string;
91
+ verdict: "pass" | "fail" | "na" | "partial";
92
+ confidence: number;
93
+ evidence?: string | undefined;
94
+ }>, "many">;
95
+ bidirectional: z.ZodOptional<z.ZodObject<{
96
+ summary: z.ZodString;
97
+ similarity: z.ZodNumber;
98
+ divergent: z.ZodBoolean;
99
+ }, "strip", z.ZodTypeAny, {
100
+ summary: string;
101
+ similarity: number;
102
+ divergent: boolean;
103
+ }, {
104
+ summary: string;
105
+ similarity: number;
106
+ divergent: boolean;
107
+ }>>;
108
+ adversarial: z.ZodOptional<z.ZodObject<{
109
+ concerns: z.ZodArray<z.ZodString, "many">;
110
+ raisedPartial: z.ZodBoolean;
111
+ }, "strip", z.ZodTypeAny, {
112
+ concerns: string[];
113
+ raisedPartial: boolean;
114
+ }, {
115
+ concerns: string[];
116
+ raisedPartial: boolean;
117
+ }>>;
118
+ positionBias: z.ZodOptional<z.ZodObject<{
119
+ swapsRun: z.ZodNumber;
120
+ disagreements: z.ZodNumber;
121
+ }, "strip", z.ZodTypeAny, {
122
+ swapsRun: number;
123
+ disagreements: number;
124
+ }, {
125
+ swapsRun: number;
126
+ disagreements: number;
127
+ }>>;
128
+ costUsd: z.ZodNumber;
129
+ latencyMs: z.ZodNumber;
130
+ }, "strip", z.ZodTypeAny, {
131
+ latencyMs: number;
132
+ costUsd: number;
133
+ claims: {
134
+ claimId: string;
135
+ verdict: "pass" | "fail" | "na" | "partial";
136
+ confidence: number;
137
+ evidence?: string | undefined;
138
+ }[];
139
+ verdict: "pending" | "pass" | "fail" | "partial";
140
+ mode: "strict" | "fast" | "balanced";
141
+ rubric: {
142
+ claims: {
143
+ id: string;
144
+ text: string;
145
+ weight: "must" | "should" | "may";
146
+ }[];
147
+ } | null;
148
+ bidirectional?: {
149
+ summary: string;
150
+ similarity: number;
151
+ divergent: boolean;
152
+ } | undefined;
153
+ adversarial?: {
154
+ concerns: string[];
155
+ raisedPartial: boolean;
156
+ } | undefined;
157
+ positionBias?: {
158
+ swapsRun: number;
159
+ disagreements: number;
160
+ } | undefined;
161
+ }, {
162
+ latencyMs: number;
163
+ costUsd: number;
164
+ claims: {
165
+ claimId: string;
166
+ verdict: "pass" | "fail" | "na" | "partial";
167
+ confidence: number;
168
+ evidence?: string | undefined;
169
+ }[];
170
+ verdict: "pending" | "pass" | "fail" | "partial";
171
+ mode: "strict" | "fast" | "balanced";
172
+ rubric: {
173
+ claims: {
174
+ id: string;
175
+ text: string;
176
+ weight: "must" | "should" | "may";
177
+ }[];
178
+ } | null;
179
+ bidirectional?: {
180
+ summary: string;
181
+ similarity: number;
182
+ divergent: boolean;
183
+ } | undefined;
184
+ adversarial?: {
185
+ concerns: string[];
186
+ raisedPartial: boolean;
187
+ } | undefined;
188
+ positionBias?: {
189
+ swapsRun: number;
190
+ disagreements: number;
191
+ } | undefined;
192
+ }>;
193
+ export type SpecCheckResult = z.infer<typeof SpecCheckResultSchema>;
194
+ //# sourceMappingURL=spec-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-check.d.ts","sourceRoot":"","sources":["../src/spec-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,mBAAmB,2CAAyC,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from "zod";
2
+ export const SpecRubricSchema = z.object({
3
+ claims: z.array(z.object({
4
+ id: z.string(),
5
+ text: z.string(),
6
+ weight: z.enum(["must", "should", "may"]),
7
+ })),
8
+ });
9
+ export const SpecClaimVerdictSchema = z.object({
10
+ claimId: z.string(),
11
+ verdict: z.enum(["pass", "fail", "na", "partial"]),
12
+ evidence: z.string().optional(),
13
+ confidence: z.number().min(0).max(1),
14
+ });
15
+ export const SpecCheckModeSchema = z.enum(["fast", "balanced", "strict"]);
16
+ export const SpecCheckResultSchema = z.object({
17
+ mode: SpecCheckModeSchema,
18
+ verdict: z.enum(["pass", "fail", "partial", "pending"]),
19
+ rubric: SpecRubricSchema.nullable(),
20
+ claims: z.array(SpecClaimVerdictSchema),
21
+ bidirectional: z
22
+ .object({
23
+ summary: z.string(),
24
+ similarity: z.number().min(0).max(1),
25
+ divergent: z.boolean(),
26
+ })
27
+ .optional(),
28
+ adversarial: z
29
+ .object({
30
+ concerns: z.array(z.string()),
31
+ raisedPartial: z.boolean(),
32
+ })
33
+ .optional(),
34
+ positionBias: z
35
+ .object({
36
+ swapsRun: z.number().int().nonnegative(),
37
+ disagreements: z.number().int().nonnegative(),
38
+ })
39
+ .optional(),
40
+ costUsd: z.number().nonnegative(),
41
+ latencyMs: z.number().int().nonnegative(),
42
+ });
43
+ //# sourceMappingURL=spec-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-check.js","sourceRoot":"","sources":["../src/spec-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC1C,CAAC,CACH;CACF,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IACvC,aAAa,EAAE,CAAC;SACb,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;KACvB,CAAC;SACD,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;KAC3B,CAAC;SACD,QAAQ,EAAE;IACb,YAAY,EAAE,CAAC;SACZ,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;KAC9C,CAAC;SACD,QAAQ,EAAE;IACb,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAC1C,CAAC,CAAC"}