@frase/mcp-server 0.2.0 → 0.2.1

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.
Files changed (51) hide show
  1. package/README.md +1 -0
  2. package/dist/api-client.js +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/resources/sites.d.ts.map +1 -1
  5. package/dist/resources/sites.js +5 -7
  6. package/dist/resources/sites.js.map +1 -1
  7. package/dist/tools/ai-visibility.d.ts.map +1 -1
  8. package/dist/tools/ai-visibility.js +131 -71
  9. package/dist/tools/ai-visibility.js.map +1 -1
  10. package/dist/tools/analytics.d.ts.map +1 -1
  11. package/dist/tools/analytics.js +96 -49
  12. package/dist/tools/analytics.js.map +1 -1
  13. package/dist/tools/audits.d.ts +15 -6
  14. package/dist/tools/audits.d.ts.map +1 -1
  15. package/dist/tools/audits.js +32 -9
  16. package/dist/tools/audits.js.map +1 -1
  17. package/dist/tools/briefs.d.ts +223 -3
  18. package/dist/tools/briefs.d.ts.map +1 -1
  19. package/dist/tools/briefs.js +353 -26
  20. package/dist/tools/briefs.js.map +1 -1
  21. package/dist/tools/content.d.ts +10 -0
  22. package/dist/tools/content.d.ts.map +1 -1
  23. package/dist/tools/content.js +97 -9
  24. package/dist/tools/content.js.map +1 -1
  25. package/dist/tools/index.d.ts.map +1 -1
  26. package/dist/tools/index.js +5 -0
  27. package/dist/tools/index.js.map +1 -1
  28. package/dist/tools/optimizations.d.ts.map +1 -1
  29. package/dist/tools/optimizations.js +93 -39
  30. package/dist/tools/optimizations.js.map +1 -1
  31. package/dist/tools/playbooks.d.ts.map +1 -1
  32. package/dist/tools/playbooks.js +34 -5
  33. package/dist/tools/playbooks.js.map +1 -1
  34. package/dist/tools/rules.d.ts +16 -1
  35. package/dist/tools/rules.d.ts.map +1 -1
  36. package/dist/tools/rules.js +49 -14
  37. package/dist/tools/rules.js.map +1 -1
  38. package/dist/tools/sites.d.ts.map +1 -1
  39. package/dist/tools/sites.js +1 -2
  40. package/dist/tools/sites.js.map +1 -1
  41. package/dist/tools/templates.d.ts +17 -0
  42. package/dist/tools/templates.d.ts.map +1 -0
  43. package/dist/tools/templates.js +521 -0
  44. package/dist/tools/templates.js.map +1 -0
  45. package/dist/tools/webhooks.d.ts.map +1 -1
  46. package/dist/tools/webhooks.js +44 -24
  47. package/dist/tools/webhooks.js.map +1 -1
  48. package/dist/types.d.ts +1 -2
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/server.json +2 -2
@@ -26,35 +26,119 @@ declare const createBriefInputSchema: z.ZodObject<{
26
26
  topic: z.ZodString;
27
27
  target_keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
28
28
  content_type: z.ZodDefault<z.ZodOptional<z.ZodEnum<["blog", "guide", "landing", "product", "comparison", "listicle"]>>>;
29
- search_intent: z.ZodOptional<z.ZodString>;
29
+ search_intent: z.ZodOptional<z.ZodEnum<["informational", "navigational", "transactional", "commercial"]>>;
30
30
  target_word_count: z.ZodOptional<z.ZodNumber>;
31
31
  generate_outline: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
32
32
  competitor_urls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
33
33
  site_id: z.ZodOptional<z.ZodString>;
34
34
  target_language: z.ZodOptional<z.ZodString>;
35
35
  target_country: z.ZodOptional<z.ZodString>;
36
+ template_id: z.ZodOptional<z.ZodString>;
37
+ project_id: z.ZodOptional<z.ZodString>;
38
+ folder_id: z.ZodOptional<z.ZodString>;
39
+ cluster_id: z.ZodOptional<z.ZodString>;
40
+ notes: z.ZodOptional<z.ZodString>;
41
+ audience_context: z.ZodOptional<z.ZodObject<{
42
+ role: z.ZodOptional<z.ZodString>;
43
+ expertise: z.ZodOptional<z.ZodEnum<["beginner", "intermediate", "expert"]>>;
44
+ pain_point: z.ZodOptional<z.ZodString>;
45
+ funnel_stage: z.ZodOptional<z.ZodEnum<["awareness", "consideration", "decision"]>>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ role?: string | undefined;
48
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
49
+ pain_point?: string | undefined;
50
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
51
+ }, {
52
+ role?: string | undefined;
53
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
54
+ pain_point?: string | undefined;
55
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
56
+ }>>;
57
+ variation_overrides: z.ZodOptional<z.ZodObject<{
58
+ tone: z.ZodOptional<z.ZodString>;
59
+ voice_persona: z.ZodOptional<z.ZodString>;
60
+ angle: z.ZodOptional<z.ZodString>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ tone?: string | undefined;
63
+ voice_persona?: string | undefined;
64
+ angle?: string | undefined;
65
+ }, {
66
+ tone?: string | undefined;
67
+ voice_persona?: string | undefined;
68
+ angle?: string | undefined;
69
+ }>>;
70
+ topic_guardrails: z.ZodOptional<z.ZodObject<{
71
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
72
+ excluded: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
73
+ }, "strip", z.ZodTypeAny, {
74
+ required?: string[] | undefined;
75
+ excluded?: string[] | undefined;
76
+ }, {
77
+ required?: string[] | undefined;
78
+ excluded?: string[] | undefined;
79
+ }>>;
36
80
  }, "strip", z.ZodTypeAny, {
37
81
  topic: string;
38
82
  content_type: "blog" | "guide" | "landing" | "product" | "comparison" | "listicle";
39
83
  generate_outline: boolean;
40
84
  site_id?: string | undefined;
41
85
  target_keywords?: string[] | undefined;
42
- search_intent?: string | undefined;
86
+ search_intent?: "informational" | "navigational" | "transactional" | "commercial" | undefined;
43
87
  target_word_count?: number | undefined;
44
88
  competitor_urls?: string[] | undefined;
45
89
  target_language?: string | undefined;
46
90
  target_country?: string | undefined;
91
+ template_id?: string | undefined;
92
+ project_id?: string | undefined;
93
+ folder_id?: string | undefined;
94
+ cluster_id?: string | undefined;
95
+ notes?: string | undefined;
96
+ audience_context?: {
97
+ role?: string | undefined;
98
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
99
+ pain_point?: string | undefined;
100
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
101
+ } | undefined;
102
+ variation_overrides?: {
103
+ tone?: string | undefined;
104
+ voice_persona?: string | undefined;
105
+ angle?: string | undefined;
106
+ } | undefined;
107
+ topic_guardrails?: {
108
+ required?: string[] | undefined;
109
+ excluded?: string[] | undefined;
110
+ } | undefined;
47
111
  }, {
48
112
  topic: string;
49
113
  site_id?: string | undefined;
50
114
  target_keywords?: string[] | undefined;
51
115
  content_type?: "blog" | "guide" | "landing" | "product" | "comparison" | "listicle" | undefined;
52
- search_intent?: string | undefined;
116
+ search_intent?: "informational" | "navigational" | "transactional" | "commercial" | undefined;
53
117
  target_word_count?: number | undefined;
54
118
  generate_outline?: boolean | undefined;
55
119
  competitor_urls?: string[] | undefined;
56
120
  target_language?: string | undefined;
57
121
  target_country?: string | undefined;
122
+ template_id?: string | undefined;
123
+ project_id?: string | undefined;
124
+ folder_id?: string | undefined;
125
+ cluster_id?: string | undefined;
126
+ notes?: string | undefined;
127
+ audience_context?: {
128
+ role?: string | undefined;
129
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
130
+ pain_point?: string | undefined;
131
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
132
+ } | undefined;
133
+ variation_overrides?: {
134
+ tone?: string | undefined;
135
+ voice_persona?: string | undefined;
136
+ angle?: string | undefined;
137
+ } | undefined;
138
+ topic_guardrails?: {
139
+ required?: string[] | undefined;
140
+ excluded?: string[] | undefined;
141
+ } | undefined;
58
142
  }>;
59
143
  export type CreateBriefInput = z.infer<typeof createBriefInputSchema>;
60
144
  export declare const createBriefTool: McpToolDefinition;
@@ -92,6 +176,142 @@ declare const exportBriefInputSchema: z.ZodObject<{
92
176
  export type ExportBriefInput = z.infer<typeof exportBriefInputSchema>;
93
177
  export declare const exportBriefTool: McpToolDefinition;
94
178
  export declare function executeExportBrief(input: unknown, context: ToolContext): Promise<ToolResult>;
179
+ declare const updateBriefInputSchema: z.ZodObject<{
180
+ id: z.ZodString;
181
+ topic: z.ZodOptional<z.ZodString>;
182
+ target_keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
183
+ content_type: z.ZodOptional<z.ZodEnum<["blog", "guide", "landing", "product", "comparison", "listicle"]>>;
184
+ search_intent: z.ZodOptional<z.ZodString>;
185
+ target_word_count: z.ZodOptional<z.ZodNumber>;
186
+ competitor_urls: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
187
+ target_language: z.ZodOptional<z.ZodString>;
188
+ target_country: z.ZodOptional<z.ZodString>;
189
+ outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
190
+ heading: z.ZodString;
191
+ level: z.ZodNumber;
192
+ key_points: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
193
+ suggested_word_count: z.ZodOptional<z.ZodNumber>;
194
+ generation_mode: z.ZodOptional<z.ZodEnum<["ai", "manual"]>>;
195
+ }, "strip", z.ZodTypeAny, {
196
+ heading: string;
197
+ level: number;
198
+ key_points?: string[] | undefined;
199
+ suggested_word_count?: number | undefined;
200
+ generation_mode?: "ai" | "manual" | undefined;
201
+ }, {
202
+ heading: string;
203
+ level: number;
204
+ key_points?: string[] | undefined;
205
+ suggested_word_count?: number | undefined;
206
+ generation_mode?: "ai" | "manual" | undefined;
207
+ }>, "many">>;
208
+ variation_overrides: z.ZodOptional<z.ZodObject<{
209
+ tone: z.ZodOptional<z.ZodString>;
210
+ voice_persona: z.ZodOptional<z.ZodString>;
211
+ angle: z.ZodOptional<z.ZodString>;
212
+ }, "strip", z.ZodTypeAny, {
213
+ tone?: string | undefined;
214
+ voice_persona?: string | undefined;
215
+ angle?: string | undefined;
216
+ }, {
217
+ tone?: string | undefined;
218
+ voice_persona?: string | undefined;
219
+ angle?: string | undefined;
220
+ }>>;
221
+ audience_context: z.ZodOptional<z.ZodObject<{
222
+ role: z.ZodOptional<z.ZodString>;
223
+ expertise: z.ZodOptional<z.ZodEnum<["beginner", "intermediate", "expert"]>>;
224
+ pain_point: z.ZodOptional<z.ZodString>;
225
+ funnel_stage: z.ZodOptional<z.ZodEnum<["awareness", "consideration", "decision"]>>;
226
+ }, "strip", z.ZodTypeAny, {
227
+ role?: string | undefined;
228
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
229
+ pain_point?: string | undefined;
230
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
231
+ }, {
232
+ role?: string | undefined;
233
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
234
+ pain_point?: string | undefined;
235
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
236
+ }>>;
237
+ topic_guardrails: z.ZodOptional<z.ZodObject<{
238
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
239
+ excluded: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
240
+ }, "strip", z.ZodTypeAny, {
241
+ required?: string[] | undefined;
242
+ excluded?: string[] | undefined;
243
+ }, {
244
+ required?: string[] | undefined;
245
+ excluded?: string[] | undefined;
246
+ }>>;
247
+ }, "strip", z.ZodTypeAny, {
248
+ id: string;
249
+ topic?: string | undefined;
250
+ target_keywords?: string[] | undefined;
251
+ content_type?: "blog" | "guide" | "landing" | "product" | "comparison" | "listicle" | undefined;
252
+ search_intent?: string | undefined;
253
+ target_word_count?: number | undefined;
254
+ competitor_urls?: string[] | undefined;
255
+ target_language?: string | undefined;
256
+ target_country?: string | undefined;
257
+ audience_context?: {
258
+ role?: string | undefined;
259
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
260
+ pain_point?: string | undefined;
261
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
262
+ } | undefined;
263
+ variation_overrides?: {
264
+ tone?: string | undefined;
265
+ voice_persona?: string | undefined;
266
+ angle?: string | undefined;
267
+ } | undefined;
268
+ topic_guardrails?: {
269
+ required?: string[] | undefined;
270
+ excluded?: string[] | undefined;
271
+ } | undefined;
272
+ outline?: {
273
+ heading: string;
274
+ level: number;
275
+ key_points?: string[] | undefined;
276
+ suggested_word_count?: number | undefined;
277
+ generation_mode?: "ai" | "manual" | undefined;
278
+ }[] | undefined;
279
+ }, {
280
+ id: string;
281
+ topic?: string | undefined;
282
+ target_keywords?: string[] | undefined;
283
+ content_type?: "blog" | "guide" | "landing" | "product" | "comparison" | "listicle" | undefined;
284
+ search_intent?: string | undefined;
285
+ target_word_count?: number | undefined;
286
+ competitor_urls?: string[] | undefined;
287
+ target_language?: string | undefined;
288
+ target_country?: string | undefined;
289
+ audience_context?: {
290
+ role?: string | undefined;
291
+ expertise?: "beginner" | "intermediate" | "expert" | undefined;
292
+ pain_point?: string | undefined;
293
+ funnel_stage?: "awareness" | "consideration" | "decision" | undefined;
294
+ } | undefined;
295
+ variation_overrides?: {
296
+ tone?: string | undefined;
297
+ voice_persona?: string | undefined;
298
+ angle?: string | undefined;
299
+ } | undefined;
300
+ topic_guardrails?: {
301
+ required?: string[] | undefined;
302
+ excluded?: string[] | undefined;
303
+ } | undefined;
304
+ outline?: {
305
+ heading: string;
306
+ level: number;
307
+ key_points?: string[] | undefined;
308
+ suggested_word_count?: number | undefined;
309
+ generation_mode?: "ai" | "manual" | undefined;
310
+ }[] | undefined;
311
+ }>;
312
+ export type UpdateBriefInput = z.infer<typeof updateBriefInputSchema>;
313
+ export declare const updateBriefTool: McpToolDefinition;
314
+ export declare function executeUpdateBrief(input: unknown, context: ToolContext): Promise<ToolResult>;
95
315
  export declare const briefTools: McpToolDefinition[];
96
316
  export declare const briefExecutors: Record<string, (input: unknown, context: ToolContext) => Promise<ToolResult>>;
97
317
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"briefs.d.ts","sourceRoot":"","sources":["../../src/tools/briefs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAA+B,MAAM,aAAa,CAAC;AAe3G,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc,EAAE,iBA0B5B,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA+CrB;AAMD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc1B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe,EAAE,iBAqD7B,CAAC;AAYF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAqDrB;AAMD,QAAA,MAAM,mBAAmB;;;;;;EAEvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,YAAY,EAAE,iBAa1B,CAAC;AAUF,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA0ErB;AAMD,QAAA,MAAM,yBAAyB;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB,EAAE,iBAchC,CAAC;AAWF,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA0CrB;AAMD,QAAA,MAAM,sBAAsB;;;;;;;;;EAG1B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe,EAAE,iBAkB7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA2DrB;AAMD,eAAO,MAAM,UAAU,EAAE,iBAAiB,EAMzC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CACjC,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAO9D,CAAC"}
1
+ {"version":3,"file":"briefs.d.ts","sourceRoot":"","sources":["../../src/tools/briefs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAA+B,MAAM,aAAa,CAAC;AAe3G,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc,EAAE,iBA0B5B,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA+CrB;AAMD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC1B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe,EAAE,iBAqG7B,CAAC;AAYF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA6DrB;AAMD,QAAA,MAAM,mBAAmB;;;;;;EAEvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,YAAY,EAAE,iBAa1B,CAAC;AAoBF,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAgFrB;AAMD,QAAA,MAAM,yBAAyB;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,kBAAkB,EAAE,iBAchC,CAAC;AAoBF,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA8DrB;AAMD,QAAA,MAAM,sBAAsB;;;;;;;;;EAG1B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe,EAAE,iBAkB7B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA2DrB;AAMD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4C1B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe,EAAE,iBAsH7B,CAAC;AAYF,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA4DrB;AAMD,eAAO,MAAM,UAAU,EAAE,iBAAiB,EAOzC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CACjC,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAQ9D,CAAC"}