@verdant-web/server 2.0.8 → 2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"ClientConnection.js","sourceRoot":"","sources":["../../src/ClientConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClientConnection.js","sourceRoot":"","sources":["../../src/ClientConnection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
3
  /// <reference types="node" resolution-mode="require"/>
4
+ /// <reference types="node" resolution-mode="require"/>
4
5
  import { DocumentBaseline, Operation, ServerMessage } from '@verdant-web/common';
5
6
  import EventEmitter from 'events';
6
7
  import { IncomingMessage, Server as HttpServer, ServerResponse } from 'http';
@@ -104,13 +105,28 @@ export declare class Server extends EventEmitter implements MessageSender {
104
105
  * Handles an HTTP request from a verdant client.
105
106
  */
106
107
  handleRequest: (req: IncomingMessage, res: ServerResponse) => Promise<void>;
107
- private sendErrorResponse;
108
+ /**
109
+ * Handles a "fetch" style request. Complement to handleRequest, for servers
110
+ * that use Request/Response style handlers.
111
+ */
112
+ handleFetch: (req: Request) => Promise<Response>;
113
+ private handleRequestBody;
114
+ private writeErrorResponse;
115
+ private getErrorResponse;
108
116
  /**
109
117
  * Handles a multipart upload of a file from a verdant client. The upload
110
118
  * will include parameters for the file's ID, name, and type. The request
111
119
  * must be authenticated with a token to tie it to a library.
112
120
  */
113
121
  handleFileRequest: (req: IncomingMessage, res: ServerResponse) => Promise<void>;
122
+ /**
123
+ * Handles a "fetch" style file request. Complement to handleFileRequest,
124
+ * for servers that use Request/Response style handlers.
125
+ */
126
+ handleFileFetch: (req: Request) => Promise<Response>;
127
+ private getFileStorageOrThrow;
128
+ private streamIncomingFile;
129
+ private getFileData;
114
130
  broadcast: (libraryId: string, message: ServerMessage, omitKeys?: string[]) => void;
115
131
  send: (libraryId: string, key: string, message: ServerMessage) => void;
116
132
  private handleMessage;
@@ -24,6 +24,7 @@ import { Readable } from 'stream';
24
24
  import { FileMetadata } from './files/FileMetadata.js';
25
25
  import { ServerLibrary } from './ServerLibrary.js';
26
26
  import { migrations } from './migrations.js';
27
+ import { TransformStream, } from 'node:stream/web';
27
28
  class DefaultProfiles {
28
29
  constructor() {
29
30
  this.get = async (userId) => {
@@ -82,6 +83,15 @@ export class Server extends EventEmitter {
82
83
  return this.tokenVerifier.verifyToken(this.getRequestToken(req));
83
84
  };
84
85
  this.getRequestToken = (req) => {
86
+ if (isFetch(req)) {
87
+ const authHeader = req.headers.get('Authorization');
88
+ assert(authHeader, 'Token is required');
89
+ const [type, token] = authHeader.split(' ');
90
+ if (type === 'Bearer') {
91
+ return token;
92
+ }
93
+ return token;
94
+ }
85
95
  if (req.headers.authorization) {
86
96
  const [type, token] = req.headers.authorization.split(' ');
87
97
  if (type === 'Bearer') {
@@ -143,28 +153,45 @@ export class Server extends EventEmitter {
143
153
  reject(e);
144
154
  });
145
155
  }));
146
- try {
147
- for (const message of body.messages) {
148
- await this.handleMessage(key, info, message);
149
- }
150
- }
151
- catch (e) {
152
- this.emit('error', e);
153
- res.writeHead(500);
154
- res.end();
155
- return;
156
- }
157
- // update our keepalive timers for presence management
158
- const firstMessage = body.messages[0];
159
- if (firstMessage) {
160
- this.keepalives.refresh(info.libraryId, firstMessage.replicaId);
161
- }
156
+ await this.handleRequestBody(key, info, body);
162
157
  finish();
163
158
  this.emit('request', info);
164
159
  }
165
160
  }
166
161
  catch (e) {
167
- return this.sendErrorResponse(e, res);
162
+ return this.writeErrorResponse(e, res);
163
+ }
164
+ };
165
+ /**
166
+ * Handles a "fetch" style request. Complement to handleRequest, for servers
167
+ * that use Request/Response style handlers.
168
+ */
169
+ this.handleFetch = async (req) => {
170
+ try {
171
+ const info = this.authorizeRequest(req);
172
+ const key = generateId();
173
+ const finish = this.clientConnections.addFetch(info.libraryId, key, req, info);
174
+ const body = (await req.json());
175
+ if (!body) {
176
+ throw new VerdantError(VerdantError.Code.BodyRequired);
177
+ }
178
+ await this.handleRequestBody(key, info, body);
179
+ const res = finish();
180
+ this.emit('request', info);
181
+ return res;
182
+ }
183
+ catch (e) {
184
+ return this.getErrorResponse(e);
185
+ }
186
+ };
187
+ this.handleRequestBody = async (key, info, body) => {
188
+ for (const message of body.messages) {
189
+ await this.handleMessage(key, info, message);
190
+ }
191
+ // update our keepalive timers for presence management
192
+ const firstMessage = body.messages[0];
193
+ if (firstMessage) {
194
+ this.keepalives.refresh(info.libraryId, firstMessage.replicaId);
168
195
  }
169
196
  };
170
197
  /**
@@ -173,70 +200,19 @@ export class Server extends EventEmitter {
173
200
  * must be authenticated with a token to tie it to a library.
174
201
  */
175
202
  this.handleFileRequest = async (req, res) => {
176
- const fs = this.fileStorage;
177
- if (!fs) {
178
- this.emit('error', new Error('No file storage configured, but a client attempted to upload a file.'));
179
- res.writeHead(500);
180
- res.write('File storage is not configured');
181
- res.end();
182
- return;
183
- }
184
- // FIXME: rather than trying to support Express, I should
185
- // just expose regular methods you call from whatever HTTP handler...
186
- const url = new URL(req.originalUrl || req.baseUrl || req.url || '', 'http://localhost');
187
- const id = url.pathname.split('/').pop();
188
- if (!id || id === 'files') {
189
- res.writeHead(400);
190
- res.write('File ID is required to be in the URL path as the last parameter');
191
- res.end();
192
- return;
193
- }
194
203
  try {
204
+ const info = this.authorizeRequest(req);
205
+ const url = new URL(req.originalUrl || req.baseUrl || req.url || '', 'http://localhost');
206
+ const id = url.pathname.split('/').pop();
207
+ if (!id || id === 'files') {
208
+ throw new VerdantError(VerdantError.Code.NotFound);
209
+ }
195
210
  if (req.method === 'POST') {
196
- const info = this.authorizeRequest(req);
197
- await new Promise((resolve, reject) => {
198
- const bb = busboy({ headers: req.headers });
199
- bb.on('file', (fieldName, stream, fileInfo) => {
200
- // too many 'info's....
201
- const lofiFileInfo = {
202
- id,
203
- libraryId: info.libraryId,
204
- fileName: fileInfo.filename,
205
- type: fileInfo.mimeType,
206
- };
207
- // write metadata to storage
208
- try {
209
- this.fileMetadata.put(info.libraryId, lofiFileInfo);
210
- fs.put(stream, lofiFileInfo);
211
- }
212
- catch (e) {
213
- reject(e);
214
- }
215
- });
216
- bb.on('field', (fieldName, value) => {
217
- if (fieldName === 'file') {
218
- if (this.__testMode) {
219
- // this isn't right in the real world, but in testing it's
220
- // the only way we get file data.
221
- // we create a stream from the data and pass it as if it
222
- // were a file stream
223
- const stream = new Readable();
224
- stream.push(value);
225
- stream.push(null);
226
- const fileInfo = {
227
- filename: 'test.txt',
228
- mimeType: 'text/plain',
229
- };
230
- bb.emit('file', fieldName, stream, fileInfo);
231
- }
232
- else {
233
- throw new Error('Invalid file upload');
234
- }
235
- }
236
- });
237
- req.pipe(bb);
238
- bb.on('finish', resolve);
239
- bb.on('error', reject);
211
+ await this.streamIncomingFile({
212
+ req,
213
+ info,
214
+ headers: req.headers,
215
+ id,
240
216
  });
241
217
  this.log('File upload complete');
242
218
  res.writeHead(200);
@@ -244,38 +220,146 @@ export class Server extends EventEmitter {
244
220
  res.end();
245
221
  }
246
222
  else if (req.method === 'GET') {
247
- const info = this.authorizeRequest(req);
248
- const fileInfo = this.fileMetadata.get(info.libraryId, id);
249
- if (!fileInfo) {
250
- res.writeHead(404);
251
- res.end();
252
- return;
253
- }
254
- const url = await fs.getUrl({
255
- fileName: fileInfo.name,
256
- id: fileInfo.fileId,
257
- libraryId: info.libraryId,
258
- type: fileInfo.type,
259
- });
223
+ const data = await this.getFileData(info, id);
260
224
  res.writeHead(200, {
261
225
  'Content-Type': 'application/json',
262
226
  });
263
- // we need to augment that data with the URL from the file backend.
264
- // and generally enforce the FileData interface here...
265
- const data = {
266
- id: fileInfo.fileId,
267
- url,
268
- remote: true,
269
- name: fileInfo.name,
270
- type: fileInfo.type,
271
- };
272
227
  res.write(JSON.stringify(data));
273
228
  res.end();
274
229
  }
275
230
  }
276
231
  catch (e) {
277
- return this.sendErrorResponse(e, res);
232
+ return this.writeErrorResponse(e, res);
233
+ }
234
+ };
235
+ /**
236
+ * Handles a "fetch" style file request. Complement to handleFileRequest,
237
+ * for servers that use Request/Response style handlers.
238
+ */
239
+ this.handleFileFetch = async (req) => {
240
+ this.log('info', 'Handling file fetch', req.url, req.method);
241
+ try {
242
+ const info = this.authorizeRequest(req);
243
+ const url = new URL(req.url, 'http://localhost');
244
+ const id = url.pathname.split('/').pop();
245
+ if (!id || id === 'files') {
246
+ throw new VerdantError(VerdantError.Code.NotFound);
247
+ }
248
+ if (req.method === 'POST') {
249
+ if (!req.body) {
250
+ throw new VerdantError(VerdantError.Code.InvalidRequest);
251
+ }
252
+ const headersAsRecord = Array.from(req.headers.entries()).reduce((acc, [key, value]) => {
253
+ acc[key] = value;
254
+ return acc;
255
+ }, {});
256
+ // this is needed because Node's webstreams don't
257
+ // like itty's polyfill streams
258
+ const intermediate = new TransformStream();
259
+ req.body.pipeTo(intermediate.writable);
260
+ await this.streamIncomingFile({
261
+ req: Readable.fromWeb(intermediate.readable),
262
+ info,
263
+ headers: headersAsRecord,
264
+ id,
265
+ });
266
+ this.log('File upload complete');
267
+ return new Response(JSON.stringify({ success: true }), {
268
+ status: 200,
269
+ headers: {
270
+ 'Content-Type': 'application/json',
271
+ },
272
+ });
273
+ }
274
+ else if (req.method === 'GET') {
275
+ const data = await this.getFileData(info, id);
276
+ return new Response(JSON.stringify(data), {
277
+ status: 200,
278
+ headers: {
279
+ 'Content-Type': 'application/json',
280
+ },
281
+ });
282
+ }
283
+ else {
284
+ throw new VerdantError(VerdantError.Code.InvalidRequest);
285
+ }
286
+ }
287
+ catch (e) {
288
+ return this.getErrorResponse(e);
289
+ }
290
+ };
291
+ this.getFileStorageOrThrow = () => {
292
+ if (!this.fileStorage) {
293
+ throw new VerdantError(VerdantError.Code.NoFileStorage);
294
+ }
295
+ return this.fileStorage;
296
+ };
297
+ this.streamIncomingFile = ({ id, req, headers, info, }) => {
298
+ const fs = this.getFileStorageOrThrow();
299
+ return new Promise((resolve, reject) => {
300
+ const bb = busboy({ headers });
301
+ bb.on('file', (fieldName, stream, fileInfo) => {
302
+ // too many 'info's....
303
+ const lofiFileInfo = {
304
+ id,
305
+ libraryId: info.libraryId,
306
+ fileName: fileInfo.filename,
307
+ type: fileInfo.mimeType,
308
+ };
309
+ // write metadata to storage
310
+ try {
311
+ this.fileMetadata.put(info.libraryId, lofiFileInfo);
312
+ fs.put(stream, lofiFileInfo);
313
+ }
314
+ catch (e) {
315
+ reject(e);
316
+ }
317
+ });
318
+ bb.on('field', (fieldName, value) => {
319
+ if (fieldName === 'file') {
320
+ if (this.__testMode) {
321
+ // this isn't right in the real world, but in testing it's
322
+ // the only way we get file data.
323
+ // we create a stream from the data and pass it as if it
324
+ // were a file stream
325
+ const stream = new Readable();
326
+ stream.push(value);
327
+ stream.push(null);
328
+ const fileInfo = {
329
+ filename: 'test.txt',
330
+ mimeType: 'text/plain',
331
+ };
332
+ bb.emit('file', fieldName, stream, fileInfo);
333
+ }
334
+ else {
335
+ throw new Error('Invalid file upload');
336
+ }
337
+ }
338
+ });
339
+ req.pipe(bb);
340
+ bb.on('finish', resolve);
341
+ bb.on('error', reject);
342
+ });
343
+ };
344
+ this.getFileData = async (info, id) => {
345
+ const fs = this.getFileStorageOrThrow();
346
+ const fileInfo = this.fileMetadata.get(info.libraryId, id);
347
+ if (!fileInfo) {
348
+ throw new VerdantError(VerdantError.Code.NotFound, undefined, `File ${id} not found`);
278
349
  }
350
+ const url = await fs.getUrl({
351
+ fileName: fileInfo.name,
352
+ id: fileInfo.fileId,
353
+ libraryId: info.libraryId,
354
+ type: fileInfo.type,
355
+ });
356
+ return {
357
+ id: fileInfo.fileId,
358
+ url,
359
+ remote: true,
360
+ name: fileInfo.name,
361
+ type: fileInfo.type,
362
+ };
279
363
  };
280
364
  this.broadcast = (libraryId, message, omitKeys = []) => {
281
365
  this.clientConnections.broadcast(libraryId, message, omitKeys);
@@ -410,11 +494,16 @@ export class Server extends EventEmitter {
410
494
  noServer: true,
411
495
  });
412
496
  this.wss.on('connection', this.handleConnection);
413
- this.httpServer =
414
- options.httpServer || new HttpServer(this.createInternalRequestHandler());
497
+ if (options.httpServer) {
498
+ // backwards compat with old httpServer option - it didn't attach path handlers
499
+ this.attach(options.httpServer, { httpPath: false });
500
+ }
501
+ else {
502
+ this.attach(new HttpServer(this.createInternalRequestHandler()));
503
+ }
415
504
  this.keepalives.subscribe('lost', this.library.remove);
416
505
  }
417
- sendErrorResponse(e, res) {
506
+ writeErrorResponse(e, res) {
418
507
  this.emit('error', e);
419
508
  this.log('Error handling request', e);
420
509
  if (e instanceof VerdantError) {
@@ -428,5 +517,29 @@ export class Server extends EventEmitter {
428
517
  }
429
518
  res.end();
430
519
  }
520
+ // for fetch-style
521
+ getErrorResponse(e) {
522
+ this.emit('error', e);
523
+ this.log('Error handling request', e);
524
+ if (e instanceof VerdantError) {
525
+ return new Response(JSON.stringify(e.toResponse()), {
526
+ status: e.httpStatus,
527
+ headers: {
528
+ 'Content-Type': 'application/json',
529
+ },
530
+ });
531
+ }
532
+ else {
533
+ return new Response(JSON.stringify(new VerdantError(VerdantError.Code.Unexpected).toResponse()), {
534
+ status: 500,
535
+ headers: {
536
+ 'Content-Type': 'application/json',
537
+ },
538
+ });
539
+ }
540
+ }
541
+ }
542
+ function isFetch(request) {
543
+ return 'json' in request;
431
544
  }
432
545
  //# sourceMappingURL=Server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EACN,MAAM,EAEN,SAAS,EAGT,UAAU,EAGV,YAAY,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAmB,MAAM,IAAI,UAAU,EAAkB,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAa,MAAM,IAAI,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAgB,MAAM,eAAe,CAAC;AAChE,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAiB,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAsB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiD7C,MAAM,eAAe;IAArB;QACC,QAAG,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;YAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC;IACH,CAAC;CAAA;AA8BD,MAAM,OAAO,MAAO,SAAQ,YAAY;IAkBvC,YAAY,OAAsB;QACjC,KAAK,EAAE,CAAC;QAZD,sBAAiB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAClD,eAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAI1C,6BAAwB,GAAG,IAAI,OAAO,EAAqB,CAAC;QAE5D,QAAG,GAA6B,GAAG,EAAE,GAAE,CAAC,CAAC;QAEzC,eAAU,GAAG,KAAK,CAAC;QAqD3B;;;;;;;WAOG;QACH,WAAM,GAAG,CACR,MAAkB,EAClB,UAAyC,EAAE,EAC1C,EAAE;YACH,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;aACnD;YACD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAElD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;gBAC/B,IAAI,CAAC,UAAU,CAAC,EAAE,CACjB,SAAS,EACT,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,QAAQ,CAAC,CACnD,CAAC;aACF;QACF,CAAC,CAAC;QAEF;;WAEG;QACH,kBAAa,GAAG,KAAK,EACpB,GAAoB,EACpB,MAAuB,EACvB,IAAY,EACX,EAAE;YACH,IAAI;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;oBAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACH;YAAC,OAAO,CAAC,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,EAAE;oBACtD,MAAM,CAAC,KAAK,CACX,+BAA+B;wBAC9B,uBAAuB;wBACvB,uBAAuB;wBACvB,MAAM,CACP,CAAC;iBACF;gBACD,MAAM,CAAC,OAAO,EAAE,CAAC;aACjB;QACF,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,GAAoB,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,GAAoB,EAAE,EAAE;YAClD,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC9B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACtB,OAAO,KAAK,CAAC;iBACb;aACD;YAED,IAAI,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE;gBAC1C,0DAA0D;gBAC1D,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvE,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACtB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;iBACpB;aACD;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACnC,OAAO,KAAK,CAAC;QACd,CAAC,CAAC;QAEM,iCAA4B,GAAG,CAAC,UAAU,GAAG,OAAO,EAAE,EAAE;YAC/D,MAAM,aAAa,GAAG,CAAC,GAAoB,EAAE,GAAmB,EAAE,EAAE;gBACnE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBACvD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;oBACpC,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;wBAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;qBACpC;yBAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;wBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;qBACxC;iBACD;qBAAM;oBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;iBACV;YACF,CAAC,CAAC;YACF,OAAO,aAAa,CAAC;QACtB,CAAC,CAAC;QAEF;;WAEG;QACH,kBAAa,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;;YACnE,IAAI;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAExC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;oBAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAC/C,IAAI,CAAC,SAAS,EACd,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,CACJ,CAAC;oBAEF,yDAAyD;oBACzD,aAAa;oBACb,MAAM,IAAI,GAGT,MAAC,GAAW,CAAC,IAAI,mCACjB,CAAC,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC9C,IAAI,IAAI,GAAG,EAAE,CAAC;wBACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;4BACxB,IAAI,IAAI,KAAK,CAAC;wBACf,CAAC,CAAC,CAAC;wBACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;4BAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC3B,CAAC,CAAC,CAAC;wBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4BACrB,MAAM,CAAC,CAAC,CAAC,CAAC;wBACX,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC,CAAC;oBAEL,IAAI;wBACH,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACpC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;yBAC7C;qBACD;oBAAC,OAAO,CAAC,EAAE;wBACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;wBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;wBACV,OAAO;qBACP;oBAED,sDAAsD;oBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,YAAY,EAAE;wBACjB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;qBAChE;oBAED,MAAM,EAAE,CAAC;oBAET,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBAC3B;aACD;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACtC;QACF,CAAC,CAAC;QAqBF;;;;WAIG;QACH,sBAAiB,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;YACvE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5B,IAAI,CAAC,EAAE,EAAE;gBACR,IAAI,CAAC,IAAI,CACR,OAAO,EACP,IAAI,KAAK,CACR,sEAAsE,CACtE,CACD,CAAC;gBACF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAC5C,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;aACP;YAED,yDAAyD;YACzD,qEAAqE;YACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,GAAW,CAAC,WAAW,IAAK,GAAW,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EACjE,kBAAkB,CAClB,CAAC;YAEF,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAEzC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE;gBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,KAAK,CACR,iEAAiE,CACjE,CAAC;gBACF,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;aACP;YAED,IAAI;gBACH,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACrC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBAE5C,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;4BAC7C,uBAAuB;4BACvB,MAAM,YAAY,GAAa;gCAC9B,EAAE;gCACF,SAAS,EAAE,IAAI,CAAC,SAAS;gCACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gCAC3B,IAAI,EAAE,QAAQ,CAAC,QAAQ;6BACvB,CAAC;4BACF,4BAA4B;4BAC5B,IAAI;gCACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gCACpD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;6BAC7B;4BAAC,OAAO,CAAC,EAAE;gCACX,MAAM,CAAC,CAAC,CAAC,CAAC;6BACV;wBACF,CAAC,CAAC,CAAC;wBACH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;4BACnC,IAAI,SAAS,KAAK,MAAM,EAAE;gCACzB,IAAI,IAAI,CAAC,UAAU,EAAE;oCACpB,0DAA0D;oCAC1D,iCAAiC;oCACjC,wDAAwD;oCACxD,qBAAqB;oCACrB,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oCAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oCACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCAClB,MAAM,QAAQ,GAAG;wCAChB,QAAQ,EAAE,UAAU;wCACpB,QAAQ,EAAE,YAAY;qCACtB,CAAC;oCACF,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;iCAC7C;qCAAM;oCACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;iCACvC;6BACD;wBACF,CAAC,CAAC,CAAC;wBAEH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACb,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACzB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC7C,GAAG,CAAC,GAAG,EAAE,CAAC;iBACV;qBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;oBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBAC3D,IAAI,CAAC,QAAQ,EAAE;wBACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;wBACV,OAAO;qBACP;oBAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC;wBAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI;wBACvB,EAAE,EAAE,QAAQ,CAAC,MAAM;wBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACnB,CAAC,CAAC;oBACH,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;wBAClB,cAAc,EAAE,kBAAkB;qBAClC,CAAC,CAAC;oBACH,mEAAmE;oBACnE,uDAAuD;oBACvD,MAAM,IAAI,GAAa;wBACtB,EAAE,EAAE,QAAQ,CAAC,MAAM;wBACnB,GAAG;wBACH,MAAM,EAAE,IAAI;wBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACnB,CAAC;oBACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,GAAG,CAAC,GAAG,EAAE,CAAC;iBACV;aACD;YAAC,OAAO,CAAC,EAAE;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACtC;QACF,CAAC,CAAC;QAEF,cAAS,GAAG,CACX,SAAiB,EACjB,OAAsB,EACtB,WAAqB,EAAE,EACtB,EAAE;YACH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,SAAI,GAAG,CAAC,SAAiB,EAAE,GAAW,EAAE,OAAsB,EAAE,EAAE;YACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC,CAAC;QAEM,kBAAa,GAAG,CACvB,SAAiB,EACjB,IAAe,EACf,OAAsB,EACrB,EAAE;YACH,IAAI,CAAC,GAAG,CACP,uBAAuB,EACvB,IAAI,CAAC,MAAM,EACX,WAAW,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CACvB,CAAC;YACF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAC1B,EAAa,EACb,GAAoB,EACpB,IAAe,EACd,EAAE;YACH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;YAEzB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAEhE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAkB,CAAC;gBAE7D,IAAI,IAAI,CAAC,SAAS,EAAE;oBACnB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxD;gBAED,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,SAAS,EAAE;oBACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC;oBACzD,OAAO;iBACP;gBAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAE/C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,GAAG,MAAwC,EAAE,EAAE;YACxD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,UAAK,GAAG,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC7B,UAAU,CAAC,GAAG,EAAE;wBACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;wBAC5C,OAAO,EAAE,CAAC;oBACX,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;oBACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC1B,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAChC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC;gBACF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC7B,UAAU,CAAC,GAAG,EAAE;wBACf,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;wBAC9C,OAAO,EAAE,CAAC;oBACX,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;wBACnB,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC;aACF,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF;;;;;;;WAOG;QACH,iBAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;YACpC,yBAAyB;YACzB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF;;WAEG;QACH,uBAAkB,GAAG,CAAC,SAAiB,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF;;;;WAIG;QACH,mBAAc,GAAG,CAAC,SAAiB,EAAE,EAAE;YACtC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF;;;;WAIG;QACH,cAAS,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;YACjD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF;;;;WAIG;QACH,wBAAmB,GAAG,CACrB,SAAiB,EACjB,UAAkB,EAClB,UAAkB,EACjB,EAAE;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CACtC,SAAS,EACT,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CACjC,CAAC;QACH,CAAC,CAAC;QAnfD,IAAI,CAAC,UAAU;YACd,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;QAElE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAEnC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,MAAM,EAAE,OAAO,CAAC,WAAW;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAEvC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC;YAChC,EAAE;YACF,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,iBAAiB,CAC9B,OAAO,CAAC,QAAQ,IAAI,IAAI,eAAe,EAAE,CACzC;YACD,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,SAAS,CACrB,SAAS,EACT,CAAC,EAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE;gBAA7C,EAAE,KAAK,OAAW,EAAN,IAAI,cAAhB,SAAkB,CAAF;YAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;YAC9B,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU;YACd,OAAO,CAAC,UAAU,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAkKO,iBAAiB,CAAC,CAAU,EAAE,GAAmB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,YAAY,YAAY,EAAE;YAC9B,+BAA+B;YAC/B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;SAC1C;aAAM;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,KAAK,CACR,IAAI,CAAC,SAAS,CACb,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAC3D,CACD,CAAC;SACF;QACD,GAAG,CAAC,GAAG,EAAE,CAAC;IACX,CAAC;CAmRD"}
1
+ {"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/Server.ts"],"names":[],"mappings":"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"}