@memberjunction/server 5.40.2 → 5.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentSessions/HostInstance.d.ts +19 -0
- package/dist/agentSessions/HostInstance.d.ts.map +1 -0
- package/dist/agentSessions/HostInstance.js +48 -0
- package/dist/agentSessions/HostInstance.js.map +1 -0
- package/dist/agentSessions/SessionJanitor.d.ts +97 -0
- package/dist/agentSessions/SessionJanitor.d.ts.map +1 -0
- package/dist/agentSessions/SessionJanitor.js +222 -0
- package/dist/agentSessions/SessionJanitor.js.map +1 -0
- package/dist/agentSessions/SessionManager.d.ts +142 -0
- package/dist/agentSessions/SessionManager.d.ts.map +1 -0
- package/dist/agentSessions/SessionManager.js +308 -0
- package/dist/agentSessions/SessionManager.js.map +1 -0
- package/dist/agentSessions/index.d.ts +4 -0
- package/dist/agentSessions/index.d.ts.map +1 -0
- package/dist/agentSessions/index.js +26 -0
- package/dist/agentSessions/index.js.map +1 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +6 -1
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +41 -7
- package/dist/context.js.map +1 -1
- package/dist/generated/generated.d.ts +659 -3
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +5459 -1759
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.js +1 -1
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.js +9 -10
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +97 -41
- package/dist/index.js.map +1 -1
- package/dist/logging/StartupLogger.d.ts +121 -0
- package/dist/logging/StartupLogger.d.ts.map +1 -0
- package/dist/logging/StartupLogger.js +245 -0
- package/dist/logging/StartupLogger.js.map +1 -0
- package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.js +21 -2
- package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
- package/dist/resolvers/AgentSessionResolver.d.ts +42 -0
- package/dist/resolvers/AgentSessionResolver.d.ts.map +1 -0
- package/dist/resolvers/AgentSessionResolver.js +152 -0
- package/dist/resolvers/AgentSessionResolver.js.map +1 -0
- package/dist/resolvers/EntityPermissionResolver.d.ts +16 -0
- package/dist/resolvers/EntityPermissionResolver.d.ts.map +1 -0
- package/dist/resolvers/EntityPermissionResolver.js +95 -0
- package/dist/resolvers/EntityPermissionResolver.js.map +1 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +688 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -0
- package/dist/resolvers/RealtimeClientSessionResolver.js +1774 -0
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -0
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts +359 -0
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -0
- package/dist/resolvers/RemoteBrowserActionResolver.js +896 -0
- package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -0
- package/dist/services/ScheduledJobsService.d.ts.map +1 -1
- package/dist/services/ScheduledJobsService.js +6 -5
- package/dist/services/ScheduledJobsService.js.map +1 -1
- package/package.json +78 -74
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +2605 -0
- package/src/__tests__/RemoteBrowserAudioStream.test.ts +174 -0
- package/src/__tests__/SessionJanitor.test.ts +234 -0
- package/src/__tests__/SessionManager.test.ts +465 -0
- package/src/__tests__/subscriptionRedaction.test.ts +5 -0
- package/src/agentSessions/HostInstance.ts +53 -0
- package/src/agentSessions/SessionJanitor.ts +267 -0
- package/src/agentSessions/SessionManager.ts +446 -0
- package/src/agentSessions/index.ts +27 -0
- package/src/auth/initializeProviders.ts +6 -1
- package/src/context.ts +42 -7
- package/src/generated/generated.ts +3111 -567
- package/src/generic/ResolverBase.ts +1 -1
- package/src/generic/RunViewResolver.ts +9 -9
- package/src/index.ts +98 -41
- package/src/logging/StartupLogger.ts +317 -0
- package/src/logging/variablesLoggingMiddleware.ts +25 -5
- package/src/resolvers/AgentSessionResolver.ts +138 -0
- package/src/resolvers/EntityPermissionResolver.ts +73 -0
- package/src/resolvers/RealtimeClientSessionResolver.ts +2162 -0
- package/src/resolvers/RemoteBrowserActionResolver.ts +907 -0
- package/src/services/ScheduledJobsService.ts +6 -5
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { LogError, RunView } from '@memberjunction/core';
|
|
2
|
+
import { AIAgentPermissionHelper } from '@memberjunction/ai-engine-base';
|
|
3
|
+
import { RealtimeClientSessionService, RealtimeChannelServerHost } from '@memberjunction/ai-agents';
|
|
4
|
+
import { GetHostInstanceID } from './HostInstance.js';
|
|
5
|
+
/** Entity names — centralised so the `MJ:`-prefix convention is applied in exactly one place. */
|
|
6
|
+
const SESSION_ENTITY = 'MJ: AI Agent Sessions';
|
|
7
|
+
const SESSION_CHANNEL_ENTITY = 'MJ: AI Agent Session Channels';
|
|
8
|
+
const CONVERSATION_ENTITY = 'MJ: Conversations';
|
|
9
|
+
/**
|
|
10
|
+
* Thrown by {@link SessionManager.CreateSession} when the caller lacks `CanRun` on the target
|
|
11
|
+
* agent. No session row is created — denial happens before any write. Distinct error type so the
|
|
12
|
+
* resolver layer can map it to an authorization-shaped GraphQL error rather than a generic failure.
|
|
13
|
+
*/
|
|
14
|
+
export class SessionAuthorizationError extends Error {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = 'SessionAuthorizationError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Minimum interval between persisted `LastActiveAt` writes for a single session. A chatty channel
|
|
22
|
+
* (e.g. an audio heartbeat every ~200ms) must not turn into a DB write storm — heartbeats inside
|
|
23
|
+
* this window are coalesced in-memory and dropped. Mirrors the `SetSettingDebounced` philosophy.
|
|
24
|
+
*/
|
|
25
|
+
const HEARTBEAT_MIN_WRITE_INTERVAL_MS = 3_000;
|
|
26
|
+
/**
|
|
27
|
+
* Server-side lifecycle manager for `AIAgentSession` **records** (not the media/socket transport —
|
|
28
|
+
* that arrives in P5). Stateless with respect to the caller: every method takes the request's
|
|
29
|
+
* `contextUser` and request-scoped `IMetadataProvider` so all entity operations run under the
|
|
30
|
+
* correct identity/provider and never pin the process-global provider.
|
|
31
|
+
*
|
|
32
|
+
* The only in-memory state it holds is a small per-session last-heartbeat-write timestamp map used
|
|
33
|
+
* purely to coalesce {@link Heartbeat} writes; it carries no user or provider state across calls.
|
|
34
|
+
*
|
|
35
|
+
* Responsibilities:
|
|
36
|
+
* - **Create** — authorize (`CanRun`), optionally mint a Conversation, persist an `Active` session.
|
|
37
|
+
* - **Close** — terminal transition; disconnect channels; idempotent.
|
|
38
|
+
* - **Heartbeat** — coalesced `LastActiveAt` bump; reactivates `Idle → Active`.
|
|
39
|
+
* - **MarkIdle** — `Active → Idle` transition when the last channel goes quiet.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* P5 will extend {@link CloseSession} to also abort any in-flight `AIAgentRun` (via its cancellation
|
|
43
|
+
* token) and call `ClientToolRequestManager.ClearSession(...)`; those resources don't exist yet at
|
|
44
|
+
* this layer, so close here only reconciles the durable record + channel rows.
|
|
45
|
+
*/
|
|
46
|
+
export class SessionManager {
|
|
47
|
+
constructor() {
|
|
48
|
+
/** session ID (lowercased) → epoch ms of its last persisted `LastActiveAt` write. */
|
|
49
|
+
this.heartbeatLastWrite = new Map();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Authorize and create a new session. Flow:
|
|
53
|
+
* 1. `CanRun` check on the agent — denied → {@link SessionAuthorizationError}, no row written.
|
|
54
|
+
* 2. Resolve the conversation (use the supplied one, or create+link a fresh Conversation).
|
|
55
|
+
* 3. Persist the `AIAgentSession` as `Active`, stamped with this host and `LastActiveAt = now`.
|
|
56
|
+
*
|
|
57
|
+
* @returns the saved {@link MJAIAgentSessionEntity}.
|
|
58
|
+
* @throws {SessionAuthorizationError} when the user may not run the agent.
|
|
59
|
+
* @throws {Error} when conversation creation or session save fails.
|
|
60
|
+
*/
|
|
61
|
+
async CreateSession(input, contextUser, provider) {
|
|
62
|
+
await this.assertCanRun(input.agentID, contextUser);
|
|
63
|
+
const conversationID = input.conversationID
|
|
64
|
+
?? await this.createConversation(input, contextUser, provider);
|
|
65
|
+
const session = await this.persistNewSession(input, conversationID, contextUser, provider);
|
|
66
|
+
await this.notifyChannelPluginsSessionStarted(session, contextUser, provider);
|
|
67
|
+
return session;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Close a session (terminal). Sets `Status = 'Closed'` + `ClosedAt = now` + `CloseReason`, then
|
|
71
|
+
* disconnects all of its channel rows. Idempotent: closing an already-`Closed` session is a
|
|
72
|
+
* no-op that returns `true` (and never overwrites the original `CloseReason`). A
|
|
73
|
+
* missing/unloadable session returns `false`.
|
|
74
|
+
*
|
|
75
|
+
* @param closeReason Why the session is being closed. **Defaults to `'Explicit'`** so existing
|
|
76
|
+
* call sites (the user-initiated close mutations) stamp the common case without modification;
|
|
77
|
+
* background callers (janitor sweeps, shutdown drain, error teardowns) must pass their reason
|
|
78
|
+
* explicitly. `NULL` rows remain only for legacy data closed before the column existed.
|
|
79
|
+
*
|
|
80
|
+
* @remarks P5 adds in-flight-run abort + `ClientToolRequestManager.ClearSession` here.
|
|
81
|
+
*/
|
|
82
|
+
async CloseSession(agentSessionID, contextUser, provider, closeReason = 'Explicit') {
|
|
83
|
+
const session = await this.loadSession(agentSessionID, contextUser, provider);
|
|
84
|
+
if (!session) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
this.heartbeatLastWrite.delete(agentSessionID.toLowerCase());
|
|
88
|
+
if (session.Status === 'Closed') {
|
|
89
|
+
// Idempotent — already terminal. Still notify the channel-plugin host so a session
|
|
90
|
+
// whose plugin instances live in THIS process is cleaned up even when another host
|
|
91
|
+
// instance won the close race (the host no-ops for sessions it doesn't hold).
|
|
92
|
+
await this.notifyChannelPluginsSessionClosed(agentSessionID, session.CloseReason ?? null);
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
const closed = await this.markSessionClosed(session, closeReason);
|
|
96
|
+
if (!closed) {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
await this.disconnectChannels(agentSessionID, contextUser, provider);
|
|
100
|
+
await this.finalizeObservabilityRuns(session, contextUser, provider);
|
|
101
|
+
await this.notifyChannelPluginsSessionClosed(agentSessionID, closeReason);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Notifies the server-side channel-plugin host that a session started, so it can resolve the
|
|
106
|
+
* ACTIVE `MJ: AI Agent Channels` rows' `ServerPluginClass` plugins (one fresh instance per
|
|
107
|
+
* channel, per session) and fire their start hooks. Strictly best-effort: the host itself
|
|
108
|
+
* never throws, and this guard makes session creation immune to any plugin-layer surprise.
|
|
109
|
+
*/
|
|
110
|
+
async notifyChannelPluginsSessionStarted(session, contextUser, provider) {
|
|
111
|
+
try {
|
|
112
|
+
await RealtimeChannelServerHost.Instance.OnSessionStarted({
|
|
113
|
+
AgentSessionID: session.ID,
|
|
114
|
+
AgentID: session.AgentID,
|
|
115
|
+
UserID: session.UserID,
|
|
116
|
+
ConversationID: session.ConversationID ?? null,
|
|
117
|
+
}, contextUser, provider);
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
LogError(`SessionManager.notifyChannelPluginsSessionStarted failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Notifies the server-side channel-plugin host that a session closed (fires each plugin's
|
|
125
|
+
* `OnSessionClosed` hook and schedules disposal). Invoked from EVERY close provenance —
|
|
126
|
+
* explicit hang-up, janitor sweeps, shutdown drain, and error teardowns all funnel through
|
|
127
|
+
* {@link CloseSession}. Strictly best-effort, same posture as the start notification.
|
|
128
|
+
*/
|
|
129
|
+
async notifyChannelPluginsSessionClosed(agentSessionID, closeReason) {
|
|
130
|
+
try {
|
|
131
|
+
await RealtimeChannelServerHost.Instance.OnSessionClosed(agentSessionID, closeReason);
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
LogError(`SessionManager.notifyChannelPluginsSessionClosed failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Finalizes the co-agent observability runs a realtime voice session stored in its `Config_`
|
|
139
|
+
* (see `RealtimeClientSessionResolver`). No-op when the config carries no run ids. Tolerant: a
|
|
140
|
+
* malformed config or a finalize failure is swallowed so it can never break session close.
|
|
141
|
+
*/
|
|
142
|
+
async finalizeObservabilityRuns(session, contextUser, provider) {
|
|
143
|
+
const config = this.parseSessionRunConfig(session.Config_);
|
|
144
|
+
if (!config.coAgentRunID && !config.promptRunID && !config.coAgentRunStepID) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
await new RealtimeClientSessionService().FinalizeCoAgentRun(config.coAgentRunID ?? null, config.promptRunID ?? null, contextUser, provider, true, config.coAgentRunStepID ?? null);
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
LogError(`SessionManager.finalizeObservabilityRuns failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/** Parses the session's `Config_` for observability run ids; returns an empty config on any error. */
|
|
155
|
+
parseSessionRunConfig(raw) {
|
|
156
|
+
if (!raw) {
|
|
157
|
+
return {};
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
const parsed = JSON.parse(raw);
|
|
161
|
+
return {
|
|
162
|
+
coAgentRunID: typeof parsed.coAgentRunID === 'string' ? parsed.coAgentRunID : undefined,
|
|
163
|
+
promptRunID: typeof parsed.promptRunID === 'string' ? parsed.promptRunID : undefined,
|
|
164
|
+
coAgentRunStepID: typeof parsed.coAgentRunStepID === 'string' ? parsed.coAgentRunStepID : undefined,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return {};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Record activity on a session. Coalesces persisted writes so at most one `LastActiveAt` update
|
|
173
|
+
* lands per session per {@link HEARTBEAT_MIN_WRITE_INTERVAL_MS}; intervening calls return `true`
|
|
174
|
+
* without touching the DB. Reactivates an `Idle` session to `Active`. A `Closed` session is not
|
|
175
|
+
* reactivated (returns `false`).
|
|
176
|
+
*/
|
|
177
|
+
async Heartbeat(agentSessionID, contextUser, provider) {
|
|
178
|
+
const key = agentSessionID.toLowerCase();
|
|
179
|
+
const reactivating = this.shouldForceWrite(key, provider);
|
|
180
|
+
if (!reactivating && !this.heartbeatWriteDue(key)) {
|
|
181
|
+
return true; // coalesced — skip the DB round-trip
|
|
182
|
+
}
|
|
183
|
+
return this.persistHeartbeat(agentSessionID, contextUser, provider);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Transition an `Active` session to `Idle` (e.g. when its last channel disconnects). No-op when
|
|
187
|
+
* the session is already `Idle` or `Closed`. Returns `true` on success / no-op-needed.
|
|
188
|
+
*/
|
|
189
|
+
async MarkIdle(agentSessionID, contextUser, provider) {
|
|
190
|
+
const session = await this.loadSession(agentSessionID, contextUser, provider);
|
|
191
|
+
if (!session) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
if (session.Status !== 'Active') {
|
|
195
|
+
return true; // only Active → Idle is meaningful
|
|
196
|
+
}
|
|
197
|
+
session.Status = 'Idle';
|
|
198
|
+
return this.saveOrLog(session, 'MarkIdle');
|
|
199
|
+
}
|
|
200
|
+
// ----- internals -------------------------------------------------------------------------
|
|
201
|
+
/** Throws {@link SessionAuthorizationError} unless the user has `CanRun` on the agent. */
|
|
202
|
+
async assertCanRun(agentID, contextUser) {
|
|
203
|
+
const canRun = await AIAgentPermissionHelper.HasPermission(agentID, contextUser, 'run');
|
|
204
|
+
if (!canRun) {
|
|
205
|
+
throw new SessionAuthorizationError(`User ${contextUser.Email} is not permitted to open a session for agent ${agentID}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/** Creates and links a new Conversation for the session, returning its ID. */
|
|
209
|
+
async createConversation(input, contextUser, provider) {
|
|
210
|
+
const conversation = await provider.GetEntityObject(CONVERSATION_ENTITY, contextUser);
|
|
211
|
+
conversation.NewRecord();
|
|
212
|
+
conversation.UserID = input.userID;
|
|
213
|
+
conversation.Name = 'Agent Session';
|
|
214
|
+
const saved = await conversation.Save();
|
|
215
|
+
if (!saved) {
|
|
216
|
+
throw new Error(`Failed to create Conversation for agent session: ${conversation.LatestResult?.CompleteMessage ?? 'unknown error'}`);
|
|
217
|
+
}
|
|
218
|
+
return conversation.ID;
|
|
219
|
+
}
|
|
220
|
+
/** Persists the new session row as `Active` and returns the saved entity. */
|
|
221
|
+
async persistNewSession(input, conversationID, contextUser, provider) {
|
|
222
|
+
const session = await provider.GetEntityObject(SESSION_ENTITY, contextUser);
|
|
223
|
+
session.NewRecord();
|
|
224
|
+
session.AgentID = input.agentID;
|
|
225
|
+
session.UserID = input.userID;
|
|
226
|
+
session.Status = 'Active';
|
|
227
|
+
session.ConversationID = conversationID;
|
|
228
|
+
session.LastSessionID = input.lastSessionID ?? null;
|
|
229
|
+
session.HostInstanceID = GetHostInstanceID();
|
|
230
|
+
session.Config_ = input.config ?? null;
|
|
231
|
+
session.LastActiveAt = new Date();
|
|
232
|
+
const saved = await session.Save();
|
|
233
|
+
if (!saved) {
|
|
234
|
+
throw new Error(`Failed to create agent session: ${session.LatestResult?.CompleteMessage ?? 'unknown error'}`);
|
|
235
|
+
}
|
|
236
|
+
return session;
|
|
237
|
+
}
|
|
238
|
+
/** Loads a session entity by ID, returning null when it cannot be loaded. */
|
|
239
|
+
async loadSession(agentSessionID, contextUser, provider) {
|
|
240
|
+
const session = await provider.GetEntityObject(SESSION_ENTITY, contextUser);
|
|
241
|
+
const loaded = await session.Load(agentSessionID);
|
|
242
|
+
return loaded ? session : null;
|
|
243
|
+
}
|
|
244
|
+
/** Sets `Closed` + `ClosedAt` + `CloseReason` and saves. Returns the save result. */
|
|
245
|
+
async markSessionClosed(session, closeReason) {
|
|
246
|
+
session.Status = 'Closed';
|
|
247
|
+
session.ClosedAt = new Date();
|
|
248
|
+
session.CloseReason = closeReason;
|
|
249
|
+
return this.saveOrLog(session, 'CloseSession');
|
|
250
|
+
}
|
|
251
|
+
/** Marks every channel row of the session `Disconnected` (with `DisconnectedAt`), if not already. */
|
|
252
|
+
async disconnectChannels(agentSessionID, contextUser, provider) {
|
|
253
|
+
const rv = RunView.FromMetadataProvider(provider);
|
|
254
|
+
const result = await rv.RunView({
|
|
255
|
+
EntityName: SESSION_CHANNEL_ENTITY,
|
|
256
|
+
ExtraFilter: `AgentSessionID='${agentSessionID}' AND Status <> 'Disconnected'`,
|
|
257
|
+
ResultType: 'entity_object',
|
|
258
|
+
}, contextUser);
|
|
259
|
+
if (!result.Success) {
|
|
260
|
+
LogError(`SessionManager.disconnectChannels failed to load channels: ${result.ErrorMessage}`);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const now = new Date();
|
|
264
|
+
for (const channel of result.Results) {
|
|
265
|
+
channel.Status = 'Disconnected';
|
|
266
|
+
channel.DisconnectedAt = now;
|
|
267
|
+
await this.saveOrLog(channel, 'disconnectChannels');
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/** True once the per-session coalescing window has elapsed since the last persisted write. */
|
|
271
|
+
heartbeatWriteDue(key) {
|
|
272
|
+
const last = this.heartbeatLastWrite.get(key);
|
|
273
|
+
return last == null || (Date.now() - last) >= HEARTBEAT_MIN_WRITE_INTERVAL_MS;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Whether this heartbeat must write regardless of the coalescing window. We force a write the
|
|
277
|
+
* first time we see a session (no cached timestamp) so an `Idle → Active` reactivation is never
|
|
278
|
+
* swallowed by coalescing.
|
|
279
|
+
*/
|
|
280
|
+
shouldForceWrite(key, _provider) {
|
|
281
|
+
return !this.heartbeatLastWrite.has(key);
|
|
282
|
+
}
|
|
283
|
+
/** Loads, bumps `LastActiveAt`, reactivates `Idle → Active`, saves, and records the write time. */
|
|
284
|
+
async persistHeartbeat(agentSessionID, contextUser, provider) {
|
|
285
|
+
const session = await this.loadSession(agentSessionID, contextUser, provider);
|
|
286
|
+
if (!session || session.Status === 'Closed') {
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
session.LastActiveAt = new Date();
|
|
290
|
+
if (session.Status === 'Idle') {
|
|
291
|
+
session.Status = 'Active';
|
|
292
|
+
}
|
|
293
|
+
const saved = await this.saveOrLog(session, 'Heartbeat');
|
|
294
|
+
if (saved) {
|
|
295
|
+
this.heartbeatLastWrite.set(agentSessionID.toLowerCase(), Date.now());
|
|
296
|
+
}
|
|
297
|
+
return saved;
|
|
298
|
+
}
|
|
299
|
+
/** Saves an entity, logging `CompleteMessage` on failure. Returns the boolean save result. */
|
|
300
|
+
async saveOrLog(entity, op) {
|
|
301
|
+
const saved = await entity.Save();
|
|
302
|
+
if (!saved) {
|
|
303
|
+
LogError(`SessionManager.${op} save failed: ${entity.LatestResult?.CompleteMessage ?? 'unknown error'}`);
|
|
304
|
+
}
|
|
305
|
+
return saved;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=SessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../src/agentSessions/SessionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agentSessions/index.ts"],"names":[],"mappings":"AAwBA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview AI Agent Session lifecycle substrate (server-side, record + janitor layer).
|
|
3
|
+
*
|
|
4
|
+
* Exposes the session-record lifecycle manager, the orphan-reconciliation janitor, and the
|
|
5
|
+
* per-process host identity helpers. The audio/media (WebRTC) transport and the long-lived
|
|
6
|
+
* realtime agent run are deliberately **not** part of this layer — they arrive in P5.
|
|
7
|
+
*
|
|
8
|
+
* @module @memberjunction/server
|
|
9
|
+
*/
|
|
10
|
+
import { LoadWhiteboardChannelServer, LoadMeetingControlsChannelServer } from '@memberjunction/ai-agents';
|
|
11
|
+
import { LoadRemoteBrowserChannel } from '@memberjunction/remote-browser-server';
|
|
12
|
+
import { LoadSelfHostRemoteBrowser } from '@memberjunction/remote-browser-selfhost';
|
|
13
|
+
// Tree-shaking prevention: force the server-side channel plugin registrations
|
|
14
|
+
// (`@RegisterClass(BaseRealtimeChannelServer, ...)`) to execute on any static path that touches
|
|
15
|
+
// the session lifecycle — `SessionManager.CreateSession` resolves them via the ClassFactory.
|
|
16
|
+
LoadWhiteboardChannelServer();
|
|
17
|
+
LoadMeetingControlsChannelServer();
|
|
18
|
+
// Remote Browser native channel (client-direct): the lifecycle-only server channel plugin + the
|
|
19
|
+
// Self-Hosted Chrome backend driver (whose default runner launches a local headless Chromium via
|
|
20
|
+
// Playwright — pulled in transitively through the SelfHost package, documented and acceptable).
|
|
21
|
+
LoadRemoteBrowserChannel();
|
|
22
|
+
LoadSelfHostRemoteBrowser();
|
|
23
|
+
export * from './HostInstance.js';
|
|
24
|
+
export * from './SessionManager.js';
|
|
25
|
+
export * from './SessionJanitor.js';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agentSessions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,8EAA8E;AAC9E,gGAAgG;AAChG,6FAA6F;AAC7F,2BAA2B,EAAE,CAAC;AAC9B,gCAAgC,EAAE,CAAC;AACnC,gGAAgG;AAChG,iGAAiG;AACjG,gGAAgG;AAChG,wBAAwB,EAAE,CAAC;AAC3B,yBAAyB,EAAE,CAAC;AAE5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeProviders.d.ts","sourceRoot":"","sources":["../../src/auth/initializeProviders.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initializeProviders.d.ts","sourceRoot":"","sources":["../../src/auth/initializeProviders.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CA2B9C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { configInfo } from '../config.js';
|
|
2
2
|
import { LogError, LogStatus } from '@memberjunction/core';
|
|
3
3
|
import { AuthProviderFactory } from '@memberjunction/auth-providers';
|
|
4
|
+
import { StartupLogger } from '../logging/StartupLogger.js';
|
|
4
5
|
/**
|
|
5
6
|
* Initialize authentication providers from configuration
|
|
6
7
|
*/
|
|
@@ -14,7 +15,11 @@ export function initializeAuthProviders() {
|
|
|
14
15
|
try {
|
|
15
16
|
const provider = AuthProviderFactory.createProvider(providerConfig);
|
|
16
17
|
factory.register(provider);
|
|
17
|
-
|
|
18
|
+
// Per-provider registration detail — verbose-only. The provider NAMES are
|
|
19
|
+
// surfaced compactly in the startup summary `Auth` line at `standard`.
|
|
20
|
+
if (new StartupLogger().IsAtLeast('verbose')) {
|
|
21
|
+
LogStatus(`Registered auth provider: ${provider.name} (type: ${providerConfig.type})`);
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
catch (error) {
|
|
20
25
|
LogError(`Failed to initialize auth provider ${providerConfig.name}: ${error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initializeProviders.js","sourceRoot":"","sources":["../../src/auth/initializeProviders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAsB,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"initializeProviders.js","sourceRoot":"","sources":["../../src/auth/initializeProviders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAsB,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC;IAE7C,+BAA+B;IAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,iDAAiD;IACjD,IAAI,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,cAAc,CAAC,cAAoC,CAAC,CAAC;gBAC1F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC3B,0EAA0E;gBAC1E,uEAAuE;gBACvE,IAAI,IAAI,aAAa,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,SAAS,CAAC,6BAA6B,QAAQ,CAAC,IAAI,WAAW,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,sCAAsC,cAAc,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAC5B,QAAQ,CAAC,+FAA+F,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC"}
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAkB,MAAM,MAAM,CAAC;AAE/C,OAAO,GAAG,MAAM,OAAO,CAAC;AAOxB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzD,OAAO,KAAK,EAAE,cAAc,EAAmC,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAiC,MAAM,sBAAsB,CAAC;AA0R3F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,GACzB,aAAa,MAAM,EACnB,iBAAqB,EACrB,aAAa,cAAc,EAAE,EAC7B,gBAAgB,MAAM,EACtB,eAAe,MAAM,EACrB,aAAa,MAAM,EACnB,iBAAiB,cAAc,KAC9B,OAAO,CAAC,WAAW,CAwJrB,CAAC;AAwDF;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,cAAc,EAAE,GAC5B,cAAc,CAiDhB;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GACzB,6CAA6C;IAAE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,MAC1I,SAAS;IAAE,GAAG,EAAE,eAAe,CAAA;CAAE;;;;;kBA0Cb,oBAAoB;cAAQ,YAAY,GAAG,WAAW;;EAThF,CAAC"}
|
package/dist/context.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as url from 'url';
|
|
2
1
|
import { default as jwt } from 'jsonwebtoken';
|
|
3
2
|
import 'reflect-metadata';
|
|
4
3
|
import { firstValueFrom } from 'rxjs';
|
|
@@ -8,6 +7,7 @@ import { TokenExpiredError, AuthProviderFactory } from '@memberjunction/auth-pro
|
|
|
8
7
|
import { authCache } from './cache.js';
|
|
9
8
|
import { userEmailMap, apiKey, mj_core_schema } from './config.js';
|
|
10
9
|
import { buildBoundaryLogPayload } from './logging/boundaryLogPayload.js';
|
|
10
|
+
import { StartupLogger } from './logging/StartupLogger.js';
|
|
11
11
|
import { GetReadOnlyDataSource, GetReadWriteDataSource } from './util.js';
|
|
12
12
|
import { UserInfo } from '@memberjunction/core';
|
|
13
13
|
import { SQLServerDataProvider, SQLServerProviderConfigData, UserCache } from '@memberjunction/sqlserver-dataprovider';
|
|
@@ -23,6 +23,19 @@ import { GetAPIKeyEngine } from '@memberjunction/api-keys';
|
|
|
23
23
|
// long-lived sessions every hour.) Reviewers asked to audit all user access with
|
|
24
24
|
// timestamp/IP/browser — that payload lives in the Details JSON; the table has no
|
|
25
25
|
// dedicated columns. Best-effort throughout: an audit failure NEVER blocks auth.
|
|
26
|
+
/**
|
|
27
|
+
* Memoized "is the server log level `debug`?" check for the per-request log
|
|
28
|
+
* gates below. Resolved once from `telemetry.level` (the single log-level knob)
|
|
29
|
+
* — config is immutable after boot, so caching is safe and keeps the hot request
|
|
30
|
+
* path free of repeated config reads.
|
|
31
|
+
*/
|
|
32
|
+
let isDebugLevelCache;
|
|
33
|
+
function isDebugLogLevel() {
|
|
34
|
+
if (isDebugLevelCache === undefined) {
|
|
35
|
+
isDebugLevelCache = StartupLogger.resolveLevelFromConfig() === 'debug';
|
|
36
|
+
}
|
|
37
|
+
return isDebugLevelCache;
|
|
38
|
+
}
|
|
26
39
|
const SESSION_AUDIT_TYPE = 'Session Established';
|
|
27
40
|
const LOGIN_FAILED_AUDIT_TYPE = 'Login Failed';
|
|
28
41
|
const SESSION_AUDIT_CACHE_MAX = 50_000;
|
|
@@ -233,9 +246,12 @@ const verifyAsync = async (issuer, token) => new Promise((resolve, reject) => {
|
|
|
233
246
|
jwt.verify(token, getSigningKeys(issuer), verifyOptions, (err, jwt) => {
|
|
234
247
|
if (jwt && typeof jwt !== 'string' && !err) {
|
|
235
248
|
const payload = jwt.payload ?? jwt;
|
|
236
|
-
//
|
|
237
|
-
|
|
238
|
-
|
|
249
|
+
// Per-request token confirmation — debug-only (one of the worst
|
|
250
|
+
// "constantly on" offenders on an authenticated server).
|
|
251
|
+
if (isDebugLogLevel()) {
|
|
252
|
+
const userInfo = extractUserInfoFromPayload(payload);
|
|
253
|
+
console.log(`Valid token: ${userInfo.fullName || 'Unknown'} (${userInfo.email || userInfo.preferredUsername || 'Unknown'})`);
|
|
254
|
+
}
|
|
239
255
|
resolve(payload);
|
|
240
256
|
}
|
|
241
257
|
else {
|
|
@@ -373,9 +389,25 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
|
|
|
373
389
|
* Extracts auth headers and builds a RequestContext from an Express request.
|
|
374
390
|
* Shared by both the unified auth middleware and the WebSocket context.
|
|
375
391
|
*/
|
|
392
|
+
/**
|
|
393
|
+
* Extracts the hostname from a request `Origin` header using the WHATWG `URL` API (replacing the
|
|
394
|
+
* deprecated, security-flagged `url.parse()` — Node DEP0169). Returns `undefined` for a missing,
|
|
395
|
+
* empty, or unparseable origin, matching the prior `url.parse().hostname ?? undefined` semantics.
|
|
396
|
+
*/
|
|
397
|
+
function parseRequestHostname(origin) {
|
|
398
|
+
if (!origin) {
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
try {
|
|
402
|
+
return new URL(origin).hostname || undefined;
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
return undefined;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
376
408
|
function extractAuthInputs(req) {
|
|
377
409
|
const sessionIdRaw = req.headers['x-session-id'];
|
|
378
|
-
const requestDomain =
|
|
410
|
+
const requestDomain = parseRequestHostname(req.headers.origin);
|
|
379
411
|
const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
|
|
380
412
|
const bearerToken = req.headers.authorization ?? '';
|
|
381
413
|
const systemApiKey = String(req.headers['x-mj-api-key']);
|
|
@@ -391,7 +423,7 @@ function extractAuthInputs(req) {
|
|
|
391
423
|
return {
|
|
392
424
|
bearerToken,
|
|
393
425
|
sessionId,
|
|
394
|
-
requestDomain
|
|
426
|
+
requestDomain,
|
|
395
427
|
systemApiKey,
|
|
396
428
|
userApiKey,
|
|
397
429
|
requestContext,
|
|
@@ -455,7 +487,9 @@ export const contextFunction = ({ setupComplete$, dataSource, dataSources }) =>
|
|
|
455
487
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
456
488
|
const reqAny = req;
|
|
457
489
|
const operationName = reqAny.body?.operationName;
|
|
458
|
-
|
|
490
|
+
// Per-request GraphQL boundary line — debug-only. Kept (not deleted) so the
|
|
491
|
+
// data is available when an operator opts into debug, but off by default.
|
|
492
|
+
if (operationName !== 'IntrospectionQuery' && isDebugLogLevel()) {
|
|
459
493
|
console.dir(buildBoundaryLogPayload(operationName), { depth: null, breakLength: 200 });
|
|
460
494
|
}
|
|
461
495
|
// Auth already happened in the unified auth middleware — just read the result
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAW,cAAc,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACpI,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAI1E,OAAO,EAAwB,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,iFAAiF;AACjF,oFAAoF;AACpF,sFAAsF;AACtF,mFAAmF;AACnF,qFAAqF;AACrF,iFAAiF;AACjF,kFAAkF;AAClF,iFAAiF;AACjF;;;;;GAKG;AACH,IAAI,iBAAsC,CAAC;AAC3C,SAAS,eAAe;IACtB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,iBAAiB,GAAG,aAAa,CAAC,sBAAsB,EAAE,KAAK,OAAO,CAAC;IACzE,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AACjD,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAC/C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,mCAAmC;AAEvF,SAAS,eAAe,CAAC,MAAc,EAAE,OAA8B;IACrE,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,GAAG,IAAI,SAAS,IAAI,OAAO,EAAE,GAAG,IAAI,OAAO,IAAI,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,wFAAwF;AACxF,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,gBAAgB,CAAC,IAAI,IAAI,uBAAuB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,cAAyC,CAAC,CAAC,2CAA2C;AAC1F,SAAS,oBAAoB;IAC3B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,mFAAmF;QACjH,cAAc,GAAG,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;IAC9F,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAAC,IAShC;IACC,IAAI,CAAC;QACH,kGAAkG;QAClG,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAA2C,CAAC,CAAC,8FAA8F;QACrK,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,iFAAiF;QACjF,oFAAoF;QACpF,gFAAgF;QAChF,oFAAoF;QACpF,wEAAwE;QACxE,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CACjF,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI;YACnC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI;YAC9B,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI;YAC9B,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,IAAI;YACjD,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,IAAI,IAAI;YACjD,MAAM,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;YAClC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,IAAI,IAAI;YAC/C,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACrE,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACnC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,CAAC,YAAY,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,2CAA2C,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,KAAK,UAAU,iBAAiB,CAC9B,WAA+B,EAC/B,KAAc,EACd,cAA0C,EAC1C,aAAiC;IAEjC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,kFAAkF;YAClF,gFAAgF;YAChF,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAA0B,IAAI,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC;QACD,qFAAqF;QACrF,sFAAsF;QACtF,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,2EAA2E;QACrF,CAAC;QACD,iGAAiG;QACjG,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,iBAAiB,CAAC;YACtB,IAAI,EAAE,UAAU;YAChB,aAAa,EAAE,uBAAuB;YACtC,MAAM,EAAE,QAAQ;YAChB,OAAO;YACP,cAAc;YACd,aAAa;YACb,WAAW,EAAE,+CAA+C;YAC5D,YAAY,EAAE;gBACZ,cAAc,EAAE,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,OAAmC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;gBACrH,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,sEAAsE;AACtE,yFAAyF;AACzF,yFAAyF;AACzF,0FAA0F;AAC1F,yFAAyF;AACzF,0FAA0F;AAC1F,uFAAuF;AACvF,0FAA0F;AAC1F,0FAA0F;AAC1F,qEAAqE;AACrE,SAAS,yBAAyB,CAAC,UAAoB,EAAE,OAAuB;IAC9E,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,sGAAsG;IACpI,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpC,2FAA2F;IAC3F,IAAI,KAAiC,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/F,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,GAAG;gBACN,UAAU,EAAE,YAAY,CAAC,UAAU;gBACnC,YAAY,EAAE,OAAO,YAAY,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;aACpG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,IAAI,gBAAoF,CAAC;IACzF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACpC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3C,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAW,CAAC,CAAC;QAC9C,CAAC;QACD,gBAAgB,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7F,IAAI,IAAI,EAAE,CAAC;gBACT,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;QACnC,GAAG,UAAU;QACb,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS;KAC5D,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,CAAC;QACV,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,oFAAoF;QACpF,4FAA4F;QAC5F,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,WAAW,GAAG,KAAK,EAAE,MAAc,EAAE,KAAa,EAA2B,EAAE,CACnF,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,MAAM,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAsB,EAAE,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAiC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpE,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;YAEnC,gEAAgE;YAChE,yDAAyD;YACzD,IAAI,eAAe,EAAE,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,iBAAiB,IAAI,SAAS,GAAG,CAAC,CAAC;YAC/H,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAkBL,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,WAAmB,EACnB,SAAS,GAAG,SAAS,EACrB,WAA6B,EAC7B,aAAsB,EACtB,YAAqB,EACrB,UAAmB,EACnB,cAA+B,EACT,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,WAAW,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAEhE,sEAAsE;QACtE,+DAA+D;QAC/D,IAAI,UAAU,IAAI,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,uDAAuD;YACvD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;YACvC,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CACxD;gBACE,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,OAAO,EAAE,4CAA4C;gBACtE,QAAQ,EAAE,cAAc,EAAE,QAAQ,IAAI,MAAM;gBAC5C,MAAM,EAAE,cAAc,EAAE,MAAM,IAAI,MAAM;gBACxC,SAAS,EAAE,cAAc,EAAE,aAAa,IAAI,IAAI;gBAChD,UAAU,EAAE,GAAG,EAAE,gCAAgC;gBACjD,cAAc,EAAE,SAAS,EAAE,6BAA6B;gBACxD,SAAS,EAAE,cAAc,EAAE,SAAS,IAAI,IAAI;gBAC5C,SAAS,EAAE,cAAc,EAAE,SAAS,IAAI,IAAI;aAC7C,EACD,UAAU,CACX,CAAC;YAEF,IAAI,gBAAgB,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBACtD,wEAAwE;gBACxE,wEAAwE;gBACxE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAChD,CAAC;gBAEF,6EAA6E;gBAC7E,MAAM,UAAU,GAAG,UAAU,IAAI,gBAAgB,CAAC,IAAI,CAAC;gBAEvD,OAAO;oBACL,UAAU;oBACV,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,SAAS;oBACT,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;oBACnC,UAAU,EAAE,gBAAgB,CAAC,UAAU;iBACxC,CAAC;YACJ,CAAC;YAED,4EAA4E;YAC5E,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAED,iDAAiD;QACjD,oEAAoE;QACpE,IAAI,YAAY,IAAI,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,CAAC;gBAC3D,OAAO;oBACL,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,SAAS;oBACT,YAAY,EAAE,IAAI;oBAClB,MAAM;iBACP,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACvC,8FAA8F;YAC9F,OAAO,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;YACrF,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACzC,MAAM,IAAI,mBAAmB,CAAC,+BAA+B,CAAC,CAAC;YACjE,CAAC;YAED,6BAA6B;YAC7B,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;gBAC9C,MAAM,IAAI,mBAAmB,CAAC,wCAAwC,MAAM,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAErH,MAAM,UAAU,GAAG,MAAM,gBAAgB,CACvC,KAAK,EACL,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,QAAQ,EACjB,aAAa,EACb,mBAAmB,CACpB,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC;YACzC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;aAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,qBAAqB,CAAC,CAAC;YAClD,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,8EAA8E;QAC9E,kFAAkF;QAClF,iFAAiF;QACjF,uBAAuB;QACvB,MAAM,WAAW,GAAG,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnE,kFAAkF;QAClF,kFAAkF;QAClF,IAAI,oBAAoB,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YAC3D,KAAK,iBAAiB,CAAC;gBACrB,IAAI,EAAE,WAAW;gBACjB,aAAa,EAAE,kBAAkB;gBACjC,MAAM,EAAE,SAAS;gBACjB,OAAO;gBACP,cAAc;gBACd,aAAa;gBACb,WAAW,EAAE,2BAA2B,OAAO,CAAC,GAAG,IAAI,kBAAkB,EAAE;aAC5E,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC,CAAC,iEAAiE;QAChF,CAAC;QACD,sFAAsF;QACtF,KAAK,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QAC1E,MAAM,IAAI,mBAAmB,CAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,MAA0B;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAoB;IAQ7C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,GAAgB,CAAC;IAEpC,MAAM,cAAc,GAAmB;QACrC,QAAQ,EAAE,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,GAAG,IAAI,MAAM;QACrD,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,MAAM;QACnC,aAAa,EAAE,SAAS;QACxB,SAAS,EAAE,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,MAAM,EAAE,aAAa,IAAI,SAAS;QACzE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAuB;KAC3D,CAAC;IAEF,OAAO;QACL,WAAW;QACX,SAAS;QACT,aAAa;QACb,YAAY;QACZ,UAAU;QACV,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CACzC,WAA6B;IAE7B,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;QAC9E,0EAA0E;QAC1E,mFAAmF;QACnF,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,GACvF,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAEzB,MAAM,WAAW,GAAG,MAAM,cAAc,CACtC,WAAW,EACX,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,CACf,CAAC;YAEF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;YAED,6CAA6C;YAC7C,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;YAC9B,qDAAqD;YACpD,GAA0C,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;YACjE,GAA0C,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC;YAE/E,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;gBACvC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,MAAM,EAAE,CAAC;4BACP,OAAO,EAAE,eAAe;4BACxB,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;yBACpC,CAAC;iBACH,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAuG,EAAE,EAAE,CACrJ,KAAK,EAAE,EAAE,GAAG,EAA4B,EAAE,EAAE;IAC1C,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,2DAA2D;IAEjG,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,MAAM,GAAG,GAAU,CAAC;IAC1B,MAAM,aAAa,GAAuB,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC;IACrE,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,aAAa,KAAK,oBAAoB,IAAI,eAAe,EAAE,EAAE,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,8EAA8E;IAC9E,MAAM,UAAU,GAAG,GAAgB,CAAC;IACpC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,mBAAmB,CAAC,oDAAoD,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAG,CAAC,CAAC,qEAAqE;QACnH,OAAO,CAAC,IAAI,CAAC,uZAAuZ,CAAC,CAAC,CAAC,gFAAgF;IACzf,CAAC;IAED,8DAA8D;IAC9D,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE3E,OAAO;QACL,UAAU;QACV,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AAEJ;;;GAGG;AACH,KAAK,UAAU,yBAAyB,CACtC,UAA8B,EAC9B,WAA6B;IAE7B,MAAM,UAAU,GAAG,wBAAwB,EAAE,KAAK,YAAY,CAAC;IAE/D,IAAI,CAAuB,CAAC;IAC5B,IAAI,UAAU,EAAE,CAAC;QACf,CAAC,GAAG,MAAM,sBAAsB,EAAE,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAI,2BAA2B,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3G,MAAM,WAAW,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAChD,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,GAAG,WAA8C,CAAC;IACrD,CAAC;IAED,MAAM,SAAS,GAAgF;QAC7F,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;KACpC,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,EAAE,EAAE,CAAC;YACP,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,sBAAsB;IACnC,MAAM,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;IACzH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,WAAW,CAAC;IACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,CAAC;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAE5E,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,4BAA4B,CAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EACpF,cAAc,EACd,CAAC,EACD,SAAS,EACT,SAAS,EACT,KAAK,CACN,CAAC;IAEF,+EAA+E;IAC/E,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAiE,CAAC,CAAC,iEAAiE;IACrK,IAAI,eAAe,EAAE,kBAAkB,EAAE,CAAC;QACxC,MAAM,UAAU,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACtF,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,yBAAyB,CACtC,WAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,WAAW,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC;QACnG,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,qBAAqB,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,2BAA2B,CAAC,kBAAkB,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACpH,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,UAA6C,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,EAAE,CAAC;QACZ,iDAAiD;IACnD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|