greprag 0.2.20 → 0.4.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.
- package/dist/hook.d.ts +7 -3
- package/dist/hook.js +67 -328
- package/dist/hook.js.map +1 -1
- package/package.json +1 -1
package/dist/hook.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/** GrepRAG Hook — thin HTTP pipe for Claude Code hooks.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Agent-intent memory: memory is a repository, not an injection layer.
|
|
5
|
+
* Write side (ambient): Stop → store. Read side (intentional): agents call
|
|
6
|
+
* `greprag recall` when they need past context.
|
|
7
|
+
*
|
|
8
|
+
* Subcommands: store, signal, summary, recover, farewell, recap, handoff
|
|
5
9
|
*
|
|
6
10
|
* Lifecycle:
|
|
7
|
-
* recap(SessionStart:startup) →
|
|
8
|
-
* summary(PreCompact) →
|
|
11
|
+
* recap(SessionStart:startup|clear) → [agent turn] → store(Stop) → farewell(SessionEnd)
|
|
12
|
+
* summary(PreCompact) → recover(SessionStart:compact)
|
|
9
13
|
* PostToolUse(ExitPlanMode | AskUserQuestion) → signal */
|
|
10
14
|
export {};
|
package/dist/hook.js
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/** GrepRAG Hook — thin HTTP pipe for Claude Code hooks.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Agent-intent memory: memory is a repository, not an injection layer.
|
|
6
|
+
* Write side (ambient): Stop → store. Read side (intentional): agents call
|
|
7
|
+
* `greprag recall` when they need past context.
|
|
8
|
+
*
|
|
9
|
+
* Subcommands: store, signal, summary, recover, farewell, recap, handoff
|
|
6
10
|
*
|
|
7
11
|
* Lifecycle:
|
|
8
|
-
* recap(SessionStart:startup) →
|
|
9
|
-
* summary(PreCompact) →
|
|
12
|
+
* recap(SessionStart:startup|clear) → [agent turn] → store(Stop) → farewell(SessionEnd)
|
|
13
|
+
* summary(PreCompact) → recover(SessionStart:compact)
|
|
10
14
|
* PostToolUse(ExitPlanMode | AskUserQuestion) → signal */
|
|
11
15
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
16
|
if (k2 === undefined) k2 = k;
|
|
@@ -46,11 +50,6 @@ const path = __importStar(require("path"));
|
|
|
46
50
|
const fs = __importStar(require("fs"));
|
|
47
51
|
const os = __importStar(require("os"));
|
|
48
52
|
const API_URL_DEFAULT = 'https://api.greprag.com';
|
|
49
|
-
const GREPRAG_DIR = path.join(os.homedir(), '.greprag');
|
|
50
|
-
function ensureDir() {
|
|
51
|
-
if (!fs.existsSync(GREPRAG_DIR))
|
|
52
|
-
fs.mkdirSync(GREPRAG_DIR, { recursive: true });
|
|
53
|
-
}
|
|
54
53
|
function getConfig(cwd) {
|
|
55
54
|
ensureEnv(cwd);
|
|
56
55
|
return {
|
|
@@ -59,40 +58,6 @@ function getConfig(cwd) {
|
|
|
59
58
|
enabled: process.env.MEMORY_HOOK_ENABLED === 'true',
|
|
60
59
|
};
|
|
61
60
|
}
|
|
62
|
-
function flagPath(name) {
|
|
63
|
-
ensureDir();
|
|
64
|
-
return path.join(GREPRAG_DIR, `${name}.flag`);
|
|
65
|
-
}
|
|
66
|
-
function setFlag(name) {
|
|
67
|
-
fs.writeFileSync(flagPath(name), Date.now().toString());
|
|
68
|
-
}
|
|
69
|
-
function consumeFlag(name) {
|
|
70
|
-
const p = flagPath(name);
|
|
71
|
-
try {
|
|
72
|
-
fs.unlinkSync(p);
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function getCachePath() {
|
|
80
|
-
ensureDir();
|
|
81
|
-
return path.join(GREPRAG_DIR, 'pending-prompt.json');
|
|
82
|
-
}
|
|
83
|
-
function cachePrompt(data) {
|
|
84
|
-
fs.writeFileSync(getCachePath(), JSON.stringify(data));
|
|
85
|
-
}
|
|
86
|
-
function readCachedPrompt() {
|
|
87
|
-
try {
|
|
88
|
-
const data = JSON.parse(fs.readFileSync(getCachePath(), 'utf-8'));
|
|
89
|
-
fs.unlinkSync(getCachePath()); // consume once
|
|
90
|
-
return data;
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
61
|
function loadEnvFile(filePath) {
|
|
97
62
|
try {
|
|
98
63
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -140,133 +105,21 @@ async function apiCall(url, apiKey, body) {
|
|
|
140
105
|
}
|
|
141
106
|
return res.json();
|
|
142
107
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const cfg = getConfig(cwd);
|
|
153
|
-
if (cfg.enabled && cfg.apiKey) {
|
|
154
|
-
await apiCall(`${cfg.apiUrl}/v1/memory/cache/clear`, cfg.apiKey, { sessionId });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
/** UserPromptSubmit — retrieve memory, cache prompt for store pairing. */
|
|
159
|
-
async function retrieve(input) {
|
|
160
|
-
const cwd = input.cwd || process.cwd();
|
|
161
|
-
const cfg = getConfig(cwd);
|
|
162
|
-
if (!cfg.enabled || !cfg.apiKey)
|
|
163
|
-
return;
|
|
164
|
-
const prompt = input.prompt || '';
|
|
165
|
-
const sessionId = input.session_id || '';
|
|
166
|
-
const profileId = path.basename(cwd);
|
|
167
|
-
// After compaction, the first prompt is system-generated — skip caching it
|
|
168
|
-
const skipStore = consumeFlag('skip-next');
|
|
169
|
-
// Compute stress streak directly from transcript — zero timing lag.
|
|
170
|
-
// Count consecutive assistant turns without tool_use from the tail.
|
|
171
|
-
const stressStreak = computeTranscriptStress(input.transcript_path);
|
|
172
|
-
// Retrieve memory + count pending messages in parallel
|
|
173
|
-
const [result, countResult] = await Promise.all([
|
|
174
|
-
apiCall(`${cfg.apiUrl}/v1/memory/retrieve`, cfg.apiKey, {
|
|
175
|
-
query: prompt,
|
|
176
|
-
profileId,
|
|
177
|
-
sessionId,
|
|
178
|
-
stressStreak,
|
|
179
|
-
}),
|
|
180
|
-
apiCall(`${cfg.apiUrl}/v1/memory/messages/count`, cfg.apiKey, {
|
|
181
|
-
profileId,
|
|
182
|
-
sessionId,
|
|
183
|
-
}),
|
|
184
|
-
]);
|
|
185
|
-
// Extract retrieval metadata for feedback chain
|
|
186
|
-
let injectedMemoryIds;
|
|
187
|
-
let memoryScores;
|
|
188
|
-
let chainMeta;
|
|
189
|
-
let hasMemories = false;
|
|
190
|
-
let context = '';
|
|
191
|
-
// Prepend message notification if any pending
|
|
192
|
-
const pending = countResult?.ok ? countResult.count ?? 0 : 0;
|
|
193
|
-
if (pending > 0) {
|
|
194
|
-
const s = pending === 1 ? 'message' : 'messages';
|
|
195
|
-
context += `[${pending} pending ${s} — run: greprag inbox --profile ${profileId}]\n`;
|
|
196
|
-
}
|
|
197
|
-
// Entity context + memory chunks
|
|
198
|
-
let entityContext = [];
|
|
199
|
-
if (result?.ok) {
|
|
200
|
-
const r = result.result;
|
|
201
|
-
// Inject entity summaries (server handles dedup via session cache)
|
|
202
|
-
const entities = r?.entityContext;
|
|
203
|
-
if (entities && entities.length > 0) {
|
|
204
|
-
entityContext = entities;
|
|
205
|
-
const entLines = entities.map(e => {
|
|
206
|
-
if (e.summary)
|
|
207
|
-
return `- ${e.name}: ${e.summary}`;
|
|
208
|
-
return `- ${e.name} — [${e.status}]`;
|
|
209
|
-
});
|
|
210
|
-
context += `[Entities: ${entLines.join(' | ')}]\n`;
|
|
211
|
-
}
|
|
212
|
-
// Always capture chainMeta for novelty/stress signal line
|
|
213
|
-
chainMeta = r.chainMeta;
|
|
214
|
-
if (r?.totalWords > 0 && r?.formattedBlock) {
|
|
215
|
-
context += r.formattedBlock;
|
|
216
|
-
hasMemories = true;
|
|
217
|
-
injectedMemoryIds = r.injectedChunkIds;
|
|
218
|
-
memoryScores = r.memoryScores;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// GrepRAG signal line — always injected (novelty, stress, entities every turn)
|
|
222
|
-
const parts = [];
|
|
223
|
-
// Novelty + stress state — always
|
|
224
|
-
if (chainMeta) {
|
|
225
|
-
const nov = typeof chainMeta.noveltyRatio === 'number' ? Math.round(chainMeta.noveltyRatio * 100) : null;
|
|
226
|
-
const streak = typeof chainMeta.stressStreak === 'number' ? chainMeta.stressStreak : 0;
|
|
227
|
-
const state = streak >= 2 ? `stress: ${streak} (expanded)` : streak === 1 ? 'stress: 1' : 'action';
|
|
228
|
-
parts.push(`novelty: ${nov !== null ? nov + '%' : '?'} | ${state}`);
|
|
229
|
-
}
|
|
230
|
-
// Incomplete entities — always
|
|
231
|
-
const incomplete = entityContext.filter(e => e.status !== 'complete');
|
|
232
|
-
if (incomplete.length > 0) {
|
|
233
|
-
parts.push(`entities: <entity-summary name="Name">what it is</entity-summary> for: ${incomplete.map(e => e.name).join(', ')}`);
|
|
234
|
-
}
|
|
235
|
-
if (parts.length > 0) {
|
|
236
|
-
context += `\n[greprag: ${parts.join(' | ')}]`;
|
|
237
|
-
}
|
|
238
|
-
// Memory feedback — separate directive block so it reads as an action, not metadata.
|
|
239
|
-
// Must follow the signal line so agents see it last, right before composing the response.
|
|
240
|
-
const feedbackEnabled = result?.ok && result.result?.feedbackEnabled === true;
|
|
241
|
-
if (feedbackEnabled && hasMemories && injectedMemoryIds && injectedMemoryIds.length > 0) {
|
|
242
|
-
const ids = injectedMemoryIds.map(id => id.slice(0, 8));
|
|
243
|
-
const template = JSON.stringify(ids.map(id => ({ id, s: 0, r: '' })));
|
|
244
|
-
const n = injectedMemoryIds.length;
|
|
245
|
-
context += `\n[feedback required: rate the ${n} injected memor${n === 1 ? 'y' : 'ies'} before ending your turn. Emit <mfb>${template}</mfb> replacing each s:0 with 1-5 (1=noise, 2=tangential, 3=somewhat useful, 4=relevant, 5=essential) and r with a brief reason. This is how the retrieval pipeline learns — skipping leaves it blind.]`;
|
|
246
|
-
}
|
|
247
|
-
// Cache prompt + retrieval metadata for the store hook
|
|
248
|
-
if (prompt && !skipStore) {
|
|
249
|
-
cachePrompt({ prompt, sessionId, profileId, injectedMemoryIds, memoryScores, chainMeta });
|
|
250
|
-
}
|
|
251
|
-
if (context) {
|
|
252
|
-
process.stdout.write(JSON.stringify({
|
|
253
|
-
hookSpecificOutput: {
|
|
254
|
-
hookEventName: 'UserPromptSubmit',
|
|
255
|
-
additionalContext: context,
|
|
256
|
-
},
|
|
257
|
-
}));
|
|
258
|
-
}
|
|
108
|
+
function extractText(content) {
|
|
109
|
+
if (typeof content === 'string')
|
|
110
|
+
return content.trim();
|
|
111
|
+
if (!Array.isArray(content))
|
|
112
|
+
return '';
|
|
113
|
+
return content
|
|
114
|
+
.filter((b) => b?.type === 'text')
|
|
115
|
+
.map((b) => b.text || '')
|
|
116
|
+
.join('\n').trim();
|
|
259
117
|
}
|
|
260
|
-
/**
|
|
261
|
-
*
|
|
262
|
-
|
|
263
|
-
function detectAction(transcriptPath, agentProse) {
|
|
264
|
-
// Fast path: code blocks in the text response
|
|
265
|
-
if (/```/.test(agentProse))
|
|
266
|
-
return true;
|
|
267
|
-
// Read transcript for tool_use blocks in the last assistant turn
|
|
118
|
+
/** Walk the transcript backwards to find the most recent real user message
|
|
119
|
+
* (skipping tool_result entries). Returns empty string if not found. */
|
|
120
|
+
function findLastUserMessage(transcriptPath) {
|
|
268
121
|
if (!transcriptPath)
|
|
269
|
-
return
|
|
122
|
+
return '';
|
|
270
123
|
try {
|
|
271
124
|
const raw = fs.readFileSync(transcriptPath, 'utf-8');
|
|
272
125
|
const lines = raw.split('\n');
|
|
@@ -283,43 +136,34 @@ function detectAction(transcriptPath, agentProse) {
|
|
|
283
136
|
}
|
|
284
137
|
const msg = (entry.message || entry);
|
|
285
138
|
const role = (msg.role || entry.type || '');
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
break; // real user message — end of turn
|
|
139
|
+
if (role !== 'user')
|
|
140
|
+
continue;
|
|
141
|
+
if (Array.isArray(msg.content)) {
|
|
142
|
+
const isToolResult = msg.content
|
|
143
|
+
.some(b => b?.type === 'tool_result');
|
|
144
|
+
if (isToolResult)
|
|
145
|
+
continue;
|
|
295
146
|
}
|
|
296
|
-
|
|
297
|
-
if (
|
|
298
|
-
|
|
299
|
-
if (b?.type === 'tool_use')
|
|
300
|
-
return true;
|
|
301
|
-
}
|
|
147
|
+
const text = extractText(msg.content);
|
|
148
|
+
if (text && !text.startsWith('<system') && !text.startsWith('{')) {
|
|
149
|
+
return text;
|
|
302
150
|
}
|
|
303
|
-
// Skip system, file-history-snapshot, etc.
|
|
304
151
|
}
|
|
305
152
|
}
|
|
306
|
-
catch { /* transcript read failed
|
|
307
|
-
return
|
|
153
|
+
catch { /* transcript read failed */ }
|
|
154
|
+
return '';
|
|
308
155
|
}
|
|
309
|
-
/**
|
|
310
|
-
*
|
|
311
|
-
* the
|
|
312
|
-
|
|
313
|
-
|
|
156
|
+
/** Detect action in the last assistant turn — reads transcript for tool_use blocks.
|
|
157
|
+
* A single turn spans multiple requestIds (text → tool_use → tool_result → text → ...).
|
|
158
|
+
* Walk backwards through the transcript; stop at a real user message (non-tool_result). */
|
|
159
|
+
function detectAction(transcriptPath, agentProse) {
|
|
160
|
+
if (/```/.test(agentProse))
|
|
161
|
+
return true;
|
|
314
162
|
if (!transcriptPath)
|
|
315
|
-
return
|
|
163
|
+
return false;
|
|
316
164
|
try {
|
|
317
165
|
const raw = fs.readFileSync(transcriptPath, 'utf-8');
|
|
318
166
|
const lines = raw.split('\n');
|
|
319
|
-
let streak = 0;
|
|
320
|
-
let turnHasAction = false;
|
|
321
|
-
let turnTextLength = 0;
|
|
322
|
-
let inTurn = false;
|
|
323
167
|
for (let i = lines.length - 1; i >= 0; i--) {
|
|
324
168
|
const line = lines[i].trim();
|
|
325
169
|
if (!line)
|
|
@@ -333,54 +177,25 @@ function computeTranscriptStress(transcriptPath) {
|
|
|
333
177
|
}
|
|
334
178
|
const msg = (entry.message || entry);
|
|
335
179
|
const role = (msg.role || entry.type || '');
|
|
336
|
-
if (role === '
|
|
337
|
-
inTurn = true;
|
|
180
|
+
if (role === 'user') {
|
|
338
181
|
if (Array.isArray(msg.content)) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
turnTextLength += b.text.split(/\s+/).filter(Boolean).length;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
182
|
+
const isToolResult = msg.content
|
|
183
|
+
.some(b => b?.type === 'tool_result');
|
|
184
|
+
if (isToolResult)
|
|
185
|
+
continue;
|
|
346
186
|
}
|
|
187
|
+
break;
|
|
347
188
|
}
|
|
348
|
-
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
continue; // still same turn
|
|
353
|
-
// Real user message = turn boundary
|
|
354
|
-
if (inTurn) {
|
|
355
|
-
if (turnHasAction)
|
|
356
|
-
break; // action resets — stop counting
|
|
357
|
-
if (turnTextLength >= STRESS_MIN_WORDS)
|
|
358
|
-
streak++; // substantial prose
|
|
359
|
-
// short prose: neutral — don't increment, don't reset
|
|
189
|
+
if (role === 'assistant' && Array.isArray(msg.content)) {
|
|
190
|
+
for (const b of msg.content) {
|
|
191
|
+
if (b?.type === 'tool_use')
|
|
192
|
+
return true;
|
|
360
193
|
}
|
|
361
|
-
turnHasAction = false;
|
|
362
|
-
turnTextLength = 0;
|
|
363
|
-
inTurn = false;
|
|
364
194
|
}
|
|
365
195
|
}
|
|
366
|
-
return streak;
|
|
367
|
-
}
|
|
368
|
-
catch {
|
|
369
|
-
return 0;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
/** Parse <entity-summary> tags from agent response. */
|
|
373
|
-
function parseEntitySummaries(text) {
|
|
374
|
-
const results = [];
|
|
375
|
-
const regex = /<entity-summary\s+name="([^"]+)">([\s\S]*?)<\/entity-summary>/g;
|
|
376
|
-
let match;
|
|
377
|
-
while ((match = regex.exec(text)) !== null) {
|
|
378
|
-
const name = match[1].trim();
|
|
379
|
-
const summary = match[2].trim();
|
|
380
|
-
if (name && summary)
|
|
381
|
-
results.push({ name, summary });
|
|
382
196
|
}
|
|
383
|
-
|
|
197
|
+
catch { /* transcript read failed — fall through */ }
|
|
198
|
+
return false;
|
|
384
199
|
}
|
|
385
200
|
/** Parse <profile-summary> tag from agent response. Returns null if not found. */
|
|
386
201
|
function parseProfileSummary(text) {
|
|
@@ -399,23 +214,7 @@ function parseProfileDetails(text) {
|
|
|
399
214
|
}
|
|
400
215
|
return results;
|
|
401
216
|
}
|
|
402
|
-
/**
|
|
403
|
-
function parseFeedbackTag(text) {
|
|
404
|
-
const match = text.match(/<mfb>([\s\S]*?)<\/mfb>/);
|
|
405
|
-
if (!match)
|
|
406
|
-
return null;
|
|
407
|
-
try {
|
|
408
|
-
const parsed = JSON.parse(match[1]);
|
|
409
|
-
if (!Array.isArray(parsed))
|
|
410
|
-
return null;
|
|
411
|
-
// Filter out template entries (s=0) and invalid entries
|
|
412
|
-
return parsed.filter((e) => typeof e.id === 'string' && typeof e.s === 'number' && e.s >= 1 && e.s <= 5);
|
|
413
|
-
}
|
|
414
|
-
catch {
|
|
415
|
-
return null;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
/** Stop — pair cached prompt with agent response, store the turn + ship feedback. */
|
|
217
|
+
/** Stop — store the turn. Reads user message from transcript (no prior caching). */
|
|
419
218
|
async function store(input) {
|
|
420
219
|
const cwd = input.cwd || process.cwd();
|
|
421
220
|
const cfg = getConfig(cwd);
|
|
@@ -424,14 +223,10 @@ async function store(input) {
|
|
|
424
223
|
const agentProse = input.last_assistant_message || '';
|
|
425
224
|
if (!agentProse)
|
|
426
225
|
return;
|
|
427
|
-
|
|
428
|
-
const
|
|
429
|
-
const
|
|
430
|
-
const sessionId = cached?.sessionId || input.session_id || `hook-${Date.now()}`;
|
|
431
|
-
const profileId = cached?.profileId || path.basename(cwd);
|
|
432
|
-
// Detect action: check transcript for tool_use in last assistant turn, fall back to code blocks
|
|
226
|
+
const userMessage = findLastUserMessage(input.transcript_path);
|
|
227
|
+
const sessionId = input.session_id || `hook-${Date.now()}`;
|
|
228
|
+
const profileId = path.basename(cwd);
|
|
433
229
|
const hasAction = detectAction(input.transcript_path, agentProse);
|
|
434
|
-
// Store the turn memory
|
|
435
230
|
const storePromise = apiCall(`${cfg.apiUrl}/v1/memory/store`, cfg.apiKey, {
|
|
436
231
|
profileId,
|
|
437
232
|
sessionId,
|
|
@@ -440,36 +235,6 @@ async function store(input) {
|
|
|
440
235
|
hasAction,
|
|
441
236
|
crystallization: 'turn',
|
|
442
237
|
});
|
|
443
|
-
// Parse and ship feedback if present
|
|
444
|
-
let feedbackPromise = null;
|
|
445
|
-
if (cached?.injectedMemoryIds && cached.injectedMemoryIds.length > 0) {
|
|
446
|
-
const ratings = parseFeedbackTag(agentProse);
|
|
447
|
-
if (ratings && ratings.length > 0) {
|
|
448
|
-
feedbackPromise = apiCall(`${cfg.apiUrl}/v1/memory/feedback`, cfg.apiKey, {
|
|
449
|
-
ratings: ratings.map(r => ({
|
|
450
|
-
memoryId: r.id,
|
|
451
|
-
relevanceScore: r.s,
|
|
452
|
-
reason: r.r || undefined,
|
|
453
|
-
retrievalScore: cached.memoryScores?.[
|
|
454
|
-
// Resolve short ID to full ID for score lookup
|
|
455
|
-
cached.injectedMemoryIds?.find(full => full.startsWith(r.id)) || r.id],
|
|
456
|
-
})),
|
|
457
|
-
profileId,
|
|
458
|
-
sessionId,
|
|
459
|
-
triggerQuery: cached.prompt,
|
|
460
|
-
retrievalMeta: cached.chainMeta,
|
|
461
|
-
});
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
// Parse and ship entity summaries if present
|
|
465
|
-
let entityPromise = null;
|
|
466
|
-
const entitySummaries = parseEntitySummaries(agentProse);
|
|
467
|
-
if (entitySummaries.length > 0) {
|
|
468
|
-
entityPromise = apiCall(`${cfg.apiUrl}/v1/memory/entities/summarize`, cfg.apiKey, {
|
|
469
|
-
summaries: entitySummaries,
|
|
470
|
-
});
|
|
471
|
-
}
|
|
472
|
-
// Parse and ship profile summary/details if present
|
|
473
238
|
let profilePromise = null;
|
|
474
239
|
const profSummary = parseProfileSummary(agentProse);
|
|
475
240
|
const profDetails = parseProfileDetails(agentProse);
|
|
@@ -480,8 +245,7 @@ async function store(input) {
|
|
|
480
245
|
details: profDetails.length > 0 && !profSummary ? profDetails : undefined,
|
|
481
246
|
});
|
|
482
247
|
}
|
|
483
|
-
|
|
484
|
-
await Promise.all([storePromise, feedbackPromise, entityPromise, profilePromise].filter(Boolean));
|
|
248
|
+
await Promise.all([storePromise, profilePromise].filter(Boolean));
|
|
485
249
|
}
|
|
486
250
|
/** Find the most recently modified plan file in ~/.claude/plans/ */
|
|
487
251
|
function readNewestPlanFile() {
|
|
@@ -496,7 +260,6 @@ function readNewestPlanFile() {
|
|
|
496
260
|
.sort((a, b) => b.mtime - a.mtime);
|
|
497
261
|
if (!files.length)
|
|
498
262
|
return null;
|
|
499
|
-
// Only consider plans modified in the last 60 seconds (freshly written)
|
|
500
263
|
if (Date.now() - files[0].mtime > 60_000)
|
|
501
264
|
return null;
|
|
502
265
|
return fs.readFileSync(files[0].path, 'utf-8');
|
|
@@ -538,9 +301,8 @@ async function signal(input) {
|
|
|
538
301
|
if (toolName === 'ExitPlanMode') {
|
|
539
302
|
const planContent = readNewestPlanFile();
|
|
540
303
|
if (!planContent)
|
|
541
|
-
return;
|
|
304
|
+
return;
|
|
542
305
|
userMessage = '[Plan Approved]';
|
|
543
|
-
// Cap at ~2000 words to avoid oversized payloads
|
|
544
306
|
const words = planContent.split(/\s+/);
|
|
545
307
|
agentProse = words.length > 2000
|
|
546
308
|
? words.slice(0, 2000).join(' ') + '\n\n[truncated]'
|
|
@@ -558,7 +320,7 @@ async function signal(input) {
|
|
|
558
320
|
crystallization = 'decision';
|
|
559
321
|
}
|
|
560
322
|
else {
|
|
561
|
-
return;
|
|
323
|
+
return;
|
|
562
324
|
}
|
|
563
325
|
await apiCall(`${cfg.apiUrl}/v1/memory/store`, cfg.apiKey, {
|
|
564
326
|
profileId,
|
|
@@ -568,16 +330,6 @@ async function signal(input) {
|
|
|
568
330
|
crystallization,
|
|
569
331
|
});
|
|
570
332
|
}
|
|
571
|
-
function extractText(content) {
|
|
572
|
-
if (typeof content === 'string')
|
|
573
|
-
return content.trim();
|
|
574
|
-
if (!Array.isArray(content))
|
|
575
|
-
return '';
|
|
576
|
-
return content
|
|
577
|
-
.filter((b) => b?.type === 'text')
|
|
578
|
-
.map((b) => b.text || '')
|
|
579
|
-
.join('\n').trim();
|
|
580
|
-
}
|
|
581
333
|
function parseTranscript(transcriptPath) {
|
|
582
334
|
const userReqs = [];
|
|
583
335
|
const files = new Set();
|
|
@@ -629,7 +381,6 @@ function parseTranscript(transcriptPath) {
|
|
|
629
381
|
}
|
|
630
382
|
}
|
|
631
383
|
}
|
|
632
|
-
// Deduplicate user requests, keep last 10
|
|
633
384
|
const seen = new Set();
|
|
634
385
|
const uniqueReqs = userReqs.map(r => r.split('\n')[0].slice(0, 150))
|
|
635
386
|
.filter(r => { if (seen.has(r))
|
|
@@ -693,13 +444,11 @@ async function farewell(input) {
|
|
|
693
444
|
const extracted = extractSessionText(input);
|
|
694
445
|
if (!extracted)
|
|
695
446
|
return;
|
|
696
|
-
// Only store to API if content is substantial (skip tiny post-compaction tails)
|
|
697
447
|
if (extracted.rawText.split(/\s+/).length < 30)
|
|
698
448
|
return;
|
|
699
449
|
const cfg = getConfig(extracted.cwd);
|
|
700
450
|
if (!cfg.enabled || !cfg.apiKey)
|
|
701
451
|
return;
|
|
702
|
-
// Fire-and-forget: send request but don't await — survives session teardown
|
|
703
452
|
fetch(`${cfg.apiUrl}/v1/memory/store`, {
|
|
704
453
|
method: 'POST',
|
|
705
454
|
headers: {
|
|
@@ -714,13 +463,12 @@ async function farewell(input) {
|
|
|
714
463
|
crystallization: 'compaction',
|
|
715
464
|
}),
|
|
716
465
|
}).catch(() => { });
|
|
717
|
-
// Brief delay to let the HTTP request body flush to the socket
|
|
718
466
|
await new Promise(resolve => setTimeout(resolve, 300));
|
|
719
467
|
}
|
|
720
468
|
function isOlderThanDays(isoDate, days) {
|
|
721
469
|
return Date.now() - new Date(isoDate).getTime() > days * 24 * 60 * 60 * 1000;
|
|
722
470
|
}
|
|
723
|
-
/** Fetch
|
|
471
|
+
/** Fetch profile + session recap, inject into stdout with memory-tools reminder. */
|
|
724
472
|
async function injectRecap(input, header, footer) {
|
|
725
473
|
const cwd = input.cwd || process.cwd();
|
|
726
474
|
const cfg = getConfig(cwd);
|
|
@@ -731,7 +479,8 @@ async function injectRecap(input, header, footer) {
|
|
|
731
479
|
if (!result?.ok)
|
|
732
480
|
return;
|
|
733
481
|
const parts = [];
|
|
734
|
-
//
|
|
482
|
+
// Memory tools reminder — one line, always. Agent-intent: memory is pull-based.
|
|
483
|
+
parts.push(`[Memory available — search past sessions: \`greprag recall "<query>" --profile ${profileId}\`. Pending messages: \`greprag inbox --profile ${profileId}\`.]`);
|
|
735
484
|
const pSummary = result.profileSummary;
|
|
736
485
|
const pDetails = result.profileDetails || [];
|
|
737
486
|
if (pSummary || pDetails.length > 0) {
|
|
@@ -741,7 +490,6 @@ async function injectRecap(input, header, footer) {
|
|
|
741
490
|
for (const d of pDetails)
|
|
742
491
|
parts.push(`- ${d}`);
|
|
743
492
|
}
|
|
744
|
-
// Profile signal — request consolidation when stale, always accept details
|
|
745
493
|
const stale = !pSummary
|
|
746
494
|
|| pDetails.length > 5
|
|
747
495
|
|| (result.profileSummaryUpdatedAt && isOlderThanDays(result.profileSummaryUpdatedAt, 7));
|
|
@@ -750,7 +498,6 @@ async function injectRecap(input, header, footer) {
|
|
|
750
498
|
signals.push('<profile-summary>what this project is, what we work on, current state</profile-summary>');
|
|
751
499
|
signals.push('<profile-detail>new fact about this project</profile-detail>');
|
|
752
500
|
parts.push(`[greprag-profile: ${signals.join(' + ')}]`);
|
|
753
|
-
// Session recap block
|
|
754
501
|
if (result.found && result.enrichedSummary) {
|
|
755
502
|
parts.push(header);
|
|
756
503
|
parts.push(result.enrichedSummary);
|
|
@@ -760,11 +507,11 @@ async function injectRecap(input, header, footer) {
|
|
|
760
507
|
process.stdout.write(parts.join('\n') + '\n');
|
|
761
508
|
}
|
|
762
509
|
}
|
|
763
|
-
/** SessionStart:startup — inject last session
|
|
510
|
+
/** SessionStart:startup|clear — inject last session summary + memory reminder. */
|
|
764
511
|
async function recap(input) {
|
|
765
512
|
await injectRecap(input, '--- LAST SESSION (auto-generated) ---', '--- END LAST SESSION ---');
|
|
766
513
|
}
|
|
767
|
-
/** SessionStart:compact recovery —
|
|
514
|
+
/** SessionStart:compact recovery — reinject cached session summary + memory reminder. */
|
|
768
515
|
async function recover(input) {
|
|
769
516
|
await injectRecap(input, '--- SESSION RECOVERY (auto-generated) ---', '--- END SESSION RECOVERY ---');
|
|
770
517
|
}
|
|
@@ -785,7 +532,6 @@ async function handoff(input) {
|
|
|
785
532
|
}
|
|
786
533
|
const profileId = path.basename(cwd);
|
|
787
534
|
const sessionId = input.session_id || `handoff-${Date.now()}`;
|
|
788
|
-
// Fire-and-forget: send request but don't await the response
|
|
789
535
|
fetch(`${cfg.apiUrl}/v1/memory/store`, {
|
|
790
536
|
method: 'POST',
|
|
791
537
|
headers: {
|
|
@@ -799,12 +545,11 @@ async function handoff(input) {
|
|
|
799
545
|
agentProse: message,
|
|
800
546
|
crystallization: 'compaction',
|
|
801
547
|
}),
|
|
802
|
-
}).catch(() => { });
|
|
548
|
+
}).catch(() => { });
|
|
803
549
|
process.stdout.write('Handoff stored. Next session will pick it up via recap.\n');
|
|
804
|
-
// Brief delay to let the HTTP request body flush to the socket
|
|
805
550
|
await new Promise(resolve => setTimeout(resolve, 300));
|
|
806
551
|
}
|
|
807
|
-
const SUBCOMMANDS = ['
|
|
552
|
+
const SUBCOMMANDS = ['store', 'signal', 'summary', 'recover', 'farewell', 'recap', 'handoff'];
|
|
808
553
|
async function main() {
|
|
809
554
|
const subcommand = process.argv[2];
|
|
810
555
|
if (!subcommand || !SUBCOMMANDS.includes(subcommand)) {
|
|
@@ -824,13 +569,7 @@ async function main() {
|
|
|
824
569
|
catch {
|
|
825
570
|
process.exit(0);
|
|
826
571
|
}
|
|
827
|
-
if (subcommand === '
|
|
828
|
-
await compact(input);
|
|
829
|
-
}
|
|
830
|
-
else if (subcommand === 'retrieve') {
|
|
831
|
-
await retrieve(input);
|
|
832
|
-
}
|
|
833
|
-
else if (subcommand === 'signal') {
|
|
572
|
+
if (subcommand === 'signal') {
|
|
834
573
|
await signal(input);
|
|
835
574
|
}
|
|
836
575
|
else if (subcommand === 'summary') {
|
|
@@ -854,6 +593,6 @@ async function main() {
|
|
|
854
593
|
}
|
|
855
594
|
main().catch(err => {
|
|
856
595
|
process.stderr.write(`[greprag-hook] Fatal: ${err.message}\n`);
|
|
857
|
-
process.exit(0);
|
|
596
|
+
process.exit(0);
|
|
858
597
|
});
|
|
859
598
|
//# sourceMappingURL=hook.js.map
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":";;AACA;;;;;;;4DAO4D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5D,2CAA6B;AAC7B,uCAAyB;AACzB,uCAAyB;AAEzB,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAExD,SAAS,SAAS;IAChB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe;QACtD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;QACzC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,MAAM;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,SAAS,EAAE,CAAC;IACZ,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,SAAS,EAAE,CAAC;IACZ,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACvD,CAAC;AAYD,SAAS,WAAW,CAAC,IAAgB;IACnC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,CAAC;gBAAE,SAAS;YACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAClE,IAAI,OAAO;QAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,GAAW,EAAE,MAAc,EAAE,IAA6B;IAE1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsC,CAAC;AACxD,CAAC;AAcD;;8DAE8D;AAC9D,KAAK,UAAU,OAAO,CAAC,KAAgB;IACrC,OAAO,CAAC,WAAW,CAAC,CAAC;IAErB,qCAAqC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,KAAK,UAAU,QAAQ,CAAC,KAAgB;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IAExC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAErC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE3C,oEAAoE;IACpE,oEAAoE;IACpE,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEpE,uDAAuD;IACvD,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE;YACtD,KAAK,EAAE,MAAM;YACb,SAAS;YACT,SAAS;YACT,YAAY;SACb,CAAC;QACF,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE;YAC5D,SAAS;YACT,SAAS;SACV,CAAC;KACH,CAAC,CAAC;IAEH,gDAAgD;IAChD,IAAI,iBAAuC,CAAC;IAC5C,IAAI,YAAgD,CAAC;IACrD,IAAI,SAA8C,CAAC;IACnD,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,8CAA8C;IAC9C,MAAM,OAAO,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC,CAAE,WAAuC,CAAC,KAAe,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QACjD,OAAO,IAAI,IAAI,OAAO,YAAY,CAAC,mCAAmC,SAAS,KAAK,CAAC;IACvF,CAAC;IAED,iCAAiC;IACjC,IAAI,aAAa,GAAoE,EAAE,CAAC;IACxF,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,MAAM,CAAC,MAAiC,CAAC;QAEnD,mEAAmE;QACnE,MAAM,QAAQ,GAAG,CAAC,EAAE,aAAiD,CAAC;QACtE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,aAAa,GAAG,QAAQ,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAChC,IAAI,CAAC,CAAC,OAAO;oBAAE,OAAO,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBAClD,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,cAAc,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACrD,CAAC;QAED,0DAA0D;QAC1D,SAAS,GAAG,CAAC,CAAC,SAAgD,CAAC;QAE/D,IAAK,CAAC,EAAE,UAAqB,GAAG,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,CAAC,cAAwB,CAAC;YACtC,WAAW,GAAG,IAAI,CAAC;YACnB,iBAAiB,GAAG,CAAC,CAAC,gBAAwC,CAAC;YAC/D,YAAY,GAAG,CAAC,CAAC,YAAkD,CAAC;QACtE,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kCAAkC;IAClC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzG,MAAM,MAAM,GAAG,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,aAAa,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,0EAA0E,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjI,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,eAAe,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IACjD,CAAC;IAED,qFAAqF;IACrF,0FAA0F;IAC1F,MAAM,eAAe,GAAG,MAAM,EAAE,EAAE,IAAK,MAAM,CAAC,MAAkC,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3G,IAAI,eAAe,IAAI,WAAW,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxF,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC;QACnC,OAAO,IAAI,kCAAkC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,uCAAuC,QAAQ,0MAA0M,CAAC;IACjV,CAAC;IAED,uDAAuD;IACvD,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC,kBAAkB,EAAE;gBAClB,aAAa,EAAE,kBAAkB;gBACjC,iBAAiB,EAAE,OAAO;aAC3B;SACF,CAAC,CAAC,CAAC;IACN,CAAC;AACH,CAAC;AAED;;2FAE2F;AAC3F,SAAS,YAAY,CAAC,cAAkC,EAAE,UAAkB;IAC1E,8CAA8C;IAC9C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,iEAAiE;IACjE,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,KAA8B,CAAC;YACnC,IAAI,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAA4B,CAAC;YAChE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAW,CAAC;YAEtD,0EAA0E;YAC1E,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/B,MAAM,YAAY,GAAI,GAAG,CAAC,OAA0C;yBACjE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC;oBACxC,IAAI,YAAY;wBAAE,SAAS,CAAC,2BAA2B;gBACzD,CAAC;gBACD,MAAM,CAAC,kCAAkC;YAC3C,CAAC;YAED,sCAAsC;YACtC,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAyC,EAAE,CAAC;oBAC9D,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU;wBAAE,OAAO,IAAI,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;iEAEiE;AACjE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,SAAS,uBAAuB,CAAC,cAAkC;IACjE,IAAI,CAAC,cAAc;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,KAA8B,CAAC;YACnC,IAAI,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAA4B,CAAC;YAChE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAW,CAAC;YAEtD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAyC,EAAE,CAAC;wBAC9D,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU;4BAAE,aAAa,GAAG,IAAI,CAAC;wBACjD,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACrD,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;wBAC/D,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBAC5C,GAAG,CAAC,OAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC;gBACvF,IAAI,YAAY;oBAAE,SAAS,CAAC,kBAAkB;gBAE9C,oCAAoC;gBACpC,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,aAAa;wBAAE,MAAM,CAAC,gCAAgC;oBAC1D,IAAI,cAAc,IAAI,gBAAgB;wBAAE,MAAM,EAAE,CAAC,CAAC,oBAAoB;oBACtE,sDAAsD;gBACxD,CAAC;gBACD,aAAa,GAAG,KAAK,CAAC;gBACtB,cAAc,GAAG,CAAC,CAAC;gBACnB,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACvB,CAAC;AAED,uDAAuD;AACvD,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAA6C,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,IAAI,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC3E,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,iFAAiF;AACjF,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,+CAA+C,CAAC;IAC9D,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,wDAAwD;QACxD,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAA0B,EAAE,EAAE,CAC7B,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9E,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,KAAK,CAAC,KAAgB;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IAExC,MAAM,UAAU,GAAG,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,gDAAgD;IAChD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAChF,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE1D,gGAAgG;IAChG,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAElE,wBAAwB;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;QACxE,SAAS;QACT,SAAS;QACT,WAAW;QACX,UAAU;QACV,SAAS;QACT,eAAe,EAAE,MAAM;KACxB,CAAC,CAAC;IAEH,qCAAqC;IACrC,IAAI,eAAe,GAA4B,IAAI,CAAC;IACpD,IAAI,MAAM,EAAE,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,eAAe,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE;gBACxE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACzB,QAAQ,EAAE,CAAC,CAAC,EAAE;oBACd,cAAc,EAAE,CAAC,CAAC,CAAC;oBACnB,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;oBACxB,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE;oBACnC,+CAA+C;oBAC/C,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CACtE;iBACF,CAAC,CAAC;gBACH,SAAS;gBACT,SAAS;gBACT,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,aAAa,EAAE,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,aAAa,GAA4B,IAAI,CAAC;IAClD,MAAM,eAAe,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACzD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,aAAa,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,+BAA+B,EAAE,GAAG,CAAC,MAAM,EAAE;YAChF,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,IAAI,cAAc,GAA4B,IAAI,CAAC;IACnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,cAAc,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,4BAA4B,EAAE,GAAG,CAAC,MAAM,EAAE;YAC9E,SAAS;YACT,OAAO,EAAE,WAAW,IAAI,SAAS;YACjC,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,oEAAoE;AACpE,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAC/B,wEAAwE;QACxE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM;YAAE,OAAO,IAAI,CAAC;QACtD,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAS,qBAAqB,CAC5B,SAAkC,EAClC,YAAqC;IAErC,MAAM,SAAS,GAAG,SAAS,CAAC,SAAuD,CAAC;IACpF,MAAM,OAAO,GAAG,YAAY,CAAC,OAA6C,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAkB,IAAI,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,MAAM,CAAC,KAAgB;IACpC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IAExC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,eAAe,GAAW,EAAE,CAAC;IAEjC,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,qBAAqB;QAC/C,WAAW,GAAG,iBAAiB,CAAC;QAChC,iDAAiD;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI;YAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB;YACpD,CAAC,CAAC,WAAW,CAAC;QAChB,eAAe,GAAG,MAAM,CAAC;IAC3B,CAAC;SAAM,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,WAAW,GAAG,SAAS,CAAC;QACxB,UAAU,GAAG,EAAE,CAAC;QAChB,eAAe,GAAG,UAAU,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,uBAAuB;IACjC,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;QACzD,SAAS;QACT,SAAS;QACT,WAAW;QACX,UAAU;QACV,eAAe;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB;IACnC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;SAC1D,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAE,CAAC,CAAC,IAAe,IAAI,EAAE,CAAC;SAC7D,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,cAAsB;IAC7C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QAAC,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAE9E,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,IAAI,KAA8B,CAAC;QACnC,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS;QAAC,CAAC;QACrD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAA4B,CAAC;QAChE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,CAAW,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAW,CAAC;QAEhD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBACzE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;gBAChF,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,KAAK,GAAG,CAA4B,CAAC;oBAC3C,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU;wBAAE,SAAS;oBACzC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA2B,CAAC;oBAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ;wBAAE,SAAS;oBACtC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS;wBACpE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,OAAO;wBACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,0CAA0C;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACxF,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAC/B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAS,kBAAkB,CAAC,KAAgB;IAC1C,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,iEAAiE;AACjE,KAAK,UAAU,mBAAmB,CAChC,KAAgB,EAAE,OAAe,EAAE,GAAW,EAAE,OAAe,EAAE,KAAa;IAE9E,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;YACzD,SAAS,EAAE,OAAO;YAClB,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YACnD,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,OAAO;YACnB,eAAe,EAAE,YAAY;SAC9B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,KAAK,UAAU,OAAO,CAAC,KAAgB;IACrC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAC7G,CAAC;AAED,sFAAsF;AACtF,KAAK,UAAU,QAAQ,CAAC,KAAgB;IACtC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,gFAAgF;IAChF,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO;IAEvD,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IAExC,4EAA4E;IAC5E,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,kBAAkB,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,SAAS,EAAE,SAAS,CAAC,OAAO;YAC5B,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;YACnD,WAAW,EAAE,eAAe;YAC5B,UAAU,EAAE,SAAS,CAAC,OAAO;YAC7B,eAAe,EAAE,YAAY;SAC9B,CAAC;KACH,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEnB,+DAA+D;IAC/D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY;IACpD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC/E,CAAC;AAED,sFAAsF;AACtF,KAAK,UAAU,WAAW,CAAC,KAAgB,EAAE,MAAc,EAAE,MAAc;IACzE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IAExC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,MAAM,EAAE,EAAE;QAAE,OAAO;IAExB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,wBAAwB;IACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,cAA+B,CAAC;IACxD,MAAM,QAAQ,GAAI,MAAM,CAAC,cAAkC,IAAI,EAAE,CAAC;IAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,2EAA2E;IAC3E,MAAM,KAAK,GAAG,CAAC,QAAQ;WAClB,QAAQ,CAAC,MAAM,GAAG,CAAC;WACnB,CAAC,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,MAAM,CAAC,uBAAiC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtG,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAC;IACnH,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAExD,sBAAsB;IACtB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAyB,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,KAAK,CAAC,KAAgB;IACnC,MAAM,WAAW,CAAC,KAAK,EAAE,uCAAuC,EAAE,0BAA0B,CAAC,CAAC;AAChG,CAAC;AACD,kFAAkF;AAClF,KAAK,UAAU,OAAO,CAAC,KAAgB;IACrC,MAAM,WAAW,CAAC,KAAK,EAAE,2CAA2C,EAAE,8BAA8B,CAAC,CAAC;AACxG,CAAC;AAED;;kEAEkE;AAClE,KAAK,UAAU,OAAO,CAAC,KAAgB;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAI,KAAiC,CAAC,OAAiB,IAAI,EAAE,CAAC;IAC3E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAE9D,6DAA6D;IAC7D,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,kBAAkB,EAAE;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,eAAe,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE;YACvC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,SAAS;YACT,SAAS;YACT,WAAW,EAAE,eAAe;YAC5B,UAAU,EAAE,OAAO;YACnB,eAAe,EAAE,YAAY;SAC9B,CAAC;KACH,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,gDAAgD;IAEpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAElF,+DAA+D;IAC/D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAErH,KAAK,UAAU,IAAI;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,GAAc,EAAE,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;SAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;AAC3C,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|