@jacques-ai/server 0.0.7-alpha.1
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/config/config.d.ts +34 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +32 -0
- package/dist/config/config.js.map +1 -0
- package/dist/connection/applescript.d.ts +46 -0
- package/dist/connection/applescript.d.ts.map +1 -0
- package/dist/connection/applescript.js +62 -0
- package/dist/connection/applescript.js.map +1 -0
- package/dist/connection/applescript.test.d.ts +5 -0
- package/dist/connection/applescript.test.d.ts.map +1 -0
- package/dist/connection/applescript.test.js +64 -0
- package/dist/connection/applescript.test.js.map +1 -0
- package/dist/connection/constants.d.ts +88 -0
- package/dist/connection/constants.d.ts.map +1 -0
- package/dist/connection/constants.js +110 -0
- package/dist/connection/constants.js.map +1 -0
- package/dist/connection/git-info.d.ts +30 -0
- package/dist/connection/git-info.d.ts.map +1 -0
- package/dist/connection/git-info.js +52 -0
- package/dist/connection/git-info.js.map +1 -0
- package/dist/connection/git-info.test.d.ts +5 -0
- package/dist/connection/git-info.test.d.ts.map +1 -0
- package/dist/connection/git-info.test.js +35 -0
- package/dist/connection/git-info.test.js.map +1 -0
- package/dist/connection/index.d.ts +19 -0
- package/dist/connection/index.d.ts.map +1 -0
- package/dist/connection/index.js +36 -0
- package/dist/connection/index.js.map +1 -0
- package/dist/connection/process-detection.d.ts +58 -0
- package/dist/connection/process-detection.d.ts.map +1 -0
- package/dist/connection/process-detection.js +239 -0
- package/dist/connection/process-detection.js.map +1 -0
- package/dist/connection/process-detection.test.d.ts +5 -0
- package/dist/connection/process-detection.test.d.ts.map +1 -0
- package/dist/connection/process-detection.test.js +43 -0
- package/dist/connection/process-detection.test.js.map +1 -0
- package/dist/connection/session-discovery.d.ts +55 -0
- package/dist/connection/session-discovery.d.ts.map +1 -0
- package/dist/connection/session-discovery.js +311 -0
- package/dist/connection/session-discovery.js.map +1 -0
- package/dist/connection/terminal-key.d.ts +126 -0
- package/dist/connection/terminal-key.d.ts.map +1 -0
- package/dist/connection/terminal-key.js +271 -0
- package/dist/connection/terminal-key.js.map +1 -0
- package/dist/connection/terminal-key.test.d.ts +5 -0
- package/dist/connection/terminal-key.test.d.ts.map +1 -0
- package/dist/connection/terminal-key.test.js +221 -0
- package/dist/connection/terminal-key.test.js.map +1 -0
- package/dist/connection/worktree.d.ts +114 -0
- package/dist/connection/worktree.d.ts.map +1 -0
- package/dist/connection/worktree.js +320 -0
- package/dist/connection/worktree.js.map +1 -0
- package/dist/connection/worktree.test.d.ts +5 -0
- package/dist/connection/worktree.test.d.ts.map +1 -0
- package/dist/connection/worktree.test.js +113 -0
- package/dist/connection/worktree.test.js.map +1 -0
- package/dist/focus-watcher.d.ts +51 -0
- package/dist/focus-watcher.d.ts.map +1 -0
- package/dist/focus-watcher.js +169 -0
- package/dist/focus-watcher.js.map +1 -0
- package/dist/handlers/event-handler.d.ts +93 -0
- package/dist/handlers/event-handler.d.ts.map +1 -0
- package/dist/handlers/event-handler.js +196 -0
- package/dist/handlers/event-handler.js.map +1 -0
- package/dist/handlers/event-handler.test.d.ts +5 -0
- package/dist/handlers/event-handler.test.d.ts.map +1 -0
- package/dist/handlers/event-handler.test.js +305 -0
- package/dist/handlers/event-handler.test.js.map +1 -0
- package/dist/handlers/session-handler.d.ts +23 -0
- package/dist/handlers/session-handler.d.ts.map +1 -0
- package/dist/handlers/session-handler.js +104 -0
- package/dist/handlers/session-handler.js.map +1 -0
- package/dist/handlers/session-handler.test.d.ts +5 -0
- package/dist/handlers/session-handler.test.d.ts.map +1 -0
- package/dist/handlers/session-handler.test.js +89 -0
- package/dist/handlers/session-handler.test.js.map +1 -0
- package/dist/handlers/settings-handler.d.ts +32 -0
- package/dist/handlers/settings-handler.d.ts.map +1 -0
- package/dist/handlers/settings-handler.js +127 -0
- package/dist/handlers/settings-handler.js.map +1 -0
- package/dist/handlers/settings-handler.test.d.ts +5 -0
- package/dist/handlers/settings-handler.test.d.ts.map +1 -0
- package/dist/handlers/settings-handler.test.js +105 -0
- package/dist/handlers/settings-handler.test.js.map +1 -0
- package/dist/handlers/window-handler.d.ts +30 -0
- package/dist/handlers/window-handler.d.ts.map +1 -0
- package/dist/handlers/window-handler.js +486 -0
- package/dist/handlers/window-handler.js.map +1 -0
- package/dist/handlers/window-handler.test.d.ts +8 -0
- package/dist/handlers/window-handler.test.d.ts.map +1 -0
- package/dist/handlers/window-handler.test.js +167 -0
- package/dist/handlers/window-handler.test.js.map +1 -0
- package/dist/handlers/worktree-handler.d.ts +28 -0
- package/dist/handlers/worktree-handler.d.ts.map +1 -0
- package/dist/handlers/worktree-handler.js +268 -0
- package/dist/handlers/worktree-handler.js.map +1 -0
- package/dist/handlers/worktree-handler.test.d.ts +8 -0
- package/dist/handlers/worktree-handler.test.d.ts.map +1 -0
- package/dist/handlers/worktree-handler.test.js +118 -0
- package/dist/handlers/worktree-handler.test.js.map +1 -0
- package/dist/handlers/ws-utils.d.ts +12 -0
- package/dist/handlers/ws-utils.d.ts.map +1 -0
- package/dist/handlers/ws-utils.js +16 -0
- package/dist/handlers/ws-utils.js.map +1 -0
- package/dist/http-api.d.ts +26 -0
- package/dist/http-api.d.ts.map +1 -0
- package/dist/http-api.js +148 -0
- package/dist/http-api.js.map +1 -0
- package/dist/logger.d.ts +42 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +147 -0
- package/dist/logger.js.map +1 -0
- package/dist/logging/logger-factory.d.ts +51 -0
- package/dist/logging/logger-factory.d.ts.map +1 -0
- package/dist/logging/logger-factory.js +59 -0
- package/dist/logging/logger-factory.js.map +1 -0
- package/dist/mcp/search-tool.d.ts +65 -0
- package/dist/mcp/search-tool.d.ts.map +1 -0
- package/dist/mcp/search-tool.js +176 -0
- package/dist/mcp/search-tool.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +152 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/process-scanner.d.ts +96 -0
- package/dist/process-scanner.d.ts.map +1 -0
- package/dist/process-scanner.js +194 -0
- package/dist/process-scanner.js.map +1 -0
- package/dist/routes/__tests__/archive-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/archive-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/archive-routes.test.js +158 -0
- package/dist/routes/__tests__/archive-routes.test.js.map +1 -0
- package/dist/routes/__tests__/config-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/config-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/config-routes.test.js +112 -0
- package/dist/routes/__tests__/config-routes.test.js.map +1 -0
- package/dist/routes/__tests__/http-utils.test.d.ts +5 -0
- package/dist/routes/__tests__/http-utils.test.d.ts.map +1 -0
- package/dist/routes/__tests__/http-utils.test.js +102 -0
- package/dist/routes/__tests__/http-utils.test.js.map +1 -0
- package/dist/routes/__tests__/notification-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/notification-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/notification-routes.test.js +91 -0
- package/dist/routes/__tests__/notification-routes.test.js.map +1 -0
- package/dist/routes/__tests__/project-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/project-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/project-routes.test.js +168 -0
- package/dist/routes/__tests__/project-routes.test.js.map +1 -0
- package/dist/routes/__tests__/session-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/session-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/session-routes.test.js +198 -0
- package/dist/routes/__tests__/session-routes.test.js.map +1 -0
- package/dist/routes/__tests__/source-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/source-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/source-routes.test.js +142 -0
- package/dist/routes/__tests__/source-routes.test.js.map +1 -0
- package/dist/routes/__tests__/sync-routes.test.d.ts +5 -0
- package/dist/routes/__tests__/sync-routes.test.d.ts.map +1 -0
- package/dist/routes/__tests__/sync-routes.test.js +77 -0
- package/dist/routes/__tests__/sync-routes.test.js.map +1 -0
- package/dist/routes/__tests__/test-helpers.d.ts +47 -0
- package/dist/routes/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/routes/__tests__/test-helpers.js +97 -0
- package/dist/routes/__tests__/test-helpers.js.map +1 -0
- package/dist/routes/archive-routes.d.ts +15 -0
- package/dist/routes/archive-routes.d.ts.map +1 -0
- package/dist/routes/archive-routes.js +181 -0
- package/dist/routes/archive-routes.js.map +1 -0
- package/dist/routes/claude-routes.d.ts +9 -0
- package/dist/routes/claude-routes.d.ts.map +1 -0
- package/dist/routes/claude-routes.js +47 -0
- package/dist/routes/claude-routes.js.map +1 -0
- package/dist/routes/config-routes.d.ts +9 -0
- package/dist/routes/config-routes.d.ts.map +1 -0
- package/dist/routes/config-routes.js +56 -0
- package/dist/routes/config-routes.js.map +1 -0
- package/dist/routes/config-store.d.ts +41 -0
- package/dist/routes/config-store.d.ts.map +1 -0
- package/dist/routes/config-store.js +52 -0
- package/dist/routes/config-store.js.map +1 -0
- package/dist/routes/http-utils.d.ts +32 -0
- package/dist/routes/http-utils.d.ts.map +1 -0
- package/dist/routes/http-utils.js +123 -0
- package/dist/routes/http-utils.js.map +1 -0
- package/dist/routes/index.d.ts +19 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +17 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/notification-routes.d.ts +10 -0
- package/dist/routes/notification-routes.d.ts.map +1 -0
- package/dist/routes/notification-routes.js +64 -0
- package/dist/routes/notification-routes.js.map +1 -0
- package/dist/routes/project-routes.d.ts +22 -0
- package/dist/routes/project-routes.d.ts.map +1 -0
- package/dist/routes/project-routes.js +415 -0
- package/dist/routes/project-routes.js.map +1 -0
- package/dist/routes/session-routes.d.ts +18 -0
- package/dist/routes/session-routes.d.ts.map +1 -0
- package/dist/routes/session-routes.js +609 -0
- package/dist/routes/session-routes.js.map +1 -0
- package/dist/routes/source-routes.d.ts +12 -0
- package/dist/routes/source-routes.d.ts.map +1 -0
- package/dist/routes/source-routes.js +119 -0
- package/dist/routes/source-routes.js.map +1 -0
- package/dist/routes/static-routes.d.ts +12 -0
- package/dist/routes/static-routes.d.ts.map +1 -0
- package/dist/routes/static-routes.js +52 -0
- package/dist/routes/static-routes.js.map +1 -0
- package/dist/routes/sync-routes.d.ts +9 -0
- package/dist/routes/sync-routes.d.ts.map +1 -0
- package/dist/routes/sync-routes.js +78 -0
- package/dist/routes/sync-routes.js.map +1 -0
- package/dist/routes/tile-routes.d.ts +10 -0
- package/dist/routes/tile-routes.d.ts.map +1 -0
- package/dist/routes/tile-routes.js +108 -0
- package/dist/routes/tile-routes.js.map +1 -0
- package/dist/routes/types.d.ts +17 -0
- package/dist/routes/types.d.ts.map +1 -0
- package/dist/routes/types.js +5 -0
- package/dist/routes/types.js.map +1 -0
- package/dist/routes/usage-routes.d.ts +8 -0
- package/dist/routes/usage-routes.d.ts.map +1 -0
- package/dist/routes/usage-routes.js +18 -0
- package/dist/routes/usage-routes.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +173 -0
- package/dist/server.js.map +1 -0
- package/dist/services/branch-divergence-service.d.ts +48 -0
- package/dist/services/branch-divergence-service.d.ts.map +1 -0
- package/dist/services/branch-divergence-service.js +156 -0
- package/dist/services/branch-divergence-service.js.map +1 -0
- package/dist/services/broadcast-service.d.ts +68 -0
- package/dist/services/broadcast-service.d.ts.map +1 -0
- package/dist/services/broadcast-service.js +78 -0
- package/dist/services/broadcast-service.js.map +1 -0
- package/dist/services/broadcast-service.test.d.ts +5 -0
- package/dist/services/broadcast-service.test.d.ts.map +1 -0
- package/dist/services/broadcast-service.test.js +130 -0
- package/dist/services/broadcast-service.test.js.map +1 -0
- package/dist/services/chat-service.d.ts +72 -0
- package/dist/services/chat-service.d.ts.map +1 -0
- package/dist/services/chat-service.js +342 -0
- package/dist/services/chat-service.js.map +1 -0
- package/dist/services/chat-system-prompt.d.ts +14 -0
- package/dist/services/chat-system-prompt.d.ts.map +1 -0
- package/dist/services/chat-system-prompt.js +68 -0
- package/dist/services/chat-system-prompt.js.map +1 -0
- package/dist/services/notification-service.d.ts +115 -0
- package/dist/services/notification-service.d.ts.map +1 -0
- package/dist/services/notification-service.js +424 -0
- package/dist/services/notification-service.js.map +1 -0
- package/dist/services/notification-service.test.d.ts +5 -0
- package/dist/services/notification-service.test.d.ts.map +1 -0
- package/dist/services/notification-service.test.js +918 -0
- package/dist/services/notification-service.test.js.map +1 -0
- package/dist/session/cleanup-service.d.ts +51 -0
- package/dist/session/cleanup-service.d.ts.map +1 -0
- package/dist/session/cleanup-service.js +98 -0
- package/dist/session/cleanup-service.js.map +1 -0
- package/dist/session/cleanup-service.test.d.ts +5 -0
- package/dist/session/cleanup-service.test.d.ts.map +1 -0
- package/dist/session/cleanup-service.test.js +121 -0
- package/dist/session/cleanup-service.test.js.map +1 -0
- package/dist/session/process-monitor.d.ts +79 -0
- package/dist/session/process-monitor.d.ts.map +1 -0
- package/dist/session/process-monitor.js +270 -0
- package/dist/session/process-monitor.js.map +1 -0
- package/dist/session/process-monitor.test.d.ts +5 -0
- package/dist/session/process-monitor.test.d.ts.map +1 -0
- package/dist/session/process-monitor.test.js +367 -0
- package/dist/session/process-monitor.test.js.map +1 -0
- package/dist/session/session-factory.d.ts +29 -0
- package/dist/session/session-factory.d.ts.map +1 -0
- package/dist/session/session-factory.js +123 -0
- package/dist/session/session-factory.js.map +1 -0
- package/dist/session/session-factory.test.d.ts +5 -0
- package/dist/session/session-factory.test.d.ts.map +1 -0
- package/dist/session/session-factory.test.js +299 -0
- package/dist/session/session-factory.test.js.map +1 -0
- package/dist/session-registry.d.ts +168 -0
- package/dist/session-registry.d.ts.map +1 -0
- package/dist/session-registry.js +626 -0
- package/dist/session-registry.js.map +1 -0
- package/dist/session-registry.test.d.ts +5 -0
- package/dist/session-registry.test.d.ts.map +1 -0
- package/dist/session-registry.test.js +582 -0
- package/dist/session-registry.test.js.map +1 -0
- package/dist/start-server.d.ts +31 -0
- package/dist/start-server.d.ts.map +1 -0
- package/dist/start-server.js +408 -0
- package/dist/start-server.js.map +1 -0
- package/dist/terminal-activator.d.ts +29 -0
- package/dist/terminal-activator.d.ts.map +1 -0
- package/dist/terminal-activator.js +264 -0
- package/dist/terminal-activator.js.map +1 -0
- package/dist/terminal-activator.test.d.ts +9 -0
- package/dist/terminal-activator.test.d.ts.map +1 -0
- package/dist/terminal-activator.test.js +95 -0
- package/dist/terminal-activator.test.js.map +1 -0
- package/dist/terminal-launcher.d.ts +51 -0
- package/dist/terminal-launcher.d.ts.map +1 -0
- package/dist/terminal-launcher.js +298 -0
- package/dist/terminal-launcher.js.map +1 -0
- package/dist/terminal-launcher.test.d.ts +8 -0
- package/dist/terminal-launcher.test.d.ts.map +1 -0
- package/dist/terminal-launcher.test.js +222 -0
- package/dist/terminal-launcher.test.js.map +1 -0
- package/dist/types.d.ts +796 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -0
- package/dist/unix-socket.d.ts +68 -0
- package/dist/unix-socket.d.ts.map +1 -0
- package/dist/unix-socket.js +180 -0
- package/dist/unix-socket.js.map +1 -0
- package/dist/usage-limits.d.ts +13 -0
- package/dist/usage-limits.d.ts.map +1 -0
- package/dist/usage-limits.js +112 -0
- package/dist/usage-limits.js.map +1 -0
- package/dist/watchers/handoff-watcher.d.ts +74 -0
- package/dist/watchers/handoff-watcher.d.ts.map +1 -0
- package/dist/watchers/handoff-watcher.js +124 -0
- package/dist/watchers/handoff-watcher.js.map +1 -0
- package/dist/watchers/handoff-watcher.test.d.ts +8 -0
- package/dist/watchers/handoff-watcher.test.d.ts.map +1 -0
- package/dist/watchers/handoff-watcher.test.js +142 -0
- package/dist/watchers/handoff-watcher.test.js.map +1 -0
- package/dist/websocket.d.ts +107 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +268 -0
- package/dist/websocket.js.map +1 -0
- package/dist/window-manager/index.d.ts +28 -0
- package/dist/window-manager/index.d.ts.map +1 -0
- package/dist/window-manager/index.js +56 -0
- package/dist/window-manager/index.js.map +1 -0
- package/dist/window-manager/layouts.d.ts +42 -0
- package/dist/window-manager/layouts.d.ts.map +1 -0
- package/dist/window-manager/layouts.js +133 -0
- package/dist/window-manager/layouts.js.map +1 -0
- package/dist/window-manager/linux-manager.d.ts +45 -0
- package/dist/window-manager/linux-manager.d.ts.map +1 -0
- package/dist/window-manager/linux-manager.js +299 -0
- package/dist/window-manager/linux-manager.js.map +1 -0
- package/dist/window-manager/macos-manager.d.ts +103 -0
- package/dist/window-manager/macos-manager.d.ts.map +1 -0
- package/dist/window-manager/macos-manager.js +637 -0
- package/dist/window-manager/macos-manager.js.map +1 -0
- package/dist/window-manager/smart-layouts.d.ts +116 -0
- package/dist/window-manager/smart-layouts.d.ts.map +1 -0
- package/dist/window-manager/smart-layouts.js +188 -0
- package/dist/window-manager/smart-layouts.js.map +1 -0
- package/dist/window-manager/smart-layouts.test.d.ts +8 -0
- package/dist/window-manager/smart-layouts.test.d.ts.map +1 -0
- package/dist/window-manager/smart-layouts.test.js +311 -0
- package/dist/window-manager/smart-layouts.test.js.map +1 -0
- package/dist/window-manager/tile-state.d.ts +87 -0
- package/dist/window-manager/tile-state.d.ts.map +1 -0
- package/dist/window-manager/tile-state.js +136 -0
- package/dist/window-manager/tile-state.js.map +1 -0
- package/dist/window-manager/tile-state.test.d.ts +8 -0
- package/dist/window-manager/tile-state.test.d.ts.map +1 -0
- package/dist/window-manager/tile-state.test.js +179 -0
- package/dist/window-manager/tile-state.test.js.map +1 -0
- package/dist/window-manager/types.d.ts +104 -0
- package/dist/window-manager/types.d.ts.map +1 -0
- package/dist/window-manager/types.js +8 -0
- package/dist/window-manager/types.js.map +1 -0
- package/dist/window-manager/windows-manager.d.ts +44 -0
- package/dist/window-manager/windows-manager.d.ts.map +1 -0
- package/dist/window-manager/windows-manager.js +281 -0
- package/dist/window-manager/windows-manager.js.map +1 -0
- package/dist/window-manager/windows-manager.test.d.ts +8 -0
- package/dist/window-manager/windows-manager.test.d.ts.map +1 -0
- package/dist/window-manager/windows-manager.test.js +183 -0
- package/dist/window-manager/windows-manager.test.js.map +1 -0
- package/gui-dist/assets/index-BmYIHRYe.js +142 -0
- package/gui-dist/assets/index-D_N5RH8O.css +1 -0
- package/gui-dist/assets/vendor-icons-ByXNrcwf.js +336 -0
- package/gui-dist/assets/vendor-markdown-DWPYwU1x.js +22 -0
- package/gui-dist/assets/vendor-react-CpILBTDM.js +59 -0
- package/gui-dist/index.html +17 -0
- package/gui-dist/jacsub.png +0 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-service.test.js","sourceRoot":"","sources":["../../src/services/notification-service.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,kDAAkD;AAClD,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE;QACP,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;KAClB;CACF,CAAC,CAAC,CAAC;AAEJ,mCAAmC;AACnC,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAA6B,CAAC;AAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAA8C,CAAC;AAC/E,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAA0D,CAAC;AAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEhC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,gBAAgB;IAC9B,aAAa,EAAE,iBAAiB;IAChC,SAAS,EAAE,aAAa;CACzB,CAAC,CAAC,CAAC;AAEJ,qCAAqC;AACrC,8DAA8D;AAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAsD,CAAC;AACjF,8DAA8D;AAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAqC,CAAC;AACjE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAyE,CAAC;AACpG,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAmC,CAAC;AAE9D,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACjB,CAAC,CAAC,CAAC;AAEJ,2CAA2C;AAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,EAA4B,CAAC;AAC3D,MAAM,sBAAsB,GAAG,IAAI,CAAC,EAAE,EAA2G,CAAC;AAElJ,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClD,UAAU,EAAE,cAAc;IAC1B,kBAAkB,EAAE,sBAAsB;CAC3C,CAAC,CAAC,CAAC;AAEJ,qBAAqB;AACrB,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAC1E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,kCAAkC;AAClC,SAAS,iBAAiB,CAAC,YAA8B,EAAE;IACzD,OAAO;QACL,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE,cAAc;QAC7B,eAAe,EAAE,IAAI;QACrB,GAAG,EAAE,eAAe;QACpB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,kBAAkB;QAChC,MAAM,EAAE,SAAS;QACjB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;QACzB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;QACzB,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;QACjB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,OAAiD,CAAC;IACtD,IAAI,cAA0C,CAAC;IAC/C,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG,EAAE,CAAC;QACpB,iCAAiC;QACjC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/C,aAAa,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,QAAQ,CAAC,MAAoB,CAAC,SAAS,EAAE,CAAC;QAE3C,mCAAmC;QACnC,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,WAAW,CAAC,SAAS,EAAE,CAAC;QACxB,cAAc,CAAC,SAAS,EAAE,CAAC;QAC3B,sBAAsB,CAAC,SAAS,EAAE,CAAC;QAEnC,OAAO,GAAG,IAAI,mBAAmB,CAAC;YAChC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5C,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACrC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC9C,aAAa,EAAE;oBACb,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC9B,uBAAuB,EAAE,OAAO;iBACjC;aACF,CAAC,CAAC,CAAC;YAEJ,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;gBACnB,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,0EAA0E;YAC1E,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;gBACrC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAS;aACtC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,8EAA8E;YAC9E,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,sDAAsD;YACtD,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,4DAA4D;YAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,CAAC;oBACvB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,2CAA2C;YAC3C,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,SAAS,GAAG,iBAAiB,CAAC;gBAClC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,wDAAwD;YACxD,MAAM,SAAS,GAAG,iBAAiB,CAAC;gBAClC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,oBAAoB;YACpB,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,MAAM;YACvE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAI,MAAM;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,OAAO,CAAC,cAAc,CAAC;gBACrB,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAS;aACtC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,kDAAkD;YAClD,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAS,EAAE,CAAC,CAAC;YAEnE,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,6EAA6E;YAC7E,+BAA+B;YAC/B,OAAO,CAAC,iBAAiB,CAAC;gBACxB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,2CAA2C;YAC3C,OAAO,CAAC,iBAAiB,CAAC;gBACxB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1C,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAC1C,MAAM,CAAC,gBAAgB,CAAC;gBACtB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBACzB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC5B,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,CAAC,OAAO,CAAC;aACnB,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CACrB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,sBAAsB;YACtB,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,gCAAgC;YAChC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,wBAAwB;YACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;YACpF,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,aAAa;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YACH,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7B,0DAA0D;YAC1D,MAAM,UAAU,GAAI,QAAQ,CAAC,MAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAkD,CAAC;YAChF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE3B,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,aAAa;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YACH,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7B,MAAM,UAAU,GAAI,QAAQ,CAAC,MAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAkD,CAAC;YAChF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAE5B,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,aAAa;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YACH,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAS,EAAE,CAAC,CAAC;YAE9E,kCAAkC;YAClC,GAAG,CAAC,iBAAiB,CAAC;gBACpB,EAAE,EAAE,eAAe;gBACnB,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;YAEH,MAAM,UAAU,GAAI,QAAQ,CAAC,MAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAkD,CAAC;YAChF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAE3B,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,aAAa;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YACH,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7B,MAAM,UAAU,GAAI,QAAQ,CAAC,MAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAkD,CAAC;YAChF,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAExB,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACtD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,aAAa;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YACH,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7B,MAAM,UAAU,GAAI,QAAQ,CAAC,MAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAkD,CAAC;YAEhF,mBAAmB;YACnB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACvD,MAAM,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;YAE9D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YAEjD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,OAAO,CAAC,cAAc,CAAC;gBACrB,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAS;aACnC,CAAC,CAAC;YAEH,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACjD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,mEAAmE;YACnE,kFAAkF;YAClF,kCAAkC;YAClC,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,kDAAkD;YAClD,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAS,EAAE,CAAC,CAAC;YAEnE,OAAO,CAAC,iBAAiB,CAAC;gBACxB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,OAAO;gBACpB,iBAAiB,EAAE,kBAAkB;aACtC,CAAC,CAAC;YAEH,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,OAAO,CAAC,iBAAiB,CAAC;gBACxB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,OAAO,CAAC,iBAAiB,CAAC;gBACxB,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,OAAO;gBACd,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;YAEH,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,kDAAkD,CAAC,CAAC;YAE3F,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,2CAA2C;YAC3C,MAAM,SAAS,GAAG,iBAAiB,CAAC;gBAClC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACnC,qCAAqC;YACrC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;YAE1C,qBAAqB;YACrB,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YAE3C,kDAAkD;YAClD,MAAM,QAAQ,GAAG,iBAAiB,CAAC;gBACjC,UAAU,EAAE,gBAAgB;gBAC5B,aAAa,EAAE,WAAW;gBAC1B,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAClC,gDAAgD;YAChD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;YAC5C,iDAAiD;YACjD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,4DAA4D;YAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,iBAAiB,CAAC;oBACxB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,SAAS,EAAE,aAAa;oBACxB,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,OAAO;iBACrB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;YAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAElE,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC9C,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBACvD,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;gBACpC,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBACxB,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,8BAA8B,CAAC;gBAC/D,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,SAAS,EAAE,gBAAgB;aAC5B,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;YAC/E,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC;gBAClC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC5C,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC,CAAC;oBAC5C,OAAO,EAAE,YAAY;oBACrB,UAAU,EAAE,WAAW;oBACvB,aAAa,EAAE,cAAc;iBAC9B,CAAC,CAAC,CAAC,SAAS;gBACb,MAAM,EAAE,YAAY;aACrB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAE7B,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAChF,MAAM,OAAO,GAAG,iBAAiB,CAAC;gBAChC,eAAe,EAAE;oBACf,eAAe,EAAE,EAAE;oBACnB,oBAAoB,EAAE,EAAE;oBACxB,kBAAkB,EAAE,MAAM;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjC,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;YACnE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,UAAU,CAAC,GAAG,EAAE;YACd,kDAAkD;YAClD,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAS,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,SAAS,cAAc;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE;qBAC5E;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,SAAS,eAAe;YACtB,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;qBACnC;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,gCAAgC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAC1D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,gFAAgF;YAChF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAE1C,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAChD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAC1D,+EAA+E;YAC/E,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,8CAA8C;YAC9C,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,+EAA+E;YAC/E,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG;gBACZ,cAAc,EAAE;gBAChB,gBAAgB;gBAChB,cAAc,EAAE;gBAChB,UAAU;gBACV,cAAc,EAAE;aACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,wDAAwD;YACxD,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/B,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,UAAU,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAc,EAAE,EAAE;gBAC/C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1D,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACrC,sBAAsB,CAAC,eAAe,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE;iBAChE;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;YAEnE,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACrC,sBAAsB,CAAC,eAAe,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE;iBAChE;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;YACnE,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,4BAA4B;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;gBACnE,0CAA0C;gBAC1C,uFAAuF;gBACvF,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACrC,sBAAsB,CAAC,eAAe,CAAC;gBACrC,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;YACnE,4CAA4C;YAC5C,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;YAEnE,sEAAsE;YACtE,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACrC,sBAAsB,CAAC,eAAe,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE;oBACxD,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE;iBACtD;aACF,CAAC,CAAC;YAEH,yEAAyE;YACzE,wEAAwE;YACxE,qEAAqE;YACrE,oEAAoE;YACpE,wEAAwE;YACxE,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;YAEnE,yEAAyE;YACzE,8DAA8D;YAC9D,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAC;YAElD,MAAM,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAW,CAAC,CAAC;YACtD,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,kCAAkC;YAClC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACrC,sBAAsB,CAAC,eAAe,CAAC;gBACrC,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;aACtE,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YACnE,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEvC,iBAAiB;YACjB,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAEzC,mEAAmE;YACnE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBACnE,MAAM,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC;YAClF,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleanup Service
|
|
3
|
+
*
|
|
4
|
+
* Manages recently-ended session tracking and periodic stale session cleanup.
|
|
5
|
+
* Extracted from SessionRegistry to separate cleanup/TTL concerns
|
|
6
|
+
* from session state management.
|
|
7
|
+
*/
|
|
8
|
+
import type { Session } from '../types.js';
|
|
9
|
+
import type { Logger } from '../logging/logger-factory.js';
|
|
10
|
+
export interface CleanupServiceCallbacks {
|
|
11
|
+
getAllSessions: () => [string, Session][];
|
|
12
|
+
removeSession: (sessionId: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface CleanupServiceOptions {
|
|
15
|
+
callbacks: CleanupServiceCallbacks;
|
|
16
|
+
logger?: Logger;
|
|
17
|
+
}
|
|
18
|
+
export declare class CleanupService {
|
|
19
|
+
private callbacks;
|
|
20
|
+
private cleanupInterval;
|
|
21
|
+
private logger;
|
|
22
|
+
private recentlyEndedSessions;
|
|
23
|
+
constructor(options: CleanupServiceOptions);
|
|
24
|
+
private get log();
|
|
25
|
+
/**
|
|
26
|
+
* Record a session as recently ended to prevent re-registration.
|
|
27
|
+
*/
|
|
28
|
+
markRecentlyEnded(sessionId: string): void;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a session was recently ended.
|
|
31
|
+
* Returns true if the session ended within the TTL window.
|
|
32
|
+
*/
|
|
33
|
+
wasRecentlyEnded(sessionId: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Clean up expired entries from the recently-ended sessions map.
|
|
36
|
+
*/
|
|
37
|
+
private cleanupRecentlyEnded;
|
|
38
|
+
/**
|
|
39
|
+
* Start periodic cleanup of stale sessions.
|
|
40
|
+
*/
|
|
41
|
+
startCleanup(maxIdleMinutes?: number): void;
|
|
42
|
+
/**
|
|
43
|
+
* Stop periodic cleanup.
|
|
44
|
+
*/
|
|
45
|
+
stopCleanup(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Clear all recently-ended entries (for testing/reset).
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=cleanup-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-service.d.ts","sourceRoot":"","sources":["../../src/session/cleanup-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAO3D,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,qBAAqB,CAA6B;gBAE9C,OAAO,EAAE,qBAAqB;IAK1C,OAAO,KAAK,GAAG,GAAgD;IAE/D;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ5C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,YAAY,CAAC,cAAc,GAAE,MAAW,GAAG,IAAI;IA+B/C;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleanup Service
|
|
3
|
+
*
|
|
4
|
+
* Manages recently-ended session tracking and periodic stale session cleanup.
|
|
5
|
+
* Extracted from SessionRegistry to separate cleanup/TTL concerns
|
|
6
|
+
* from session state management.
|
|
7
|
+
*/
|
|
8
|
+
import { createLogger } from '../logging/logger-factory.js';
|
|
9
|
+
import { RECENTLY_ENDED_TTL_MS, CLEANUP_INTERVAL_MS, } from '../connection/constants.js';
|
|
10
|
+
export class CleanupService {
|
|
11
|
+
callbacks;
|
|
12
|
+
cleanupInterval = null;
|
|
13
|
+
logger;
|
|
14
|
+
// Track recently ended sessions to prevent re-registration
|
|
15
|
+
recentlyEndedSessions = new Map();
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.callbacks = options.callbacks;
|
|
18
|
+
this.logger = options.logger ?? createLogger({ silent: true });
|
|
19
|
+
}
|
|
20
|
+
get log() { return this.logger.log.bind(this.logger); }
|
|
21
|
+
/**
|
|
22
|
+
* Record a session as recently ended to prevent re-registration.
|
|
23
|
+
*/
|
|
24
|
+
markRecentlyEnded(sessionId) {
|
|
25
|
+
this.recentlyEndedSessions.set(sessionId, Date.now());
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if a session was recently ended.
|
|
29
|
+
* Returns true if the session ended within the TTL window.
|
|
30
|
+
*/
|
|
31
|
+
wasRecentlyEnded(sessionId) {
|
|
32
|
+
const endedAt = this.recentlyEndedSessions.get(sessionId);
|
|
33
|
+
if (endedAt && Date.now() - endedAt < RECENTLY_ENDED_TTL_MS) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Clean up expired entries from the recently-ended sessions map.
|
|
40
|
+
*/
|
|
41
|
+
cleanupRecentlyEnded() {
|
|
42
|
+
const now = Date.now();
|
|
43
|
+
let cleanedCount = 0;
|
|
44
|
+
for (const [id, timestamp] of this.recentlyEndedSessions) {
|
|
45
|
+
if (now - timestamp > RECENTLY_ENDED_TTL_MS) {
|
|
46
|
+
this.recentlyEndedSessions.delete(id);
|
|
47
|
+
cleanedCount++;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (cleanedCount > 0) {
|
|
51
|
+
this.log(`[Registry] Cleaned up ${cleanedCount} expired recently-ended session entries`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Start periodic cleanup of stale sessions.
|
|
56
|
+
*/
|
|
57
|
+
startCleanup(maxIdleMinutes = 60) {
|
|
58
|
+
if (this.cleanupInterval) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const runCleanup = () => {
|
|
62
|
+
const cutoff = Date.now() - (maxIdleMinutes * 60 * 1000);
|
|
63
|
+
const staleSessionIds = [];
|
|
64
|
+
for (const [id, session] of this.callbacks.getAllSessions()) {
|
|
65
|
+
if (session.status === 'idle' && session.last_activity < cutoff) {
|
|
66
|
+
staleSessionIds.push(id);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const id of staleSessionIds) {
|
|
70
|
+
this.log(`[Registry] Cleaning up stale session: ${id}`);
|
|
71
|
+
this.callbacks.removeSession(id);
|
|
72
|
+
}
|
|
73
|
+
if (staleSessionIds.length > 0) {
|
|
74
|
+
this.log(`[Registry] Cleaned up ${staleSessionIds.length} stale session(s)`);
|
|
75
|
+
}
|
|
76
|
+
this.cleanupRecentlyEnded();
|
|
77
|
+
};
|
|
78
|
+
this.cleanupInterval = setInterval(runCleanup, CLEANUP_INTERVAL_MS);
|
|
79
|
+
this.log(`[Registry] Stale session cleanup started (threshold: ${maxIdleMinutes} minutes)`);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Stop periodic cleanup.
|
|
83
|
+
*/
|
|
84
|
+
stopCleanup() {
|
|
85
|
+
if (this.cleanupInterval) {
|
|
86
|
+
clearInterval(this.cleanupInterval);
|
|
87
|
+
this.cleanupInterval = null;
|
|
88
|
+
this.log('[Registry] Stale session cleanup stopped');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Clear all recently-ended entries (for testing/reset).
|
|
93
|
+
*/
|
|
94
|
+
clear() {
|
|
95
|
+
this.recentlyEndedSessions.clear();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=cleanup-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-service.js","sourceRoot":"","sources":["../../src/session/cleanup-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-service.test.d.ts","sourceRoot":"","sources":["../../src/session/cleanup-service.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleanup Service Tests
|
|
3
|
+
*/
|
|
4
|
+
import { jest } from '@jest/globals';
|
|
5
|
+
import { CleanupService } from './cleanup-service.js';
|
|
6
|
+
import { createLogger } from '../logging/logger-factory.js';
|
|
7
|
+
function makeSession(overrides) {
|
|
8
|
+
return {
|
|
9
|
+
source: 'claude_code',
|
|
10
|
+
session_title: null,
|
|
11
|
+
transcript_path: null,
|
|
12
|
+
cwd: '/test',
|
|
13
|
+
project: 'test',
|
|
14
|
+
model: null,
|
|
15
|
+
workspace: null,
|
|
16
|
+
terminal: null,
|
|
17
|
+
terminal_key: 'TTY:/dev/ttys001',
|
|
18
|
+
status: 'active',
|
|
19
|
+
last_activity: Date.now(),
|
|
20
|
+
registered_at: Date.now(),
|
|
21
|
+
context_metrics: null,
|
|
22
|
+
autocompact: null,
|
|
23
|
+
last_tool_name: null,
|
|
24
|
+
...overrides,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
describe('CleanupService', () => {
|
|
28
|
+
let service;
|
|
29
|
+
let sessions;
|
|
30
|
+
let removedSessionIds;
|
|
31
|
+
const silentLogger = createLogger({ silent: true });
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
sessions = new Map();
|
|
34
|
+
removedSessionIds = [];
|
|
35
|
+
jest.useFakeTimers();
|
|
36
|
+
const callbacks = {
|
|
37
|
+
getAllSessions: () => Array.from(sessions.entries()),
|
|
38
|
+
removeSession: (id) => {
|
|
39
|
+
sessions.delete(id);
|
|
40
|
+
removedSessionIds.push(id);
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
service = new CleanupService({ callbacks, logger: silentLogger });
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
service.stopCleanup();
|
|
47
|
+
jest.useRealTimers();
|
|
48
|
+
});
|
|
49
|
+
describe('recently ended tracking', () => {
|
|
50
|
+
it('should report recently ended session within TTL', () => {
|
|
51
|
+
service.markRecentlyEnded('sess-1');
|
|
52
|
+
expect(service.wasRecentlyEnded('sess-1')).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
it('should report false for unknown session', () => {
|
|
55
|
+
expect(service.wasRecentlyEnded('unknown')).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it('should expire after TTL', () => {
|
|
58
|
+
service.markRecentlyEnded('sess-1');
|
|
59
|
+
// Advance past the 30-second TTL
|
|
60
|
+
jest.advanceTimersByTime(31_000);
|
|
61
|
+
expect(service.wasRecentlyEnded('sess-1')).toBe(false);
|
|
62
|
+
});
|
|
63
|
+
it('should clear all entries on clear()', () => {
|
|
64
|
+
service.markRecentlyEnded('sess-1');
|
|
65
|
+
service.markRecentlyEnded('sess-2');
|
|
66
|
+
service.clear();
|
|
67
|
+
expect(service.wasRecentlyEnded('sess-1')).toBe(false);
|
|
68
|
+
expect(service.wasRecentlyEnded('sess-2')).toBe(false);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe('startCleanup', () => {
|
|
72
|
+
it('should remove idle sessions past cutoff', () => {
|
|
73
|
+
const oneHourAgo = Date.now() - (61 * 60 * 1000);
|
|
74
|
+
sessions.set('idle-sess', makeSession({
|
|
75
|
+
session_id: 'idle-sess',
|
|
76
|
+
status: 'idle',
|
|
77
|
+
last_activity: oneHourAgo,
|
|
78
|
+
}));
|
|
79
|
+
service.startCleanup(60);
|
|
80
|
+
// Advance to trigger cleanup interval (5 minutes)
|
|
81
|
+
jest.advanceTimersByTime(5 * 60 * 1000);
|
|
82
|
+
expect(removedSessionIds).toContain('idle-sess');
|
|
83
|
+
});
|
|
84
|
+
it('should not remove active sessions', () => {
|
|
85
|
+
sessions.set('active-sess', makeSession({
|
|
86
|
+
session_id: 'active-sess',
|
|
87
|
+
status: 'working',
|
|
88
|
+
last_activity: Date.now() - (2 * 60 * 60 * 1000),
|
|
89
|
+
}));
|
|
90
|
+
service.startCleanup(60);
|
|
91
|
+
jest.advanceTimersByTime(5 * 60 * 1000);
|
|
92
|
+
expect(removedSessionIds).toHaveLength(0);
|
|
93
|
+
});
|
|
94
|
+
it('should not start twice', () => {
|
|
95
|
+
service.startCleanup(60);
|
|
96
|
+
service.startCleanup(60); // Should be a no-op
|
|
97
|
+
sessions.set('idle-sess', makeSession({
|
|
98
|
+
session_id: 'idle-sess',
|
|
99
|
+
status: 'idle',
|
|
100
|
+
last_activity: Date.now() - (61 * 60 * 1000),
|
|
101
|
+
}));
|
|
102
|
+
jest.advanceTimersByTime(5 * 60 * 1000);
|
|
103
|
+
expect(removedSessionIds).toContain('idle-sess');
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe('stopCleanup', () => {
|
|
107
|
+
it('should stop cleanup interval', () => {
|
|
108
|
+
sessions.set('idle-sess', makeSession({
|
|
109
|
+
session_id: 'idle-sess',
|
|
110
|
+
status: 'idle',
|
|
111
|
+
last_activity: Date.now() - (61 * 60 * 1000),
|
|
112
|
+
}));
|
|
113
|
+
service.startCleanup(60);
|
|
114
|
+
service.stopCleanup();
|
|
115
|
+
jest.advanceTimersByTime(5 * 60 * 1000);
|
|
116
|
+
// Should NOT have been removed since cleanup was stopped
|
|
117
|
+
expect(removedSessionIds).toHaveLength(0);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=cleanup-service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup-service.test.js","sourceRoot":"","sources":["../../src/session/cleanup-service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process Monitor
|
|
3
|
+
*
|
|
4
|
+
* Handles process verification, bypass detection, and PID management.
|
|
5
|
+
* Extracted from SessionRegistry to separate process-level concerns
|
|
6
|
+
* from session state management.
|
|
7
|
+
*/
|
|
8
|
+
import type { Session } from '../types.js';
|
|
9
|
+
import type { Logger } from '../logging/logger-factory.js';
|
|
10
|
+
export interface ProcessMonitorCallbacks {
|
|
11
|
+
getSession: (sessionId: string) => Session | undefined;
|
|
12
|
+
getAllSessions: () => [string, Session][];
|
|
13
|
+
removeSession: (sessionId: string) => void;
|
|
14
|
+
}
|
|
15
|
+
export interface ProcessMonitorOptions {
|
|
16
|
+
callbacks: ProcessMonitorCallbacks;
|
|
17
|
+
logger?: Logger;
|
|
18
|
+
}
|
|
19
|
+
export declare class ProcessMonitor {
|
|
20
|
+
private callbacks;
|
|
21
|
+
private processVerifyInterval;
|
|
22
|
+
private logger;
|
|
23
|
+
private pendingBypassCwds;
|
|
24
|
+
constructor(options: ProcessMonitorOptions);
|
|
25
|
+
private get log();
|
|
26
|
+
private get warn();
|
|
27
|
+
/**
|
|
28
|
+
* Get PID for a session from any available source.
|
|
29
|
+
* Priority: terminal_key → session.terminal.terminal_pid
|
|
30
|
+
*/
|
|
31
|
+
getSessionPid(session: Session): number | null;
|
|
32
|
+
/**
|
|
33
|
+
* Store terminal_pid on a session if not already known.
|
|
34
|
+
* When a PID is first stored, checks if the process is running with
|
|
35
|
+
* --dangerously-skip-permissions and marks the session accordingly.
|
|
36
|
+
*/
|
|
37
|
+
storeTerminalPid(session: Session, terminalPid: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Verify sessions are still valid:
|
|
40
|
+
* 1. Process is still running (checks all PID sources)
|
|
41
|
+
* 2. CWD is not in Trash
|
|
42
|
+
* 3. Session is not idle beyond timeout
|
|
43
|
+
* 4. PID-less sessions cross-referenced against running Claude processes
|
|
44
|
+
*/
|
|
45
|
+
verifyProcesses(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Verify PID-less sessions by scanning running Claude processes.
|
|
48
|
+
*
|
|
49
|
+
* For sessions without a PID, we can't use `kill -0`. Instead:
|
|
50
|
+
* 1. Enumerate all running Claude processes
|
|
51
|
+
* 2. Exclude PIDs already claimed by verified-alive sessions
|
|
52
|
+
* 3. Match PID-less sessions to unclaimed processes by CWD
|
|
53
|
+
* 4. If matched: enrich session with PID for future fast verification
|
|
54
|
+
* 5. If unmatched: session is dead, mark for removal
|
|
55
|
+
*/
|
|
56
|
+
private verifyPidlessSessions;
|
|
57
|
+
/**
|
|
58
|
+
* Detect bypass sessions by checking each session's actual process command line.
|
|
59
|
+
*/
|
|
60
|
+
detectBypassSessions(): Promise<string[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Start periodic process verification.
|
|
63
|
+
*/
|
|
64
|
+
startProcessVerification(intervalMs?: number): void;
|
|
65
|
+
/**
|
|
66
|
+
* Stop process verification interval.
|
|
67
|
+
*/
|
|
68
|
+
stopProcessVerification(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Mark a CWD as expecting a bypass session.
|
|
71
|
+
* Auto-expires after 60s.
|
|
72
|
+
*/
|
|
73
|
+
markPendingBypass(cwd: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a CWD has a pending bypass flag, and consume it if so.
|
|
76
|
+
*/
|
|
77
|
+
consumePendingBypass(cwd: string): boolean;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=process-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-monitor.d.ts","sourceRoot":"","sources":["../../src/session/process-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAa3D,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAC;IACvD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,qBAAqB,CAA+B;IAC5D,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,iBAAiB,CAAqB;gBAElC,OAAO,EAAE,qBAAqB;IAK1C,OAAO,KAAK,GAAG,GAAgD;IAC/D,OAAO,KAAK,IAAI,GAAiD;IAEjE;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAW9C;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAmC7D;;;;;;OAMG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDtC;;;;;;;;;OASG;YACW,qBAAqB;IA6DnC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoB/C;;OAEG;IACH,wBAAwB,CAAC,UAAU,GAAE,MAAmC,GAAG,IAAI;IAoB/E;;OAEG;IACH,uBAAuB,IAAI,IAAI;IAO/B;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAQ3C"}
|