@frase/mcp-server 0.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.
Files changed (115) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +262 -0
  3. package/dist/api-client.d.ts +93 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +213 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/cache.d.ts +52 -0
  8. package/dist/cache.d.ts.map +1 -0
  9. package/dist/cache.js +97 -0
  10. package/dist/cache.js.map +1 -0
  11. package/dist/config.d.ts +17 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +31 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/formatter.d.ts +47 -0
  16. package/dist/formatter.d.ts.map +1 -0
  17. package/dist/formatter.js +136 -0
  18. package/dist/formatter.js.map +1 -0
  19. package/dist/index.d.ts +32 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +292 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/prompts/competitor-analysis.d.ts +18 -0
  24. package/dist/prompts/competitor-analysis.d.ts.map +1 -0
  25. package/dist/prompts/competitor-analysis.js +71 -0
  26. package/dist/prompts/competitor-analysis.js.map +1 -0
  27. package/dist/prompts/content-audit.d.ts +18 -0
  28. package/dist/prompts/content-audit.d.ts.map +1 -0
  29. package/dist/prompts/content-audit.js +67 -0
  30. package/dist/prompts/content-audit.js.map +1 -0
  31. package/dist/prompts/create-seo-article.d.ts +19 -0
  32. package/dist/prompts/create-seo-article.d.ts.map +1 -0
  33. package/dist/prompts/create-seo-article.js +78 -0
  34. package/dist/prompts/create-seo-article.js.map +1 -0
  35. package/dist/prompts/index.d.ts +18 -0
  36. package/dist/prompts/index.d.ts.map +1 -0
  37. package/dist/prompts/index.js +52 -0
  38. package/dist/prompts/index.js.map +1 -0
  39. package/dist/prompts/keyword-research.d.ts +18 -0
  40. package/dist/prompts/keyword-research.d.ts.map +1 -0
  41. package/dist/prompts/keyword-research.js +72 -0
  42. package/dist/prompts/keyword-research.js.map +1 -0
  43. package/dist/prompts/optimize-content.d.ts +18 -0
  44. package/dist/prompts/optimize-content.d.ts.map +1 -0
  45. package/dist/prompts/optimize-content.js +59 -0
  46. package/dist/prompts/optimize-content.js.map +1 -0
  47. package/dist/resources/briefs.d.ts +26 -0
  48. package/dist/resources/briefs.d.ts.map +1 -0
  49. package/dist/resources/briefs.js +144 -0
  50. package/dist/resources/briefs.js.map +1 -0
  51. package/dist/resources/content.d.ts +26 -0
  52. package/dist/resources/content.d.ts.map +1 -0
  53. package/dist/resources/content.js +128 -0
  54. package/dist/resources/content.js.map +1 -0
  55. package/dist/resources/index.d.ts +32 -0
  56. package/dist/resources/index.d.ts.map +1 -0
  57. package/dist/resources/index.js +85 -0
  58. package/dist/resources/index.js.map +1 -0
  59. package/dist/resources/sites.d.ts +26 -0
  60. package/dist/resources/sites.d.ts.map +1 -0
  61. package/dist/resources/sites.js +108 -0
  62. package/dist/resources/sites.js.map +1 -0
  63. package/dist/tools/ai-visibility.d.ts +25 -0
  64. package/dist/tools/ai-visibility.d.ts.map +1 -0
  65. package/dist/tools/ai-visibility.js +537 -0
  66. package/dist/tools/ai-visibility.js.map +1 -0
  67. package/dist/tools/analytics.d.ts +17 -0
  68. package/dist/tools/analytics.d.ts.map +1 -0
  69. package/dist/tools/analytics.js +311 -0
  70. package/dist/tools/analytics.js.map +1 -0
  71. package/dist/tools/audits.d.ts +73 -0
  72. package/dist/tools/audits.d.ts.map +1 -0
  73. package/dist/tools/audits.js +345 -0
  74. package/dist/tools/audits.js.map +1 -0
  75. package/dist/tools/briefs.d.ts +63 -0
  76. package/dist/tools/briefs.d.ts.map +1 -0
  77. package/dist/tools/briefs.js +276 -0
  78. package/dist/tools/briefs.js.map +1 -0
  79. package/dist/tools/content.d.ts +51 -0
  80. package/dist/tools/content.d.ts.map +1 -0
  81. package/dist/tools/content.js +233 -0
  82. package/dist/tools/content.js.map +1 -0
  83. package/dist/tools/index.d.ts +29 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +96 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/tools/jobs.d.ts +22 -0
  88. package/dist/tools/jobs.d.ts.map +1 -0
  89. package/dist/tools/jobs.js +124 -0
  90. package/dist/tools/jobs.js.map +1 -0
  91. package/dist/tools/optimizations.d.ts +19 -0
  92. package/dist/tools/optimizations.d.ts.map +1 -0
  93. package/dist/tools/optimizations.js +339 -0
  94. package/dist/tools/optimizations.js.map +1 -0
  95. package/dist/tools/research.d.ts +41 -0
  96. package/dist/tools/research.d.ts.map +1 -0
  97. package/dist/tools/research.js +151 -0
  98. package/dist/tools/research.js.map +1 -0
  99. package/dist/tools/serp.d.ts +15 -0
  100. package/dist/tools/serp.d.ts.map +1 -0
  101. package/dist/tools/serp.js +267 -0
  102. package/dist/tools/serp.js.map +1 -0
  103. package/dist/tools/sites.d.ts +31 -0
  104. package/dist/tools/sites.d.ts.map +1 -0
  105. package/dist/tools/sites.js +83 -0
  106. package/dist/tools/sites.js.map +1 -0
  107. package/dist/tools/webhooks.d.ts +19 -0
  108. package/dist/tools/webhooks.d.ts.map +1 -0
  109. package/dist/tools/webhooks.js +350 -0
  110. package/dist/tools/webhooks.js.map +1 -0
  111. package/dist/types.d.ts +167 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +5 -0
  114. package/dist/types.js.map +1 -0
  115. package/package.json +67 -0
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Analytics tools
3
+ *
4
+ * Google Search Console and content analytics
5
+ */
6
+ import { z } from "zod";
7
+ import { CACHE_TTL } from "../cache.js";
8
+ import { formatTable, truncate, } from "../formatter.js";
9
+ // ============================================
10
+ // get_gsc_overview
11
+ // ============================================
12
+ const getGscOverviewInputSchema = z.object({
13
+ site_id: z.string().min(1),
14
+ days: z.number().min(1).max(90).optional().default(28),
15
+ });
16
+ export const getGscOverviewTool = {
17
+ name: "get_gsc_overview",
18
+ description: "Get Google Search Console overview metrics for a site - clicks, impressions, CTR, and average position.",
19
+ inputSchema: {
20
+ type: "object",
21
+ properties: {
22
+ site_id: {
23
+ type: "string",
24
+ description: "The site ID (required)",
25
+ },
26
+ days: {
27
+ type: "number",
28
+ description: "Number of days to analyze (1-90, default: 28)",
29
+ },
30
+ },
31
+ required: ["site_id"],
32
+ },
33
+ };
34
+ export async function executeGetGscOverview(input, context) {
35
+ const parsed = getGscOverviewInputSchema.safeParse(input);
36
+ if (!parsed.success) {
37
+ return {
38
+ success: false,
39
+ markdown: `**Error:** Invalid input - ${parsed.error.message}`,
40
+ };
41
+ }
42
+ const { site_id, days } = parsed.data;
43
+ try {
44
+ const response = await context.client.get("/analytics/gsc/overview", { site_id, days }, CACHE_TTL.resources);
45
+ const data = response.data;
46
+ const formatChange = (change) => {
47
+ const sign = change >= 0 ? "+" : "";
48
+ return `${sign}${change.toFixed(1)}%`;
49
+ };
50
+ let markdown = `## Google Search Console Overview\n\n`;
51
+ markdown += `**Period:** ${data.date_range.start} to ${data.date_range.end} (${days} days)\n\n`;
52
+ markdown += "### Key Metrics\n\n";
53
+ markdown += `| Metric | Value | Change |\n`;
54
+ markdown += `|--------|-------|--------|\n`;
55
+ markdown += `| Clicks | ${data.total_clicks.toLocaleString()} | ${formatChange(data.trends.clicks_change)} |\n`;
56
+ markdown += `| Impressions | ${data.total_impressions.toLocaleString()} | ${formatChange(data.trends.impressions_change)} |\n`;
57
+ markdown += `| CTR | ${(data.avg_ctr * 100).toFixed(1)}% | ${formatChange(data.trends.ctr_change)} |\n`;
58
+ markdown += `| Avg Position | ${data.avg_position.toFixed(1)} | ${formatChange(data.trends.position_change)} |\n`;
59
+ return {
60
+ success: true,
61
+ markdown,
62
+ data: response,
63
+ };
64
+ }
65
+ catch (error) {
66
+ const message = error instanceof Error ? error.message : "Unknown error";
67
+ return {
68
+ success: false,
69
+ markdown: `**Error:** Failed to get GSC overview - ${message}`,
70
+ };
71
+ }
72
+ }
73
+ // ============================================
74
+ // get_gsc_queries
75
+ // ============================================
76
+ const getGscQueriesInputSchema = z.object({
77
+ site_id: z.string().min(1),
78
+ days: z.number().min(1).max(90).optional().default(28),
79
+ limit: z.number().min(1).max(100).optional().default(20),
80
+ sort_by: z.enum(["clicks", "impressions", "ctr", "position"]).optional().default("clicks"),
81
+ });
82
+ export const getGscQueriesTool = {
83
+ name: "get_gsc_queries",
84
+ description: "Get top search queries from Google Search Console for a site.",
85
+ inputSchema: {
86
+ type: "object",
87
+ properties: {
88
+ site_id: {
89
+ type: "string",
90
+ description: "The site ID (required)",
91
+ },
92
+ days: {
93
+ type: "number",
94
+ description: "Number of days to analyze (1-90, default: 28)",
95
+ },
96
+ limit: {
97
+ type: "number",
98
+ description: "Max queries to return (default: 20)",
99
+ },
100
+ sort_by: {
101
+ type: "string",
102
+ enum: ["clicks", "impressions", "ctr", "position"],
103
+ description: "Sort results by metric (default: clicks)",
104
+ },
105
+ },
106
+ required: ["site_id"],
107
+ },
108
+ };
109
+ export async function executeGetGscQueries(input, context) {
110
+ const parsed = getGscQueriesInputSchema.safeParse(input);
111
+ if (!parsed.success) {
112
+ return {
113
+ success: false,
114
+ markdown: `**Error:** Invalid input - ${parsed.error.message}`,
115
+ };
116
+ }
117
+ const { site_id, days, limit, sort_by } = parsed.data;
118
+ try {
119
+ const response = await context.client.get("/analytics/gsc/queries", { site_id, days, limit, sort_by }, CACHE_TTL.resources);
120
+ const queries = response.data;
121
+ if (queries.length === 0) {
122
+ return {
123
+ success: true,
124
+ markdown: "## Top Search Queries\n\n_No query data available for this period._",
125
+ data: response,
126
+ };
127
+ }
128
+ const headers = ["Query", "Clicks", "Impressions", "CTR", "Position"];
129
+ const rows = queries.map((q) => [
130
+ truncate(q.query, 40),
131
+ q.clicks.toLocaleString(),
132
+ q.impressions.toLocaleString(),
133
+ `${(q.ctr * 100).toFixed(1)}%`,
134
+ q.position.toFixed(1),
135
+ ]);
136
+ const table = formatTable(headers, rows);
137
+ return {
138
+ success: true,
139
+ markdown: `## Top Search Queries (Last ${days} days)\n\nSorted by ${sort_by}\n\n${table}`,
140
+ data: response,
141
+ };
142
+ }
143
+ catch (error) {
144
+ const message = error instanceof Error ? error.message : "Unknown error";
145
+ return {
146
+ success: false,
147
+ markdown: `**Error:** Failed to get GSC queries - ${message}`,
148
+ };
149
+ }
150
+ }
151
+ // ============================================
152
+ // get_gsc_pages
153
+ // ============================================
154
+ const getGscPagesInputSchema = z.object({
155
+ site_id: z.string().min(1),
156
+ days: z.number().min(1).max(90).optional().default(28),
157
+ limit: z.number().min(1).max(100).optional().default(20),
158
+ sort_by: z.enum(["clicks", "impressions", "ctr", "position"]).optional().default("clicks"),
159
+ });
160
+ export const getGscPagesTool = {
161
+ name: "get_gsc_pages",
162
+ description: "Get top performing pages from Google Search Console for a site.",
163
+ inputSchema: {
164
+ type: "object",
165
+ properties: {
166
+ site_id: {
167
+ type: "string",
168
+ description: "The site ID (required)",
169
+ },
170
+ days: {
171
+ type: "number",
172
+ description: "Number of days to analyze (1-90, default: 28)",
173
+ },
174
+ limit: {
175
+ type: "number",
176
+ description: "Max pages to return (default: 20)",
177
+ },
178
+ sort_by: {
179
+ type: "string",
180
+ enum: ["clicks", "impressions", "ctr", "position"],
181
+ description: "Sort results by metric (default: clicks)",
182
+ },
183
+ },
184
+ required: ["site_id"],
185
+ },
186
+ };
187
+ export async function executeGetGscPages(input, context) {
188
+ const parsed = getGscPagesInputSchema.safeParse(input);
189
+ if (!parsed.success) {
190
+ return {
191
+ success: false,
192
+ markdown: `**Error:** Invalid input - ${parsed.error.message}`,
193
+ };
194
+ }
195
+ const { site_id, days, limit, sort_by } = parsed.data;
196
+ try {
197
+ const response = await context.client.get("/analytics/gsc/pages", { site_id, days, limit, sort_by }, CACHE_TTL.resources);
198
+ const pages = response.data;
199
+ if (pages.length === 0) {
200
+ return {
201
+ success: true,
202
+ markdown: "## Top Pages\n\n_No page data available for this period._",
203
+ data: response,
204
+ };
205
+ }
206
+ const headers = ["Page", "Clicks", "Impressions", "CTR", "Position"];
207
+ const rows = pages.map((p) => [
208
+ truncate(p.page, 50),
209
+ p.clicks.toLocaleString(),
210
+ p.impressions.toLocaleString(),
211
+ `${(p.ctr * 100).toFixed(1)}%`,
212
+ p.position.toFixed(1),
213
+ ]);
214
+ const table = formatTable(headers, rows);
215
+ return {
216
+ success: true,
217
+ markdown: `## Top Pages (Last ${days} days)\n\nSorted by ${sort_by}\n\n${table}`,
218
+ data: response,
219
+ };
220
+ }
221
+ catch (error) {
222
+ const message = error instanceof Error ? error.message : "Unknown error";
223
+ return {
224
+ success: false,
225
+ markdown: `**Error:** Failed to get GSC pages - ${message}`,
226
+ };
227
+ }
228
+ }
229
+ // ============================================
230
+ // get_content_gaps
231
+ // ============================================
232
+ const getContentGapsInputSchema = z.object({
233
+ site_id: z.string().min(1),
234
+ limit: z.number().min(1).max(50).optional().default(20),
235
+ });
236
+ export const getContentGapsTool = {
237
+ name: "get_content_gaps",
238
+ description: "Get content gap opportunities - topics your competitors rank for that you don't.",
239
+ inputSchema: {
240
+ type: "object",
241
+ properties: {
242
+ site_id: {
243
+ type: "string",
244
+ description: "The site ID (required)",
245
+ },
246
+ limit: {
247
+ type: "number",
248
+ description: "Max gaps to return (default: 20)",
249
+ },
250
+ },
251
+ required: ["site_id"],
252
+ },
253
+ };
254
+ export async function executeGetContentGaps(input, context) {
255
+ const parsed = getContentGapsInputSchema.safeParse(input);
256
+ if (!parsed.success) {
257
+ return {
258
+ success: false,
259
+ markdown: `**Error:** Invalid input - ${parsed.error.message}`,
260
+ };
261
+ }
262
+ const { site_id, limit } = parsed.data;
263
+ try {
264
+ const response = await context.client.get("/analytics/gaps", { site_id, limit }, CACHE_TTL.resources);
265
+ const gaps = response.data;
266
+ if (gaps.length === 0) {
267
+ return {
268
+ success: true,
269
+ markdown: "## Content Gaps\n\n_No content gaps found. Your site may have comprehensive coverage or more data is needed._",
270
+ data: response,
271
+ };
272
+ }
273
+ const headers = ["Query", "Volume", "Difficulty", "Opportunity", "Type"];
274
+ const rows = gaps.map((g) => [
275
+ truncate(g.query, 40),
276
+ g.search_volume?.toLocaleString() || "-",
277
+ g.difficulty !== null ? `${g.difficulty}%` : "-",
278
+ `${g.opportunity_score}%`,
279
+ g.suggested_content_type || "-",
280
+ ]);
281
+ const table = formatTable(headers, rows);
282
+ return {
283
+ success: true,
284
+ markdown: `## Content Gaps\n\nOpportunities to create content your competitors rank for.\n\n${table}`,
285
+ data: response,
286
+ };
287
+ }
288
+ catch (error) {
289
+ const message = error instanceof Error ? error.message : "Unknown error";
290
+ return {
291
+ success: false,
292
+ markdown: `**Error:** Failed to get content gaps - ${message}`,
293
+ };
294
+ }
295
+ }
296
+ // ============================================
297
+ // Export all
298
+ // ============================================
299
+ export const analyticsTools = [
300
+ getGscOverviewTool,
301
+ getGscQueriesTool,
302
+ getGscPagesTool,
303
+ getContentGapsTool,
304
+ ];
305
+ export const analyticsExecutors = {
306
+ get_gsc_overview: executeGetGscOverview,
307
+ get_gsc_queries: executeGetGscQueries,
308
+ get_gsc_pages: executeGetGscPages,
309
+ get_content_gaps: executeGetContentGaps,
310
+ };
311
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Audit tools
3
+ */
4
+ import { z } from "zod";
5
+ import type { McpToolDefinition, ToolContext, ToolResult } from "../types.js";
6
+ declare const listAuditsInputSchema: z.ZodObject<{
7
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
+ page_size: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
9
+ status: z.ZodOptional<z.ZodEnum<["pending", "crawling", "analyzing", "completed", "failed", "archived"]>>;
10
+ site_id: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ page: number;
13
+ page_size: number;
14
+ status?: "archived" | "pending" | "completed" | "failed" | "crawling" | "analyzing" | undefined;
15
+ site_id?: string | undefined;
16
+ }, {
17
+ page?: number | undefined;
18
+ page_size?: number | undefined;
19
+ status?: "archived" | "pending" | "completed" | "failed" | "crawling" | "analyzing" | undefined;
20
+ site_id?: string | undefined;
21
+ }>;
22
+ export type ListAuditsInput = z.infer<typeof listAuditsInputSchema>;
23
+ export declare const listAuditsTool: McpToolDefinition;
24
+ export declare function executeListAudits(input: unknown, context: ToolContext): Promise<ToolResult>;
25
+ declare const startAuditInputSchema: z.ZodObject<{
26
+ site_id: z.ZodString;
27
+ name: z.ZodOptional<z.ZodString>;
28
+ type: z.ZodDefault<z.ZodOptional<z.ZodEnum<["full", "technical", "content", "quick"]>>>;
29
+ max_pages: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ type: "content" | "full" | "technical" | "quick";
32
+ site_id: string;
33
+ max_pages: number;
34
+ name?: string | undefined;
35
+ }, {
36
+ site_id: string;
37
+ type?: "content" | "full" | "technical" | "quick" | undefined;
38
+ name?: string | undefined;
39
+ max_pages?: number | undefined;
40
+ }>;
41
+ export type StartAuditInput = z.infer<typeof startAuditInputSchema>;
42
+ export declare const startAuditTool: McpToolDefinition;
43
+ export declare function executeStartAudit(input: unknown, context: ToolContext): Promise<ToolResult>;
44
+ declare const getAuditInputSchema: z.ZodObject<{
45
+ id: z.ZodString;
46
+ include_pages: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ id: string;
49
+ include_pages: boolean;
50
+ }, {
51
+ id: string;
52
+ include_pages?: boolean | undefined;
53
+ }>;
54
+ export type GetAuditInput = z.infer<typeof getAuditInputSchema>;
55
+ export declare const getAuditTool: McpToolDefinition;
56
+ export declare function executeGetAudit(input: unknown, context: ToolContext): Promise<ToolResult>;
57
+ declare const exportAuditInputSchema: z.ZodObject<{
58
+ id: z.ZodString;
59
+ format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["json", "csv"]>>>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ id: string;
62
+ format: "json" | "csv";
63
+ }, {
64
+ id: string;
65
+ format?: "json" | "csv" | undefined;
66
+ }>;
67
+ export type ExportAuditInput = z.infer<typeof exportAuditInputSchema>;
68
+ export declare const exportAuditTool: McpToolDefinition;
69
+ export declare function executeExportAudit(input: unknown, context: ToolContext): Promise<ToolResult>;
70
+ export declare const auditTools: McpToolDefinition[];
71
+ export declare const auditExecutors: Record<string, (input: unknown, context: ToolContext) => Promise<ToolResult>>;
72
+ export {};
73
+ //# sourceMappingURL=audits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audits.d.ts","sourceRoot":"","sources":["../../src/tools/audits.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EAGX,MAAM,aAAa,CAAC;AAiFrB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKzB,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,qBAAqB;;;;;;;;;;;;;;;EAKzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc,EAAE,iBA2B5B,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAwCrB;AAMD,QAAA,MAAM,mBAAmB;;;;;;;;;EAGvB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,YAAY,EAAE,iBAiB1B,CAAC;AAEF,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA8ErB;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,CAiErB;AAMD,eAAO,MAAM,UAAU,EAAE,iBAAiB,EAKzC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CACjC,MAAM,EACN,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAM9D,CAAC"}