@prodisco/k8s-mcp 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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/codegen/generateTypes.d.ts +8 -0
  4. package/dist/codegen/generateTypes.d.ts.map +1 -0
  5. package/dist/codegen/generateTypes.js +96 -0
  6. package/dist/codegen/generateTypes.js.map +1 -0
  7. package/dist/codegen/interfaceGenerator.d.ts +9 -0
  8. package/dist/codegen/interfaceGenerator.d.ts.map +1 -0
  9. package/dist/codegen/interfaceGenerator.js +185 -0
  10. package/dist/codegen/interfaceGenerator.js.map +1 -0
  11. package/dist/codegen/toolMapping.d.ts +11 -0
  12. package/dist/codegen/toolMapping.d.ts.map +1 -0
  13. package/dist/codegen/toolMapping.js +78 -0
  14. package/dist/codegen/toolMapping.js.map +1 -0
  15. package/dist/codegen/typeExtractor.d.ts +23 -0
  16. package/dist/codegen/typeExtractor.d.ts.map +1 -0
  17. package/dist/codegen/typeExtractor.js +112 -0
  18. package/dist/codegen/typeExtractor.js.map +1 -0
  19. package/dist/kube/client.d.ts +37 -0
  20. package/dist/kube/client.d.ts.map +1 -0
  21. package/dist/kube/client.js +161 -0
  22. package/dist/kube/client.js.map +1 -0
  23. package/dist/kube/types.d.ts +27 -0
  24. package/dist/kube/types.d.ts.map +1 -0
  25. package/dist/kube/types.js +2 -0
  26. package/dist/kube/types.js.map +1 -0
  27. package/dist/resources/filesystem.d.ts +15 -0
  28. package/dist/resources/filesystem.d.ts.map +1 -0
  29. package/dist/resources/filesystem.js +54 -0
  30. package/dist/resources/filesystem.js.map +1 -0
  31. package/dist/server.d.ts +3 -0
  32. package/dist/server.d.ts.map +1 -0
  33. package/dist/server.js +127 -0
  34. package/dist/server.js.map +1 -0
  35. package/dist/tools/index.d.ts +3 -0
  36. package/dist/tools/index.d.ts.map +1 -0
  37. package/dist/tools/index.js +3 -0
  38. package/dist/tools/index.js.map +1 -0
  39. package/dist/tools/kubernetes/index.d.ts +5 -0
  40. package/dist/tools/kubernetes/index.d.ts.map +1 -0
  41. package/dist/tools/kubernetes/index.js +6 -0
  42. package/dist/tools/kubernetes/index.js.map +1 -0
  43. package/dist/tools/kubernetes/metadata.d.ts +110 -0
  44. package/dist/tools/kubernetes/metadata.d.ts.map +1 -0
  45. package/dist/tools/kubernetes/metadata.js +19 -0
  46. package/dist/tools/kubernetes/metadata.js.map +1 -0
  47. package/dist/tools/kubernetes/searchTools-old.d.ts +35 -0
  48. package/dist/tools/kubernetes/searchTools-old.d.ts.map +1 -0
  49. package/dist/tools/kubernetes/searchTools-old.js +414 -0
  50. package/dist/tools/kubernetes/searchTools-old.js.map +1 -0
  51. package/dist/tools/kubernetes/searchTools-v2.d.ts +35 -0
  52. package/dist/tools/kubernetes/searchTools-v2.d.ts.map +1 -0
  53. package/dist/tools/kubernetes/searchTools-v2.js +269 -0
  54. package/dist/tools/kubernetes/searchTools-v2.js.map +1 -0
  55. package/dist/tools/kubernetes/searchTools.d.ts +87 -0
  56. package/dist/tools/kubernetes/searchTools.d.ts.map +1 -0
  57. package/dist/tools/kubernetes/searchTools.js +529 -0
  58. package/dist/tools/kubernetes/searchTools.js.map +1 -0
  59. package/dist/tools/kubernetes/typeDefinitions.d.ts +24 -0
  60. package/dist/tools/kubernetes/typeDefinitions.d.ts.map +1 -0
  61. package/dist/tools/kubernetes/typeDefinitions.js +518 -0
  62. package/dist/tools/kubernetes/typeDefinitions.js.map +1 -0
  63. package/dist/tools/types.d.ts +10 -0
  64. package/dist/tools/types.d.ts.map +1 -0
  65. package/dist/tools/types.js +2 -0
  66. package/dist/tools/types.js.map +1 -0
  67. package/dist/util/manifest.d.ts +5 -0
  68. package/dist/util/manifest.d.ts.map +1 -0
  69. package/dist/util/manifest.js +31 -0
  70. package/dist/util/manifest.js.map +1 -0
  71. package/dist/util/paths.d.ts +7 -0
  72. package/dist/util/paths.d.ts.map +1 -0
  73. package/dist/util/paths.js +14 -0
  74. package/dist/util/paths.js.map +1 -0
  75. package/dist/util/summary.d.ts +403 -0
  76. package/dist/util/summary.d.ts.map +1 -0
  77. package/dist/util/summary.js +211 -0
  78. package/dist/util/summary.js.map +1 -0
  79. package/package.json +61 -0
@@ -0,0 +1,269 @@
1
+ import { z } from 'zod';
2
+ import * as k8s from '@kubernetes/client-node';
3
+ const SearchToolsInputSchema = z.object({
4
+ query: z
5
+ .string()
6
+ .describe('Search query to find Kubernetes API methods (e.g., "pod", "deployment", "create namespace")'),
7
+ limit: z
8
+ .number()
9
+ .int()
10
+ .positive()
11
+ .max(50)
12
+ .default(20)
13
+ .optional()
14
+ .describe('Maximum number of results to return'),
15
+ });
16
+ // Cache for Kubernetes API methods
17
+ let apiMethodsCache = null;
18
+ /**
19
+ * Extract all API methods from @kubernetes/client-node
20
+ */
21
+ function extractKubernetesApiMethods() {
22
+ if (apiMethodsCache) {
23
+ return apiMethodsCache;
24
+ }
25
+ const methods = [];
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
+ const apiClasses = [
28
+ { class: 'CoreV1Api', constructor: k8s.CoreV1Api, description: 'Core Kubernetes resources (Pods, Services, ConfigMaps, Secrets, Namespaces, Nodes, etc.)' },
29
+ { class: 'AppsV1Api', constructor: k8s.AppsV1Api, description: 'Applications API (Deployments, StatefulSets, DaemonSets, ReplicaSets)' },
30
+ { class: 'BatchV1Api', constructor: k8s.BatchV1Api, description: 'Batch operations (Jobs, CronJobs)' },
31
+ { class: 'NetworkingV1Api', constructor: k8s.NetworkingV1Api, description: 'Networking resources (Ingresses, NetworkPolicies, IngressClasses)' },
32
+ { class: 'RbacAuthorizationV1Api', constructor: k8s.RbacAuthorizationV1Api, description: 'RBAC (Roles, RoleBindings, ClusterRoles, ClusterRoleBindings, ServiceAccounts)' },
33
+ { class: 'StorageV1Api', constructor: k8s.StorageV1Api, description: 'Storage resources (StorageClasses, PersistentVolumes, VolumeAttachments)' },
34
+ { class: 'CustomObjectsApi', constructor: k8s.CustomObjectsApi, description: 'Custom Resource Definitions (CRDs) and custom resources' },
35
+ { class: 'AutoscalingV1Api', constructor: k8s.AutoscalingV1Api, description: 'Autoscaling resources (HorizontalPodAutoscalers)' },
36
+ { class: 'PolicyV1Api', constructor: k8s.PolicyV1Api, description: 'Policy resources (PodDisruptionBudgets)' },
37
+ ];
38
+ for (const { class: className, constructor: ApiClass, description: classDesc } of apiClasses) {
39
+ if (!ApiClass)
40
+ continue;
41
+ const proto = ApiClass.prototype;
42
+ const methodNames = Object.getOwnPropertyNames(proto);
43
+ for (const methodName of methodNames) {
44
+ if (methodName === 'constructor' || methodName.startsWith('_') ||
45
+ methodName === 'setDefaultAuthentication' || typeof proto[methodName] !== 'function') {
46
+ continue;
47
+ }
48
+ const resourceType = extractResourceType(methodName);
49
+ const description = generateDescriptionFromMethodName(methodName, className, classDesc);
50
+ const parameters = inferParameters(methodName);
51
+ const example = generateUsageExample(className, methodName, parameters);
52
+ methods.push({
53
+ apiClass: className,
54
+ methodName,
55
+ resourceType,
56
+ description,
57
+ parameters,
58
+ returnType: 'Promise<any>',
59
+ example,
60
+ });
61
+ }
62
+ }
63
+ apiMethodsCache = methods;
64
+ console.error(`✅ Indexed ${methods.length} Kubernetes API methods`);
65
+ return methods;
66
+ }
67
+ function extractResourceType(methodName) {
68
+ let resource = methodName
69
+ .replace(/^(list|read|create|delete|patch|replace|connect|get|watch)/, '')
70
+ .replace(/^Namespaced/, '')
71
+ .replace(/^Cluster/, '')
72
+ .replace(/ForAllNamespaces$/, '')
73
+ .replace(/WithHttpInfo$/, '');
74
+ if (resource.startsWith('Collection')) {
75
+ resource = resource.replace(/^Collection/, '');
76
+ }
77
+ return resource || 'Resource';
78
+ }
79
+ function generateDescriptionFromMethodName(methodName, apiClass, classDesc) {
80
+ const words = methodName.replace(/([A-Z])/g, ' $1').toLowerCase().trim();
81
+ const resourceMatch = methodName.match(/(?:list|read|create|delete|patch|replace)(?:Namespaced)?(.+?)(?:ForAllNamespaces)?$/);
82
+ const resource = resourceMatch ? resourceMatch[1] : '';
83
+ let desc = words.charAt(0).toUpperCase() + words.slice(1);
84
+ if (resource)
85
+ desc += ` (${resource})`;
86
+ desc += ` - ${classDesc}`;
87
+ return desc;
88
+ }
89
+ function inferParameters(methodName) {
90
+ const parameters = [];
91
+ if (methodName.includes('Namespaced')) {
92
+ if (methodName.startsWith('list')) {
93
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
94
+ }
95
+ else if (methodName.startsWith('read') || methodName.startsWith('delete') || methodName.startsWith('patch') || methodName.startsWith('replace')) {
96
+ parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
97
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
98
+ }
99
+ else if (methodName.startsWith('create')) {
100
+ parameters.push({ name: 'namespace', type: 'string', optional: false, description: 'Namespace scope' });
101
+ parameters.push({ name: 'body', type: 'object', optional: false, description: 'Resource object' });
102
+ }
103
+ }
104
+ else if (!methodName.includes('Namespaced')) {
105
+ if (methodName.startsWith('read') || methodName.startsWith('delete') || methodName.startsWith('patch') || methodName.startsWith('replace')) {
106
+ parameters.push({ name: 'name', type: 'string', optional: false, description: 'Resource name' });
107
+ }
108
+ else if (methodName.startsWith('create')) {
109
+ parameters.push({ name: 'body', type: 'object', optional: false, description: 'Resource object' });
110
+ }
111
+ }
112
+ return parameters;
113
+ }
114
+ function generateUsageExample(apiClass, methodName, parameters) {
115
+ const apiVar = apiClass.charAt(0).toLowerCase() + apiClass.slice(1);
116
+ const requiredParams = parameters.filter(p => !p.optional);
117
+ let example = `// Initialize the Kubernetes client\nconst kc = new k8s.KubeConfig();\nkc.loadFromDefault();\nconst ${apiVar} = kc.makeApiClient(k8s.${apiClass});\n\n`;
118
+ let paramStr = '{}';
119
+ if (requiredParams.length > 0) {
120
+ const paramPairs = requiredParams.map(p => {
121
+ if (p.name === 'name')
122
+ return `name: 'my-resource'`;
123
+ if (p.name === 'namespace')
124
+ return `namespace: 'default'`;
125
+ if (p.name === 'body')
126
+ return `body: { /* resource object */ }`;
127
+ return `${p.name}: 'value'`;
128
+ });
129
+ paramStr = `{ ${paramPairs.join(', ')} }`;
130
+ }
131
+ example += `// Call the API method (ALWAYS uses object parameters - even if empty {})\nconst response = await ${apiVar}.${methodName}(${paramStr});\n\n`;
132
+ if (methodName.startsWith('list')) {
133
+ example += `// Response structure:\n// response.body.items = array of resources\nconst items = response.body.items;\nconsole.log(\`Found \${items.length} resources\`);`;
134
+ }
135
+ else if (methodName.startsWith('read') || methodName.startsWith('get')) {
136
+ example += `// Response structure:\n// response.body = single resource object\nconst resource = response.body;\nconsole.log(\`Resource: \${resource.metadata?.name}\`);`;
137
+ }
138
+ else if (methodName.startsWith('create')) {
139
+ example += `// Response structure:\n// response.body = created resource\nconst created = response.body;\nconsole.log(\`Created: \${created.metadata?.name}\`);`;
140
+ }
141
+ else if (methodName.startsWith('delete')) {
142
+ example += `// Response structure:\n// response.body = status info\nconst status = response.body;\nconsole.log(\`Status: \${status.status}\`);`;
143
+ }
144
+ else {
145
+ example += `// Response: response.body contains the result\nconsole.log(response.body);`;
146
+ }
147
+ return example;
148
+ }
149
+ /**
150
+ * Simple, direct search without fuzzy matching
151
+ */
152
+ function searchMethods(query, methods, limit) {
153
+ const lowerQuery = query.toLowerCase();
154
+ const queryWords = lowerQuery.split(/\s+/).filter(w => w.length > 1);
155
+ // Map action words to method prefixes
156
+ const actionMap = {
157
+ 'get': ['read'],
158
+ 'read': ['read'],
159
+ 'fetch': ['read', 'list'],
160
+ 'list': ['list'],
161
+ 'show': ['list', 'read'],
162
+ 'create': ['create'],
163
+ 'make': ['create'],
164
+ 'add': ['create'],
165
+ 'delete': ['delete'],
166
+ 'remove': ['delete'],
167
+ 'update': ['patch', 'replace'],
168
+ 'patch': ['patch'],
169
+ 'replace': ['replace'],
170
+ 'edit': ['patch'],
171
+ };
172
+ // Extract action and resource words
173
+ let expectedActions = [];
174
+ const resourceWords = [];
175
+ for (const word of queryWords) {
176
+ if (actionMap[word]) {
177
+ expectedActions = actionMap[word];
178
+ }
179
+ else {
180
+ resourceWords.push(word, word.replace(/s$/, '')); // Add singular form
181
+ }
182
+ }
183
+ // Score each method
184
+ const scored = methods.map(method => {
185
+ const lowerMethod = method.methodName.toLowerCase();
186
+ const lowerResource = method.resourceType.toLowerCase();
187
+ let score = 0;
188
+ // Factor 1: Resource type matching (most important)
189
+ let resourceMatches = 0;
190
+ for (const word of resourceWords) {
191
+ if (word.length < 3)
192
+ continue;
193
+ // Exact match
194
+ if (lowerResource === word || lowerResource === word.replace(/s$/, '')) {
195
+ resourceMatches += 1000;
196
+ }
197
+ // Starts with
198
+ else if (lowerResource.startsWith(word)) {
199
+ resourceMatches += 100;
200
+ }
201
+ // Contains
202
+ else if (lowerResource.includes(word)) {
203
+ resourceMatches += 10;
204
+ }
205
+ }
206
+ score += resourceMatches;
207
+ // Factor 2: Action matching
208
+ if (expectedActions.length > 0) {
209
+ const hasMatchingAction = expectedActions.some(action => lowerMethod.startsWith(action));
210
+ if (hasMatchingAction) {
211
+ score += 500;
212
+ }
213
+ }
214
+ // Factor 3: Penalize unwanted patterns
215
+ if (lowerMethod.includes('withhttpinfo'))
216
+ score -= 1000;
217
+ if (lowerMethod.includes('connect') || lowerMethod.includes('proxy')) {
218
+ if (!lowerQuery.includes('proxy') && !lowerQuery.includes('connect')) {
219
+ score -= 500;
220
+ }
221
+ }
222
+ // Factor 4: Prefer namespaced methods
223
+ if (lowerMethod.includes('namespaced'))
224
+ score += 50;
225
+ // Factor 5: Prefer simpler resource types (shorter names)
226
+ score -= lowerResource.length;
227
+ return { method, score };
228
+ });
229
+ // Sort by score (higher = better) and return top results
230
+ return scored
231
+ .filter(s => s.score > 0) // Only include methods with positive scores
232
+ .sort((a, b) => b.score - a.score)
233
+ .slice(0, limit)
234
+ .map(s => s.method);
235
+ }
236
+ export const searchToolsToolV2 = {
237
+ name: 'kubernetes.searchTools',
238
+ description: 'Search the Kubernetes API to find methods for working with resources. ' +
239
+ 'Returns API methods from @kubernetes/client-node that you can use directly in your scripts. ' +
240
+ 'Example queries: "list pods", "create deployment", "delete service", "get pod logs".',
241
+ schema: SearchToolsInputSchema,
242
+ async execute(input) {
243
+ const { query, limit = 20 } = input;
244
+ const methods = extractKubernetesApiMethods();
245
+ const results = searchMethods(query, methods, limit);
246
+ // Create summary
247
+ let summary = `Found ${results.length} Kubernetes API method(s) matching "${query}":\n\n`;
248
+ results.forEach((method, i) => {
249
+ summary += `${i + 1}. ${method.apiClass}.${method.methodName}\n`;
250
+ summary += ` ${method.description}\n`;
251
+ });
252
+ const usage = '⚠️ CRITICAL: All methods use OBJECT PARAMETERS, not positional!\n\n' +
253
+ '1. API method signature (IMPORTANT):\n' +
254
+ ' ✅ CORRECT: await api.listNamespacedPod({ namespace: \'default\' })\n' +
255
+ ' ❌ WRONG: await api.listNamespacedPod(\'default\')\n\n' +
256
+ '2. All API methods return a response object:\n' +
257
+ ' { body: <resource>, response: <http response> }\n' +
258
+ ' - For list operations: response.body.items = array\n' +
259
+ ' - For single resource: response.body = resource object\n\n' +
260
+ '3. See the "example" field in each method for complete, working code.';
261
+ return {
262
+ summary,
263
+ tools: results,
264
+ totalMatches: results.length,
265
+ usage,
266
+ };
267
+ },
268
+ };
269
+ //# sourceMappingURL=searchTools-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchTools-v2.js","sourceRoot":"","sources":["../../../src/tools/kubernetes/searchTools-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { z } from 'zod';
2
+ import type { ToolDefinition } from '../types.js';
3
+ declare const SearchToolsInputSchema: z.ZodObject<{
4
+ resourceType: z.ZodString;
5
+ action: z.ZodOptional<z.ZodString>;
6
+ scope: z.ZodDefault<z.ZodOptional<z.ZodEnum<["namespaced", "cluster", "all"]>>>;
7
+ exclude: z.ZodOptional<z.ZodObject<{
8
+ actions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
+ apiClasses: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ actions?: string[] | undefined;
12
+ apiClasses?: string[] | undefined;
13
+ }, {
14
+ actions?: string[] | undefined;
15
+ apiClasses?: string[] | undefined;
16
+ }>>;
17
+ limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ resourceType: string;
20
+ scope: "namespaced" | "cluster" | "all";
21
+ action?: string | undefined;
22
+ exclude?: {
23
+ actions?: string[] | undefined;
24
+ apiClasses?: string[] | undefined;
25
+ } | undefined;
26
+ limit?: number | undefined;
27
+ }, {
28
+ resourceType: string;
29
+ action?: string | undefined;
30
+ scope?: "namespaced" | "cluster" | "all" | undefined;
31
+ exclude?: {
32
+ actions?: string[] | undefined;
33
+ apiClasses?: string[] | undefined;
34
+ } | undefined;
35
+ limit?: number | undefined;
36
+ }>;
37
+ type KubernetesApiMethod = {
38
+ apiClass: string;
39
+ methodName: string;
40
+ resourceType: string;
41
+ description: string;
42
+ parameters: Array<{
43
+ name: string;
44
+ type: string;
45
+ optional: boolean;
46
+ description?: string;
47
+ }>;
48
+ returnType: string;
49
+ example: string;
50
+ typeDefinitionFile: string;
51
+ inputSchema: {
52
+ type: 'object';
53
+ properties: Record<string, {
54
+ type: string;
55
+ description?: string;
56
+ required?: boolean;
57
+ }>;
58
+ required: string[];
59
+ description: string;
60
+ };
61
+ outputSchema: {
62
+ type: 'object';
63
+ description: string;
64
+ properties: Record<string, {
65
+ type: string;
66
+ description: string;
67
+ }>;
68
+ };
69
+ typeDefinitions?: {
70
+ input?: string;
71
+ output?: string;
72
+ };
73
+ };
74
+ type SearchToolsResult = {
75
+ summary: string;
76
+ tools: KubernetesApiMethod[];
77
+ totalMatches: number;
78
+ usage: string;
79
+ paths: {
80
+ scriptsDirectory: string;
81
+ packageDirectory: string;
82
+ };
83
+ cachedScripts: string[];
84
+ };
85
+ export declare const searchToolsTool: ToolDefinition<SearchToolsResult, typeof SearchToolsInputSchema>;
86
+ export {};
87
+ //# sourceMappingURL=searchTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchTools.d.ts","sourceRoot":"","sources":["../../../src/tools/kubernetes/searchTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC1B,CAAC;AAEH,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACvF,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;SAAE,CAAC,CAAC;KACpE,CAAC;IAEF,eAAe,CAAC,EAAE;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAqaF,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,iBAAiB,EAAE,OAAO,sBAAsB,CAgJ5F,CAAC"}