agkan 3.17.1 → 3.19.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 (41) hide show
  1. package/dist/board/boardRoutes.d.ts +1 -0
  2. package/dist/board/boardRoutes.d.ts.map +1 -1
  3. package/dist/board/boardRoutes.js +9 -1
  4. package/dist/board/boardRoutes.js.map +1 -1
  5. package/dist/cli/commands/comment/update.d.ts +6 -0
  6. package/dist/cli/commands/comment/update.d.ts.map +1 -0
  7. package/dist/cli/commands/comment/update.js +65 -0
  8. package/dist/cli/commands/comment/update.js.map +1 -0
  9. package/dist/cli/commands/tag/delete.d.ts.map +1 -1
  10. package/dist/cli/commands/tag/delete.js +21 -8
  11. package/dist/cli/commands/tag/delete.js.map +1 -1
  12. package/dist/cli/commands/task/delete.d.ts.map +1 -1
  13. package/dist/cli/commands/task/delete.js +38 -4
  14. package/dist/cli/commands/task/delete.js.map +1 -1
  15. package/dist/cli/commands/task/find.d.ts.map +1 -1
  16. package/dist/cli/commands/task/find.js +19 -2
  17. package/dist/cli/commands/task/find.js.map +1 -1
  18. package/dist/cli/index.js +2 -0
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/hooks/claudeHookSettings.js +4 -4
  21. package/dist/hooks/claudeHookSettings.js.map +1 -1
  22. package/dist/hooks/hook-stop.mjs +84 -16
  23. package/dist/services/TagService.d.ts +14 -2
  24. package/dist/services/TagService.d.ts.map +1 -1
  25. package/dist/services/TagService.js +20 -2
  26. package/dist/services/TagService.js.map +1 -1
  27. package/dist/services/TaskService.d.ts +22 -2
  28. package/dist/services/TaskService.d.ts.map +1 -1
  29. package/dist/services/TaskService.js +27 -2
  30. package/dist/services/TaskService.js.map +1 -1
  31. package/dist/services/index.d.ts +2 -0
  32. package/dist/services/index.d.ts.map +1 -1
  33. package/dist/services/index.js.map +1 -1
  34. package/dist/terminal/PtySessionService.d.ts +4 -0
  35. package/dist/terminal/PtySessionService.d.ts.map +1 -1
  36. package/dist/terminal/PtySessionService.js +282 -0
  37. package/dist/terminal/PtySessionService.js.map +1 -1
  38. package/dist/utils/security.d.ts.map +1 -1
  39. package/dist/utils/security.js +8 -13
  40. package/dist/utils/security.js.map +1 -1
  41. package/package.json +1 -1
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.PtySessionService = void 0;
37
37
  exports.stripAnsi = stripAnsi;
38
+ exports.detectClaudeScreenStatus = detectClaudeScreenStatus;
38
39
  const pty = __importStar(require("node-pty"));
39
40
  const child_process_1 = require("child_process");
40
41
  const errors_1 = require("../errors");
@@ -66,15 +67,226 @@ const PROMPT_FALLBACK_DELAY_MS = 10000;
66
67
  const PROMPT_ENTER_DELAY_MS = 200;
67
68
  const ENTER_RETRY_INTERVAL_MS = 2000;
68
69
  const MAX_ENTER_RETRIES = 3;
70
+ // When stopProcessFromHook's screen-status guard skips termination (screen still looks
71
+ // working/blocked), the Stop hook that triggered the call fires only once per turn and may
72
+ // never fire again if this really was the session's final turn — leaving the PTY process
73
+ // leaked forever with no further signal to clean it up. Re-evaluate the screen status on a
74
+ // delay instead of trusting the single stale snapshot; a "working" screen whose output has
75
+ // been static for this many consecutive checks is treated as a stale frame and force-stopped
76
+ // (see scheduleDeferredHookStop), so a leaked session is never permanent.
77
+ const DEFERRED_HOOK_STOP_INTERVAL_MS = 3000;
78
+ const MAX_STALLED_DEFERRED_HOOK_STOP_CHECKS = 5;
69
79
  const CLAUDE_BUSY_SIGNAL = 'esc to interrupt';
70
80
  const MAX_SNAPSHOT_BYTES = 500_000;
71
81
  const MAX_COMPLETED_SNAPSHOTS = 10;
82
+ const RECENT_SCREEN_LINE_LIMIT = 80;
72
83
  function hasWorkspaceTrustPrompt(text) {
73
84
  return /trust.*folder|Do you trust/i.test(text) && /y\/n|yes.*trust/i.test(text);
74
85
  }
75
86
  function hasClaudeReadySignal(text) {
76
87
  return text.includes('bypass permissions');
77
88
  }
89
+ const OSC_TITLE_PATTERN = /\x1b\](?:0|2);([^\x07\x1b]*)(?:\x07|\x1b\\|$)/y;
90
+ // Returns the payload of the most recent OSC 0/2 "set title" sequence in `text`,
91
+ // or null if there is none. Only the last match is ever needed, so this walks
92
+ // backward from the end of the (up to 500KB) buffer via lastIndexOf instead of
93
+ // running a global regex (matchAll) over the entire buffer to find every match
94
+ // just to discard all but the last one.
95
+ function latestOscTitle(text) {
96
+ let searchEnd = text.length;
97
+ while (searchEnd > 0) {
98
+ const idx = text.lastIndexOf('\x1b]', searchEnd - 1);
99
+ if (idx === -1)
100
+ return null;
101
+ OSC_TITLE_PATTERN.lastIndex = idx;
102
+ const match = OSC_TITLE_PATTERN.exec(text);
103
+ if (match) {
104
+ return match[1] ?? null;
105
+ }
106
+ searchEnd = idx;
107
+ }
108
+ return null;
109
+ }
110
+ const CSI_PATTERN = /^\x1b\[([\x30-\x3F]*)([\x20-\x2F]*)([\x40-\x7E])/;
111
+ const OSC_PATTERN = /^\x1b\][^\x07\x1b]*(?:\x07|\x1b\\|$)/;
112
+ const LONE_ESC_PATTERN = /^\x1b[=>]/;
113
+ function parseCsiParam(raw) {
114
+ const value = parseInt(raw, 10);
115
+ return Number.isNaN(value) ? undefined : value;
116
+ }
117
+ function ensureRow(lines, row) {
118
+ while (lines.length <= row)
119
+ lines.push('');
120
+ }
121
+ function eraseLine(lines, cursor, mode) {
122
+ const line = lines[cursor.row] ?? '';
123
+ if (mode === 1) {
124
+ // Erase from start of line to cursor, inclusive of the cursor position.
125
+ const eraseEnd = Math.min(cursor.col + 1, line.length);
126
+ lines[cursor.row] = ' '.repeat(eraseEnd) + line.slice(eraseEnd);
127
+ }
128
+ else if (mode === 2) {
129
+ // Erase entire line.
130
+ lines[cursor.row] = '';
131
+ }
132
+ else {
133
+ // Erase from cursor to end of line (default).
134
+ lines[cursor.row] = line.slice(0, cursor.col);
135
+ }
136
+ }
137
+ function eraseDisplay(lines, cursor, mode) {
138
+ if (mode === 1) {
139
+ // Erase from start of screen to cursor.
140
+ for (let i = 0; i < cursor.row; i++)
141
+ lines[i] = '';
142
+ eraseLine(lines, cursor, 1);
143
+ }
144
+ else if (mode === 2 || mode === 3) {
145
+ // Erase entire screen (and scrollback for mode 3, which we treat the same).
146
+ for (let i = 0; i < lines.length; i++)
147
+ lines[i] = '';
148
+ }
149
+ else {
150
+ // Erase from cursor to end of screen (default).
151
+ eraseLine(lines, cursor, 0);
152
+ lines.length = cursor.row + 1;
153
+ }
154
+ }
155
+ function applyCsiSequence(lines, cursor, paramStr, final) {
156
+ const n = paramStr.split(';').map(parseCsiParam)[0];
157
+ switch (final) {
158
+ case 'A':
159
+ cursor.row = Math.max(0, cursor.row - (n ?? 1));
160
+ break;
161
+ case 'B':
162
+ cursor.row += n ?? 1;
163
+ ensureRow(lines, cursor.row);
164
+ break;
165
+ case 'K':
166
+ eraseLine(lines, cursor, n);
167
+ break;
168
+ case 'J':
169
+ eraseDisplay(lines, cursor, n);
170
+ break;
171
+ default:
172
+ break;
173
+ }
174
+ }
175
+ // Consumes one escape sequence starting at `text[at]` and returns its length in
176
+ // characters (at least 1, so callers always make progress). Recognized CSI cursor
177
+ // movement (A/B) and erase (K/J) sequences are applied to the virtual screen; all
178
+ // other CSI/OSC/lone-ESC sequences are consumed with no effect, matching stripAnsi.
179
+ function consumeEscapeSequence(text, at, lines, cursor) {
180
+ const rest = text.slice(at);
181
+ const csiMatch = CSI_PATTERN.exec(rest);
182
+ if (csiMatch) {
183
+ const [full, paramStr, , final] = csiMatch;
184
+ applyCsiSequence(lines, cursor, paramStr, final);
185
+ return full.length;
186
+ }
187
+ const oscMatch = OSC_PATTERN.exec(rest);
188
+ if (oscMatch)
189
+ return oscMatch[0].length;
190
+ const loneMatch = LONE_ESC_PATTERN.exec(rest);
191
+ if (loneMatch)
192
+ return loneMatch[0].length;
193
+ // Unrecognized escape byte: drop it alone so we can't get stuck looping.
194
+ return 1;
195
+ }
196
+ function writeChar(lines, cursor, ch) {
197
+ ensureRow(lines, cursor.row);
198
+ const line = lines[cursor.row];
199
+ const padded = line.length < cursor.col ? line + ' '.repeat(cursor.col - line.length) : line;
200
+ lines[cursor.row] = padded.slice(0, cursor.col) + ch + padded.slice(cursor.col + 1);
201
+ cursor.col += 1;
202
+ }
203
+ // Interprets cursor-movement (CUU/CUD) and erase (EL/ED) escape sequences against a
204
+ // virtual line buffer instead of just stripping them. Claude Code's TUI redraws its
205
+ // footer in place by moving the cursor up and erasing the old line(s) rather than
206
+ // emitting a newline, so a naive strip-and-split (the old `recentScreenText`
207
+ // implementation) leaves stale, visually-erased text (e.g. "esc to interrupt")
208
+ // looking like it's still part of the "recent" screen.
209
+ function renderVisibleScreen(text) {
210
+ const lines = [''];
211
+ const cursor = { row: 0, col: 0 };
212
+ let i = 0;
213
+ while (i < text.length) {
214
+ const ch = text[i];
215
+ if (ch === '\x1b') {
216
+ i += consumeEscapeSequence(text, i, lines, cursor);
217
+ continue;
218
+ }
219
+ if (ch === '\r') {
220
+ cursor.col = 0;
221
+ i += 1;
222
+ continue;
223
+ }
224
+ if (ch === '\n') {
225
+ cursor.row += 1;
226
+ cursor.col = 0;
227
+ ensureRow(lines, cursor.row);
228
+ i += 1;
229
+ continue;
230
+ }
231
+ writeChar(lines, cursor, ch);
232
+ i += 1;
233
+ }
234
+ return lines.join('\n');
235
+ }
236
+ function recentScreenText(text) {
237
+ return renderVisibleScreen(text).split('\n').slice(-RECENT_SCREEN_LINE_LIMIT).join('\n');
238
+ }
239
+ const BLOCKED_LINE_PATTERNS = [
240
+ /\benter to select\b/,
241
+ /\besc to cancel\b/,
242
+ /\brun a dynamic workflow\b/,
243
+ /\bdo you want to proceed\b/,
244
+ ];
245
+ // A permission prompt's selection cursor also renders as "❯ 1. Yes", reusing the same
246
+ // glyph as the idle input prompt marker. Without excluding this shape, a permission UI
247
+ // with no trailing hint line (e.g. "Do you want to proceed?\n❯ 1. Yes\n 2. No") would have
248
+ // its lowest ❯-bearing line mistaken for an idle prompt instead of the selection cursor.
249
+ const SELECTION_CURSOR_LINE_PATTERN = /^\s*❯\s*\d+[.)]/;
250
+ function isBlockedLine(line) {
251
+ return BLOCKED_LINE_PATTERNS.some((pattern) => pattern.test(line));
252
+ }
253
+ function isIdlePromptLine(line) {
254
+ return line.includes('❯') && !SELECTION_CURSOR_LINE_PATTERN.test(line);
255
+ }
256
+ function findLastMatchingLineIndex(lines, predicate) {
257
+ for (let i = lines.length - 1; i >= 0; i -= 1) {
258
+ if (predicate(lines[i])) {
259
+ return i;
260
+ }
261
+ }
262
+ return -1;
263
+ }
264
+ function detectClaudeScreenStatus(outputBuffer) {
265
+ const recent = recentScreenText(outputBuffer);
266
+ const normalized = recent.toLowerCase();
267
+ if (normalized.includes(CLAUDE_BUSY_SIGNAL)) {
268
+ return 'working';
269
+ }
270
+ // Blocked words (e.g. "esc to cancel") and the idle prompt marker (❯) can both appear
271
+ // on screen at once: an ordinary answer may mention "Press Esc to cancel" above a fresh
272
+ // idle prompt, while a real permission UI renders its hint words below the prompt's
273
+ // selection cursor. Rather than a fixed precedence, prefer whichever signal is on the
274
+ // lowest (most recently rendered) line.
275
+ const lines = normalized.split('\n');
276
+ const blockedLineIdx = findLastMatchingLineIndex(lines, isBlockedLine);
277
+ const idleLineIdx = findLastMatchingLineIndex(lines, isIdlePromptLine);
278
+ if (blockedLineIdx !== -1 && blockedLineIdx >= idleLineIdx) {
279
+ return 'blocked';
280
+ }
281
+ const title = latestOscTitle(outputBuffer);
282
+ if (title && /^[\u2800-\u28ff] /.test(title)) {
283
+ return 'working';
284
+ }
285
+ if (idleLineIdx !== -1) {
286
+ return 'idle';
287
+ }
288
+ return 'unknown';
289
+ }
78
290
  class PtySessionService {
79
291
  sessions = new Map();
80
292
  completedSnapshots = new Map();
@@ -199,6 +411,7 @@ class PtySessionService {
199
411
  pendingPrompt: prompt,
200
412
  promptTimer: null,
201
413
  enterWatchdogTimer: null,
414
+ deferredHookStopTimer: null,
202
415
  workspaceTrustHandled: false,
203
416
  lastEventsUpdate: 0,
204
417
  };
@@ -273,6 +486,10 @@ class PtySessionService {
273
486
  clearTimeout(info.enterWatchdogTimer);
274
487
  info.enterWatchdogTimer = null;
275
488
  }
489
+ if (info.deferredHookStopTimer !== null) {
490
+ clearTimeout(info.deferredHookStopTimer);
491
+ info.deferredHookStopTimer = null;
492
+ }
276
493
  info.pendingPrompt = null;
277
494
  if (this.db && info.runLogId) {
278
495
  const finishedAt = new Date().toISOString();
@@ -313,6 +530,10 @@ class PtySessionService {
313
530
  clearTimeout(info.enterWatchdogTimer);
314
531
  info.enterWatchdogTimer = null;
315
532
  }
533
+ if (info.deferredHookStopTimer !== null) {
534
+ clearTimeout(info.deferredHookStopTimer);
535
+ info.deferredHookStopTimer = null;
536
+ }
316
537
  info.pendingPrompt = null;
317
538
  // Mark as user-stopped before emitting so synchronous subscribers (e.g. boardRoutes.ts)
318
539
  // observe isUserStopped() === true and skip auto-advancing status on this done event.
@@ -327,6 +548,67 @@ class PtySessionService {
327
548
  this.notifyRunningTasksChange();
328
549
  return true;
329
550
  }
551
+ stopProcessFromHook(taskId) {
552
+ const info = this.sessions.get(taskId);
553
+ if (!info)
554
+ return false;
555
+ const status = detectClaudeScreenStatus(info.outputBuffer);
556
+ if (status === 'working' || status === 'blocked') {
557
+ console.error(`[pty][hook-stop-guard] taskId=${taskId} skipped stopProcess because Claude screen is ${status}`);
558
+ this.scheduleDeferredHookStop(taskId, info, 0, info.outputBuffer);
559
+ return false;
560
+ }
561
+ return this.stopProcess(taskId);
562
+ }
563
+ // Re-evaluates the screen-status guard after a delay instead of trusting the single stale
564
+ // snapshot taken during stopProcessFromHook. This is not an immediate retry (which would
565
+ // observe the same unchanged outputBuffer and reach the same wrong conclusion) — by the
566
+ // time the timer fires, the render has often settled to idle/unknown, in which case we
567
+ // stop right away.
568
+ //
569
+ // If the screen still looks working/blocked, compare the buffer against the snapshot taken
570
+ // at the last check: while output keeps changing, this is genuine in-flight work, so we
571
+ // keep re-evaluating indefinitely and never force-stop it. Only once output has been
572
+ // completely static for MAX_STALLED_DEFERRED_HOOK_STOP_CHECKS consecutive re-evaluations
573
+ // while the screen claims "working" do we force-stop — a working screen with zero output
574
+ // for that long is a stale frame (genuine work always animates the spinner or streams
575
+ // tokens), which means the process is almost certainly a leaked PTY. A `blocked` screen is
576
+ // never force-stopped this way: a permission prompt is legitimately static while it waits
577
+ // for the user, so it just keeps being re-evaluated until it clears (the timer is cleaned
578
+ // up on stopProcess/natural exit regardless).
579
+ scheduleDeferredHookStop(taskId, info, stalledChecks, lastBuffer) {
580
+ if (info.deferredHookStopTimer !== null) {
581
+ // A re-evaluation is already pending for this session; do not stack another one on
582
+ // top of it just because another Stop-hook call skipped again in the meantime.
583
+ return;
584
+ }
585
+ info.deferredHookStopTimer = setTimeout(() => {
586
+ info.deferredHookStopTimer = null;
587
+ // The session may have exited (and a new one for the same taskId started) between
588
+ // scheduling and firing; only act if this exact session is still the live one.
589
+ if (this.sessions.get(taskId) !== info)
590
+ return;
591
+ const status = detectClaudeScreenStatus(info.outputBuffer);
592
+ if (status !== 'working' && status !== 'blocked') {
593
+ console.error(`[pty][hook-stop-guard] taskId=${taskId} deferred re-evaluation found screen ${status}; stopping now`);
594
+ this.stopProcess(taskId);
595
+ return;
596
+ }
597
+ if (info.outputBuffer !== lastBuffer) {
598
+ // Output is still flowing: genuine in-flight work, so reset the stall counter and
599
+ // keep watching rather than ever force-stopping it.
600
+ this.scheduleDeferredHookStop(taskId, info, 0, info.outputBuffer);
601
+ return;
602
+ }
603
+ const next = stalledChecks + 1;
604
+ if (status === 'working' && next >= MAX_STALLED_DEFERRED_HOOK_STOP_CHECKS) {
605
+ console.error(`[pty][hook-stop-guard] taskId=${taskId} still working but stalled with no output after ${MAX_STALLED_DEFERRED_HOOK_STOP_CHECKS} consecutive checks; force-stopping to avoid a leaked session`);
606
+ this.stopProcess(taskId);
607
+ return;
608
+ }
609
+ this.scheduleDeferredHookStop(taskId, info, next, lastBuffer);
610
+ }, DEFERRED_HOOK_STOP_INTERVAL_MS);
611
+ }
330
612
  listRunningTasks() {
331
613
  return Array.from(this.sessions.values()).map((s) => ({ taskId: s.taskId, command: s.command }));
332
614
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PtySessionService.js","sourceRoot":"","sources":["../../src/terminal/PtySessionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PtySessionService.js","sourceRoot":"","sources":["../../src/terminal/PtySessionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,8BAYC;AAiQD,4DA+BC;AAvTD,8CAAgC;AAChC,iDAAyC;AAGzC,sCAA0C;AAC1C,oEAAsE;AACtE,iDAA8C;AAC9C,+EAA4E;AAE5E,yCAA+D;AAE/D,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,CACL,IAAI;QACF,uEAAuE;SACtE,OAAO,CAAC,4CAA4C,EAAE,EAAE,CAAC;QAC1D,oEAAoE;SACnE,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC;QACpD,0CAA0C;SACzC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,oEAAoE;SACnE,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,IAAA,wBAAQ,EAAC,cAAc,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;AACvC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,uFAAuF;AACvF,2FAA2F;AAC3F,yFAAyF;AACzF,2FAA2F;AAC3F,2FAA2F;AAC3F,6FAA6F;AAC7F,0EAA0E;AAC1E,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAC5C,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAChD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAC9C,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAyBpC,SAAS,uBAAuB,CAAC,IAAY;IAC3C,OAAO,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,iBAAiB,GAAG,gDAAgD,CAAC;AAE3E,iFAAiF;AACjF,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,wCAAwC;AACxC,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,iBAAiB,CAAC,SAAS,GAAG,GAAG,CAAC;QAClC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1B,CAAC;QACD,SAAS,GAAG,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,kDAAkD,CAAC;AACvE,MAAM,WAAW,GAAG,sCAAsC,CAAC;AAC3D,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAOrC,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,KAAe,EAAE,GAAW;IAC7C,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,KAAe,EAAE,MAAoB,EAAE,IAAwB;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,wEAAwE;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,qBAAqB;QACrB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,8CAA8C;QAC9C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,MAAoB,EAAE,IAAwB;IACnF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACnD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACpC,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,gDAAgD;QAChD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe,EAAE,MAAoB,EAAE,QAAgB,EAAE,KAAa;IAC9F,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,GAAG;YACN,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,GAAG;YACN,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,GAAG;YACN,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC5B,MAAM;QACR,KAAK,GAAG;YACN,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM;QACR;YACE,MAAM;IACV,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,kFAAkF;AAClF,kFAAkF;AAClF,oFAAoF;AACpF,SAAS,qBAAqB,CAAC,IAAY,EAAE,EAAU,EAAE,KAAe,EAAE,MAAoB;IAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAE5B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,AAAD,EAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;QAC3C,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAExC,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE1C,yEAAyE;IACzE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAAC,KAAe,EAAE,MAAoB,EAAE,EAAU;IAClE,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7F,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACpF,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,oFAAoF;AACpF,oFAAoF;AACpF,kFAAkF;AAClF,6EAA6E;AAC7E,+EAA+E;AAC/E,uDAAuD;AACvD,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,KAAK,GAAa,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAiB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAEhD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,CAAC,IAAI,qBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YACf,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YACf,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,qBAAqB,GAAG;IAC5B,qBAAqB;IACrB,mBAAmB;IACnB,4BAA4B;IAC5B,4BAA4B;CAC7B,CAAC;AAEF,sFAAsF;AACtF,uFAAuF;AACvF,4FAA4F;AAC5F,yFAAyF;AACzF,MAAM,6BAA6B,GAAG,iBAAiB,CAAC;AAExD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAe,EAAE,SAAoC;IACtF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAExC,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sFAAsF;IACtF,wFAAwF;IACxF,oFAAoF;IACpF,sFAAsF;IACtF,wCAAwC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,yBAAyB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEvE,IAAI,cAAc,KAAK,CAAC,CAAC,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,MAAa,iBAAiB;IACpB,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC/C,kBAAkB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACpD,EAAE,CAAwB;IAC1B,6BAA6B,GAAoB,IAAI,GAAG,EAAE,CAAC;IAC3D,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC1C,4BAA4B,GAAmC,IAAI,GAAG,EAAE,CAAC;IACzE,WAAW,CAAgB;IAC3B,qBAAqB,CAA+B;IACpD,mBAAmB,CAAgB;IACnC,gBAAgB,GAAkB,IAAI,CAAC;IAE/C,YAAY,EAA0B,EAAE,OAAkC;QACxE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,OAAO,EAAE,qBAAqB,IAAI,IAAI,CAAC;QACpE,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,IAAI,IAAI,CAAC;QAChE,2EAA2E;QAC3E,6EAA6E;QAC7E,IAAA,yDAA2B,GAAE,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,2BAA2B,CAAC,QAAoB;QAC9C,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC;IACJ,CAAC;IAED,0BAA0B,CAAC,QAAmC;QAC5D,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC;IAED,uBAAuB,CAAC,MAAc,EAAE,YAAoB;QAC1D,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEO,wBAAwB;QAC9B,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,oFAAoF;IACpF,kFAAkF;IAClF,qFAAqF;IACrF,kDAAkD;IAC1C,kBAAkB,CAAC,MAAc,EAAE,IAAiB;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,iFAAiF;QACjF,qFAAqF;QACrF,iFAAiF;QACjF,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO;gBACvC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBACvE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;gBAC9D,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACzE,OAAO;gBACT,CAAC;gBACD,IAAI,QAAQ,IAAI,iBAAiB,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CACX,gCAAgC,MAAM,kCAAkC,iBAAiB,UAAU,CACpG,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,QAAQ,IAAI,CAAC,CAAC;gBACd,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvB,aAAa,EAAE,CAAC;YAClB,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAAc,EAAE,OAAO,GAAG,KAAK,EAAE,KAAc,EAAE,MAAe;QACjG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,sBAAa,CAAC,sBAAsB,MAAM,qBAAqB,CAAC,CAAC;QAC7E,CAAC;QAED,qEAAqE;QACrE,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YACxE,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAA,4CAAuB,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,MAAM,cAAc,GAAG,IAAA,4BAAmB,EAAC,IAAA,mBAAU,GAAE,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,CAAC,CAAC;QAE/E,MAAM,OAAO,GAAG,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEhE,IAAI,UAAoB,CAAC;QACzB,IAAI,CAAC;YACH,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;gBACvC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,gBAAgB;oBACtB,GAAG,OAAO;iBACX;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,6BAA6B,MAAM,YAAY,OAAO,QAAQ,UAAU,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC/H,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;QAED,MAAM,IAAI,GAAgB;YACxB,MAAM;YACN,OAAO;YACP,UAAU;YACV,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,YAAY,EAAE,EAAE;YAChB,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,IAAI,GAAG,EAAE;YAC1B,oBAAoB,EAAE,IAAI,GAAG,EAAE;YAC/B,uBAAuB,EAAE,IAAI,GAAG,EAAE;YAClC,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,IAAI;YACjB,kBAAkB,EAAE,IAAI;YACxB,qBAAqB,EAAE,IAAI;YAC3B,qBAAqB,EAAE,KAAK;YAC5B,gBAAgB,EAAE,CAAC;SACpB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,sEAAsE;QACtE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACjC,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,EAAE,wBAAwB,CAAC,CAAC;QAE7B,UAAU,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YACjC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;YAC1B,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC;YACtC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACnE,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YAED,iEAAiE;YACjE,2EAA2E;YAC3E,4EAA4E;YAC5E,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;oBAC9B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;gBAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9B,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACzB,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gCAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;4BACxC,CAAC;wBACH,CAAC,EAAE,qBAAqB,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAEpD,sEAAsE;YACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC;gBACnE,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;gBAC5B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC;YAE3B,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC9B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBACrC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;gBACxC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACzC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxE,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,uBAAuB,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;gBAC9D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;YAErC,MAAM,SAAS,GAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAEpD,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;YACrC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,wFAAwF;QACxF,sFAAsF;QACtF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,0FAA0F;QAC1F,MAAM,SAAS,GAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,MAAc;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,iCAAiC,MAAM,iDAAiD,MAAM,EAAE,CAAC,CAAC;YAChH,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,0FAA0F;IAC1F,yFAAyF;IACzF,wFAAwF;IACxF,uFAAuF;IACvF,mBAAmB;IACnB,EAAE;IACF,2FAA2F;IAC3F,wFAAwF;IACxF,qFAAqF;IACrF,yFAAyF;IACzF,yFAAyF;IACzF,sFAAsF;IACtF,2FAA2F;IAC3F,0FAA0F;IAC1F,0FAA0F;IAC1F,8CAA8C;IACtC,wBAAwB,CAAC,MAAc,EAAE,IAAiB,EAAE,aAAqB,EAAE,UAAkB;QAC3G,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACxC,mFAAmF;YACnF,+EAA+E;YAC/E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,kFAAkF;YAClF,+EAA+E;YAC/E,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;gBAAE,OAAO;YAE/C,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CACX,iCAAiC,MAAM,wCAAwC,MAAM,gBAAgB,CACtG,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBACrC,kFAAkF;gBAClF,oDAAoD;gBACpD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,aAAa,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,IAAI,qCAAqC,EAAE,CAAC;gBAC1E,OAAO,CAAC,KAAK,CACX,iCAAiC,MAAM,mDAAmD,qCAAqC,+DAA+D,CAC/L,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9F,CAAC;IAED,eAAe,CAAC,MAAc,EAAE,QAA2B;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,GAAG,EAAE,CAAC;oBACR,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,iFAAiF;YACjF,0EAA0E;YAC1E,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,0CAA0C,MAAM,EAAE,EAAE,CAAC,CAAC;YACzF,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,MAAc,EAAE,QAAoB;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;oBACrB,QAAQ,EAAE,CAAC;oBACX,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,MAAc,EAAE,QAAgC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,IAAY,EAAE,IAAY;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,IAAY;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC;YACjC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAwB;SACpD,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AA7bD,8CA6bC"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAapD"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWpD"}
@@ -1,27 +1,22 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isPathSafe = isPathSafe;
7
- const path_1 = __importDefault(require("path"));
8
2
  /**
9
3
  * Security utility functions
10
4
  * Provides path validation and security checks
11
5
  */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isPathSafe = isPathSafe;
12
8
  /**
13
9
  * Check if a file path is safe from path traversal attacks
14
10
  * @param filePath - Path to validate
15
11
  * @returns True if path is safe, false otherwise
16
12
  */
17
13
  function isPathSafe(filePath) {
18
- // Check for path traversal (..)
19
- if (filePath.includes('..')) {
20
- return false;
21
- }
22
- // For additional safety, check the normalized path doesn't contain '..'
23
- const normalizedPath = path_1.default.normalize(filePath);
24
- if (normalizedPath.includes('..')) {
14
+ // Check for path traversal by inspecting path segments, not substrings.
15
+ // This must run against the original path (not path.normalize(filePath)),
16
+ // since normalize collapses 'dir/../file.txt' into 'file.txt' and would
17
+ // hide a traversal segment.
18
+ const segments = filePath.split(/[/\\]/);
19
+ if (segments.includes('..')) {
25
20
  return false;
26
21
  }
27
22
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":";;;;;AAYA,gCAaC;AAzBD,gDAAwB;AAExB;;;GAGG;AAEH;;;;GAIG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACzC,gCAAgC;IAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wEAAwE;IACxE,MAAM,cAAc,GAAG,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,gCAWC;AAhBD;;;;GAIG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACzC,wEAAwE;IACxE,0EAA0E;IAC1E,wEAAwE;IACxE,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agkan",
3
- "version": "3.17.1",
3
+ "version": "3.19.0",
4
4
  "description": "TypeScript-based CLI task management tool with SQLite storage",
5
5
  "main": "dist/cli/index.js",
6
6
  "bin": {