mcp-adr-analysis-server 2.7.24 → 2.7.26

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 (63) hide show
  1. package/README.md +1 -32
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/index.d.ts +0 -4
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +0 -57
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +0 -178
  8. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -1
  9. package/dist/src/tools/bootstrap-validation-loop-tool.js +0 -1580
  10. package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -1
  11. package/dist/src/tools/tool-catalog.d.ts.map +1 -1
  12. package/dist/src/tools/tool-catalog.js +2 -22
  13. package/dist/src/tools/tool-catalog.js.map +1 -1
  14. package/dist/src/utils/ai-executor.d.ts +1 -1
  15. package/dist/src/utils/ai-executor.js +1 -1
  16. package/dist/src/utils/config.d.ts +0 -3
  17. package/dist/src/utils/config.d.ts.map +1 -1
  18. package/dist/src/utils/config.js +0 -13
  19. package/dist/src/utils/config.js.map +1 -1
  20. package/dist/src/utils/research-orchestrator.d.ts +0 -28
  21. package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
  22. package/dist/src/utils/research-orchestrator.js +15 -252
  23. package/dist/src/utils/research-orchestrator.js.map +1 -1
  24. package/dist/src/utils/server-context-generator.d.ts.map +1 -1
  25. package/dist/src/utils/server-context-generator.js +0 -1
  26. package/dist/src/utils/server-context-generator.js.map +1 -1
  27. package/package.json +1 -3
  28. package/dist/src/tools/llm-web-search-tool.d.ts +0 -59
  29. package/dist/src/tools/llm-web-search-tool.d.ts.map +0 -1
  30. package/dist/src/tools/llm-web-search-tool.js +0 -165
  31. package/dist/src/tools/llm-web-search-tool.js.map +0 -1
  32. package/dist/src/utils/dag-executor.d.ts +0 -106
  33. package/dist/src/utils/dag-executor.d.ts.map +0 -1
  34. package/dist/src/utils/dag-executor.js +0 -453
  35. package/dist/src/utils/dag-executor.js.map +0 -1
  36. package/dist/src/utils/deployment-task-integration.d.ts +0 -260
  37. package/dist/src/utils/deployment-task-integration.d.ts.map +0 -1
  38. package/dist/src/utils/deployment-task-integration.js +0 -393
  39. package/dist/src/utils/deployment-task-integration.js.map +0 -1
  40. package/dist/src/utils/dynamic-deployment-intelligence.d.ts +0 -117
  41. package/dist/src/utils/dynamic-deployment-intelligence.d.ts.map +0 -1
  42. package/dist/src/utils/dynamic-deployment-intelligence.js +0 -445
  43. package/dist/src/utils/dynamic-deployment-intelligence.js.map +0 -1
  44. package/dist/src/utils/pattern-contribution-helper.d.ts +0 -60
  45. package/dist/src/utils/pattern-contribution-helper.d.ts.map +0 -1
  46. package/dist/src/utils/pattern-contribution-helper.js +0 -308
  47. package/dist/src/utils/pattern-contribution-helper.js.map +0 -1
  48. package/dist/src/utils/pattern-loader.d.ts +0 -183
  49. package/dist/src/utils/pattern-loader.d.ts.map +0 -1
  50. package/dist/src/utils/pattern-loader.js +0 -198
  51. package/dist/src/utils/pattern-loader.js.map +0 -1
  52. package/dist/src/utils/pattern-to-dag-converter.d.ts +0 -62
  53. package/dist/src/utils/pattern-to-dag-converter.d.ts.map +0 -1
  54. package/dist/src/utils/pattern-to-dag-converter.js +0 -265
  55. package/dist/src/utils/pattern-to-dag-converter.js.map +0 -1
  56. package/dist/src/utils/resource-extractor.d.ts +0 -57
  57. package/dist/src/utils/resource-extractor.d.ts.map +0 -1
  58. package/dist/src/utils/resource-extractor.js +0 -323
  59. package/dist/src/utils/resource-extractor.js.map +0 -1
  60. package/dist/src/utils/system-card-manager.d.ts +0 -194
  61. package/dist/src/utils/system-card-manager.d.ts.map +0 -1
  62. package/dist/src/utils/system-card-manager.js +0 -336
  63. package/dist/src/utils/system-card-manager.js.map +0 -1
@@ -1,165 +0,0 @@
1
- /**
2
- * LLM-Managed Web Search Tool
3
- *
4
- * Uses Firecrawl for cross-platform web search with LLM-driven query optimization
5
- */
6
- import { McpAdrError } from '../types/index.js';
7
- import { ResearchOrchestrator } from '../utils/research-orchestrator.js';
8
- /**
9
- * LLM-managed web search using Firecrawl for cross-platform support
10
- *
11
- * @description Executes intelligent web search using Firecrawl with LLM-driven
12
- * query optimization and content relevance scoring. Supports RHEL, Ubuntu, and macOS.
13
- *
14
- * @param {Object} args - Web search configuration parameters
15
- * @param {string} args.query - The search query to execute
16
- * @param {number} [args.maxResults] - Maximum results to return (default: 5)
17
- * @param {boolean} [args.includeContent] - Include full content (default: true)
18
- * @param {string} [args.llmInstructions] - LLM instructions for search optimization
19
- * @param {string} [args.projectPath] - Path to project root (defaults to cwd)
20
- * @param {string} [args.adrDirectory] - ADR directory relative to project (defaults to 'docs/adrs')
21
- *
22
- * @returns {Promise<any>} Web search results with LLM analysis
23
- *
24
- * @throws {McpAdrError} When query is empty or search fails
25
- *
26
- * @example
27
- * ```typescript
28
- * // Basic web search
29
- * const result = await llmWebSearch({
30
- * query: 'Red Hat OpenShift best practices'
31
- * });
32
- *
33
- * console.log(result.results); // Array of search results
34
- * console.log(result.llmAnalysis); // LLM analysis of results
35
- * ```
36
- *
37
- * @example
38
- * ```typescript
39
- * // Advanced search with LLM instructions
40
- * const result = await llmWebSearch({
41
- * query: 'Kubernetes security hardening',
42
- * maxResults: 10,
43
- * llmInstructions: 'Focus on enterprise security practices and compliance requirements'
44
- * });
45
- * ```
46
- *
47
- * @since 2.1.0
48
- * @category Web Search
49
- * @category LLM
50
- * @mcp-tool
51
- */
52
- export async function llmWebSearch(args, context) {
53
- const { query, maxResults = 5, includeContent = true, llmInstructions, projectPath, adrDirectory, } = args;
54
- if (!query || query.trim().length === 0) {
55
- throw new McpAdrError('Query parameter is required and cannot be empty', 'INVALID_QUERY');
56
- }
57
- try {
58
- context?.info(`🌐 Initializing web search for: ${query}`);
59
- context?.report_progress(0, 100);
60
- // Initialize research orchestrator with Firecrawl
61
- const orchestrator = new ResearchOrchestrator(projectPath, adrDirectory);
62
- // Enhance query with LLM instructions if provided
63
- context?.info('🤖 Optimizing search query with LLM guidance...');
64
- context?.report_progress(25, 100);
65
- let enhancedQuery = query;
66
- if (llmInstructions) {
67
- enhancedQuery = `${query}\n\nLLM Instructions: ${llmInstructions}`;
68
- }
69
- // Perform web search using research orchestrator
70
- context?.info('🔍 Executing web search with Firecrawl...');
71
- context?.report_progress(50, 100);
72
- const researchResult = await orchestrator.answerResearchQuestion(enhancedQuery);
73
- // Extract web search results
74
- const webSearchSource = researchResult.sources.find(source => source.type === 'web_search');
75
- const webResults = webSearchSource?.data?.results || [];
76
- // Limit results
77
- const limitedResults = webResults.slice(0, maxResults);
78
- // Generate LLM analysis of results
79
- context?.info('📊 Analyzing search results with LLM...');
80
- context?.report_progress(75, 100);
81
- const llmAnalysis = await generateLLMAnalysis(query, limitedResults, llmInstructions);
82
- context?.info('✅ Web search complete!');
83
- context?.report_progress(100, 100);
84
- return {
85
- content: [
86
- {
87
- type: 'text',
88
- text: `# LLM-Managed Web Search Results
89
-
90
- ## Query
91
- ${query}
92
-
93
- ${llmInstructions ? `## LLM Instructions\n${llmInstructions}\n` : ''}
94
-
95
- ## Search Results (${limitedResults.length} found)
96
-
97
- ${limitedResults
98
- .map((result, index) => `
99
- ### ${index + 1}. ${result.title}
100
- - **URL**: ${result.url}
101
- - **Relevance**: ${(result.relevance * 100).toFixed(1)}%
102
- - **Content**: ${includeContent ? result.content?.substring(0, 500) + '...' : 'Content available'}
103
-
104
- ---
105
- `)
106
- .join('\n')}
107
-
108
- ## LLM Analysis
109
- ${llmAnalysis}
110
-
111
- ## Search Metadata
112
- - **Provider**: Firecrawl
113
- - **Total Results**: ${webResults.length}
114
- - **Returned Results**: ${limitedResults.length}
115
- - **Confidence**: ${(researchResult.confidence * 100).toFixed(1)}%
116
- - **Timestamp**: ${new Date().toISOString()}
117
- `,
118
- },
119
- ],
120
- };
121
- }
122
- catch (error) {
123
- throw new McpAdrError(`Web search failed: ${error instanceof Error ? error.message : String(error)}`, 'WEB_SEARCH_ERROR');
124
- }
125
- }
126
- /**
127
- * Generate LLM analysis of search results
128
- */
129
- async function generateLLMAnalysis(_query, _results, _instructions) {
130
- // TODO: Implement LLM analysis when AI executor is available
131
- // const { loadAIConfig, getAIExecutor } = await import('../config/ai-config.js');
132
- // const aiConfig = loadAIConfig();
133
- // const executor = getAIExecutor();
134
- // const prompt = `
135
- // Analyze these web search results for the query: "${query}"
136
- //
137
- // ${instructions ? `Additional Instructions: ${instructions}` : ''}
138
- //
139
- // Search Results:
140
- // ${results.map((result, index) => `
141
- // ${index + 1}. ${result.title}
142
- // URL: ${result.url}
143
- // Relevance: ${(result.relevance * 100).toFixed(1)}%
144
- // Content Preview: ${result.content?.substring(0, 300)}...
145
- // `).join('\n')}
146
- //
147
- // Provide analysis covering:
148
- // 1. Overall quality and relevance of results
149
- // 2. Key insights and findings
150
- // 3. Gaps or missing information
151
- // 4. Recommendations for further research
152
- // 5. Summary of most valuable sources
153
- //
154
- // Keep analysis concise but comprehensive.
155
- // `;
156
- // const result = await executor.executeStructuredPrompt(prompt, {
157
- // type: 'object',
158
- // properties: {
159
- // analysis: { type: 'string' }
160
- // }
161
- // });
162
- // return result.data.analysis || 'Analysis unavailable';
163
- return 'LLM analysis is not yet available. Results are available but require manual review.';
164
- }
165
- //# sourceMappingURL=llm-web-search-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-web-search-tool.js","sourceRoot":"","sources":["../../../src/tools/llm-web-search-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAOC,EACD,OAAqB;IAErB,MAAM,EACJ,KAAK,EACL,UAAU,GAAG,CAAC,EACd,cAAc,GAAG,IAAI,EACrB,eAAe,EACf,WAAW,EACX,YAAY,GACb,GAAG,IAAI,CAAC;IAET,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,WAAW,CAAC,iDAAiD,EAAE,eAAe,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEjC,kDAAkD;QAClD,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEzE,kDAAkD;QAClD,OAAO,EAAE,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAElC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,eAAe,EAAE,CAAC;YACpB,aAAa,GAAG,GAAG,KAAK,yBAAyB,eAAe,EAAE,CAAC;QACrE,CAAC;QAED,iDAAiD;QACjD,OAAO,EAAE,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAElC,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAEhF,6BAA6B;QAC7B,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAG,eAAe,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;QAExD,gBAAgB;QAChB,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAEvD,mCAAmC;QACnC,OAAO,EAAE,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAElC,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;QAEtF,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEnC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;EAGd,KAAK;;EAEL,eAAe,CAAC,CAAC,CAAC,wBAAwB,eAAe,IAAI,CAAC,CAAC,CAAC,EAAE;;qBAE/C,cAAc,CAAC,MAAM;;EAExC,cAAc;yBACb,GAAG,CACF,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE,CAAC;MAC9B,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK;aACnB,MAAM,CAAC,GAAG;mBACJ,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;iBACrC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB;;;CAGhG,CACE;yBACA,IAAI,CAAC,IAAI,CAAC;;;EAGX,WAAW;;;;uBAIU,UAAU,CAAC,MAAM;0BACd,cAAc,CAAC,MAAM;oBAC3B,CAAC,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;mBAC7C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CAC1C;iBACQ;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CACnB,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC9E,kBAAkB,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAc,EACd,QAAmB,EACnB,aAAsB;IAEtB,6DAA6D;IAC7D,kFAAkF;IAClF,mCAAmC;IACnC,oCAAoC;IAEpC,mBAAmB;IACnB,6DAA6D;IAC7D,EAAE;IACF,oEAAoE;IACpE,EAAE;IACF,kBAAkB;IAClB,qCAAqC;IACrC,gCAAgC;IAChC,qBAAqB;IACrB,qDAAqD;IACrD,2DAA2D;IAC3D,iBAAiB;IACjB,EAAE;IACF,6BAA6B;IAC7B,8CAA8C;IAC9C,+BAA+B;IAC/B,iCAAiC;IACjC,0CAA0C;IAC1C,sCAAsC;IACtC,EAAE;IACF,2CAA2C;IAC3C,KAAK;IAEL,kEAAkE;IAClE,oBAAoB;IACpB,kBAAkB;IAClB,mCAAmC;IACnC,MAAM;IACN,MAAM;IACN,yDAAyD;IAEzD,OAAO,qFAAqF,CAAC;AAC/F,CAAC"}
@@ -1,106 +0,0 @@
1
- /**
2
- * DAG Executor for Bootstrap Validation Loop
3
- *
4
- * Executes tasks in a Directed Acyclic Graph (DAG) with:
5
- * - Dependency resolution via topological sort
6
- * - Parallel execution within layers
7
- * - Fine-grained error handling and retry logic
8
- * - Task-level validation and timeout support
9
- */
10
- import { SystemCardManager } from './system-card-manager.js';
11
- /**
12
- * A single executable task node in the DAG
13
- */
14
- export interface TaskNode {
15
- id: string;
16
- name: string;
17
- description: string;
18
- command?: string;
19
- commandArgs?: string[];
20
- expectedExitCode?: number;
21
- timeout?: number;
22
- dependsOn: string[];
23
- canFailSafely?: boolean;
24
- platforms?: string[];
25
- retryCount?: number;
26
- retryDelay?: number;
27
- validationCheck?: (output: string) => boolean;
28
- category: 'infrastructure' | 'application';
29
- severity: 'critical' | 'error' | 'warning' | 'info';
30
- }
31
- /**
32
- * Result of executing a single task
33
- */
34
- export interface TaskResult {
35
- taskId: string;
36
- success: boolean;
37
- exitCode?: number;
38
- stdout: string;
39
- stderr: string;
40
- duration: number;
41
- error?: Error;
42
- skipped?: boolean;
43
- skipReason?: string;
44
- }
45
- /**
46
- * Result of executing the entire DAG
47
- */
48
- export interface DAGExecutionResult {
49
- success: boolean;
50
- executedTasks: string[];
51
- failedTasks: string[];
52
- skippedTasks: string[];
53
- duration: number;
54
- taskResults: Map<string, TaskResult>;
55
- }
56
- /**
57
- * DAG Executor with dependency resolution and parallel execution
58
- */
59
- export declare class DAGExecutor {
60
- private logger;
61
- private maxParallelism;
62
- private systemCardManager;
63
- private resourceExtractor;
64
- constructor(maxParallelism?: number, systemCardManager?: SystemCardManager);
65
- /**
66
- * Execute DAG with topological sort and parallel execution
67
- */
68
- execute(tasks: TaskNode[]): Promise<DAGExecutionResult>;
69
- /**
70
- * Execute all tasks in a layer in parallel (with concurrency limit)
71
- */
72
- private executeLayer;
73
- /**
74
- * Execute tasks with concurrency limit
75
- */
76
- private executeWithConcurrencyLimit;
77
- /**
78
- * Execute a single task with retry logic
79
- */
80
- private executeTask;
81
- /**
82
- * Execute shell command with timeout
83
- */
84
- private executeCommand;
85
- /**
86
- * Validate DAG structure (no cycles, valid dependencies)
87
- */
88
- private validateDAG;
89
- /**
90
- * Detect cycles in DAG using DFS
91
- */
92
- private detectCycles;
93
- /**
94
- * Build dependency graph from tasks
95
- */
96
- private buildDependencyGraph;
97
- /**
98
- * Topological sort to determine execution order (Kahn's algorithm)
99
- */
100
- private topologicalSort;
101
- /**
102
- * Get all tasks that depend on the given task (recursively)
103
- */
104
- private getDependentTasks;
105
- }
106
- //# sourceMappingURL=dag-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dag-executor.d.ts","sourceRoot":"","sources":["../../../src/utils/dag-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAGpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAGrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAG9C,QAAQ,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAC3C,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,iBAAiB,CAAoB;gBAEjC,cAAc,GAAE,MAAU,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAO7E;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsI7D;;OAEG;YACW,YAAY;IAwE1B;;OAEG;YACW,2BAA2B;IAwBzC;;OAEG;YACW,WAAW;IAuHzB;;OAEG;YACW,cAAc;IAsB5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmCpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkDvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAwB1B"}