@mikashboks/capture-intelligence-core 0.2.11 → 0.2.13

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 (53) hide show
  1. package/dist/cjs/capture-envelope.d.ts +48 -0
  2. package/dist/cjs/capture-envelope.d.ts.map +1 -1
  3. package/dist/cjs/capture-envelope.js.map +1 -1
  4. package/dist/cjs/capture-trust.d.ts +39 -0
  5. package/dist/cjs/capture-trust.d.ts.map +1 -1
  6. package/dist/cjs/capture-trust.js +86 -0
  7. package/dist/cjs/capture-trust.js.map +1 -1
  8. package/dist/cjs/document-classifier.js +5 -5
  9. package/dist/cjs/document-classifier.js.map +1 -1
  10. package/dist/cjs/document-crop-arbitration.d.ts +51 -3
  11. package/dist/cjs/document-crop-arbitration.d.ts.map +1 -1
  12. package/dist/cjs/document-crop-arbitration.js +58 -11
  13. package/dist/cjs/document-crop-arbitration.js.map +1 -1
  14. package/dist/cjs/glare-mask.d.ts +99 -0
  15. package/dist/cjs/glare-mask.d.ts.map +1 -0
  16. package/dist/cjs/glare-mask.js +210 -0
  17. package/dist/cjs/glare-mask.js.map +1 -0
  18. package/dist/cjs/index.d.ts +6 -4
  19. package/dist/cjs/index.d.ts.map +1 -1
  20. package/dist/cjs/index.js +14 -3
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/types.d.ts +6 -0
  23. package/dist/cjs/types.d.ts.map +1 -1
  24. package/dist/cjs/types.js.map +1 -1
  25. package/dist/cjs/version.d.ts +1 -1
  26. package/dist/cjs/version.js +1 -1
  27. package/dist/esm/capture-envelope.d.ts +48 -0
  28. package/dist/esm/capture-envelope.d.ts.map +1 -1
  29. package/dist/esm/capture-envelope.js.map +1 -1
  30. package/dist/esm/capture-trust.d.ts +39 -0
  31. package/dist/esm/capture-trust.d.ts.map +1 -1
  32. package/dist/esm/capture-trust.js +84 -0
  33. package/dist/esm/capture-trust.js.map +1 -1
  34. package/dist/esm/document-classifier.js +5 -5
  35. package/dist/esm/document-classifier.js.map +1 -1
  36. package/dist/esm/document-crop-arbitration.d.ts +51 -3
  37. package/dist/esm/document-crop-arbitration.d.ts.map +1 -1
  38. package/dist/esm/document-crop-arbitration.js +55 -10
  39. package/dist/esm/document-crop-arbitration.js.map +1 -1
  40. package/dist/esm/glare-mask.d.ts +99 -0
  41. package/dist/esm/glare-mask.d.ts.map +1 -0
  42. package/dist/esm/glare-mask.js +204 -0
  43. package/dist/esm/glare-mask.js.map +1 -0
  44. package/dist/esm/index.d.ts +6 -4
  45. package/dist/esm/index.d.ts.map +1 -1
  46. package/dist/esm/index.js +3 -2
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/types.d.ts +6 -0
  49. package/dist/esm/types.d.ts.map +1 -1
  50. package/dist/esm/types.js.map +1 -1
  51. package/dist/esm/version.d.ts +1 -1
  52. package/dist/esm/version.js +1 -1
  53. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDocumentCropRejectedReason = exports.isDocumentCropVerified = exports.canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = exports.hasNativeClampedCaptureRisk = exports.hasNativeOverfullCaptureRisk = exports.hasHardCaptureCutOffEvidence = exports.hasReadySafeCardLiveEvidence = exports.hasReadyCaptureCandidateDecision = exports.hasTrustedCardFrontRecognitionReason = exports.hasTrustedMrzCaptureEvidence = exports.getCapturePageRecognitionText = exports.hasUnsafeInsetReliableCaptureQuad = exports.hasMarginSafeReliableCaptureQuad = exports.hasMarginSafeDocumentCropEvidence = exports.hasCaptureDocumentCutOffEvidence = exports.hasExplicitUnsafeCaptureReason = exports.hasExplicitDocumentCutOffReason = exports.getMeasuredDocumentCropMinAreaRatio = exports.isDocumentCropAspectSafe = exports.getDocumentCropSafetyAspectRatio = exports.getDocumentCropSafetyThresholds = exports.getDocumentCropShapeFamily = exports.isCardLikeCropAspect = exports.SAFE_LIVE_QUAD_INSET_MIN = exports.QUIET_ZONE_CLAMP_CUT_OFF_RISK_LOSS = exports.CARD_LIKE_MEASURED_CROP_MIN_AREA_RATIO = exports.DOCUMENT_CROP_ASPECT_MAX = exports.DOCUMENT_CROP_ASPECT_MIN = exports.DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED = exports.DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD = exports.DEFAULT_CROP_CONFIDENCE_THRESHOLD = void 0;
3
+ exports.getDocumentCropRejectedReason = exports.isDocumentCropVerified = exports.canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = exports.hasNativeClampedCaptureRisk = exports.hasNativeOverfullCaptureRisk = exports.hasHardCaptureCutOffEvidence = exports.hasReadySafeCardLiveEvidence = exports.hasReadyCaptureCandidateDecision = exports.hasTrustedCardFrontRecognitionReason = exports.hasTrustedMrzCaptureEvidence = exports.getCapturePageRecognitionText = exports.isCardFrontCaptureContext = exports.isCardLikeCaptureContext = exports.hasUnsafeInsetReliableCaptureQuad = exports.hasMarginSafeReliableCaptureQuad = exports.hasMarginSafeDocumentCropEvidence = exports.hasCaptureDocumentCutOffEvidence = exports.hasExplicitUnsafeCaptureReason = exports.hasExplicitDocumentCutOffReason = exports.getMeasuredDocumentCropMinAreaRatio = exports.isDocumentCropAspectSafe = exports.getDocumentCropSafetyAspectRatio = exports.getDocumentCropSafetyThresholds = exports.getDocumentCropShapeFamily = exports.isCardLikeCropAspect = exports.SAFE_LIVE_QUAD_INSET_MIN = exports.QUIET_ZONE_CLAMP_CUT_OFF_RISK_LOSS = exports.CARD_LIKE_MEASURED_CROP_MIN_AREA_RATIO = exports.DOCUMENT_CROP_ASPECT_MAX = exports.DOCUMENT_CROP_ASPECT_MIN = exports.DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED = exports.DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD = exports.DEFAULT_CROP_CONFIDENCE_THRESHOLD = void 0;
4
4
  exports.assessDocumentCropCandidate = assessDocumentCropCandidate;
5
5
  exports.getDocumentCropReviewPolicy = getDocumentCropReviewPolicy;
6
6
  exports.getDocumentCropTrustTier = getDocumentCropTrustTier;
7
7
  const capture_trust_js_1 = require("./capture-trust.js");
8
+ const document_profiles_js_1 = require("./document-profiles.js");
9
+ const glare_mask_js_1 = require("./glare-mask.js");
8
10
  exports.DEFAULT_CROP_CONFIDENCE_THRESHOLD = 0.8;
9
11
  exports.DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD = 0.88;
10
12
  exports.DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED = true;
@@ -14,6 +16,10 @@ exports.CARD_LIKE_MEASURED_CROP_MIN_AREA_RATIO = 0.06;
14
16
  exports.QUIET_ZONE_CLAMP_CUT_OFF_RISK_LOSS = 0.8;
15
17
  exports.SAFE_LIVE_QUAD_INSET_MIN = 0.02;
16
18
  const DOCUMENT_CROP_VISIBLE_EDGE_INSET_RATIO = 0.02;
19
+ // Keep review auto-crops at a 5% visible-edge buffer. The 2026-06-18
20
+ // Crop Lab corpus had a few plausible KT/jscanify crops at about 4.7%, but
21
+ // production metadata alone is too weak an oracle to lower this global guard;
22
+ // require human labels before adding any narrower provenance-gated exception.
17
23
  const REVIEW_AUTO_CROP_VISIBLE_EDGE_INSET_RATIO = 0.05;
18
24
  const DEFAULT_SUBMIT_CROP_VISIBLE_EDGE_INSET_RATIO = 0.055;
19
25
  const TRUSTED_LIVE_BOUNDS_MIN_AREA_RATIO = 0.035;
@@ -302,15 +308,38 @@ const normalizeEvidenceKey = (value) => String(value || '')
302
308
  .toLowerCase()
303
309
  .replace(/[\s-]+/g, '_');
304
310
  const isBackSideStrategy = (strategy) => normalizeEvidenceKey(strategy).endsWith('_back');
305
- const isCardFrontCaptureContext = (metadata) => {
306
- if (metadata?.cropShapeFamily !== 'card-like')
311
+ const getDocumentTypeCropShapeFamily = (documentType) => {
312
+ const trimmed = String(documentType || '').trim();
313
+ if (!trimmed)
314
+ return null;
315
+ switch ((0, document_profiles_js_1.getDocumentProfile)(trimmed).family) {
316
+ case 'card':
317
+ return 'card-like';
318
+ case 'passport':
319
+ return 'passport-like';
320
+ case 'page':
321
+ return 'document-page-like';
322
+ default:
323
+ return null;
324
+ }
325
+ };
326
+ const isCardLikeCaptureContext = (metadata, context = {}) => {
327
+ const contextShapeFamily = context.cropShapeFamily ?? getDocumentTypeCropShapeFamily(context.documentType);
328
+ return (contextShapeFamily ?? metadata?.cropShapeFamily) === 'card-like';
329
+ };
330
+ exports.isCardLikeCaptureContext = isCardLikeCaptureContext;
331
+ const isCardFrontCaptureContext = (metadata, context = {}) => {
332
+ if (!(0, exports.isCardLikeCaptureContext)(metadata, context))
333
+ return false;
334
+ if (context.documentSide === 'back')
307
335
  return false;
308
336
  if (isBackSideStrategy(metadata?.liveRecognitionStrategy))
309
337
  return false;
310
338
  if (metadata?.liveRecognitionStrategy)
311
339
  return true;
312
- return !metadata?.liveRecognitionStrategy;
340
+ return context.documentSide === 'front' || !metadata?.liveRecognitionStrategy;
313
341
  };
342
+ exports.isCardFrontCaptureContext = isCardFrontCaptureContext;
314
343
  const getCapturePageRecognitionText = (metadata, extraText) => `${metadata?.liveRecognitionReason ?? ''} ${metadata?.liveRecognitionPath ?? ''} ${extraText ?? ''}`
315
344
  .trim()
316
345
  .toLowerCase();
@@ -336,9 +365,11 @@ const hasTrustedMrzCaptureEvidence = (metadata, recognitionText) => {
336
365
  return metadata.liveRecognitionAccepted === true && text.includes('mrz');
337
366
  };
338
367
  exports.hasTrustedMrzCaptureEvidence = hasTrustedMrzCaptureEvidence;
339
- const hasTrustedCardFrontRecognitionReason = (metadata) => {
340
- if (!isCardFrontCaptureContext(metadata))
368
+ const hasTrustedCardFrontRecognitionReason = (metadata, context = {}) => {
369
+ if (!(0, exports.isCardFrontCaptureContext)(metadata, context))
341
370
  return true;
371
+ if (!metadata)
372
+ return false;
342
373
  const reason = normalizeEvidenceKey(metadata?.liveRecognitionReason);
343
374
  if (reason === 'quad' || reason === 'classifier')
344
375
  return true;
@@ -353,16 +384,16 @@ const hasReadyCaptureCandidateDecision = (metadata) => metadata?.captureCandidat
353
384
  metadata?.captureCandidateDecision === 'manual_ready' ||
354
385
  metadata?.captureCandidateDecision === 'auto_ready';
355
386
  exports.hasReadyCaptureCandidateDecision = hasReadyCaptureCandidateDecision;
356
- const hasReadySafeCardLiveEvidence = (metadata) => {
387
+ const hasReadySafeCardLiveEvidence = (metadata, context = {}) => {
357
388
  if (!metadata)
358
389
  return false;
359
- if (metadata.cropShapeFamily !== 'card-like')
390
+ if (!(0, exports.isCardLikeCaptureContext)(metadata, context))
360
391
  return false;
361
392
  const hasReadyCandidateDecision = (0, exports.hasReadyCaptureCandidateDecision)(metadata);
362
393
  const hasAcceptedLiveRecognition = metadata.liveRecognitionAccepted === true;
363
394
  if (!hasReadyCandidateDecision && !hasAcceptedLiveRecognition)
364
395
  return false;
365
- if (!(0, exports.hasTrustedCardFrontRecognitionReason)(metadata))
396
+ if (!(0, exports.hasTrustedCardFrontRecognitionReason)(metadata, context))
366
397
  return false;
367
398
  return (0, exports.hasMarginSafeReliableCaptureQuad)(metadata);
368
399
  };
@@ -396,10 +427,10 @@ exports.hasNativeOverfullCaptureRisk = hasNativeOverfullCaptureRisk;
396
427
  const hasNativeClampedCaptureRisk = (metadata) => Boolean(isNativeViewfinderCaptureReason(metadata?.reason) &&
397
428
  (metadata?.clamped === true || metadata?.unsafeReason === 'clamped_edge'));
398
429
  exports.hasNativeClampedCaptureRisk = hasNativeClampedCaptureRisk;
399
- const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = (metadata) => ((0, exports.hasReadySafeCardLiveEvidence)(metadata) &&
430
+ const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = (metadata, context = {}) => ((0, exports.hasReadySafeCardLiveEvidence)(metadata, context) &&
400
431
  !(0, exports.hasHardCaptureCutOffEvidence)(metadata) &&
401
432
  (0, exports.hasNativeOverfullCaptureRisk)(metadata)) ||
402
- ((0, exports.hasReadySafeCardLiveEvidence)(metadata) &&
433
+ ((0, exports.hasReadySafeCardLiveEvidence)(metadata, context) &&
403
434
  (0, exports.hasNativeClampedCaptureRisk)(metadata) &&
404
435
  !(0, exports.hasUnsafeInsetReliableCaptureQuad)(metadata));
405
436
  exports.canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = canTrustReadySafeCardEvidenceOverNativeUnsafeRisk;
@@ -512,6 +543,22 @@ function assessDocumentCropCandidate(croppedBase64, cropMetadata) {
512
543
  cropSelectable: false,
513
544
  });
514
545
  }
546
+ if ((0, glare_mask_js_1.isGlareDominantRegion)(cropMetadata.glareCoverageFraction)) {
547
+ // Specular glare dominates the crop region: the detected geometry is not
548
+ // trustworthy (the contour may have locked onto the glare blob). Fail safe
549
+ // to the original frame rather than ship a glare-corrupted crop. This is a
550
+ // demotion, not a hard block — the user still submits the original.
551
+ return buildCropArbitrationAssessment({
552
+ decision: 'original_with_overlay',
553
+ policy: 'original_only',
554
+ score: Math.max(0, Math.round((cropMetadata.confidence ?? 0) * 45)),
555
+ reason: 'glare_dominant',
556
+ reviewSafe: true,
557
+ defaultSafe: false,
558
+ cropVerified: false,
559
+ cropSelectable: false,
560
+ });
561
+ }
515
562
  if (hasUnsafeLiveQuadCropEvidence(cropMetadata)) {
516
563
  return buildCropArbitrationAssessment({
517
564
  decision: 'unsafe_crop',
@@ -1 +1 @@
1
- {"version":3,"file":"document-crop-arbitration.js","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":";;;AA0zBA,kEA4KC;AAED,kEAKC;AAED,4DAqCC;AAnhCD,yDAAwD;AAgG3C,QAAA,iCAAiC,GAAG,GAAG,CAAC;AACxC,QAAA,2CAA2C,GAAG,IAAI,CAAC;AACnD,QAAA,uCAAuC,GAAG,IAAI,CAAC;AAC/C,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAChC,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAChC,QAAA,sCAAsC,GAAG,IAAI,CAAC;AAC9C,QAAA,kCAAkC,GAAG,GAAG,CAAC;AACzC,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,sCAAsC,GAAG,IAAI,CAAC;AACpD,MAAM,yCAAyC,GAAG,IAAI,CAAC;AACvD,MAAM,4CAA4C,GAAG,KAAK,CAAC;AAC3D,MAAM,kCAAkC,GAAG,KAAK,CAAC;AACjD,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAC9C,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAC/C,MAAM,6CAA6C,GAAG,GAAG,CAAC;AAC1D,MAAM,8CAA8C,GAAG,GAAG,CAAC;AAC3D,MAAM,4CAA4C,GAAG,EAAE,CAAC;AACxD,MAAM,8CAA8C,GAAG,IAAI,CAAC;AAC5D,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAE5C,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;IAChD,SAAS;IACT,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,GAAG,iCAAiC;IACpC,aAAa;IACb,sBAAsB;IACtB,iBAAiB;IACjB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,yCAAyC,GAG3C;IACF,WAAW,EAAE;QACX,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,+BAA+B,EAAE,IAAI;QACrC,6BAA6B,EAAE,IAAI;QACnC,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,gCAAwB;KACpC;IACD,eAAe,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,+BAA+B,EAAE,IAAI;QACrC,6BAA6B,EAAE,IAAI;QACnC,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;KAC1B;IACD,oBAAoB,EAAE;QACpB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,+BAA+B,EAAE,IAAI;QACrC,6BAA6B,EAAE,IAAI;QACnC,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;KAC1B;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAmB,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEtD,MAAM,eAAe,GAAG,CAAC,MAAiC,EAAU,EAAE,CACpE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAE/B,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAW,EAAE,CACnE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,gCAAwB,CAAC;AADnF,QAAA,oBAAoB,wBAC+D;AAEzF,MAAM,0BAA0B,GAAG,CAAC,WAAmB,EAA2B,EAAE;IACzF,IAAI,IAAA,4BAAoB,EAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC9E,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAPW,QAAA,0BAA0B,8BAOrC;AAEK,MAAM,+BAA+B,GAAG,CAC7C,WAAmB,EACnB,WAA4C,EACd,EAAE;IAChC,OAAO,yCAAyC,CAC9C,WAAW,IAAI,IAAA,kCAA0B,EAAC,WAAW,CAAC,CACvD,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,+BAA+B,mCAO1C;AAEK,MAAM,gCAAgC,GAAG,CAC9C,WAAmB,EACnB,gBAA2E,EACnE,EAAE,CACV,gBAAgB,CAAC,mBAAmB,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;IACrF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;IACxC,CAAC,CAAC,WAAW,CAAC;AANL,QAAA,gCAAgC,oCAM3B;AAEX,MAAM,wBAAwB,GAAG,CACtC,WAAmB,EACnB,gBAGC,EACQ,EAAE;IACX,MAAM,oBAAoB,GAAG,IAAA,wCAAgC,EAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAE7F,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACrC,oBAAoB,IAAI,gBAAgB,CAAC,SAAS;QAClD,oBAAoB,IAAI,gBAAgB,CAAC,SAAS,CACnD,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,wBAAwB,4BAcnC;AAEK,MAAM,mCAAmC,GAAG,CACjD,WAAmB,EACnB,WAA4C,EACpC,EAAE;IACV,MAAM,mBAAmB,GAAG,WAAW,IAAI,IAAA,kCAA0B,EAAC,WAAW,CAAC,CAAC;IACnF,MAAM,gBAAgB,GAAG,IAAA,uCAA+B,EAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAE3F,IACE,mBAAmB,KAAK,WAAW;QACnC,IAAA,gCAAwB,EAAC,WAAW,EAAE,gBAAgB,CAAC,EACvD,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,8CAAsC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,gBAAgB,CAAC,YAAY,CAAC;AACvC,CAAC,CAAC;AAfW,QAAA,mCAAmC,uCAe9C;AAEK,MAAM,+BAA+B,GAAG,CAAC,MAAiC,EAAW,EAAE,CAC5F,iCAAiC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AADpD,QAAA,+BAA+B,mCACqB;AAE1D,MAAM,8BAA8B,GAAG,CAAC,MAAiC,EAAW,EAAE,CAC3F,+BAA+B,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AADlD,QAAA,8BAA8B,kCACoB;AAExD,MAAM,gCAAgC,GAAG,CAC9C,QAA4E,EACnE,EAAE;IACX,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,OAAO,CACL,IAAA,uCAA+B,EAAC,QAAQ,CAAC,MAAM,CAAC;QAChD,IAAA,sCAA8B,EAAC,QAAQ,CAAC,MAAM,CAAC,CAChD,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,gCAAgC,oCAS3C;AAEF,MAAM,qCAAqC,GAAG,CAAC,QAAmC,EAAW,EAAE,CAC7F,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,aAAa,CAAC;AAEtD,MAAM,sBAAsB,GAAG,CAAC,QAAqD,EAAW,EAAE,CAChG,OAAO,CACL,QAAQ;IACN,CAAC,QAAQ,CAAC,UAAU,KAAK,sBAAsB;QAC7C,QAAQ,CAAC,aAAa,KAAK,mBAAmB;QAC9C,QAAQ,CAAC,MAAM,KAAK,+BAA+B,CAAC,CACzD,CAAC;AAEJ,MAAM,4BAA4B,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC1F,QAAQ,CAAC,aAAa,KAAK,mBAAmB;IAC9C,QAAQ,CAAC,UAAU,KAAK,sBAAsB;IAC9C,QAAQ,CAAC,eAAe,KAAK,WAAW,CAAC;AAE3C,MAAM,uBAAuB,GAAG,CAAC,QAAyC,EAAW,EAAE,CACrF,QAAQ,CAAC,UAAU,KAAK,qBAAqB;IAC7C,QAAQ,CAAC,YAAY,KAAK,IAAI;IAC9B,QAAQ,CAAC,SAAS,KAAK,IAAI;IAC3B,QAAQ,CAAC,kBAAkB,KAAK,KAAK;IACrC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,IAAI,gCAAwB;IACrD,CAAC,QAAQ,CAAC,eAAe,KAAK,WAAW,IAAI,QAAQ,CAAC,eAAe,KAAK,eAAe,CAAC,CAAC;AAE7F,MAAM,iCAAiC,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC/F,QAAQ,CAAC,UAAU,KAAK,sBAAsB;IAC9C,QAAQ,CAAC,MAAM,KAAK,6BAA6B;IACjD,QAAQ,CAAC,SAAS,KAAK,IAAI;IAC3B,QAAQ,CAAC,eAAe,KAAK,eAAe,CAAC;AAE/C,MAAM,6BAA6B,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC3F,OAAO,CACL,QAAQ,CAAC,UAAU,KAAK,qBAAqB;IAC3C,QAAQ,CAAC,eAAe,KAAK,KAAK;IAClC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,GAAG,gCAAwB,CACvD,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC9E,QAAQ,CAAC,cAAc,KAAK,kBAAkB,IAAI,QAAQ,CAAC,UAAU,KAAK,kBAAkB,CAAC;AAE/F,MAAM,mCAAmC,GAAG,CAAC,QAAyC,EAAU,EAAE,CAChG,gBAAgB,CAAC,QAAQ,CAAC;IACxB,CAAC,CAAC,yCAAyC;IAC3C,CAAC,CAAC,sCAAsC,CAAC;AAE7C,MAAM,+BAA+B,GAAG,CACtC,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ;IACN,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACnD,QAAQ,CAAC,0BAA0B,IAAI,0CAAkC,CAC5E,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAE,eAAsC,EAAU,EAAE,CAClG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,kBAAkB,GAAG,CAAC,IAAsB,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElG,MAAM,mBAAmB,GAAG,CAC1B,QAAyC,EACzC,WAAmB,EACnB,WAAuD,EAC/C,EAAE;IACV,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CACb,IAAA,uCAA+B,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,YAAY,EACtE,kCAAkC,CACnC,CAAC;IACJ,CAAC;IAED,IAAI,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAA,2CAAmC,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,IAAA,uCAA+B,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC,YAAY,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,QAAyC,EAAW,EAAE,CACrF,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAC1B,QAAyC,EAalC,EAAE;IACT,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC3C,IACE,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC;QACtC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,eAAe,CAAC,KAAK,IAAI,CAAC;QAC1B,eAAe,CAAC,MAAM,IAAI,CAAC;QAC3B,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,CAAC,IAAI,CAAC,EACX,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACpC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACvC,MAAM,gBAAgB,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC7E,MAAM,iBAAiB,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAChF,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC,QAAQ,CAAC,SAAS;QACpB,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO;QACL,IAAI;QACJ,eAAe;QACf,UAAU;QACV,WAAW;QACX,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,SAAS;QACT,WAAW;QACX,WAAW,EAAE,QAAQ,CAAC,eAAe;KACtC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,QAAyC,EAAW,EAAE;IACxF,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,GACZ,GAAG,YAAY,CAAC;IACjB,MAAM,gBAAgB,GAAG,IAAA,uCAA+B,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE7E,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,SAAS,GAAG,YAAY;QAAE,OAAO,KAAK,CAAC;IAC3C,IACE,UAAU,GAAG,gBAAgB,CAAC,aAAa;QAC3C,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAA,gCAAwB,EAAC,WAAW,EAAE,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,IACE,eAAe,GAAG,CAAC;QACnB,gBAAgB,GAAG,CAAC;QACpB,cAAc,GAAG,CAAC;QAClB,iBAAiB,GAAG,CAAC;QACrB,eAAe,GAAG,gBAAgB,CAAC,+BAA+B;QAClE,gBAAgB,GAAG,gBAAgB,CAAC,+BAA+B;QACnE,cAAc,GAAG,gBAAgB,CAAC,6BAA6B;QAC/D,iBAAiB,GAAG,gBAAgB,CAAC,6BAA6B,EAClE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,KAAwB,EACxB,eAAsC,EAC9B,EAAE,CACV,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,EAC5C,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7C,CAAC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,EACtE,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CACzE,CAAC;AAEJ,MAAM,2BAA2B,GAAG,CAAC,QAAyC,EAAiB,EAAE;IAC/F,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5F,IACE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC;QACtC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,eAAe,CAAC,KAAK,IAAI,CAAC;QAC1B,eAAe,CAAC,MAAM,IAAI,CAAC,EAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,QAAyC,EAAiB,EAAE;IAC5F,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,iBAAiB,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAC;IACzD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,CACb,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,gBAAgB,EAC7B,YAAY,CAAC,iBAAiB,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CACrC,QAAyC,EAC1B,EAAE;IACjB,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,iBAAiB,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAC;IAEzD,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,CACb,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,gBAAgB,EAC7B,YAAY,CAAC,iBAAiB,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,iCAAiC,GAAG,CAC/C,QAAyC,EAChC,EAAE;IACX,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,yBAAyB,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAC;IAEhF,OAAO,OAAO,CACZ,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,GAAG;QAC/B,iBAAiB,KAAK,IAAI;QAC1B,iBAAiB,IAAI,yBAAyB;QAC9C,0BAA0B,CAAC,QAAQ,CAAC,CACvC,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,iCAAiC,qCAY5C;AAEK,MAAM,gCAAgC,GAAG,CAC9C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ,EAAE,eAAe;IACvB,qCAAqC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAClE,QAAQ,CAAC,kBAAkB,KAAK,KAAK;IACrC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,IAAI,gCAAwB,CACxD,CAAC;AATS,QAAA,gCAAgC,oCASzC;AAEG,MAAM,iCAAiC,GAAG,CAC/C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ,EAAE,eAAe;IACvB,qCAAqC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAClE,QAAQ,CAAC,kBAAkB,KAAK,KAAK;IACrC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,GAAG,gCAAwB,CACvD,CAAC;AATS,QAAA,iCAAiC,qCAS1C;AAEJ,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAU,EAAE,CACxE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;KAChB,IAAI,EAAE;KACN,WAAW,EAAE;KACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAE7B,MAAM,kBAAkB,GAAG,CAAC,QAAmC,EAAW,EAAE,CAC1E,oBAAoB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEnD,MAAM,yBAAyB,GAAG,CAChC,QAA4D,EACnD,EAAE;IACX,IAAI,QAAQ,EAAE,eAAe,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,QAAQ,EAAE,uBAAuB;QAAE,OAAO,IAAI,CAAC;IAEnD,OAAO,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AAC5C,CAAC,CAAC;AAEK,MAAM,6BAA6B,GAAG,CAC3C,QAA4D,EAC5D,SAAyB,EACjB,EAAE,CACV,GAAG,QAAQ,EAAE,qBAAqB,IAAI,EAAE,IAAI,QAAQ,EAAE,mBAAmB,IAAI,EAAE,IAC7E,SAAS,IAAI,EACf,EAAE;KACC,IAAI,EAAE;KACN,WAAW,EAAE,CAAC;AARN,QAAA,6BAA6B,iCAQvB;AAEZ,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EAC5D,eAA+B,EACtB,EAAE;IACX,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,CAAC,wBAAwB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,QAAQ,CAAC,uBAAuB,KAAK,KAAK,IAAI,QAAQ,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,kBAAkB,KAAK,KAAK,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9F,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,8CAA8C,EAAE,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,QAAQ,CAAC,uBAAuB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,IAAI,GAAG,IAAA,qCAA6B,EAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAC,uBAAuB,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC;AAlBW,QAAA,4BAA4B,gCAkBvC;AAEK,MAAM,oCAAoC,GAAG,CAClD,QAA4D,EACnD,EAAE;IACX,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtD,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACrE,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAC9D,IACE,cAAc,CAAC,QAAQ,EAAE,oBAAoB,CAAC;QAC9C,QAAQ,CAAC,oBAAoB,IAAI,4CAA4C,EAC7E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,oCAA4B,EAAC,QAAQ,CAAC,CAAC;AAChD,CAAC,CAAC;AAfW,QAAA,oCAAoC,wCAe/C;AAEK,MAAM,gCAAgC,GAAG,CAC9C,QAA8F,EACrF,EAAE,CACX,QAAQ,EAAE,wBAAwB,KAAK,kBAAkB;IACzD,QAAQ,EAAE,wBAAwB,KAAK,cAAc;IACrD,QAAQ,EAAE,wBAAwB,KAAK,YAAY,CAAC;AALzC,QAAA,gCAAgC,oCAKS;AAE/C,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EACnD,EAAE;IACX,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,CAAC,eAAe,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,yBAAyB,GAAG,IAAA,wCAAgC,EAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,QAAQ,CAAC,uBAAuB,KAAK,IAAI,CAAC;IAC7E,IAAI,CAAC,yBAAyB,IAAI,CAAC,0BAA0B;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,CAAC,IAAA,4CAAoC,EAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAElE,OAAO,IAAA,wCAAgC,EAAC,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAXW,QAAA,4BAA4B,gCAWvC;AAEK,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ,EAAE,OAAO,KAAK,IAAI;IACxB,QAAQ,EAAE,YAAY,KAAK,cAAc;IACzC,IAAA,yCAAiC,EAAC,QAAQ,CAAC,CAC9C,CAAC;AAPS,QAAA,4BAA4B,gCAOrC;AAEJ,MAAM,+BAA+B,GAAG,CAAC,MAAiC,EAAW,EAAE;IACrF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtD,OAAO,CACL,UAAU,KAAK,+BAA+B;QAC9C,UAAU,CAAC,UAAU,CAAC,gCAAgC,CAAC,CACxD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,MAAiC,EAAW,EAAE;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtD,OAAO,CACL,+BAA+B,CAAC,UAAU,CAAC;QAC3C,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACxC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC/B,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CACrC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mCAAmC,GAAG,CAC1C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/C,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,IAAI,8BAA8B,CACvD,CAAC;AAEG,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/C,CAAC,QAAQ,EAAE,YAAY,KAAK,WAAW;QACrC,QAAQ,EAAE,YAAY,KAAK,mBAAmB;QAC9C,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC;QACxC,mCAAmC,CAAC,QAAQ,CAAC,CAAC,CACnD,CAAC;AATS,QAAA,4BAA4B,gCASrC;AAEG,MAAM,2BAA2B,GAAG,CACzC,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/C,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,IAAI,QAAQ,EAAE,YAAY,KAAK,cAAc,CAAC,CAC5E,CAAC;AANS,QAAA,2BAA2B,+BAMpC;AAEG,MAAM,iDAAiD,GAAG,CAC/D,QAA4D,EACnD,EAAE,CACX,CAAC,IAAA,oCAA4B,EAAC,QAAQ,CAAC;IACrC,CAAC,IAAA,oCAA4B,EAAC,QAAQ,CAAC;IACvC,IAAA,oCAA4B,EAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,IAAA,oCAA4B,EAAC,QAAQ,CAAC;QACrC,IAAA,mCAA2B,EAAC,QAAQ,CAAC;QACrC,CAAC,IAAA,yCAAiC,EAAC,QAAQ,CAAC,CAAC,CAAC;AARrC,QAAA,iDAAiD,qDAQZ;AAElD,MAAM,4BAA4B,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC1F,CAAC,IAAA,wCAAgC,EAAC,QAAQ,CAAC;IAC3C,CAAC,IAAA,oCAA4B,EAAC,QAAQ,CAAC;IACvC,0BAA0B,CAAC,QAAQ,CAAC;IACpC,IAAA,oCAA4B,EAAC,QAAQ,CAAC;IACtC,CAAC,QAAQ,CAAC,UAAU,KAAK,MAAM,IAAI,IAAA,yDAAiD,EAAC,QAAQ,CAAC,CAAC,CAAC;AAE3F,MAAM,sBAAsB,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC3F,QAAQ,CAAC,OAAO,KAAK,IAAI;IACzB,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,IAAI;QAC9B,CAAC,4BAA4B,CAAC,QAAQ,CAAC;QACvC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5D,4BAA4B,CAAC,QAAQ,CAAC;QACtC,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,IAAI,IAAA,yCAAiC,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAPtE,QAAA,sBAAsB,0BAOgD;AAEnF,MAAM,wBAAwB,GAAG,CAAC,QAAyC,EAAW,EAAE,CACtF,sBAAsB,CAAC,QAAQ,CAAC;IAChC,IAAA,8BAAsB,EAAC,QAAQ,CAAC;IAChC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AAEhC,MAAM,6BAA6B,GAAG,CAC3C,QAAyC,EACjC,EAAE;IACV,IAAI,+BAA+B,CAAC,QAAQ,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC3E,IAAI,QAAQ,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAC,YAAY,CAAC;IACxD,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO,cAAc,CAAC;IAE5C,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,sBAAsB,CAAC;IAEjD,MAAM,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,GACZ,GAAG,YAAY,CAAC;IACjB,MAAM,gBAAgB,GAAG,IAAA,uCAA+B,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE7E,IACE,CAAC,cAAc,CAAC,WAAW,CAAC;QAC5B,UAAU,GAAG,gBAAgB,CAAC,aAAa;QAC3C,WAAW,GAAG,gBAAgB,CAAC,cAAc;QAC7C,CAAC,IAAA,gCAAwB,EAAC,WAAW,EAAE,gBAAgB,CAAC,EACxD,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IACE,eAAe,GAAG,CAAC;QACnB,gBAAgB,GAAG,CAAC;QACpB,cAAc,GAAG,CAAC;QAClB,iBAAiB,GAAG,CAAC;QACrB,eAAe,GAAG,gBAAgB,CAAC,+BAA+B;QAClE,gBAAgB,GAAG,gBAAgB,CAAC,+BAA+B;QACnE,cAAc,GAAG,gBAAgB,CAAC,6BAA6B;QAC/D,iBAAiB,GAAG,gBAAgB,CAAC,6BAA6B,EAClE,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,IAAI,SAAS,GAAG,YAAY;QAAE,OAAO,gBAAgB,CAAC;IAEtD,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AAjDW,QAAA,6BAA6B,iCAiDxC;AAEF,MAAM,iCAAiC,GAAG,CAAC,YAA6C,EAAU,EAAE,CAClG,YAAY,CAAC,MAAM,KAAK,aAAa;IACnC,CAAC,CAAC,yCAAiC;IACnC,CAAC,CAAC,mDAA2C,CAAC;AAElD,MAAM,8BAA8B,GAAG,CAAC,EACtC,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,KAAK,EACpB,cAAc,GAAG,KAAK,GACY,EAAqC,EAAE,CAAC,CAAC;IAC3E,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,YAAY;IACZ,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,CAAC,YAA6C,EAAW,EAAE;IAChG,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,mBAAmB,GACvB,uBAAuB,CAAC,YAAY,CAAC,IAAI,iCAAiC,CAAC,YAAY,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,mBAAmB;QACrC,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,iCAAiC,CAAC;IACtC,MAAM,YAAY,GAAG,mBAAmB;QACtC,CAAC,CAAC,8CAA8C;QAChD,CAAC,CAAC,kCAAkC,CAAC;IAEvC,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW;QAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAClD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,QAAyC,EAAW,EAAE;IAC3F,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAEnE,OAAO,CACL,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,IAAI,4CAA4C,CAChG,CAAC;AACJ,CAAC,CAAC;AAEF,SAAgB,2BAA2B,CACzC,aAAqB,EACrB,YAAyD;IAEzD,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7D,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,kBAAkB;YACpE,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IACE,IAAA,wCAAgC,EAAC,YAAY,CAAC;QAC9C,+BAA+B,CAAC,YAAY,CAAC,EAC7C,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,+BAA+B,CAAC,YAAY,CAAC;gBACnD,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,0BAA0B;YACrD,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,6BAA6B,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,cAAc,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;QACnF,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,IAAA,qCAA6B,EAAC,YAAY,CAAC;YACnD,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,wBAAwB,GAC5B,IAAA,8BAAsB,EAAC,YAAY,CAAC,IAAI,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAEjF,IAAI,YAAY,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACrC,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,wBAAwB;YACtC,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IACE,+CAAuC;QACvC,wBAAwB;QACxB,CAAC,6BAA6B,CAAC,YAAY,CAAC,EAC5C,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,wBAAwB;YACtC,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,wBAAwB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACxE,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IACE,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,iCAAiC,CAAC,YAAY,CAAC;QACjF,wBAAwB,EACxB,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACrE,MAAM,EAAE,oBAAoB;YAC5B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,8BAA8B,CAAC;QACpC,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,mBAAmB;QAClF,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,wBAAwB;QACtC,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,2BAA2B,CACzC,aAAqB,EACrB,YAAyD;IAEzD,OAAO,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC;AACzE,CAAC;AAED,SAAgB,wBAAwB,CACtC,aAAqB,EACrB,YAAyD,EACzD,SAA6B,KAAK;IAElC,MAAM,UAAU,GAAG,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE5E,OAAO,IAAA,qCAAkB,EAAC;QACxB,OAAO,EAAE;YACP,MAAM;YACN,KAAK,EAAE,SAAS;YAChB,aAAa,EACX,YAAY,EAAE,UAAU,KAAK,yBAAyB;gBACpD,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,QAAQ;SACf;QACD,OAAO,EAAE;YACP,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,QAAQ,EAAE,KAAK;SAChB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,YAAY,EAAE,OAAO;YAC9B,UAAU,EAAE,YAAY,EAAE,cAAc,IAAI,YAAY,EAAE,UAAU,IAAI,IAAI;YAC5E,MAAM,EAAE,UAAU,CAAC,QAAQ,KAAK,aAAa,IAAI,UAAU,CAAC,MAAM,KAAK,iBAAiB;YACxF,YAAY,EAAE,YAAY,EAAE,YAAY,IAAI,SAAS;YACrD,OAAO,EAAE,YAAY,EAAE,OAAO;YAC9B,UAAU,EAAE,YAAY,EAAE,UAAU;YACpC,UAAU,EAAE,UAAU,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvE,SAAS,EAAE,YAAY,EAAE,SAAS;YAClC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,gBAAgB,EAAE,UAAU,CAAC,WAAW;YACxC,iBAAiB,EAAE,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,UAAU;SACnE;KACF,CAAC,CAAC,aAAa,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"document-crop-arbitration.js","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Glare / specular masking for the document crop path.
3
+ *
4
+ * Problem (prod failure class #4, "glare steals the contour"): on reflective
5
+ * laminated Sierra Leone IDs and glossy security overlays a specular highlight
6
+ * forms a high-contrast blob whose edges out-compete the true document edge.
7
+ * The contour/Sobel detectors run on a plain luma grayscale with NO pre-mask, so
8
+ * (a) the detector can lock onto the glare boundary -> wrong crop, or (b) glare
9
+ * washes out a true edge -> under-segmentation.
10
+ *
11
+ * This module provides two pure, DOM-free primitives over a luma grey buffer:
12
+ *
13
+ * 1. computeSaturatedClusterCoverage() - what fraction of a region is
14
+ * *cluster* glare (a saturated pixel surrounded by saturated pixels - a
15
+ * specular blob, not an isolated bright speck). Used as a fail-safe
16
+ * DEMOTION signal: a crop whose region is glare-dominant should not be
17
+ * trusted (fall back to the original frame) - see document-crop-arbitration.
18
+ *
19
+ * 2. maskSaturatedClusters() - neutralize cluster-glare pixels to a local
20
+ * non-saturated mean BEFORE edge/contour scoring so the blob stops forming
21
+ * a fake edge. Used (flag-gated) on the review/redetect crop grey buffer.
22
+ *
23
+ * "cluster" is the same intent as quality-checks.hasReviewStageGlare's
24
+ * saturated-cluster definition (deliberately NOT a single-pixel maxBrightness -
25
+ * that was the over-sensitive glare bug). A uniformly bright (non-specular)
26
+ * document is NOT cluster glare because its bright pixels are everywhere, not in
27
+ * a tight blob; the neighbor-ratio test is what separates specular blobs from a
28
+ * generally bright frame, protecting bright/over-exposed but valid documents.
29
+ *
30
+ * NOTE: thresholds here are conservative initial values. They MUST be calibrated
31
+ * against real glare images (crop-lab) and device-QA'd before the SDK is allowed
32
+ * to compute + feed coverage into the live decision. The SDK computation is
33
+ * gated OFF by default for exactly this reason (see runtime-flags
34
+ * isGlareAwareCropDemotionEnabled); the arbitration logic below is always-on but
35
+ * inert until a caller supplies glareCoverageFraction.
36
+ */
37
+ /** Luma at/above this is "saturated" (specular white). */
38
+ export declare const GLARE_SATURATION_LUMA = 250;
39
+ /**
40
+ * A saturated pixel is part of a *cluster* (specular blob) only when at least
41
+ * this fraction of its 8-neighborhood is also saturated. Isolated saturated
42
+ * specks (text highlights, single hot pixels) are NOT counted - this is the
43
+ * guard that keeps a generally bright document from reading as glare.
44
+ */
45
+ export declare const GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = 0.625;
46
+ /**
47
+ * Crop-region cluster-glare coverage at/above this fraction => the crop geometry
48
+ * is considered glare-corrupted and the crop should be DEMOTED to the original
49
+ * frame (fail-safe). Conservative initial value; calibrate via crop-lab.
50
+ */
51
+ export declare const GLARE_DOMINANT_COVERAGE = 0.18;
52
+ export interface GlareMaskRegion {
53
+ x: number;
54
+ y: number;
55
+ w: number;
56
+ h: number;
57
+ }
58
+ export interface SaturatedClusterCoverage {
59
+ /** Fraction (0..1) of region pixels that are cluster glare. */
60
+ coverageFraction: number;
61
+ /** Fraction (0..1) of region pixels that are raw-saturated (pre-cluster). */
62
+ saturatedFraction: number;
63
+ /** Pixels examined in the region (0 when the region is empty/invalid). */
64
+ sampledPixels: number;
65
+ }
66
+ type GreyBuffer = Uint8Array | Uint8ClampedArray | ReadonlyArray<number>;
67
+ /**
68
+ * Fraction of the region that is cluster glare (specular blob). Pure; safe on
69
+ * any luma buffer. Returns zeros for an empty/invalid region.
70
+ */
71
+ export declare function computeSaturatedClusterCoverage(grey: GreyBuffer, width: number, height: number, region?: GlareMaskRegion, options?: {
72
+ saturationLuma?: number;
73
+ neighborRatio?: number;
74
+ }): SaturatedClusterCoverage;
75
+ /** True when the region's cluster-glare coverage is dominant enough to distrust the crop. */
76
+ export declare function isGlareDominantRegion(coverage: SaturatedClusterCoverage | number | null | undefined, threshold?: number): boolean;
77
+ export interface MaskSaturatedClustersResult {
78
+ /** New buffer with cluster-glare pixels neutralized to a local non-saturated mean. */
79
+ masked: Uint8ClampedArray;
80
+ /** Fraction (0..1) of the buffer that was masked. */
81
+ coverageFraction: number;
82
+ }
83
+ /**
84
+ * Neutralize cluster-glare pixels to the mean of nearby NON-saturated pixels so
85
+ * the specular blob stops forming a fake edge for Sobel/Canny. Isolated
86
+ * saturated specks are left intact (only clusters are masked). Pixels are
87
+ * replaced with a local non-saturated mean (window radius `radius`); if a
88
+ * cluster pixel has no non-saturated neighbor in range it is left unchanged
89
+ * (avoids smearing a fully-blown region into a fake flat edge).
90
+ *
91
+ * Returns a COPY - never mutates the input. Pure and DOM-free.
92
+ */
93
+ export declare function maskSaturatedClusters(grey: GreyBuffer, width: number, height: number, options?: {
94
+ saturationLuma?: number;
95
+ neighborRatio?: number;
96
+ radius?: number;
97
+ }): MaskSaturatedClustersResult;
98
+ export {};
99
+ //# sourceMappingURL=glare-mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glare-mask.d.ts","sourceRoot":"","sources":["../../src/glare-mask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAS5C,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,wBAAwB;IACvC,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAkDzE;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,wBAAwB,CA0C1B;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9D,SAAS,GAAE,MAAgC,GAC1C,OAAO,CAIT;AAED,MAAM,WAAW,2BAA2B;IAC1C,sFAAsF;IACtF,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,2BAA2B,CA6C7B"}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * Glare / specular masking for the document crop path.
4
+ *
5
+ * Problem (prod failure class #4, "glare steals the contour"): on reflective
6
+ * laminated Sierra Leone IDs and glossy security overlays a specular highlight
7
+ * forms a high-contrast blob whose edges out-compete the true document edge.
8
+ * The contour/Sobel detectors run on a plain luma grayscale with NO pre-mask, so
9
+ * (a) the detector can lock onto the glare boundary -> wrong crop, or (b) glare
10
+ * washes out a true edge -> under-segmentation.
11
+ *
12
+ * This module provides two pure, DOM-free primitives over a luma grey buffer:
13
+ *
14
+ * 1. computeSaturatedClusterCoverage() - what fraction of a region is
15
+ * *cluster* glare (a saturated pixel surrounded by saturated pixels - a
16
+ * specular blob, not an isolated bright speck). Used as a fail-safe
17
+ * DEMOTION signal: a crop whose region is glare-dominant should not be
18
+ * trusted (fall back to the original frame) - see document-crop-arbitration.
19
+ *
20
+ * 2. maskSaturatedClusters() - neutralize cluster-glare pixels to a local
21
+ * non-saturated mean BEFORE edge/contour scoring so the blob stops forming
22
+ * a fake edge. Used (flag-gated) on the review/redetect crop grey buffer.
23
+ *
24
+ * "cluster" is the same intent as quality-checks.hasReviewStageGlare's
25
+ * saturated-cluster definition (deliberately NOT a single-pixel maxBrightness -
26
+ * that was the over-sensitive glare bug). A uniformly bright (non-specular)
27
+ * document is NOT cluster glare because its bright pixels are everywhere, not in
28
+ * a tight blob; the neighbor-ratio test is what separates specular blobs from a
29
+ * generally bright frame, protecting bright/over-exposed but valid documents.
30
+ *
31
+ * NOTE: thresholds here are conservative initial values. They MUST be calibrated
32
+ * against real glare images (crop-lab) and device-QA'd before the SDK is allowed
33
+ * to compute + feed coverage into the live decision. The SDK computation is
34
+ * gated OFF by default for exactly this reason (see runtime-flags
35
+ * isGlareAwareCropDemotionEnabled); the arbitration logic below is always-on but
36
+ * inert until a caller supplies glareCoverageFraction.
37
+ */
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.GLARE_DOMINANT_COVERAGE = exports.GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = exports.GLARE_SATURATION_LUMA = void 0;
40
+ exports.computeSaturatedClusterCoverage = computeSaturatedClusterCoverage;
41
+ exports.isGlareDominantRegion = isGlareDominantRegion;
42
+ exports.maskSaturatedClusters = maskSaturatedClusters;
43
+ /** Luma at/above this is "saturated" (specular white). */
44
+ exports.GLARE_SATURATION_LUMA = 250;
45
+ /**
46
+ * A saturated pixel is part of a *cluster* (specular blob) only when at least
47
+ * this fraction of its 8-neighborhood is also saturated. Isolated saturated
48
+ * specks (text highlights, single hot pixels) are NOT counted - this is the
49
+ * guard that keeps a generally bright document from reading as glare.
50
+ */
51
+ exports.GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = 0.625;
52
+ /**
53
+ * Crop-region cluster-glare coverage at/above this fraction => the crop geometry
54
+ * is considered glare-corrupted and the crop should be DEMOTED to the original
55
+ * frame (fail-safe). Conservative initial value; calibrate via crop-lab.
56
+ */
57
+ exports.GLARE_DOMINANT_COVERAGE = 0.18;
58
+ /**
59
+ * If essentially the whole examined region is saturated, treat it as high-key /
60
+ * over-exposed rather than localized specular glare. Keep the raw saturation
61
+ * telemetry, but do not demote or mass-mask the crop on this signal alone.
62
+ */
63
+ const GLARE_HIGH_KEY_SATURATED_FRACTION = 0.9;
64
+ const clampRegion = (width, height, region) => {
65
+ if (!region)
66
+ return { x: 0, y: 0, w: width, h: height };
67
+ const x = Math.max(0, Math.min(width, Math.floor(region.x)));
68
+ const y = Math.max(0, Math.min(height, Math.floor(region.y)));
69
+ const w = Math.max(0, Math.min(width - x, Math.floor(region.w)));
70
+ const h = Math.max(0, Math.min(height - y, Math.floor(region.h)));
71
+ return { x, y, w, h };
72
+ };
73
+ const isSaturatedAt = (grey, width, height, px, py, saturationLuma) => {
74
+ if (px < 0 || py < 0 || px >= width || py >= height)
75
+ return false;
76
+ return (grey[py * width + px] ?? 0) >= saturationLuma;
77
+ };
78
+ const saturatedNeighborRatio = (grey, width, height, px, py, saturationLuma) => {
79
+ let saturated = 0;
80
+ let counted = 0;
81
+ for (let dy = -1; dy <= 1; dy += 1) {
82
+ for (let dx = -1; dx <= 1; dx += 1) {
83
+ if (dx === 0 && dy === 0)
84
+ continue;
85
+ const nx = px + dx;
86
+ const ny = py + dy;
87
+ if (nx < 0 || ny < 0 || nx >= width || ny >= height)
88
+ continue;
89
+ counted += 1;
90
+ if (isSaturatedAt(grey, width, height, nx, ny, saturationLuma))
91
+ saturated += 1;
92
+ }
93
+ }
94
+ return counted === 0 ? 0 : saturated / counted;
95
+ };
96
+ /**
97
+ * Fraction of the region that is cluster glare (specular blob). Pure; safe on
98
+ * any luma buffer. Returns zeros for an empty/invalid region.
99
+ */
100
+ function computeSaturatedClusterCoverage(grey, width, height, region, options) {
101
+ const empty = {
102
+ coverageFraction: 0,
103
+ saturatedFraction: 0,
104
+ sampledPixels: 0,
105
+ };
106
+ if (!grey || !Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {
107
+ return empty;
108
+ }
109
+ const saturationLuma = options?.saturationLuma ?? exports.GLARE_SATURATION_LUMA;
110
+ const neighborRatio = options?.neighborRatio ?? exports.GLARE_CLUSTER_MIN_NEIGHBOR_RATIO;
111
+ const { x, y, w, h } = clampRegion(width, height, region);
112
+ if (w <= 0 || h <= 0)
113
+ return empty;
114
+ let saturated = 0;
115
+ let cluster = 0;
116
+ let sampled = 0;
117
+ for (let ry = y; ry < y + h; ry += 1) {
118
+ for (let rx = x; rx < x + w; rx += 1) {
119
+ sampled += 1;
120
+ if (!isSaturatedAt(grey, width, height, rx, ry, saturationLuma))
121
+ continue;
122
+ saturated += 1;
123
+ if (saturatedNeighborRatio(grey, width, height, rx, ry, saturationLuma) >= neighborRatio) {
124
+ cluster += 1;
125
+ }
126
+ }
127
+ }
128
+ if (sampled === 0)
129
+ return empty;
130
+ const saturatedFraction = saturated / sampled;
131
+ if (saturatedFraction >= GLARE_HIGH_KEY_SATURATED_FRACTION) {
132
+ return {
133
+ coverageFraction: 0,
134
+ saturatedFraction,
135
+ sampledPixels: sampled,
136
+ };
137
+ }
138
+ return {
139
+ coverageFraction: cluster / sampled,
140
+ saturatedFraction,
141
+ sampledPixels: sampled,
142
+ };
143
+ }
144
+ /** True when the region's cluster-glare coverage is dominant enough to distrust the crop. */
145
+ function isGlareDominantRegion(coverage, threshold = exports.GLARE_DOMINANT_COVERAGE) {
146
+ if (coverage == null)
147
+ return false;
148
+ const fraction = typeof coverage === 'number' ? coverage : coverage.coverageFraction;
149
+ return Number.isFinite(fraction) && fraction >= threshold;
150
+ }
151
+ /**
152
+ * Neutralize cluster-glare pixels to the mean of nearby NON-saturated pixels so
153
+ * the specular blob stops forming a fake edge for Sobel/Canny. Isolated
154
+ * saturated specks are left intact (only clusters are masked). Pixels are
155
+ * replaced with a local non-saturated mean (window radius `radius`); if a
156
+ * cluster pixel has no non-saturated neighbor in range it is left unchanged
157
+ * (avoids smearing a fully-blown region into a fake flat edge).
158
+ *
159
+ * Returns a COPY - never mutates the input. Pure and DOM-free.
160
+ */
161
+ function maskSaturatedClusters(grey, width, height, options) {
162
+ const saturationLuma = options?.saturationLuma ?? exports.GLARE_SATURATION_LUMA;
163
+ const out = new Uint8ClampedArray(width > 0 && height > 0 ? width * height : 0);
164
+ let saturated = 0;
165
+ for (let i = 0; i < out.length; i += 1) {
166
+ const value = grey[i] ?? 0;
167
+ out[i] = value;
168
+ if (value >= saturationLuma)
169
+ saturated += 1;
170
+ }
171
+ if (out.length === 0)
172
+ return { masked: out, coverageFraction: 0 };
173
+ if (saturated / out.length >= GLARE_HIGH_KEY_SATURATED_FRACTION) {
174
+ return { masked: out, coverageFraction: 0 };
175
+ }
176
+ const neighborRatio = options?.neighborRatio ?? exports.GLARE_CLUSTER_MIN_NEIGHBOR_RATIO;
177
+ const radius = Math.max(1, Math.floor(options?.radius ?? 3));
178
+ let masked = 0;
179
+ for (let py = 0; py < height; py += 1) {
180
+ for (let px = 0; px < width; px += 1) {
181
+ if (!isSaturatedAt(grey, width, height, px, py, saturationLuma))
182
+ continue;
183
+ if (saturatedNeighborRatio(grey, width, height, px, py, saturationLuma) < neighborRatio) {
184
+ continue;
185
+ }
186
+ // cluster pixel - replace with local non-saturated mean
187
+ let sum = 0;
188
+ let count = 0;
189
+ for (let dy = -radius; dy <= radius; dy += 1) {
190
+ for (let dx = -radius; dx <= radius; dx += 1) {
191
+ const nx = px + dx;
192
+ const ny = py + dy;
193
+ if (nx < 0 || ny < 0 || nx >= width || ny >= height)
194
+ continue;
195
+ const v = grey[ny * width + nx] ?? 0;
196
+ if (v >= saturationLuma)
197
+ continue;
198
+ sum += v;
199
+ count += 1;
200
+ }
201
+ }
202
+ if (count > 0) {
203
+ out[py * width + px] = Math.round(sum / count);
204
+ masked += 1;
205
+ }
206
+ }
207
+ }
208
+ return { masked: out, coverageFraction: masked / out.length };
209
+ }
210
+ //# sourceMappingURL=glare-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glare-mask.js","sourceRoot":"","sources":["../../src/glare-mask.ts"],"names":[],"mappings":"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"}
@@ -24,14 +24,16 @@ export type { ReviewReason, DocumentRegionBounds, DocumentRegionImageSize, Revie
24
24
  export { DOCUMENT_REVIEW_REGION_MIN_READABLE_WIDTH_PX, evaluateDocumentReviewQuality, hasNoCropClarityUncertainty, } from './review-quality.js';
25
25
  export type { CaptureImageSize, CapturePreviewRect, CaptureCropRect, CapturePreviewResizeMode, CaptureRotationDegrees, CaptureNormalizationUnsafeReason, CaptureClampedEdges, CaptureNormalizationDiagnostics, CaptureFrameMode, PreviewRectToImageCropInput, ExpectedOrientationInput, CaptureNormalizationPlanInput, CaptureResizePlan, CaptureNormalizationPlan, } from './capture-normalization.js';
26
26
  export { mapPreviewRectToImageCropWithDiagnostics, mapPreviewRectToImageCrop, getRotationToExpectedOrientation, buildCaptureNormalizationPlan, getDocumentCaptureFrameAspectRatio, } from './capture-normalization.js';
27
- export type { CaptureTrustClient, CaptureTrustPhase, CaptureTrustCaptureSource, CaptureTrustDocumentSide, CaptureTrustCropProvenance, CaptureTrustReasonCode, CaptureTrustGate, CropTrustTier, DocumentFaceCorroborationTrustStatus, CaptureTrustContextInput, CaptureTrustLiveInput, CaptureTrustClassifierInput, CaptureTrustMrzInput, CaptureTrustGeometryInput, CaptureTrustReadableTextInput, CaptureTrustCropInput, CaptureTrustCaptureInput, CaptureTrustReviewInput, CaptureTrustPolicyInput, CaptureTrustInput, CaptureTrustDiagnostics, CaptureTrustDecision, } from './capture-trust.js';
28
- export { decideCaptureTrust } from './capture-trust.js';
27
+ export type { CaptureTrustClient, CaptureTrustPhase, CaptureTrustCaptureSource, CaptureTrustDocumentSide, CaptureTrustCropProvenance, CaptureTrustReasonCode, CaptureTrustGate, CropTrustTier, DocumentFaceCorroborationTrustStatus, CaptureTrustContextInput, CaptureTrustLiveInput, CaptureTrustClassifierInput, CaptureTrustMrzInput, CaptureTrustGeometryInput, CaptureTrustReadableTextInput, CaptureTrustCropInput, CaptureTrustCaptureInput, CaptureTrustReviewInput, CaptureTrustPolicyInput, CaptureTrustInput, CaptureTrustDiagnostics, CaptureTrustDecision, CaptureTrustMetadataSnapshot, } from './capture-trust.js';
28
+ export { decideCaptureTrust, buildCaptureTrustDecisionSnapshot, buildCaptureTrustDiagnosticsSnapshot, } from './capture-trust.js';
29
29
  export type { SubmittedImageSource, SubmittedImageReason, SubmittedImageInput, CaptureSeams, CaptureDecisionEnvelope, } from './capture-envelope.js';
30
30
  export { CAPTURE_ENVELOPE_SCHEMA_VERSION, CAPTURE_DECISION_ENVELOPE_KEY, decideSubmittedDocumentImage, isCaptureDecisionEnvelope, } from './capture-envelope.js';
31
31
  export type { DocumentProfileFamily, DocumentProfile } from './document-profiles.js';
32
32
  export { getDocumentProfile, normalizeDocumentProfileType } from './document-profiles.js';
33
- export type { DocumentCropShapeFamily, DocumentCropReviewPolicy, DocumentCropArbitrationDecision, DocumentCropArbitrationAssessment, DocumentCropPoint, DocumentCropRect, DocumentCropImageSize, DocumentCropQuadrilateral, DocumentCropArbitrationMetadata, } from './document-crop-arbitration.js';
34
- export { DEFAULT_CROP_CONFIDENCE_THRESHOLD, DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD, DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED, DOCUMENT_CROP_ASPECT_MIN, DOCUMENT_CROP_ASPECT_MAX, CARD_LIKE_MEASURED_CROP_MIN_AREA_RATIO, QUIET_ZONE_CLAMP_CUT_OFF_RISK_LOSS, SAFE_LIVE_QUAD_INSET_MIN, isCardLikeCropAspect, getDocumentCropShapeFamily, getDocumentCropSafetyThresholds, getDocumentCropSafetyAspectRatio, isDocumentCropAspectSafe, getMeasuredDocumentCropMinAreaRatio, hasExplicitDocumentCutOffReason, hasExplicitUnsafeCaptureReason, hasCaptureDocumentCutOffEvidence, hasMarginSafeDocumentCropEvidence, hasMarginSafeReliableCaptureQuad, hasUnsafeInsetReliableCaptureQuad, getCapturePageRecognitionText, hasTrustedMrzCaptureEvidence, hasTrustedCardFrontRecognitionReason, hasReadyCaptureCandidateDecision, hasReadySafeCardLiveEvidence, hasHardCaptureCutOffEvidence, hasNativeOverfullCaptureRisk, hasNativeClampedCaptureRisk, canTrustReadySafeCardEvidenceOverNativeUnsafeRisk, isDocumentCropVerified, getDocumentCropRejectedReason, assessDocumentCropCandidate, getDocumentCropReviewPolicy, getDocumentCropTrustTier, } from './document-crop-arbitration.js';
33
+ export type { DocumentCropShapeFamily, DocumentCropReviewPolicy, DocumentCropArbitrationDecision, DocumentCropArbitrationAssessment, DocumentCropPoint, DocumentCropRect, DocumentCropImageSize, DocumentCropQuadrilateral, DocumentCropArbitrationMetadata, DocumentCropCaptureEvidenceContext, } from './document-crop-arbitration.js';
34
+ export { DEFAULT_CROP_CONFIDENCE_THRESHOLD, DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD, DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED, DOCUMENT_CROP_ASPECT_MIN, DOCUMENT_CROP_ASPECT_MAX, CARD_LIKE_MEASURED_CROP_MIN_AREA_RATIO, QUIET_ZONE_CLAMP_CUT_OFF_RISK_LOSS, SAFE_LIVE_QUAD_INSET_MIN, isCardLikeCropAspect, getDocumentCropShapeFamily, getDocumentCropSafetyThresholds, getDocumentCropSafetyAspectRatio, isDocumentCropAspectSafe, getMeasuredDocumentCropMinAreaRatio, hasExplicitDocumentCutOffReason, hasExplicitUnsafeCaptureReason, hasCaptureDocumentCutOffEvidence, hasMarginSafeDocumentCropEvidence, hasMarginSafeReliableCaptureQuad, hasUnsafeInsetReliableCaptureQuad, isCardLikeCaptureContext, isCardFrontCaptureContext, getCapturePageRecognitionText, hasTrustedMrzCaptureEvidence, hasTrustedCardFrontRecognitionReason, hasReadyCaptureCandidateDecision, hasReadySafeCardLiveEvidence, hasHardCaptureCutOffEvidence, hasNativeOverfullCaptureRisk, hasNativeClampedCaptureRisk, canTrustReadySafeCardEvidenceOverNativeUnsafeRisk, isDocumentCropVerified, getDocumentCropRejectedReason, assessDocumentCropCandidate, getDocumentCropReviewPolicy, getDocumentCropTrustTier, } from './document-crop-arbitration.js';
35
+ export type { GlareMaskRegion, SaturatedClusterCoverage, MaskSaturatedClustersResult, } from './glare-mask.js';
36
+ export { GLARE_SATURATION_LUMA, GLARE_CLUSTER_MIN_NEIGHBOR_RATIO, GLARE_DOMINANT_COVERAGE, computeSaturatedClusterCoverage, isGlareDominantRegion, maskSaturatedClusters, } from './glare-mask.js';
35
37
  export type { CapturePlacementShape, DocumentPlacementInput, DocumentPlacementDecision, DocumentPlacementReason, } from './document-placement.js';
36
38
  export { CAPTURE_READY_AREA_MIN_BY_SHAPE, RELAXED_CAPTURE_READY_AREA_MIN_BY_SHAPE, CAPTURE_READY_AREA_MAX_BY_SHAPE, CAPTURE_READY_CENTER_MAX_BY_SHAPE, CAPTURE_READY_SAFE_INSET_MIN, evaluateDocumentPlacement, } from './document-placement.js';
37
39
  export type { EdgeEnergyProfile } from './sobel.js';