@xemahq/agent-runtime-bridge 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +60 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +31 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/applier.d.ts +31 -0
  8. package/dist/lib/applier.d.ts.map +1 -0
  9. package/dist/lib/applier.js +169 -0
  10. package/dist/lib/applier.js.map +1 -0
  11. package/dist/lib/bundle-fingerprint.d.ts +43 -0
  12. package/dist/lib/bundle-fingerprint.d.ts.map +1 -0
  13. package/dist/lib/bundle-fingerprint.js +59 -0
  14. package/dist/lib/bundle-fingerprint.js.map +1 -0
  15. package/dist/lib/control-plane.d.ts +75 -0
  16. package/dist/lib/control-plane.d.ts.map +1 -0
  17. package/dist/lib/control-plane.js +109 -0
  18. package/dist/lib/control-plane.js.map +1 -0
  19. package/dist/lib/driver.d.ts +17 -0
  20. package/dist/lib/driver.d.ts.map +1 -0
  21. package/dist/lib/driver.js +357 -0
  22. package/dist/lib/driver.js.map +1 -0
  23. package/dist/lib/opencode-event-translator.d.ts +46 -0
  24. package/dist/lib/opencode-event-translator.d.ts.map +1 -0
  25. package/dist/lib/opencode-event-translator.js +621 -0
  26. package/dist/lib/opencode-event-translator.js.map +1 -0
  27. package/dist/lib/runtime-frame.d.ts +127 -0
  28. package/dist/lib/runtime-frame.d.ts.map +1 -0
  29. package/dist/lib/runtime-frame.js +82 -0
  30. package/dist/lib/runtime-frame.js.map +1 -0
  31. package/dist/lib/sse-protocol.d.ts +8 -0
  32. package/dist/lib/sse-protocol.d.ts.map +1 -0
  33. package/dist/lib/sse-protocol.js +55 -0
  34. package/dist/lib/sse-protocol.js.map +1 -0
  35. package/dist/lib/tool-reply-routes.d.ts +10 -0
  36. package/dist/lib/tool-reply-routes.d.ts.map +1 -0
  37. package/dist/lib/tool-reply-routes.js +29 -0
  38. package/dist/lib/tool-reply-routes.js.map +1 -0
  39. package/dist/lib/worker-auth.d.ts +2 -0
  40. package/dist/lib/worker-auth.d.ts.map +1 -0
  41. package/dist/lib/worker-auth.js +8 -0
  42. package/dist/lib/worker-auth.js.map +1 -0
  43. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-event-translator.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-event-translator.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAGV,YAAY,EAMb,MAAM,iBAAiB,CAAC;AAMzB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1E;AAMD,MAAM,WAAW,eAAe;IAM9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnD,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,wBAAgB,qBAAqB,CACnC,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAO,GACnD,eAAe,CAiBjB;AA2BD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,YAAY,EAAE,CAmDhB;AA2pBD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE;IACR,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnF,EACD,OAAO,EAAE;IACP,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvF,GACA,YAAY,EAAE,CAoEhB"}
@@ -0,0 +1,621 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTranslatorState = createTranslatorState;
4
+ exports.translateOpencodeEvent = translateOpencodeEvent;
5
+ exports.translateOpencodeResponse = translateOpencodeResponse;
6
+ const runtime_frame_1 = require("./runtime-frame");
7
+ function createTranslatorState(options = {}) {
8
+ return {
9
+ primarySessionId: null,
10
+ partKindsById: new Map(),
11
+ textPartLengths: new Map(),
12
+ reasoningPartLengths: new Map(),
13
+ userMessageIds: new Set(),
14
+ emittedStepFinishPartIds: new Set(),
15
+ textDeltaChars: 0,
16
+ reasoningDeltaChars: 0,
17
+ toolEventCount: 0,
18
+ questionAskedCount: 0,
19
+ permissionAskedCount: 0,
20
+ assistantMessageCount: 0,
21
+ eventCount: 0,
22
+ logger: options.logger ?? defaultLogger,
23
+ };
24
+ }
25
+ const defaultLogger = {
26
+ warn(message, context) {
27
+ console.warn(`[opencode-event-translator] ${message}`, context ?? {});
28
+ },
29
+ };
30
+ const FILE_EVENT_MAP = {
31
+ 'file.created': 'created',
32
+ 'file.edited': 'edited',
33
+ 'file.deleted': 'deleted',
34
+ };
35
+ const FILE_WATCHER_EVENTS = [
36
+ 'add',
37
+ 'change',
38
+ 'unlink',
39
+ ];
40
+ function translateOpencodeEvent(state, raw) {
41
+ state.eventCount += 1;
42
+ const type = raw.type;
43
+ if (!type)
44
+ return [];
45
+ const props = raw.properties && typeof raw.properties === 'object'
46
+ ? raw.properties
47
+ : undefined;
48
+ const fileAction = FILE_EVENT_MAP[type];
49
+ if (fileAction) {
50
+ const path = getStringProp(props, 'path');
51
+ if (!path)
52
+ return [];
53
+ return [{ kind: 'file_change', path, action: fileAction }];
54
+ }
55
+ switch (type) {
56
+ case 'todo.updated':
57
+ return convertTodoUpdated(props);
58
+ case 'message.updated':
59
+ captureMessageMetadata(state, props);
60
+ return [];
61
+ case 'message.part.updated':
62
+ return convertMessagePartUpdated(state, props);
63
+ case 'message.part.delta':
64
+ return convertMessagePartDelta(state, props);
65
+ case 'session.status':
66
+ return convertSessionStatus(state, props);
67
+ case 'session.compacted':
68
+ return convertSessionCompacted(props);
69
+ case 'question.asked':
70
+ return convertQuestionAsked(state, props);
71
+ case 'question.replied':
72
+ return convertQuestionReplied(props);
73
+ case 'question.rejected':
74
+ return convertQuestionRejected(props);
75
+ case 'permission.asked':
76
+ return convertPermissionAsked(state, props);
77
+ case 'permission.replied':
78
+ return convertPermissionReplied(state, props);
79
+ case 'lsp.updated':
80
+ return [{ kind: 'lsp_updated' }];
81
+ case 'lsp.client.diagnostics':
82
+ return convertLspDiagnostics(props);
83
+ case 'file.watcher.updated':
84
+ return convertFileWatcherUpdated(props);
85
+ case 'mcp.tools.changed':
86
+ return convertMcpToolsChanged(props);
87
+ default:
88
+ return [];
89
+ }
90
+ }
91
+ function captureMessageMetadata(state, props) {
92
+ const info = (props?.info ?? {});
93
+ const msgId = typeof info.id === 'string' ? info.id : null;
94
+ const role = typeof info.role === 'string' ? info.role : null;
95
+ if (role === 'assistant')
96
+ state.assistantMessageCount += 1;
97
+ if (msgId && role === 'user')
98
+ state.userMessageIds.add(msgId);
99
+ }
100
+ function convertTodoUpdated(props) {
101
+ const todos = extractTodoList(props);
102
+ if (!todos)
103
+ return [];
104
+ const openCodeSessionId = getStringProp(props, 'sessionID');
105
+ return [
106
+ {
107
+ kind: 'todo_updated',
108
+ ...(openCodeSessionId ? { openCodeSessionId } : {}),
109
+ todos,
110
+ },
111
+ ];
112
+ }
113
+ function convertSessionStatus(state, props) {
114
+ const sessionID = getStringProp(props, 'sessionID');
115
+ if (sessionID &&
116
+ state.primarySessionId !== null &&
117
+ sessionID !== state.primarySessionId) {
118
+ return [];
119
+ }
120
+ const status = getStringProp(props, 'status', 'busy');
121
+ return [{ kind: 'thinking', status }];
122
+ }
123
+ function convertSessionCompacted(props) {
124
+ const sessionId = getStringProp(props, 'sessionID');
125
+ if (!sessionId)
126
+ return [];
127
+ return [{ kind: 'session_compacted', sessionId }];
128
+ }
129
+ function convertQuestionAsked(state, props) {
130
+ state.questionAskedCount += 1;
131
+ const requestId = getStringProp(props, 'id') ||
132
+ getStringProp(props, 'requestID') ||
133
+ getStringProp(props, 'requestId');
134
+ const sessionId = getStringProp(props, 'sessionID') || getStringProp(props, 'sessionId');
135
+ const rawQuestions = (props?.questions ?? []);
136
+ const questions = normaliseQuestions(rawQuestions);
137
+ if (!requestId) {
138
+ state.logger.warn('dropped question.asked event: missing request id', {
139
+ propertyKeys: Object.keys(props ?? {}),
140
+ });
141
+ return [];
142
+ }
143
+ return [{ kind: 'question_asked', requestId, sessionId, questions }];
144
+ }
145
+ function convertQuestionReplied(props) {
146
+ const requestId = getStringProp(props, 'requestID');
147
+ const sessionId = getStringProp(props, 'sessionID');
148
+ const answers = normaliseQuestionAnswers(props?.answers);
149
+ if (!requestId)
150
+ return [];
151
+ return [{ kind: 'question_replied', requestId, sessionId, answers }];
152
+ }
153
+ function convertQuestionRejected(props) {
154
+ const requestId = getStringProp(props, 'requestID');
155
+ const sessionId = getStringProp(props, 'sessionID');
156
+ if (!requestId)
157
+ return [];
158
+ return [{ kind: 'question_rejected', requestId, sessionId }];
159
+ }
160
+ function convertPermissionAsked(state, props) {
161
+ state.permissionAskedCount += 1;
162
+ const requestId = getStringProp(props, 'id') ||
163
+ getStringProp(props, 'requestID') ||
164
+ getStringProp(props, 'requestId');
165
+ const sessionId = getStringProp(props, 'sessionID') || getStringProp(props, 'sessionId');
166
+ const permission = getStringProp(props, 'permission');
167
+ const patterns = props?.patterns;
168
+ const pattern = Array.isArray(patterns) && typeof patterns[0] === 'string'
169
+ ? patterns[0]
170
+ : '*';
171
+ const title = getStringProp(props, 'title');
172
+ if (!requestId || !permission) {
173
+ state.logger.warn('dropped permission.asked event: missing required fields', {
174
+ hasRequestId: Boolean(requestId),
175
+ hasPermission: Boolean(permission),
176
+ propertyKeys: Object.keys(props ?? {}),
177
+ });
178
+ return [];
179
+ }
180
+ return [
181
+ {
182
+ kind: 'permission_asked',
183
+ requestId,
184
+ sessionId,
185
+ permission,
186
+ pattern,
187
+ ...(title ? { title } : {}),
188
+ },
189
+ ];
190
+ }
191
+ function convertPermissionReplied(state, props) {
192
+ const requestId = getStringProp(props, 'requestID');
193
+ const sessionId = getStringProp(props, 'sessionID');
194
+ if (!requestId)
195
+ return [];
196
+ const reply = props?.reply;
197
+ const normalised = normalisePermissionReply(reply);
198
+ if (normalised === null) {
199
+ state.logger.warn('dropped permission.replied event: malformed reply payload', { requestId, sessionId, rawReply: reply });
200
+ return [];
201
+ }
202
+ return [{ kind: 'permission_replied', requestId, sessionId, reply: normalised }];
203
+ }
204
+ function convertLspDiagnostics(props) {
205
+ const serverId = getStringProp(props, 'serverID');
206
+ const path = getStringProp(props, 'path');
207
+ if (!serverId || !path)
208
+ return [];
209
+ return [{ kind: 'lsp_diagnostics', serverId, path }];
210
+ }
211
+ function convertFileWatcherUpdated(props) {
212
+ const path = getStringProp(props, 'file');
213
+ const ev = getStringProp(props, 'event');
214
+ if (!path || !FILE_WATCHER_EVENTS.includes(ev)) {
215
+ return [];
216
+ }
217
+ return [
218
+ { kind: 'file_watcher_updated', path, event: ev },
219
+ ];
220
+ }
221
+ function convertMcpToolsChanged(props) {
222
+ const server = getStringProp(props, 'server');
223
+ if (!server)
224
+ return [];
225
+ return [{ kind: 'mcp_tools_changed', server }];
226
+ }
227
+ function convertMessagePartUpdated(state, props) {
228
+ if (!props)
229
+ return [];
230
+ const part = props.part;
231
+ if (!part)
232
+ return [];
233
+ const partKind = typeof part.type === 'string' ? part.type : undefined;
234
+ if (!partKind)
235
+ return [];
236
+ const partMessageId = typeof part.messageID === 'string' ? part.messageID : null;
237
+ if (partMessageId && state.userMessageIds.has(partMessageId)) {
238
+ return [];
239
+ }
240
+ const partId = typeof part.id === 'string' ? part.id : null;
241
+ if (partId) {
242
+ state.partKindsById.set(partId, partKind);
243
+ }
244
+ const partSessionID = getStringProp(props, 'sessionID');
245
+ const isChild = state.primarySessionId !== null &&
246
+ partSessionID.length > 0 &&
247
+ partSessionID !== state.primarySessionId;
248
+ if (isChild && (partKind === 'text' || partKind === 'reasoning')) {
249
+ return [];
250
+ }
251
+ const openCodeSessionId = isChild ? partSessionID : undefined;
252
+ if (partKind === 'tool-invocation' ||
253
+ partKind === 'tool' ||
254
+ partKind === 'tool-result') {
255
+ state.toolEventCount += 1;
256
+ const details = extractToolCallDetails(part, partKind);
257
+ if (partKind === 'tool-result') {
258
+ return buildToolResultFrames(part, details, openCodeSessionId);
259
+ }
260
+ return buildToolCallFrames(part, details, openCodeSessionId);
261
+ }
262
+ if (partKind === 'text') {
263
+ const frame = buildSnapshotDeltaFrame(state, part, 'text_delta');
264
+ return frame ? [frame] : [];
265
+ }
266
+ if (partKind === 'reasoning') {
267
+ const frame = buildSnapshotDeltaFrame(state, part, 'reasoning_delta');
268
+ if (frame)
269
+ warnOnReasoningToolMarkup(state, frame);
270
+ return frame ? [frame] : [];
271
+ }
272
+ if (partKind === 'step-finish') {
273
+ const frame = buildStepFinishFrame(state, part);
274
+ return frame ? [frame] : [];
275
+ }
276
+ return [];
277
+ }
278
+ function convertMessagePartDelta(state, props) {
279
+ if (!props)
280
+ return [];
281
+ const messageID = typeof props.messageID === 'string' ? props.messageID : null;
282
+ if (messageID && state.userMessageIds.has(messageID))
283
+ return [];
284
+ const partID = typeof props.partID === 'string' ? props.partID : null;
285
+ if (!partID) {
286
+ state.logger.warn('dropped message.part.delta: missing partID', {
287
+ propertyKeys: Object.keys(props),
288
+ });
289
+ return [];
290
+ }
291
+ const partKind = state.partKindsById.get(partID);
292
+ if (!partKind) {
293
+ state.logger.warn('dropped message.part.delta: orphan delta — partID not in snapshot map', { partID, messageID });
294
+ return [];
295
+ }
296
+ const sessionID = getStringProp(props, 'sessionID');
297
+ const isChild = state.primarySessionId !== null &&
298
+ sessionID.length > 0 &&
299
+ sessionID !== state.primarySessionId;
300
+ if (isChild && (partKind === 'text' || partKind === 'reasoning')) {
301
+ return [];
302
+ }
303
+ const delta = typeof props.delta === 'string' ? props.delta : null;
304
+ if (delta === null || delta.length === 0)
305
+ return [];
306
+ if (partKind === 'text') {
307
+ const prev = state.textPartLengths.get(partID) ?? 0;
308
+ state.textPartLengths.set(partID, prev + delta.length);
309
+ state.textDeltaChars += delta.length;
310
+ return [{ kind: 'text_delta', text: delta }];
311
+ }
312
+ if (partKind === 'reasoning') {
313
+ const prev = state.reasoningPartLengths.get(partID) ?? 0;
314
+ state.reasoningPartLengths.set(partID, prev + delta.length);
315
+ state.reasoningDeltaChars += delta.length;
316
+ return [{ kind: 'reasoning_delta', text: delta }];
317
+ }
318
+ return [];
319
+ }
320
+ function extractToolCallDetails(part, partKind) {
321
+ const stateObj = part.state;
322
+ const rawStatus = getStringProp(stateObj, 'status') ||
323
+ getStringProp(part, 'state') ||
324
+ (partKind === 'tool-result' ? 'completed' : 'started');
325
+ const status = resolveToolStatus(rawStatus);
326
+ const toolName = getStringProp(part, 'tool') ||
327
+ getStringProp(part, 'toolName') ||
328
+ getStringProp(part, 'name', 'unknown');
329
+ const toolCallId = getStringProp(part, 'id') ||
330
+ getStringProp(part, 'callID') ||
331
+ getStringProp(part, 'callId') ||
332
+ getStringProp(part, 'partId');
333
+ const args = stateObj?.input ?? part.input ?? part.args;
334
+ const output = stateObj?.output ?? part.output;
335
+ const error = stateObj?.error;
336
+ let summarySource;
337
+ if (typeof error === 'string' && error.length > 0) {
338
+ summarySource = error;
339
+ }
340
+ else if (typeof output === 'string') {
341
+ summarySource = output;
342
+ }
343
+ const out = { toolName, status };
344
+ if (toolCallId)
345
+ out.toolCallId = toolCallId;
346
+ if (args !== undefined)
347
+ out.args = args;
348
+ if (summarySource)
349
+ out.summary = summarySource.slice(0, 200);
350
+ return out;
351
+ }
352
+ function buildToolCallFrames(part, details, openCodeSessionId) {
353
+ const frames = [
354
+ {
355
+ kind: 'tool_call',
356
+ toolName: details.toolName,
357
+ status: details.status,
358
+ ...(details.toolCallId ? { toolCallId: details.toolCallId } : {}),
359
+ ...(details.args === undefined ? {} : { args: details.args }),
360
+ ...(details.summary ? { summary: details.summary } : {}),
361
+ ...(openCodeSessionId ? { openCodeSessionId } : {}),
362
+ },
363
+ ];
364
+ if (details.toolName === 'todowrite' && details.status === 'completed') {
365
+ const metadata = part.metadata;
366
+ const todos = extractTodoList(metadata ?? {});
367
+ if (todos) {
368
+ frames.push({
369
+ kind: 'todo_updated',
370
+ ...(openCodeSessionId ? { openCodeSessionId } : {}),
371
+ todos,
372
+ });
373
+ }
374
+ }
375
+ return frames;
376
+ }
377
+ function buildToolResultFrames(part, details, openCodeSessionId) {
378
+ const stateObj = part.state;
379
+ const output = stateObj?.output ?? part.output;
380
+ const errorRaw = stateObj?.error ?? part.error;
381
+ const errorMessage = typeof errorRaw === 'string' && errorRaw.length > 0 ? errorRaw : undefined;
382
+ return [
383
+ {
384
+ kind: 'tool_result',
385
+ toolName: details.toolName,
386
+ ...(details.toolCallId ? { toolCallId: details.toolCallId } : {}),
387
+ ...(output === undefined ? {} : { output }),
388
+ ...(errorMessage ? { errorMessage } : {}),
389
+ ...(openCodeSessionId ? { openCodeSessionId } : {}),
390
+ },
391
+ ];
392
+ }
393
+ function buildStepFinishFrame(state, part) {
394
+ const partId = typeof part.id === 'string' ? part.id : null;
395
+ const messageId = typeof part.messageID === 'string' ? part.messageID : null;
396
+ const reason = typeof part.reason === 'string' ? part.reason : null;
397
+ if (!partId || !messageId || !reason)
398
+ return null;
399
+ if (state.emittedStepFinishPartIds.has(partId))
400
+ return null;
401
+ const tokensRaw = part.tokens;
402
+ const cacheRaw = tokensRaw?.cache;
403
+ const tokens = {
404
+ input: numericTokenField(tokensRaw, 'input'),
405
+ output: numericTokenField(tokensRaw, 'output'),
406
+ reasoning: numericTokenField(tokensRaw, 'reasoning'),
407
+ cacheRead: numericTokenField(cacheRaw, 'read'),
408
+ cacheWrite: numericTokenField(cacheRaw, 'write'),
409
+ };
410
+ const cost = typeof part.cost === 'number' && Number.isFinite(part.cost) ? part.cost : 0;
411
+ state.emittedStepFinishPartIds.add(partId);
412
+ return {
413
+ kind: 'step_finished',
414
+ partId,
415
+ messageId,
416
+ reason,
417
+ cost,
418
+ tokens,
419
+ };
420
+ }
421
+ function buildSnapshotDeltaFrame(state, part, kind) {
422
+ const partId = typeof part.id === 'string' ? part.id : null;
423
+ const fullText = typeof part.text === 'string' ? part.text : null;
424
+ if (partId === null || fullText === null)
425
+ return null;
426
+ const lengths = kind === 'text_delta'
427
+ ? state.textPartLengths
428
+ : state.reasoningPartLengths;
429
+ const previousLength = lengths.get(partId) ?? 0;
430
+ if (fullText.length <= previousLength)
431
+ return null;
432
+ const delta = fullText.slice(previousLength);
433
+ lengths.set(partId, fullText.length);
434
+ if (kind === 'text_delta') {
435
+ state.textDeltaChars += delta.length;
436
+ return { kind: 'text_delta', text: delta };
437
+ }
438
+ state.reasoningDeltaChars += delta.length;
439
+ return { kind: 'reasoning_delta', text: delta };
440
+ }
441
+ function warnOnReasoningToolMarkup(state, frame) {
442
+ if (frame.kind !== 'reasoning_delta')
443
+ return;
444
+ if (!/<tool_call|<function=|<parameter=/i.test(frame.text))
445
+ return;
446
+ state.logger.warn('reasoning delta contains pseudo-tool-call markup', { preview: frame.text.slice(0, 240) });
447
+ }
448
+ function resolveToolStatus(s) {
449
+ if (s === 'result' || s === 'completed')
450
+ return 'completed';
451
+ if (s === 'error' || s === 'failed')
452
+ return 'error';
453
+ return 'started';
454
+ }
455
+ function extractTodoList(source) {
456
+ const rawTodos = source?.todos;
457
+ if (!Array.isArray(rawTodos))
458
+ return null;
459
+ const todos = [];
460
+ for (const t of rawTodos) {
461
+ if (!t || typeof t !== 'object')
462
+ continue;
463
+ const item = t;
464
+ const content = typeof item.content === 'string' ? item.content : '';
465
+ const status = typeof item.status === 'string' ? item.status : '';
466
+ const priority = typeof item.priority === 'string' ? item.priority : '';
467
+ if (content.length === 0)
468
+ continue;
469
+ todos.push({ content, status, priority });
470
+ }
471
+ return todos;
472
+ }
473
+ const MAX_QUESTION_BATCH = 10;
474
+ function normaliseQuestions(raw) {
475
+ if (!Array.isArray(raw))
476
+ return [];
477
+ const out = [];
478
+ for (const entry of raw) {
479
+ if (out.length >= MAX_QUESTION_BATCH)
480
+ break;
481
+ const item = buildQuestionItem(entry);
482
+ if (item)
483
+ out.push(item);
484
+ }
485
+ return out;
486
+ }
487
+ function buildQuestionItem(entry) {
488
+ if (!entry || typeof entry !== 'object')
489
+ return null;
490
+ const q = entry;
491
+ const header = typeof q.header === 'string' ? q.header : '';
492
+ const question = typeof q.question === 'string' ? q.question : '';
493
+ const canAutoDecide = typeof q.canAutoDecide === 'boolean' ? q.canAutoDecide : false;
494
+ const agentOptions = readAgentOptions(q.options);
495
+ const options = [...agentOptions];
496
+ if (canAutoDecide) {
497
+ options.push({
498
+ label: runtime_frame_1.RUNTIME_QUESTION_AUTO_DECIDE_OPTION,
499
+ description: 'Let the agent decide based on the briefing it already has.',
500
+ });
501
+ }
502
+ options.push({
503
+ label: runtime_frame_1.RUNTIME_QUESTION_OPEN_TEXT_OPTION,
504
+ description: 'Type your own answer.',
505
+ });
506
+ const item = { header, question, options };
507
+ if (typeof q.multiple === 'boolean')
508
+ item.multiple = q.multiple;
509
+ if (canAutoDecide)
510
+ item.canAutoDecide = true;
511
+ return item;
512
+ }
513
+ function readAgentOptions(raw) {
514
+ if (!Array.isArray(raw))
515
+ return [];
516
+ const out = [];
517
+ for (const o of raw) {
518
+ if (!o || typeof o !== 'object')
519
+ continue;
520
+ const oo = o;
521
+ const label = typeof oo.label === 'string' ? oo.label : '';
522
+ const description = typeof oo.description === 'string' ? oo.description : '';
523
+ if (label.length === 0)
524
+ continue;
525
+ if (label === runtime_frame_1.RUNTIME_QUESTION_OPEN_TEXT_OPTION ||
526
+ label === runtime_frame_1.RUNTIME_QUESTION_AUTO_DECIDE_OPTION) {
527
+ continue;
528
+ }
529
+ out.push({ label, description });
530
+ }
531
+ return out;
532
+ }
533
+ function normaliseQuestionAnswers(raw) {
534
+ if (!Array.isArray(raw))
535
+ return [];
536
+ const out = [];
537
+ for (const entry of raw) {
538
+ if (Array.isArray(entry)) {
539
+ out.push(entry.filter((v) => typeof v === 'string'));
540
+ }
541
+ }
542
+ return out;
543
+ }
544
+ function normalisePermissionReply(reply) {
545
+ if (!reply || typeof reply !== 'object')
546
+ return null;
547
+ const r = reply;
548
+ const tag = typeof r.type === 'string' ? r.type : null;
549
+ if (tag === 'always')
550
+ return 'always';
551
+ if (tag === 'once') {
552
+ const response = typeof r.response === 'string' ? r.response : null;
553
+ if (response === 'deny')
554
+ return 'deny';
555
+ if (response === 'allow')
556
+ return 'allow';
557
+ return null;
558
+ }
559
+ return null;
560
+ }
561
+ function numericTokenField(source, key) {
562
+ const v = source?.[key];
563
+ return typeof v === 'number' && Number.isFinite(v) ? v : 0;
564
+ }
565
+ function getStringProp(obj, key, fallback = '') {
566
+ const v = obj?.[key];
567
+ return typeof v === 'string' ? v : fallback;
568
+ }
569
+ function translateOpencodeResponse(state, response, context) {
570
+ const role = response.info?.role;
571
+ const partsArr = Array.isArray(response.parts) ? response.parts : [];
572
+ const eligibleParts = role === undefined || role === 'assistant'
573
+ ? partsArr.filter((p) => p.type === 'text' && typeof p.text === 'string' && p.text.length > 0)
574
+ : [];
575
+ const content = eligibleParts.map((p) => p.text).join('\n');
576
+ const hasStructured = response.info !== undefined && 'structured' in response.info;
577
+ const structured = hasStructured ? response.info?.structured : undefined;
578
+ if (context.modelOverride && response.info) {
579
+ const wireModelId = response.info.modelID;
580
+ const wireProviderId = response.info.providerID;
581
+ const requestedModel = context.modelOverride.modelId;
582
+ const requestedProvider = context.modelOverride.providerSlug;
583
+ if ((wireModelId !== undefined && wireModelId !== requestedModel) ||
584
+ (requestedProvider !== undefined &&
585
+ wireProviderId !== undefined &&
586
+ wireProviderId !== requestedProvider)) {
587
+ state.logger.warn('modelOverride did not take effect — response info disagrees with requested override', {
588
+ requestedModelId: requestedModel,
589
+ requestedProviderSlug: requestedProvider,
590
+ wireModelID: wireModelId,
591
+ wireProviderID: wireProviderId,
592
+ });
593
+ }
594
+ }
595
+ const producedNothing = content.length === 0 &&
596
+ !hasStructured &&
597
+ state.textDeltaChars === 0 &&
598
+ state.reasoningDeltaChars === 0 &&
599
+ state.toolEventCount === 0 &&
600
+ state.questionAskedCount === 0 &&
601
+ state.permissionAskedCount === 0;
602
+ if (producedNothing) {
603
+ return [
604
+ {
605
+ kind: 'error',
606
+ message: 'Agent turn produced no output. The upstream model returned an empty response — ' +
607
+ 'this typically indicates an LLM gateway / provider configuration problem. ' +
608
+ 'Check llm-gateway-api logs for this session and verify provider credentials.',
609
+ },
610
+ ];
611
+ }
612
+ return [
613
+ {
614
+ kind: 'done',
615
+ sessionId: context.sessionId,
616
+ content,
617
+ ...(hasStructured ? { structured } : {}),
618
+ },
619
+ ];
620
+ }
621
+ //# sourceMappingURL=opencode-event-translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-event-translator.js","sourceRoot":"","sources":["../../src/lib/opencode-event-translator.ts"],"names":[],"mappings":";;AAuFA,sDAmBC;AA2BD,wDAsDC;AA2pBD,8DAmFC;AAx4BD,mDAGyB;AAmDzB,SAAgB,qBAAqB,CACnC,UAAkD,EAAE;IAEpD,OAAO;QACL,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,IAAI,GAAG,EAAE;QACxB,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,oBAAoB,EAAE,IAAI,GAAG,EAAE;QAC/B,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,wBAAwB,EAAE,IAAI,GAAG,EAAE;QACnC,cAAc,EAAE,CAAC;QACjB,mBAAmB,EAAE,CAAC;QACtB,cAAc,EAAE,CAAC;QACjB,kBAAkB,EAAE,CAAC;QACrB,oBAAoB,EAAE,CAAC;QACvB,qBAAqB,EAAE,CAAC;QACxB,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAqB;IACtC,IAAI,CAAC,OAAO,EAAE,OAAO;QAEnB,OAAO,CAAC,IAAI,CAAC,+BAA+B,OAAO,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;CACF,CAAC;AAEF,MAAM,cAAc,GAAgD;IAClE,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,SAAS;CAC1B,CAAC;AAEF,MAAM,mBAAmB,GAA2C;IAClE,KAAK;IACL,QAAQ;IACR,QAAQ;CACT,CAAC;AAQF,SAAgB,sBAAsB,CACpC,KAAsB,EACtB,GAA6D;IAE7D,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,KAAK,GACT,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAClD,CAAC,CAAE,GAAG,CAAC,UAAsC;QAC7C,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnC,KAAK,iBAAiB;YACpB,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,KAAK,sBAAsB;YACzB,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,KAAK,oBAAoB;YACvB,OAAO,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,KAAK,gBAAgB;YACnB,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,KAAK,mBAAmB;YACtB,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,gBAAgB;YACnB,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,KAAK,kBAAkB;YACrB,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC,KAAK,mBAAmB;YACtB,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACxC,KAAK,kBAAkB;YACrB,OAAO,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,KAAK,oBAAoB;YACvB,OAAO,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,KAAK,aAAa;YAChB,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACnC,KAAK,wBAAwB;YAC3B,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,sBAAsB;YACzB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,mBAAmB;YACtB,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvC;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAsB,EACtB,KAA0C;IAE1C,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAA4B,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,IAAI,IAAI,KAAK,WAAW;QAAE,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA0C;IAE1C,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5D,OAAO;QACL;YACE,IAAI,EAAE,cAAc;YACpB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,KAAK;SACN;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAsB,EACtB,KAA0C;IAI1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,IACE,SAAS;QACT,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAC/B,SAAS,KAAK,KAAK,CAAC,gBAAgB,EACpC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAA0C;IAE1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAsB,EACtB,KAA0C;IAE1C,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;QAC1B,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC;QACjC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAY,CAAC;IACzD,MAAM,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;YACpE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACvC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAA0C;IAE1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAA0C;IAE1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAsB,EACtB,KAA0C;IAE1C,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;QAC1B,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC;QACjC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpC,MAAM,SAAS,GACb,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC;IACjC,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ;QACxD,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,GAAG,CAAC;IACV,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,yDAAyD,EACzD;YACE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC;YAChC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC;YAClC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACvC,CACF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL;YACE,IAAI,EAAE,kBAAkB;YACxB,SAAS;YACT,SAAS;YACT,UAAU;YACV,OAAO;YACP,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAsB,EACtB,KAA0C;IAE1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;IAC3B,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,2DAA2D,EAC3D,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAC1C,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAA0C;IAE1C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,yBAAyB,CAChC,KAA0C;IAE1C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAE,mBAAyC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,EAA6B,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAA0C;IAE1C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAsB,EACtB,KAA0C;IAE1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,IAA2C,CAAC;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAGzB,MAAM,aAAa,GACjB,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,IAAI,aAAa,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAMD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,OAAO,GACX,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAC/B,aAAa,CAAC,MAAM,GAAG,CAAC;QACxB,aAAa,KAAK,KAAK,CAAC,gBAAgB,CAAC;IAC3C,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,WAAW,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9D,IACE,QAAQ,KAAK,iBAAiB;QAC9B,QAAQ,KAAK,MAAM;QACnB,QAAQ,KAAK,aAAa,EAC1B,CAAC;QACD,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC/B,OAAO,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACtE,IAAI,KAAK;YAAE,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAsB,EACtB,KAA0C;IAE1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,SAAS,GACb,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,IAAI,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAMhE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;YAC9D,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACjC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAGd,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,uEAAuE,EACvE,EAAE,MAAM,EAAE,SAAS,EAAE,CACtB,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GACX,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAC/B,SAAS,CAAC,MAAM,GAAG,CAAC;QACpB,SAAS,KAAK,KAAK,CAAC,gBAAgB,CAAC;IACvC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,WAAW,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;QACrC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC;QAC1C,OAAO,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAGD,OAAO,EAAE,CAAC;AACZ,CAAC;AAUD,SAAS,sBAAsB,CAC7B,IAA6B,EAC7B,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAA4C,CAAC;IACnE,MAAM,SAAS,GACb,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACjC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;QAC5B,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,QAAQ,GACZ,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;QAC3B,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC;QAC/B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzC,MAAM,UAAU,GACd,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;QACzB,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC7B,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC7B,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC/C,MAAM,KAAK,GAAG,QAAQ,EAAE,KAAK,CAAC;IAC9B,IAAI,aAAiC,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,aAAa,GAAG,KAAK,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtC,aAAa,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAML,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,UAAU;QAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;IAC5C,IAAI,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IACxC,IAAI,aAAa;QAAE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA6B,EAC7B,OAAwB,EACxB,iBAAqC;IAErC,MAAM,MAAM,GAAmB;QAC7B;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA+C,CAAC;QACtE,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,cAAc;gBACpB,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAA6B,EAC7B,OAAwB,EACxB,iBAAqC;IAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAA4C,CAAC;IACnE,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;IAC/C,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IAC/C,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,OAAO;QACL;YACE,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAsB,EACtB,IAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,MAA6C,CAAC;IACrE,MAAM,QAAQ,GAAG,SAAS,EAAE,KAA4C,CAAC;IACzE,MAAM,MAAM,GAAsB;QAChC,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;QAC5C,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC9C,SAAS,EAAE,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC;QACpD,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC9C,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;KACjD,CAAC;IACF,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,MAAM;QACN,SAAS;QACT,MAAM;QACN,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC;AAOD,SAAS,uBAAuB,CAC9B,KAAsB,EACtB,IAA6B,EAC7B,IAAsC;IAEtC,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,OAAO,GACX,IAAI,KAAK,YAAY;QACnB,CAAC,CAAC,KAAK,CAAC,eAAe;QACvB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACjC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAsB,EACtB,KAAmB;IAEnB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO;IAC7C,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO;IACnE,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,kDAAkD,EAClD,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACtC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC5D,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IACpD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CACtB,MAA2C;IAE3C,MAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC1C,MAAM,IAAI,GAAG,CAA4B,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,MAAM,IAAI,kBAAkB;YAAE,MAAM;QAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,aAAa,GACjB,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAMjD,MAAM,OAAO,GAA6C,CAAC,GAAG,YAAY,CAAC,CAAC;IAC5E,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,mDAAmC;YAC1C,WAAW,EACT,4DAA4D;SAC/D,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,iDAAiC;QACxC,WAAW,EAAE,uBAAuB;KACrC,CAAC,CAAC;IACH,MAAM,IAAI,GAMN,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAChE,IAAI,aAAa;QAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAY;IAEZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,GAAG,GAA6C,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC1C,MAAM,EAAE,GAAG,CAA4B,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,WAAW,GACf,OAAO,EAAE,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAI3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,IACE,KAAK,KAAK,iDAAiC;YAC3C,KAAK,KAAK,mDAAmC,EAC7C,CAAC;YACD,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAY;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAOD,SAAS,wBAAwB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACtC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,QAAQ,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC;QACvC,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,MAA2C,EAC3C,GAAW;IAEX,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CACpB,GAAwC,EACxC,GAAW,EACX,QAAQ,GAAG,EAAE;IAEb,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9C,CAAC;AAqBD,SAAgB,yBAAyB,CACvC,KAAsB,EACtB,QAQC,EACD,OAGC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAIrE,MAAM,aAAa,GACjB,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW;QACxC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9F,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,aAAa,GACjB,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC;IAC/D,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAGzE,IAAI,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAChD,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;QACrD,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC;QAC7D,IACE,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,cAAc,CAAC;YAC7D,CAAC,iBAAiB,KAAK,SAAS;gBAC9B,cAAc,KAAK,SAAS;gBAC5B,cAAc,KAAK,iBAAiB,CAAC,EACvC,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,IAAI,CACf,qFAAqF,EACrF;gBACE,gBAAgB,EAAE,cAAc;gBAChC,qBAAqB,EAAE,iBAAiB;gBACxC,WAAW,EAAE,WAAW;gBACxB,cAAc,EAAE,cAAc;aAC/B,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GACnB,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,aAAa;QACd,KAAK,CAAC,cAAc,KAAK,CAAC;QAC1B,KAAK,CAAC,mBAAmB,KAAK,CAAC;QAC/B,KAAK,CAAC,cAAc,KAAK,CAAC;QAC1B,KAAK,CAAC,kBAAkB,KAAK,CAAC;QAC9B,KAAK,CAAC,oBAAoB,KAAK,CAAC,CAAC;IAEnC,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;YACL;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EACL,iFAAiF;oBACjF,4EAA4E;oBAC5E,8EAA8E;aACjF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO;YACP,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC;KACF,CAAC;AACJ,CAAC"}