@didcid/gatekeeper 0.1.3 → 0.3.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.
@@ -2,6 +2,12 @@ import CipherNode from '@didcid/cipher/node';
2
2
  import { copyJSON, compareOrdinals } from '@didcid/common/utils';
3
3
  import { isValidDID, generateCID } from '@didcid/ipfs/utils';
4
4
  import { InvalidParameterError, InvalidOperationError } from '@didcid/common/errors';
5
+ import { base64url } from 'multiformats/bases/base64';
6
+ import SearchIndex from './search-index.js';
7
+ function base64urlToHex(b64) {
8
+ const bytes = base64url.baseDecode(b64);
9
+ return Buffer.from(bytes).toString('hex');
10
+ }
5
11
  const ValidVersions = [1];
6
12
  const ValidTypes = ['agent', 'asset'];
7
13
  // Registries that are considered valid when importing DIDs from the network
@@ -11,7 +17,6 @@ const ValidRegistries = [
11
17
  'BTC:mainnet',
12
18
  'BTC:testnet4',
13
19
  'BTC:signet',
14
- 'FTC:testnet5',
15
20
  ];
16
21
  var ImportStatus;
17
22
  (function (ImportStatus) {
@@ -33,6 +38,7 @@ export default class Gatekeeper {
33
38
  maxQueueSize;
34
39
  supportedRegistries;
35
40
  didLocks = new Map();
41
+ searchIndex;
36
42
  constructor(options) {
37
43
  if (!options || !options.db) {
38
44
  throw new InvalidParameterError('missing options.db');
@@ -60,6 +66,30 @@ export default class Gatekeeper {
60
66
  throw new InvalidParameterError(`registry=${registry}`);
61
67
  }
62
68
  }
69
+ this.searchIndex = new SearchIndex();
70
+ }
71
+ async initSearchIndex() {
72
+ const dids = await this.getDIDs();
73
+ for (const did of dids) {
74
+ try {
75
+ const doc = await this.resolveDID(did);
76
+ this.searchIndex.store(did, doc);
77
+ }
78
+ catch {
79
+ // Skip DIDs that can't be resolved
80
+ }
81
+ }
82
+ console.log(`Search index initialized with ${this.searchIndex.size} DIDs`);
83
+ }
84
+ async updateSearchIndex(did) {
85
+ try {
86
+ const doc = await this.resolveDID(did);
87
+ this.searchIndex.store(did, doc);
88
+ }
89
+ catch {
90
+ // If DID can't be resolved, remove from index
91
+ this.searchIndex.delete(did);
92
+ }
63
93
  }
64
94
  async withDidLock(did, fn) {
65
95
  const prev = this.didLocks.get(did) ?? Promise.resolve();
@@ -188,7 +218,7 @@ export default class Gatekeeper {
188
218
  if (registry) {
189
219
  byRegistry[registry] = (byRegistry[registry] || 0) + 1;
190
220
  }
191
- const version = doc.didDocumentMetadata?.version;
221
+ const version = doc.didDocumentMetadata?.versionSequence;
192
222
  if (version != null) {
193
223
  const versionNum = parseInt(version, 10);
194
224
  if (!isNaN(versionNum)) {
@@ -210,6 +240,7 @@ export default class Gatekeeper {
210
240
  async resetDb() {
211
241
  await this.db.resetDb();
212
242
  this.verifiedDIDs = {};
243
+ this.searchIndex.clear();
213
244
  return true;
214
245
  }
215
246
  async generateCID(operation, save = false) {
@@ -249,21 +280,29 @@ export default class Gatekeeper {
249
280
  const hex64Regex = /^[a-f0-9]{64}$/i;
250
281
  return hex64Regex.test(hash);
251
282
  }
252
- verifySignatureFormat(signature) {
253
- if (!signature) {
283
+ verifyProofFormat(proof) {
284
+ if (!proof) {
254
285
  return false;
255
286
  }
256
- if (!this.verifyDateFormat(signature.signed)) {
287
+ if (proof.type !== "EcdsaSecp256k1Signature2019") {
257
288
  return false;
258
289
  }
259
- if (!this.verifyHashFormat(signature.hash)) {
290
+ if (!this.verifyDateFormat(proof.created)) {
260
291
  return false;
261
292
  }
262
- // eslint-disable-next-line
263
- if (signature.signer && !this.verifyDIDFormat(signature.signer)) {
293
+ if (!proof.proofPurpose || !["assertionMethod", "authentication"].includes(proof.proofPurpose)) {
264
294
  return false;
265
295
  }
266
- return true;
296
+ // Validate verificationMethod format: did:...#key-N or #key-N (relative reference for create ops)
297
+ if (!proof.verificationMethod || !proof.verificationMethod.includes('#')) {
298
+ return false;
299
+ }
300
+ const [did] = proof.verificationMethod.split('#');
301
+ // Empty string is valid (relative reference like #key-1), otherwise must be valid DID
302
+ if (did !== '' && !this.verifyDIDFormat(did)) {
303
+ return false;
304
+ }
305
+ return !!(proof.proofValue && typeof proof.proofValue === 'string');
267
306
  }
268
307
  async verifyCreateOperation(operation) {
269
308
  if (!operation) {
@@ -291,8 +330,12 @@ export default class Gatekeeper {
291
330
  if (!ValidRegistries.includes(operation.registration.registry)) {
292
331
  throw new InvalidOperationError(`registration.registry=${operation.registration.registry}`);
293
332
  }
294
- if (!this.verifySignatureFormat(operation.signature)) {
295
- throw new InvalidOperationError('signature');
333
+ if (!this.verifyProofFormat(operation.proof)) {
334
+ throw new InvalidOperationError('proof');
335
+ }
336
+ // For agent create operations, verificationMethod must be relative #key-1 (no DID exists yet)
337
+ if (operation.registration.type === 'agent' && operation.proof.verificationMethod !== '#key-1') {
338
+ throw new InvalidOperationError('proof.verificationMethod must be #key-1 for agent create');
296
339
  }
297
340
  if (operation.registration.validUntil && !this.verifyDateFormat(operation.registration.validUntil)) {
298
341
  throw new InvalidOperationError(`registration.validUntil=${operation.registration.validUntil}`);
@@ -302,20 +345,23 @@ export default class Gatekeeper {
302
345
  throw new InvalidOperationError('publicJwk');
303
346
  }
304
347
  const operationCopy = copyJSON(operation);
305
- delete operationCopy.signature;
348
+ delete operationCopy.proof;
306
349
  const msgHash = this.cipher.hashJSON(operationCopy);
307
- return this.cipher.verifySig(msgHash, operation.signature.value, operation.publicJwk);
350
+ const signatureHex = base64urlToHex(operation.proof.proofValue);
351
+ return this.cipher.verifySig(msgHash, signatureHex, operation.publicJwk);
308
352
  }
309
353
  if (operation.registration.type === 'asset') {
310
- if (operation.controller !== operation.signature?.signer) {
354
+ // Extract controller DID from verificationMethod
355
+ const [controllerDid] = operation.proof.verificationMethod.split('#');
356
+ if (operation.controller !== controllerDid) {
311
357
  throw new InvalidOperationError('signer is not controller');
312
358
  }
313
- const doc = await this.resolveDID(operation.signature.signer, { confirm: true, versionTime: operation.signature.signed });
359
+ const doc = await this.resolveDID(controllerDid, { confirm: true, versionTime: operation.proof.created });
314
360
  if (doc.didDocumentRegistration && doc.didDocumentRegistration.registry === 'local' && operation.registration.registry !== 'local') {
315
361
  throw new InvalidOperationError(`non-local registry=${operation.registration.registry}`);
316
362
  }
317
363
  const operationCopy = copyJSON(operation);
318
- delete operationCopy.signature;
364
+ delete operationCopy.proof;
319
365
  const msgHash = this.cipher.hashJSON(operationCopy);
320
366
  if (!doc.didDocument ||
321
367
  !doc.didDocument.verificationMethod ||
@@ -325,7 +371,8 @@ export default class Gatekeeper {
325
371
  }
326
372
  // TBD select the right key here, not just the first one
327
373
  const publicJwk = doc.didDocument.verificationMethod[0].publicKeyJwk;
328
- return this.cipher.verifySig(msgHash, operation.signature.value, publicJwk);
374
+ const signatureHex = base64urlToHex(operation.proof.proofValue);
375
+ return this.cipher.verifySig(msgHash, signatureHex, publicJwk);
329
376
  }
330
377
  throw new InvalidOperationError(`registration.type=${operation.registration.type}`);
331
378
  }
@@ -333,8 +380,8 @@ export default class Gatekeeper {
333
380
  if (JSON.stringify(operation).length > this.maxOpBytes) {
334
381
  throw new InvalidOperationError('size');
335
382
  }
336
- if (!this.verifySignatureFormat(operation.signature)) {
337
- throw new InvalidOperationError('signature');
383
+ if (!this.verifyProofFormat(operation.proof)) {
384
+ throw new InvalidOperationError('proof');
338
385
  }
339
386
  if (!doc?.didDocument) {
340
387
  throw new InvalidOperationError('doc.didDocument');
@@ -344,26 +391,24 @@ export default class Gatekeeper {
344
391
  }
345
392
  if (doc.didDocument.controller) {
346
393
  // This DID is an asset, verify with controller's keys
347
- const controllerDoc = await this.resolveDID(doc.didDocument.controller, { confirm: true, versionTime: operation.signature.signed });
394
+ const controllerDoc = await this.resolveDID(doc.didDocument.controller, { confirm: true, versionTime: operation.proof.created });
348
395
  return this.verifyUpdateOperation(operation, controllerDoc);
349
396
  }
350
397
  if (!doc.didDocument.verificationMethod) {
351
398
  throw new InvalidOperationError('doc.didDocument.verificationMethod');
352
399
  }
353
- const signature = operation.signature;
400
+ const proof = operation.proof;
354
401
  const jsonCopy = copyJSON(operation);
355
- delete jsonCopy.signature;
402
+ delete jsonCopy.proof;
356
403
  const msgHash = this.cipher.hashJSON(jsonCopy);
357
- if (signature.hash && signature.hash !== msgHash) {
358
- return false;
359
- }
360
404
  if (doc.didDocument.verificationMethod.length === 0 ||
361
405
  !doc.didDocument.verificationMethod[0].publicKeyJwk) {
362
406
  throw new InvalidOperationError('didDocument missing verificationMethod');
363
407
  }
364
- // TBD get the right signature, not just the first one
408
+ // TBD get the right key here, not just the first one
365
409
  const publicJwk = doc.didDocument.verificationMethod[0].publicKeyJwk;
366
- return this.cipher.verifySig(msgHash, signature.value, publicJwk);
410
+ const signatureHex = base64urlToHex(proof.proofValue);
411
+ return this.cipher.verifySig(msgHash, signatureHex, publicJwk);
367
412
  }
368
413
  async queueOperation(registry, operation) {
369
414
  // Don't distribute local DIDs
@@ -383,7 +428,7 @@ export default class Gatekeeper {
383
428
  async createDID(operation) {
384
429
  const valid = await this.verifyCreateOperation(operation);
385
430
  if (!valid) {
386
- throw new InvalidOperationError('signature');
431
+ throw new InvalidOperationError('proof');
387
432
  }
388
433
  const registry = operation.registration.registry;
389
434
  // Reject operations with unsupported registries
@@ -407,6 +452,7 @@ export default class Gatekeeper {
407
452
  did
408
453
  });
409
454
  await this.queueOperation(registry, operation);
455
+ await this.updateSearchIndex(did);
410
456
  return did;
411
457
  });
412
458
  }
@@ -443,6 +489,9 @@ export default class Gatekeeper {
443
489
  "authentication": [
444
490
  "#key-1"
445
491
  ],
492
+ "assertionMethod": [
493
+ "#key-1"
494
+ ],
446
495
  },
447
496
  "didDocumentMetadata": {
448
497
  "created": anchor.created,
@@ -555,14 +604,14 @@ export default class Gatekeeper {
555
604
  if (verify) {
556
605
  const valid = await this.verifyCreateOperation(operation);
557
606
  if (!valid) {
558
- throw new InvalidOperationError('signature');
607
+ throw new InvalidOperationError('proof');
559
608
  }
560
609
  }
561
610
  doc.didDocumentMetadata = {
562
611
  created,
563
612
  canonicalId,
564
613
  versionId,
565
- version: versionNum.toString(),
614
+ versionSequence: versionNum.toString(),
566
615
  confirmed,
567
616
  timestamp,
568
617
  };
@@ -581,7 +630,7 @@ export default class Gatekeeper {
581
630
  if (verify) {
582
631
  const valid = await this.verifyUpdateOperation(operation, doc);
583
632
  if (!valid) {
584
- throw new InvalidOperationError('signature');
633
+ throw new InvalidOperationError('proof');
585
634
  }
586
635
  if (!operation.previd || operation.previd !== doc.didDocumentMetadata?.versionId) {
587
636
  throw new InvalidOperationError('previd');
@@ -605,7 +654,7 @@ export default class Gatekeeper {
605
654
  updated,
606
655
  canonicalId,
607
656
  versionId,
608
- version: versionNum.toString(),
657
+ versionSequence: versionNum.toString(),
609
658
  confirmed,
610
659
  timestamp,
611
660
  };
@@ -621,7 +670,7 @@ export default class Gatekeeper {
621
670
  deleted: updated,
622
671
  canonicalId,
623
672
  versionId,
624
- version: versionNum.toString(),
673
+ versionSequence: versionNum.toString(),
625
674
  confirmed,
626
675
  timestamp,
627
676
  };
@@ -657,13 +706,14 @@ export default class Gatekeeper {
657
706
  const opid = await this.generateCID(operation, true);
658
707
  await this.db.addEvent(operation.did, {
659
708
  registry: 'local',
660
- time: operation.signature?.signed || '',
709
+ time: operation.proof?.created || '',
661
710
  ordinal: [0],
662
711
  operation,
663
712
  opid,
664
713
  did: operation.did
665
714
  });
666
715
  await this.queueOperation(registry, operation);
716
+ await this.updateSearchIndex(operation.did);
667
717
  return true;
668
718
  });
669
719
  }
@@ -732,6 +782,7 @@ export default class Gatekeeper {
732
782
  }
733
783
  for (const did of dids) {
734
784
  await this.db.deleteEvents(did);
785
+ this.searchIndex.delete(did);
735
786
  }
736
787
  return true;
737
788
  }
@@ -772,7 +823,7 @@ export default class Gatekeeper {
772
823
  if (!event.opid) {
773
824
  event.opid = await this.generateCID(event.operation, true);
774
825
  }
775
- const opMatch = currentEvents.find(item => item.operation.signature?.value === event.operation.signature?.value);
826
+ const opMatch = currentEvents.find(item => item.operation.proof?.proofValue === event.operation.proof?.proofValue);
776
827
  if (opMatch) {
777
828
  const index = currentEvents.indexOf(opMatch);
778
829
  const expectedRegistry = expectedRegistryForIndex(currentEvents, index);
@@ -848,6 +899,9 @@ export default class Gatekeeper {
848
899
  if (status === ImportStatus.ADDED) {
849
900
  added += 1;
850
901
  console.log(`import ${i}/${total}: added event for ${event.did}`);
902
+ if (event.did) {
903
+ await this.updateSearchIndex(event.did);
904
+ }
851
905
  }
852
906
  else if (status === ImportStatus.MERGED) {
853
907
  merged += 1;
@@ -908,7 +962,7 @@ export default class Gatekeeper {
908
962
  if (JSON.stringify(operation).length > this.maxOpBytes) {
909
963
  return false;
910
964
  }
911
- if (!this.verifySignatureFormat(operation.signature)) {
965
+ if (!this.verifyProofFormat(operation.proof)) {
912
966
  return false;
913
967
  }
914
968
  if (operation.type === 'create') {
@@ -935,7 +989,9 @@ export default class Gatekeeper {
935
989
  }
936
990
  // eslint-disable-next-line
937
991
  if (operation.registration.type === 'asset') {
938
- if (operation.controller !== operation.signature?.signer) {
992
+ // Extract controller DID from verificationMethod
993
+ const [controllerDid] = operation.proof.verificationMethod.split('#');
994
+ if (operation.controller !== controllerDid) {
939
995
  return false;
940
996
  }
941
997
  }
@@ -977,7 +1033,7 @@ export default class Gatekeeper {
977
1033
  const event = batch[i];
978
1034
  const ok = await this.verifyEvent(event);
979
1035
  if (ok) {
980
- const eventKey = `${event.registry}/${event.operation.signature?.hash}`;
1036
+ const eventKey = `${event.registry}/${event.operation.proof?.proofValue}`;
981
1037
  if (!this.eventsSeen[eventKey]) {
982
1038
  this.eventsSeen[eventKey] = true;
983
1039
  this.eventsQueue.push(event);
@@ -1039,7 +1095,7 @@ export default class Gatekeeper {
1039
1095
  return false;
1040
1096
  });
1041
1097
  const events = nonlocalDIDs.flat();
1042
- return events.sort((a, b) => new Date(a.operation.signature?.signed ?? 0).getTime() - new Date(b.operation.signature?.signed ?? 0).getTime());
1098
+ return events.sort((a, b) => new Date(a.operation.proof?.created ?? 0).getTime() - new Date(b.operation.proof?.created ?? 0).getTime());
1043
1099
  }
1044
1100
  async getQueue(registry) {
1045
1101
  if (!ValidRegistries.includes(registry)) {
@@ -1086,5 +1142,14 @@ export default class Gatekeeper {
1086
1142
  async getJSON(cid) {
1087
1143
  return this.ipfs.getJSON(cid);
1088
1144
  }
1145
+ async searchDocs(q) {
1146
+ return this.searchIndex.searchDocs(q);
1147
+ }
1148
+ async queryDocs(where) {
1149
+ return this.searchIndex.queryDocs(where);
1150
+ }
1151
+ async search(query) {
1152
+ return this.queryDocs(query.where);
1153
+ }
1089
1154
  }
1090
1155
  //# sourceMappingURL=gatekeeper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gatekeeper.js","sourceRoot":"","sources":["../../src/gatekeeper.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACH,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAuB/B,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACtC,4EAA4E;AAC5E,MAAM,eAAe,GAAG;IACpB,OAAO;IACP,YAAY;IACZ,aAAa;IACb,cAAc;IACd,YAAY;IACZ,cAAc;CACjB,CAAC;AAEF,IAAK,YAKJ;AALD,WAAK,YAAY;IACb,+BAAe,CAAA;IACf,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;AACzB,CAAC,EALI,YAAY,KAAZ,YAAY,QAKhB;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IACnB,EAAE,CAAe;IACjB,WAAW,CAAoB;IACtB,UAAU,CAA0B;IAC7C,YAAY,CAA0B;IACtC,kBAAkB,CAAU;IAC5B,IAAI,CAAa;IACjB,MAAM,CAAa;IAClB,SAAS,CAAS;IACV,UAAU,CAAS;IACnB,YAAY,CAAS;IACtC,mBAAmB,CAAW;IACtB,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEpD,YAAY,OAA0B;QAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QAErB,6BAA6B;QAC7B,kDAAkD;QAClD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,2BAA2B;YAC3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;QAC1D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;QAEhD,4EAA4E;QAC5E,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAI,GAAW,EAAE,EAAoB;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,IAAI,OAAO,GAAe,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,IAAI,CAAC;YACD,MAAM,IAAI,CAAC;YACX,OAAO,MAAM,EAAE,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACP,OAAO,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA8B;QACzC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAc,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;QAErD,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,CAAC,IAAI,CAAC,CAAC;YAEP,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,SAAS;YACb,CAAC;YAED,IAAI,UAAU,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzD,UAAU,GAAG,GAAG,CAAC,uBAAuB,EAAE,UAAU,CAAC;YACzD,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;gBACX,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,UAAU,CAAC,CAAC;gBACzD,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAChC,SAAS;YACb,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;oBAChB,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,UAAU,CAAC,CAAC;oBACzD,CAAC;oBACD,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAChC,OAAO,IAAI,CAAC,CAAC;gBACjB,CAAC;qBACI,CAAC;oBACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;oBAEhF,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,OAAO,WAAW,UAAU,CAAC,CAAC;oBAC3E,CAAC;oBACD,QAAQ,IAAI,CAAC,CAAC;gBAClB,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAC9B,QAAQ,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA0B;QACtC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC;QACxC,IAAI,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAc,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,UAAU,GAA2B,EAAE,CAAA;QAC7C,MAAM,SAAS,GAA2B,EAAE,CAAA;QAE5C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAEvC,IAAI,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC,CAAC;oBACb,IAAI,MAAM,EAAE,CAAC;wBACT,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;oBACzF,CAAC;oBACD,SAAS;gBACb,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC;gBACpD,CAAC;gBAED,IAAI,GAAG,CAAC,uBAAuB,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;oBAChD,MAAM,IAAI,CAAC,CAAC;gBAChB,CAAC;gBAED,IAAI,GAAG,CAAC,uBAAuB,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;oBAChD,MAAM,IAAI,CAAC,CAAC;gBAChB,CAAC;gBAED,IAAI,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,CAAC;oBACrC,SAAS,IAAI,CAAC,CAAC;gBACnB,CAAC;qBACI,CAAC;oBACF,WAAW,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAED,IAAI,GAAG,CAAC,uBAAuB,EAAE,UAAU,EAAE,CAAC;oBAC1C,SAAS,IAAI,CAAC,CAAC;gBACnB,CAAC;gBAED,MAAM,QAAQ,GAAG,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC;gBACvD,IAAI,QAAQ,EAAE,CAAC;oBACX,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC3D,CAAC;gBAED,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC;gBACjD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;oBAClB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;wBACrB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC7D,CAAC;gBACL,CAAC;YACL,CAAC;YACD,OAAO,KAAK,EAAE,CAAC;YACf,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAkB,EAAE,OAAgB,KAAK;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE1D,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAoB;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;QAChE,OAAO,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAoB;QACtC,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,eAAe,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,IAAa;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,IAAY;QACzB,qDAAqD;QACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACrC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,qBAAqB,CAAC,SAAqB;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,2BAA2B;QAC3B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,SAAoB;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,qBAAqB,CAAC,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,oCAAoC;YACpC,MAAM,IAAI,qBAAqB,CAAC,WAAW,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,qBAAqB,CAAC,wBAAwB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,qBAAqB,CAAC,qBAAqB,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,qBAAqB,CAAC,yBAAyB,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,qBAAqB,CAAC,2BAA2B,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,aAAa,CAAC,SAAS,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAU,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3F,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBACvD,MAAM,IAAI,qBAAqB,CAAC,0BAA0B,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,SAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAE5H,IAAI,GAAG,CAAC,uBAAuB,IAAI,GAAG,CAAC,uBAAuB,CAAC,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjI,MAAM,IAAI,qBAAqB,CAAC,sBAAsB,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7F,CAAC;YAED,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,aAAa,CAAC,SAAS,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,WAAW;gBAChB,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB;gBACnC,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC;gBAC/C,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;gBACtD,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,CAAC,CAAC;YAC9E,CAAC;YACD,wDAAwD;YACxD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YACrE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,qBAAqB,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,SAAoB,EAAE,GAAmB;QACjE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC;YACvC,MAAM,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAC7B,sDAAsD;YACtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,SAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACrI,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAU,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC;YAC/C,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,CAAC,CAAC;QAC9E,CAAC;QAED,sDAAsD;QACtD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,SAAoB;QACvD,8BAA8B;QAC9B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAEtD,mCAAmC;QACnC,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAEpE,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAoB;QAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAA;QAChD,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAa,CAAC,QAAQ,CAAC;QAElD,gDAAgD;QAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,gBAAgB,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAEtC,qDAAqD;YACrD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,SAAS,CAAC,OAAQ;gBACxB,OAAO,EAAE,CAAC,CAAC,CAAC;gBACZ,SAAS;gBACT,IAAI;gBACJ,GAAG;aACN,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAiB,EAAE,UAAmB;QACpD,IAAI,GAAG,GAAmB,EAAE,CAAC;QAC7B,IAAI,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;gBACxB,OAAO,EAAE,CAAC;YACd,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,OAAO,EAAE,CAAC;YACd,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,EAAE,CAAC;YACd,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1D,OAAO,EAAE,CAAC;YACd,CAAC;YAED,MAAM,GAAG,GAAG,UAAU,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAEzD,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACvC,mCAAmC;gBACnC,GAAG,GAAG;oBACF,aAAa,EAAE;wBACX,UAAU,EAAE,CAAC,8BAA8B,CAAC;wBAC5C,IAAI,EAAE,GAAG;wBACT,oBAAoB,EAAE;4BAClB;gCACI,IAAI,EAAE,QAAQ;gCACd,YAAY,EAAE,GAAG;gCACjB,MAAM,EAAE,mCAAmC;gCAC3C,cAAc,EAAE,MAAM,CAAC,SAAS;6BACnC;yBACJ;wBACD,gBAAgB,EAAE;4BACd,QAAQ;yBACX;qBACJ;oBACD,qBAAqB,EAAE;wBACnB,SAAS,EAAE,MAAM,CAAC,OAAO;qBAC5B;oBACD,iBAAiB,EAAE,EAAE;oBACrB,yBAAyB,EAAE,MAAM,CAAC,YAAY;iBACjD,CAAC;YACN,CAAC;YAED,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACvC,GAAG,GAAG;oBACF,aAAa,EAAE;wBACX,UAAU,EAAE,CAAC,8BAA8B,CAAC;wBAC5C,IAAI,EAAE,GAAG;wBACT,YAAY,EAAE,MAAM,CAAC,UAAU;qBAClC;oBACD,qBAAqB,EAAE;wBACnB,SAAS,EAAE,MAAM,CAAC,OAAO;qBAC5B;oBACD,iBAAiB,EAAE,MAAM,CAAC,IAAI;oBAC9B,yBAAyB,EAAE,MAAM,CAAC,YAAY;iBACjD,CAAC;YACN,CAAC;YAED,IAAI,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxD,GAAG,CAAC,mBAAmB,CAAC,WAAW,GAAG,GAAG,CAAC;YAC9C,CAAC;QACL,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,wBAAwB;QAC5B,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK,CAAC,UAAU,CACZ,GAAY,EACZ,OAA2B;QAE3B,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAExF,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACH,qBAAqB,EAAE;oBACnB,KAAK,EAAE,YAAY;iBACtB;gBACD,WAAW,EAAE,EAAE;gBACf,mBAAmB,EAAE,EAAE;aAC1B,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;gBACH,qBAAqB,EAAE;oBACnB,KAAK,EAAE,UAAU;iBACpB;gBACD,WAAW,EAAE,EAAE;gBACf,mBAAmB,EAAE,EAAE;aAC1B,CAAC;QACN,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAExD,IAAI,WAAW,IAAI,GAAG,CAAC,uBAAuB,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/H,8DAA8D;QAClE,CAAC;QAED,SAAS,wBAAwB,CAAC,IAAS;YACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,0CAA0C;YAC1C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,GAAG,CAAC,mBAAmB,EAAE,WAAW,CAAC;QACzD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,6CAA6C;QACjE,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,iDAAiD;QAEvE,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,MAAM,EAAE,CAAC;YAC3E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,SAAS,CAAC;YAEd,IAAI,GAAG,CAAC,uBAAuB,EAAE,QAAQ,EAAE,CAAC;gBACxC,IAAI,UAAU,CAAC;gBACf,IAAI,UAAU,CAAC;gBAEf,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;oBAEnG,IAAI,UAAU,EAAE,CAAC;wBACb,UAAU,GAAG;4BACT,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;4BACvD,OAAO,EAAE,UAAU,CAAC,IAAI;4BACxB,MAAM,EAAE,UAAU,CAAC,MAAM;yBAC5B,CAAC;oBACN,CAAC;gBACL,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACb,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;oBAEnG,IAAI,UAAU,EAAE,CAAC;wBACb,UAAU,GAAG;4BACT,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;4BACvD,OAAO,EAAE,UAAU,CAAC,IAAI;4BACxB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,IAAI,EAAE,UAAU,CAAC,IAAI;4BACrB,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,OAAO,EAAE,UAAU,CAAC,KAAK;4BACzB,KAAK,EAAE,UAAU,CAAC,KAAK;yBAC1B,CAAC;oBACN,CAAC;gBACL,CAAC;gBAED,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;oBAC3B,SAAS,GAAG;wBACR,KAAK,EAAE,GAAG,CAAC,uBAAuB,CAAC,QAAQ;wBAC3C,IAAI,EAAE,SAAS;wBACf,UAAU;wBACV,UAAU;qBACb,CAAC;gBACN,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;oBAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;wBACT,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;oBACjD,CAAC;gBACL,CAAC;gBAED,GAAG,CAAC,mBAAmB,GAAG;oBACtB,OAAO;oBACP,WAAW;oBACX,SAAS;oBACT,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;oBAC9B,SAAS;oBACT,SAAS;iBACZ,CAAA;gBACD,SAAS;YACb,CAAC;YAED,IAAI,WAAW,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACxD,MAAM;YACV,CAAC;YAED,IAAI,eAAe,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;gBACpD,MAAM;YACV,CAAC;YAED,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC,uBAAuB,EAAE,QAAQ,KAAK,QAAQ,CAAC;YAE5E,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxB,MAAM;YACV,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAE/D,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,CAAC;gBACjD,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC,mBAAmB,EAAE,SAAS,EAAE,CAAC;oBAC/E,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,UAAU,IAAI,CAAC,CAAC;gBAEhB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;gBAEpC,gEAAgE;gBAChE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACpC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBAC1C,CAAC;gBACD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBACxC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;gBAClD,CAAC;gBACD,IAAI,OAAO,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;oBAChD,GAAG,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;gBAClE,CAAC;gBAED,GAAG,CAAC,mBAAmB,GAAG;oBACtB,OAAO;oBACP,OAAO;oBACP,WAAW;oBACX,SAAS;oBACT,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;oBAC9B,SAAS;oBACT,SAAS;iBACZ,CAAA;gBACD,SAAS;YACb,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9B,UAAU,IAAI,CAAC,CAAC;gBAEhB,GAAG,CAAC,WAAW,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;gBAC9B,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC;gBACzB,GAAG,CAAC,mBAAmB,GAAG;oBACtB,WAAW,EAAE,IAAI;oBACjB,OAAO;oBACP,OAAO,EAAE,OAAO;oBAChB,WAAW;oBACX,SAAS;oBACT,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE;oBAC9B,SAAS;oBACT,SAAS;iBACZ,CAAA;YACL,CAAC;QACL,CAAC;QAED,GAAG,CAAC,qBAAqB,GAAG;YACxB,6FAA6F;YAC7F,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACtC,CAAC;QAEF,2BAA2B;QAC3B,OAAQ,GAAW,CAAC,UAAU,CAAC,CAAC;QAEhC,IAAI,GAAG,CAAC,uBAAuB,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAA,CAAC,4CAA4C;YACpF,OAAO,GAAG,CAAC,uBAAuB,CAAC,YAAY,CAAA,CAAC,4CAA4C;QAChG,CAAC;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAoB;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;QAC5D,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAErE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC;QAEvD,gDAAgD;QAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,gBAAgB,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAI,EAAE;gBACnC,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE;gBACvC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACZ,SAAS;gBACT,IAAI;gBACJ,GAAG,EAAE,SAAS,CAAC,GAAG;aACrB,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAE/C,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAoB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACjC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QACpF,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,YAAY,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,MAAM,OAAO,GAAqB,EAAE,CAAC;YACrC,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,EAAE,OAAO,IAAI,GAAG,CAAC,mBAAmB,EAAE,OAAO,IAAI,CAAC,CAAC;oBAC7F,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;oBAErC,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;wBAC5B,SAAS;oBACb,CAAC;oBAED,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;wBACxB,SAAS;oBACb,CAAC;oBAED,IAAI,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,OAAO,CAAC;YACnB,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAe;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAc,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAyB;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAc;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAsB;QACpC,IAAI,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBACtB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;gBACpC,CAAC;qBACI,CAAC;oBACF,KAAK,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAEtB,MAAM,wBAAwB,GAAG,CAAC,MAAyB,EAAE,KAAa,EAAsB,EAAE;gBAC9F,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACb,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC;gBACxD,CAAC;gBAED,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC;gBAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;oBAChC,IAAI,EAAE,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACxB,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE,uBAAuB,EAAE,QAAQ,CAAC;wBAC/D,IAAI,YAAY,EAAE,CAAC;4BACf,QAAQ,GAAG,YAAY,CAAC;wBAC5B,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,OAAO,QAAQ,CAAC;YACpB,CAAC,CAAC;YAEF,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;gBAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAEnD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC5B,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBACV,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACvD,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC/D,CAAC;gBAED,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAEjH,IAAI,OAAO,EAAE,CAAC;oBACV,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAExE,IAAI,gBAAgB,IAAI,OAAO,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;wBAC5D,8DAA8D;wBAC9D,OAAO,YAAY,CAAC,MAAM,CAAC;oBAC/B,CAAC;oBAED,IAAI,gBAAgB,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;wBAC1D,wFAAwF;wBACxF,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;wBAC7B,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;wBAC5C,OAAO,YAAY,CAAC,KAAK,CAAC;oBAC9B,CAAC;oBAED,OAAO,YAAY,CAAC,MAAM,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACJ,iGAAiG;oBACjG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;wBACtD,OAAO,YAAY,CAAC,QAAQ,CAAC;oBACjC,CAAC;oBAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACvD,IAAI,CAAC,EAAE,EAAE,CAAC;wBACN,OAAO,YAAY,CAAC,QAAQ,CAAC;oBACjC,CAAC;oBAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC7B,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACnC,OAAO,YAAY,CAAC,KAAK,CAAC;oBAC9B,CAAC;oBAED,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAEjF,IAAI,CAAC,OAAO,EAAE,CAAC;wBACX,OAAO,YAAY,CAAC,QAAQ,CAAC;oBACjC,CAAC;oBAED,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAE7C,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrC,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACnC,OAAO,YAAY,CAAC,KAAK,CAAC;oBAC9B,CAAC;oBAED,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBAE5E,IAAI,gBAAgB,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;wBAC1D,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;wBAE3C,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;4BACrC,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;4BAChG,sFAAsF;4BACtF,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAClE,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;4BAC1C,OAAO,YAAY,CAAC,KAAK,CAAC;wBAC9B,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,OAAO,YAAY,CAAC,QAAQ,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACrC,wEAAwE;gBACxE,OAAO,YAAY,CAAC,QAAQ,CAAC;YACjC,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY;QACd,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,OAAO,KAAK,EAAE,CAAC;YACX,CAAC,IAAI,CAAC,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE7C,IAAI,MAAM,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;gBAChC,KAAK,IAAI,CAAC,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,qBAAqB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACtE,CAAC;iBACI,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,sBAAsB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACvE,CAAC;iBACI,IAAI,MAAM,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACxC,QAAQ,IAAI,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,wBAAwB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACzE,CAAC;iBACI,IAAI,MAAM,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,wBAAwB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,IAAI,CAAC;YACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAE/B,OAAO,CAAC,IAAI,EAAE,CAAC;gBACX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAE3C,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;gBACxB,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;gBAC1B,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;gBAE9B,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAC1B,CAAC;gBACO,CAAC;YACL,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACpC,CAAC;QAED,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACxC,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE1D,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAsB;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAEjD,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1D,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7D,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,2BAA2B;YAC3B,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBACvB,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC;YAED,2BAA2B;YAC3B,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1C,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;oBACvD,OAAO,KAAK,CAAC;gBACjB,CAAC;YACL,CAAC;QACL,CAAC;aACI,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;YAE1B,kGAAkG;YAClG,gGAAgG;YAChG,oDAAoD;YACpD,2FAA2F;YAC3F,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACrF,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;gBAC/E,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;aACI,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACjB,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;aACI,CAAC;YACF,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAwB;QACtC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEzC,IAAI,EAAE,EAAE,CAAC;gBACL,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;gBACxE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,IAAI,CAAC,CAAC;gBAChB,CAAC;qBACI,CAAC;oBACF,SAAS,IAAI,CAAC,CAAC;gBACnB,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,QAAQ,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;QAED,OAAO;YACH,MAAM;YACN,SAAS;YACT,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;SACjC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAc,EAAE,QAAuB;QAC3D,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzE,MAAM,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAEzC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACN,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAqB,CAAC;gBACtD,IAAI,EAAE,EAAE,CAAC;oBACL,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC;YAED,IAAI,EAAE,EAAE,CAAC;gBACL,MAAM,CAAC,IAAI,CAAC;oBACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;oBACjC,SAAS,EAAE,EAAE;oBACb,IAAI,EAAE,GAAG;oBACT,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACtC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAe;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC;gBAC1D,OAAO,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAA;YAC3C,CAAC;YACD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAClJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC3B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAmB;QAClD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,KAAe;QAC5C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,KAAgB;QAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAqB,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"gatekeeper.js","sourceRoot":"","sources":["../../src/gatekeeper.ts"],"names":[],"mappings":"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"}