@weave_protocol/domere 1.0.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 (104) hide show
  1. package/PLANNING.md +231 -0
  2. package/README.md +50 -0
  3. package/dist/anchoring/ethereum.d.ts +135 -0
  4. package/dist/anchoring/ethereum.d.ts.map +1 -0
  5. package/dist/anchoring/ethereum.js +474 -0
  6. package/dist/anchoring/ethereum.js.map +1 -0
  7. package/dist/anchoring/index.d.ts +93 -0
  8. package/dist/anchoring/index.d.ts.map +1 -0
  9. package/dist/anchoring/index.js +184 -0
  10. package/dist/anchoring/index.js.map +1 -0
  11. package/dist/anchoring/merkle.d.ts +91 -0
  12. package/dist/anchoring/merkle.d.ts.map +1 -0
  13. package/dist/anchoring/merkle.js +203 -0
  14. package/dist/anchoring/merkle.js.map +1 -0
  15. package/dist/anchoring/solana.d.ts +85 -0
  16. package/dist/anchoring/solana.d.ts.map +1 -0
  17. package/dist/anchoring/solana.js +301 -0
  18. package/dist/anchoring/solana.js.map +1 -0
  19. package/dist/constants.d.ts +130 -0
  20. package/dist/constants.d.ts.map +1 -0
  21. package/dist/constants.js +536 -0
  22. package/dist/constants.js.map +1 -0
  23. package/dist/index.d.ts +13 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +37 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/language/code-analyzer.d.ts +80 -0
  28. package/dist/language/code-analyzer.d.ts.map +1 -0
  29. package/dist/language/code-analyzer.js +489 -0
  30. package/dist/language/code-analyzer.js.map +1 -0
  31. package/dist/language/detector.d.ts +53 -0
  32. package/dist/language/detector.d.ts.map +1 -0
  33. package/dist/language/detector.js +248 -0
  34. package/dist/language/detector.js.map +1 -0
  35. package/dist/language/index.d.ts +61 -0
  36. package/dist/language/index.d.ts.map +1 -0
  37. package/dist/language/index.js +109 -0
  38. package/dist/language/index.js.map +1 -0
  39. package/dist/language/nl-analyzer.d.ts +59 -0
  40. package/dist/language/nl-analyzer.d.ts.map +1 -0
  41. package/dist/language/nl-analyzer.js +350 -0
  42. package/dist/language/nl-analyzer.js.map +1 -0
  43. package/dist/language/semantic.d.ts +48 -0
  44. package/dist/language/semantic.d.ts.map +1 -0
  45. package/dist/language/semantic.js +329 -0
  46. package/dist/language/semantic.js.map +1 -0
  47. package/dist/storage/index.d.ts +6 -0
  48. package/dist/storage/index.d.ts.map +1 -0
  49. package/dist/storage/index.js +6 -0
  50. package/dist/storage/index.js.map +1 -0
  51. package/dist/storage/memory.d.ts +48 -0
  52. package/dist/storage/memory.d.ts.map +1 -0
  53. package/dist/storage/memory.js +211 -0
  54. package/dist/storage/memory.js.map +1 -0
  55. package/dist/thread/drift.d.ts +43 -0
  56. package/dist/thread/drift.d.ts.map +1 -0
  57. package/dist/thread/drift.js +248 -0
  58. package/dist/thread/drift.js.map +1 -0
  59. package/dist/thread/index.d.ts +9 -0
  60. package/dist/thread/index.d.ts.map +1 -0
  61. package/dist/thread/index.js +9 -0
  62. package/dist/thread/index.js.map +1 -0
  63. package/dist/thread/intent.d.ts +68 -0
  64. package/dist/thread/intent.d.ts.map +1 -0
  65. package/dist/thread/intent.js +333 -0
  66. package/dist/thread/intent.js.map +1 -0
  67. package/dist/thread/manager.d.ts +85 -0
  68. package/dist/thread/manager.d.ts.map +1 -0
  69. package/dist/thread/manager.js +305 -0
  70. package/dist/thread/manager.js.map +1 -0
  71. package/dist/thread/weave.d.ts +61 -0
  72. package/dist/thread/weave.d.ts.map +1 -0
  73. package/dist/thread/weave.js +158 -0
  74. package/dist/thread/weave.js.map +1 -0
  75. package/dist/tools/index.d.ts +18 -0
  76. package/dist/tools/index.d.ts.map +1 -0
  77. package/dist/tools/index.js +102 -0
  78. package/dist/tools/index.js.map +1 -0
  79. package/dist/types.d.ts +466 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +48 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +24 -0
  84. package/src/anchoring/ethereum.ts +568 -0
  85. package/src/anchoring/index.ts +236 -0
  86. package/src/anchoring/merkle.ts +256 -0
  87. package/src/anchoring/solana.ts +370 -0
  88. package/src/constants.ts +566 -0
  89. package/src/index.ts +43 -0
  90. package/src/language/code-analyzer.ts +564 -0
  91. package/src/language/detector.ts +297 -0
  92. package/src/language/index.ts +129 -0
  93. package/src/language/nl-analyzer.ts +411 -0
  94. package/src/language/semantic.ts +385 -0
  95. package/src/storage/index.ts +6 -0
  96. package/src/storage/memory.ts +271 -0
  97. package/src/thread/drift.ts +319 -0
  98. package/src/thread/index.ts +9 -0
  99. package/src/thread/intent.ts +409 -0
  100. package/src/thread/manager.ts +414 -0
  101. package/src/thread/weave.ts +205 -0
  102. package/src/tools/index.ts +107 -0
  103. package/src/types.ts +736 -0
  104. package/tsconfig.json +19 -0
@@ -0,0 +1,333 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Intent Analysis
4
+ */
5
+ import { INTENT_KEYWORDS } from '../constants.js';
6
+ export class IntentAnalyzer {
7
+ /**
8
+ * Analyze intent
9
+ */
10
+ analyze(intent) {
11
+ const normalized = this.normalize(intent);
12
+ const classification = this.classify(normalized);
13
+ const { actionVerb, targetObject, modifiers } = this.decompose(normalized);
14
+ const constraints = this.extractConstraints(intent);
15
+ const scope = this.assessScope(intent);
16
+ const complexity = this.assessComplexity(intent);
17
+ return {
18
+ raw: intent,
19
+ normalized,
20
+ classification: classification.classification,
21
+ confidence: classification.confidence,
22
+ action_verb: actionVerb,
23
+ target_object: targetObject,
24
+ modifiers,
25
+ constraints,
26
+ entities: this.extractEntities(intent),
27
+ scope,
28
+ complexity,
29
+ };
30
+ }
31
+ /**
32
+ * Normalize intent text
33
+ */
34
+ normalize(intent) {
35
+ return intent
36
+ .toLowerCase()
37
+ .replace(/\s+/g, ' ') // Normalize whitespace
38
+ .replace(/[^\w\s.,!?'-]/g, '') // Remove special chars
39
+ .replace(/please\s+/gi, '') // Remove politeness
40
+ .replace(/can you\s+/gi, '')
41
+ .replace(/could you\s+/gi, '')
42
+ .replace(/would you\s+/gi, '')
43
+ .replace(/i want you to\s+/gi, '')
44
+ .replace(/i need you to\s+/gi, '')
45
+ .replace(/i'd like you to\s+/gi, '')
46
+ .trim();
47
+ }
48
+ /**
49
+ * Classify intent
50
+ */
51
+ classify(normalizedIntent) {
52
+ const scores = {
53
+ query: 0,
54
+ mutation: 0,
55
+ deletion: 0,
56
+ execution: 0,
57
+ communication: 0,
58
+ analysis: 0,
59
+ generation: 0,
60
+ unknown: 0,
61
+ };
62
+ // Score based on keywords
63
+ for (const [intent, keywords] of Object.entries(INTENT_KEYWORDS)) {
64
+ for (const keyword of keywords) {
65
+ const regex = new RegExp(`\\b${keyword}\\b`, 'gi');
66
+ const matches = normalizedIntent.match(regex);
67
+ if (matches) {
68
+ scores[intent] += matches.length * 2;
69
+ }
70
+ }
71
+ }
72
+ // Check question patterns (strong signal for query)
73
+ if (/^(what|where|who|when|how|why|which|is|are|do|does|can|could)\b/i.test(normalizedIntent)) {
74
+ scores.query += 3;
75
+ }
76
+ // Find highest
77
+ let maxClassification = 'unknown';
78
+ let maxScore = 0;
79
+ let totalScore = 0;
80
+ for (const [classification, score] of Object.entries(scores)) {
81
+ totalScore += score;
82
+ if (score > maxScore) {
83
+ maxScore = score;
84
+ maxClassification = classification;
85
+ }
86
+ }
87
+ const confidence = totalScore > 0 ? maxScore / totalScore : 0;
88
+ return { classification: maxClassification, confidence };
89
+ }
90
+ /**
91
+ * Decompose intent into components
92
+ */
93
+ decompose(normalizedIntent) {
94
+ const words = normalizedIntent.split(' ');
95
+ let actionVerb;
96
+ let targetObject;
97
+ const modifiers = [];
98
+ // Common action verbs
99
+ const actionVerbs = [
100
+ 'get', 'fetch', 'find', 'search', 'retrieve', 'show', 'display', 'list',
101
+ 'create', 'make', 'generate', 'build', 'add', 'insert',
102
+ 'update', 'change', 'modify', 'edit', 'set',
103
+ 'delete', 'remove', 'drop', 'clear',
104
+ 'send', 'email', 'message', 'notify',
105
+ 'analyze', 'summarize', 'explain', 'compare',
106
+ 'run', 'execute', 'start', 'launch',
107
+ ];
108
+ // Find action verb
109
+ for (const word of words) {
110
+ if (actionVerbs.includes(word)) {
111
+ actionVerb = word;
112
+ break;
113
+ }
114
+ }
115
+ // Find target (noun after action verb)
116
+ if (actionVerb) {
117
+ const verbIndex = words.indexOf(actionVerb);
118
+ if (verbIndex < words.length - 1) {
119
+ // Look for noun phrase after verb
120
+ const afterVerb = words.slice(verbIndex + 1);
121
+ // Skip articles and prepositions
122
+ const skipWords = ['the', 'a', 'an', 'to', 'for', 'from', 'in', 'on', 'at'];
123
+ const targetWords = [];
124
+ for (const word of afterVerb) {
125
+ if (skipWords.includes(word))
126
+ continue;
127
+ // Stop at conjunctions or prepositions that indicate end of target
128
+ if (['and', 'or', 'but', 'with', 'using', 'by'].includes(word))
129
+ break;
130
+ targetWords.push(word);
131
+ if (targetWords.length >= 3)
132
+ break; // Limit target length
133
+ }
134
+ targetObject = targetWords.join(' ');
135
+ }
136
+ }
137
+ // Extract modifiers (adjectives, adverbs)
138
+ const modifierPatterns = [
139
+ /\b(all|every|each|any|some|no)\b/gi,
140
+ /\b(new|old|latest|recent|current)\b/gi,
141
+ /\b(first|last|top|bottom)\s+\d+/gi,
142
+ /\b(quickly|slowly|carefully|automatically)\b/gi,
143
+ /\b(daily|weekly|monthly|yearly)\b/gi,
144
+ ];
145
+ for (const pattern of modifierPatterns) {
146
+ const matches = normalizedIntent.match(pattern);
147
+ if (matches) {
148
+ modifiers.push(...matches);
149
+ }
150
+ }
151
+ return { actionVerb, targetObject, modifiers };
152
+ }
153
+ /**
154
+ * Extract constraints from intent
155
+ */
156
+ extractConstraints(intent) {
157
+ const constraints = [];
158
+ const intentLower = intent.toLowerCase();
159
+ // Explicit negations
160
+ const negationPatterns = [
161
+ /\b(don't|do not|never|without)\s+([^.,]+)/gi,
162
+ /\b(except|excluding|other than)\s+([^.,]+)/gi,
163
+ /\b(but not|not including)\s+([^.,]+)/gi,
164
+ ];
165
+ for (const pattern of negationPatterns) {
166
+ let match;
167
+ while ((match = pattern.exec(intentLower)) !== null) {
168
+ constraints.push(`NOT: ${match[2].trim()}`);
169
+ }
170
+ }
171
+ // Scope limitations
172
+ const scopePatterns = [
173
+ /\b(only|just|specifically)\s+([^.,]+)/gi,
174
+ /\b(limited to|restricted to)\s+([^.,]+)/gi,
175
+ ];
176
+ for (const pattern of scopePatterns) {
177
+ let match;
178
+ while ((match = pattern.exec(intentLower)) !== null) {
179
+ constraints.push(`ONLY: ${match[2].trim()}`);
180
+ }
181
+ }
182
+ // Time constraints
183
+ const timePatterns = [
184
+ /\b(before|after|since|until)\s+([^.,]+)/gi,
185
+ /\b(within|in the last|in the next)\s+(\d+\s+\w+)/gi,
186
+ ];
187
+ for (const pattern of timePatterns) {
188
+ let match;
189
+ while ((match = pattern.exec(intentLower)) !== null) {
190
+ constraints.push(`TIME: ${match[0].trim()}`);
191
+ }
192
+ }
193
+ // Quantity constraints
194
+ const quantityPatterns = [
195
+ /\b(at most|at least|exactly|no more than|no less than)\s+(\d+)/gi,
196
+ /\b(maximum|minimum|limit)\s+(?:of\s+)?(\d+)/gi,
197
+ ];
198
+ for (const pattern of quantityPatterns) {
199
+ let match;
200
+ while ((match = pattern.exec(intentLower)) !== null) {
201
+ constraints.push(`QUANTITY: ${match[0].trim()}`);
202
+ }
203
+ }
204
+ return constraints;
205
+ }
206
+ /**
207
+ * Extract entities from intent
208
+ */
209
+ extractEntities(intent) {
210
+ const entities = [];
211
+ // Quoted strings (often specific values)
212
+ const quotedPattern = /["']([^"']+)["']/g;
213
+ let match;
214
+ while ((match = quotedPattern.exec(intent)) !== null) {
215
+ entities.push({
216
+ type: 'custom',
217
+ value: match[1],
218
+ confidence: 0.9,
219
+ position: { start: match.index, end: match.index + match[0].length },
220
+ });
221
+ }
222
+ // Numbers with context
223
+ const numberPattern = /\b(\d+(?:,\d{3})*(?:\.\d+)?)\s*(\w+)?/g;
224
+ while ((match = numberPattern.exec(intent)) !== null) {
225
+ const value = match[1];
226
+ const unit = match[2];
227
+ entities.push({
228
+ type: 'quantity',
229
+ value: unit ? `${value} ${unit}` : value,
230
+ confidence: 0.8,
231
+ position: { start: match.index, end: match.index + match[0].length },
232
+ });
233
+ }
234
+ // Capitalized words (potential proper nouns)
235
+ const properNounPattern = /\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)*)\b/g;
236
+ while ((match = properNounPattern.exec(intent)) !== null) {
237
+ // Skip if at start of sentence
238
+ if (match.index === 0)
239
+ continue;
240
+ entities.push({
241
+ type: 'custom',
242
+ value: match[1],
243
+ confidence: 0.6,
244
+ position: { start: match.index, end: match.index + match[0].length },
245
+ });
246
+ }
247
+ return entities;
248
+ }
249
+ /**
250
+ * Assess scope of intent
251
+ */
252
+ assessScope(intent) {
253
+ const intentLower = intent.toLowerCase();
254
+ // Narrow scope indicators
255
+ if (/\b(specific|particular|this|that|single|one)\b/.test(intentLower)) {
256
+ return 'narrow';
257
+ }
258
+ if (/"[^"]+"/.test(intent)) { // Quoted specific values
259
+ return 'narrow';
260
+ }
261
+ // Broad scope indicators
262
+ if (/\b(all|every|entire|whole|complete|everything)\b/.test(intentLower)) {
263
+ return 'broad';
264
+ }
265
+ return 'medium';
266
+ }
267
+ /**
268
+ * Assess complexity of intent
269
+ */
270
+ assessComplexity(intent) {
271
+ const words = intent.split(/\s+/).length;
272
+ const clauses = intent.split(/[,;]/).length;
273
+ const conjunctions = (intent.match(/\b(and|or|but|then|after|before|while)\b/gi) || []).length;
274
+ // Simple: short, single clause
275
+ if (words < 10 && clauses === 1 && conjunctions === 0) {
276
+ return 'simple';
277
+ }
278
+ // Complex: long, multiple clauses, multiple conjunctions
279
+ if (words > 30 || clauses > 3 || conjunctions > 2) {
280
+ return 'complex';
281
+ }
282
+ return 'moderate';
283
+ }
284
+ /**
285
+ * Compare two intents for similarity
286
+ */
287
+ compareIntents(intent1, intent2) {
288
+ const norm1 = this.normalize(intent1);
289
+ const norm2 = this.normalize(intent2);
290
+ // Simple word overlap similarity
291
+ const words1 = new Set(norm1.split(' '));
292
+ const words2 = new Set(norm2.split(' '));
293
+ const intersection = new Set([...words1].filter(w => words2.has(w)));
294
+ const union = new Set([...words1, ...words2]);
295
+ return intersection.size / union.size;
296
+ }
297
+ /**
298
+ * Check if intent2 is within scope of intent1
299
+ */
300
+ isWithinScope(originalIntent, derivedIntent) {
301
+ const original = this.analyze(originalIntent);
302
+ const derived = this.analyze(derivedIntent);
303
+ // Check if classification matches
304
+ if (original.classification !== derived.classification &&
305
+ original.classification !== 'unknown') {
306
+ return false;
307
+ }
308
+ // Check if target is related
309
+ if (original.target_object && derived.target_object) {
310
+ if (!derived.target_object.includes(original.target_object) &&
311
+ !original.target_object.includes(derived.target_object)) {
312
+ // Targets are unrelated
313
+ return false;
314
+ }
315
+ }
316
+ // Check constraints
317
+ for (const constraint of original.constraints) {
318
+ if (constraint.startsWith('NOT:')) {
319
+ const forbidden = constraint.slice(5).toLowerCase();
320
+ if (derived.raw.toLowerCase().includes(forbidden)) {
321
+ return false;
322
+ }
323
+ }
324
+ }
325
+ // Check scope hasn't expanded
326
+ const scopeOrder = ['narrow', 'medium', 'broad'];
327
+ if (scopeOrder.indexOf(derived.scope) > scopeOrder.indexOf(original.scope)) {
328
+ return false;
329
+ }
330
+ return true;
331
+ }
332
+ }
333
+ //# sourceMappingURL=intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/thread/intent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Dōmere - The Judge Protocol
3
+ * Thread Manager
4
+ */
5
+ import type { Thread, ThreadOrigin, ThreadHop, ThreadStatus, IDomereStorage, AgentInfo, HopAction, SecurityScanResult } from '../types.js';
6
+ export declare class ThreadManager {
7
+ private storage;
8
+ private languageAnalyzer;
9
+ private intentAnalyzer;
10
+ private driftDetector;
11
+ private weaveSignature;
12
+ constructor(storage: IDomereStorage);
13
+ /**
14
+ * Create a new thread
15
+ */
16
+ createThread(config: {
17
+ origin: Omit<ThreadOrigin, 'timestamp'>;
18
+ intent: string;
19
+ constraints?: string[];
20
+ metadata?: Record<string, unknown>;
21
+ }): Promise<Thread>;
22
+ /**
23
+ * Add a hop to a thread
24
+ */
25
+ addHop(config: {
26
+ thread_id: string;
27
+ agent: AgentInfo;
28
+ received_intent: string;
29
+ actions: HopAction[];
30
+ security_scan?: SecurityScanResult;
31
+ sandbox_result?: {
32
+ sandbox_id: string;
33
+ result_id: string;
34
+ status: string;
35
+ summary: string;
36
+ };
37
+ }): Promise<ThreadHop>;
38
+ /**
39
+ * Close a thread
40
+ */
41
+ closeThread(threadId: string, outcome: 'success' | 'failure' | 'abandoned'): Promise<Thread>;
42
+ /**
43
+ * Get a thread
44
+ */
45
+ getThread(threadId: string): Promise<Thread | null>;
46
+ /**
47
+ * List threads
48
+ */
49
+ listThreads(filters?: {
50
+ status?: ThreadStatus;
51
+ origin_type?: ThreadOrigin['type'];
52
+ origin_identity?: string;
53
+ since?: Date;
54
+ until?: Date;
55
+ limit?: number;
56
+ }): Promise<Thread[]>;
57
+ /**
58
+ * Verify thread integrity
59
+ */
60
+ verifyThread(threadId: string): Promise<{
61
+ valid: boolean;
62
+ errors: string[];
63
+ verified_hops: number;
64
+ total_hops: number;
65
+ }>;
66
+ /**
67
+ * Get thread summary
68
+ */
69
+ getThreadSummary(threadId: string): Promise<{
70
+ id: string;
71
+ status: ThreadStatus;
72
+ origin: string;
73
+ intent_summary: string;
74
+ hop_count: number;
75
+ total_drift: number;
76
+ has_violations: boolean;
77
+ duration_ms: number;
78
+ merkle_root?: string;
79
+ } | null>;
80
+ private generateThreadId;
81
+ private generateHopId;
82
+ private hashContent;
83
+ private computeMerkleRoot;
84
+ }
85
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/thread/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EAEZ,SAAS,EACT,YAAY,EACZ,cAAc,EACd,SAAS,EACT,SAAS,EAGT,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAWrB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,EAAE,cAAc;IAQnC;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE;QACzB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDnB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,SAAS,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,CAAC;QACrB,aAAa,CAAC,EAAE,kBAAkB,CAAC;QACnC,cAAc,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7F,GAAG,OAAO,CAAC,SAAS,CAAC;IA8FtB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlG;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzD;;OAEG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,IAAI,CAAC;QACb,KAAK,CAAC,EAAE,IAAI,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIrB;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IA0EF;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,YAAY,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IAkCT,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,iBAAiB;CAuB1B"}