pict-section-recordset 1.0.40 → 1.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pict-section-recordset",
3
- "version": "1.0.40",
3
+ "version": "1.0.42",
4
4
  "description": "Pict dynamic record set management views",
5
5
  "main": "source/Pict-Section-RecordSet.js",
6
6
  "directories": {
@@ -368,6 +368,8 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
368
368
  */
369
369
  getFieldFilterClauses(pSchemaField, pColumn)
370
370
  {
371
+ /** @type {Record<string, any>} */
372
+ let tmpRangeClause;
371
373
  let tmpFieldFilterClauses = this.options.FieldFilterClauses?.[pSchemaField];
372
374
  if (!Array.isArray(tmpFieldFilterClauses))
373
375
  {
@@ -378,19 +380,28 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
378
380
  case 'string':
379
381
  tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'StringMatch', FilterByColumn: pSchemaField, ExactMatch: true, Ordinal: tmpFieldFilterClauses.length + 1 });
380
382
  tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'StringMatch', FilterByColumn: pSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterClauses.length + 1 });
381
- tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'StringRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 });
383
+ tmpRangeClause = { FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'StringRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 };
384
+ tmpRangeClause.MinimumLabel = `Minimum ${tmpFieldHumanName}`;
385
+ tmpRangeClause.MaximumLabel = `Maximum ${tmpFieldHumanName}`;
386
+ tmpFieldFilterClauses.push(tmpRangeClause);
382
387
  break;
383
388
  case 'date':
384
389
  case 'datetime':
385
390
  tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'DateMatch', FilterByColumn: pSchemaField, ExactMatch: true , Ordinal: tmpFieldFilterClauses.length + 1 });
386
391
  tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'DateMatch', FilterByColumn: pSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterClauses.length + 1 });
387
- tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'DateRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 });
392
+ tmpRangeClause = { FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'DateRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 };
393
+ tmpRangeClause.MinimumLabel = `Minimum ${tmpFieldHumanName}`;
394
+ tmpRangeClause.MaximumLabel = `Maximum ${tmpFieldHumanName}`;
395
+ tmpFieldFilterClauses.push(tmpRangeClause);
388
396
  break;
389
397
  case 'boolean': //TODO: we didn't add filters for this - they are just numeric but it's weird for the user, maybe we should add views for this that account for the difference
390
398
  case 'integer':
391
399
  tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Exact`, DisplayName: `${tmpFieldHumanName} Exact Match`, Type: 'NumericMatch', FilterByColumn: pSchemaField, ExactMatch: true , Ordinal: tmpFieldFilterClauses.length + 1 });
392
400
  tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Match_Fuzzy`, DisplayName: `${tmpFieldHumanName} Partial Match`, Type: 'NumericMatch', FilterByColumn: pSchemaField, ExactMatch: false , Ordinal: tmpFieldFilterClauses.length + 1 });
393
- tmpFieldFilterClauses.push({ FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'NumericRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 });
401
+ tmpRangeClause = { FilterKey: pSchemaField, ClauseKey: `${pSchemaField}_Range`, DisplayName: `${tmpFieldHumanName} in Range`, Type: 'NumericRange', FilterByColumn: pSchemaField , Ordinal: tmpFieldFilterClauses.length + 1 };
402
+ tmpRangeClause.MinimumLabel = `Minimum ${tmpFieldHumanName}`;
403
+ tmpRangeClause.MaximumLabel = `Maximum ${tmpFieldHumanName}`;
404
+ tmpFieldFilterClauses.push(tmpRangeClause);
394
405
  break;
395
406
  default:
396
407
  this.pict.log.warn(`Unsupported field type ${pColumn.type} for field ${pSchemaField}`, { Schema: pColumn });
@@ -481,130 +492,12 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
481
492
  }
482
493
  this.initializeEntitySchema(() =>
483
494
  {
484
- const tmpSchema = this._Schema;
485
- if (!tmpSchema || !tmpSchema.properties)
495
+ if (pError)
486
496
  {
487
497
  return fCallback(pError);
488
498
  }
489
- const tmpProperties = tmpSchema?.properties;
490
- // loop through the schema and add the columns to the tableCells
491
- let tmpOrdinal = 0;
492
- for (const tmpSchemaField in tmpProperties)
493
- {
494
- if (this.ignoreFilterFields.includes(tmpSchemaField))
495
- {
496
- continue;
497
- }
498
- ++tmpOrdinal;
499
- const tmpColumn = tmpProperties[tmpSchemaField];
500
- let tmpFieldFilterSchema = this._FilterSchema[tmpSchemaField];
501
- if (!tmpFieldFilterSchema)
502
- {
503
- this._FilterSchema[tmpSchemaField] = tmpFieldFilterSchema = { };
504
- }
505
- if (!tmpFieldFilterSchema.FilterKey)
506
- {
507
- tmpFieldFilterSchema.FilterKey = tmpSchemaField;
508
- }
509
- if (!tmpFieldFilterSchema.RecordSet)
510
- {
511
- tmpFieldFilterSchema.RecordSet = this.options.RecordSet;
512
- }
513
- if (!tmpFieldFilterSchema.DisplayName)
514
- {
515
- tmpFieldFilterSchema.DisplayName = this._getHumanReadableFieldName(tmpSchemaField);
516
- }
517
- if (!tmpFieldFilterSchema.Description)
518
- {
519
- tmpFieldFilterSchema.Description = `Filter by ${tmpFieldFilterSchema.DisplayName}`;
520
- }
521
- if (!tmpFieldFilterSchema.HelpText)
522
- {
523
- tmpFieldFilterSchema.HelpText = `Filter by ${tmpFieldFilterSchema.DisplayName} for the ${this._getHumanReadbleEntityName(this.options.Entity)} entity.`;
524
- }
525
- if (tmpFieldFilterSchema.Ordinal == null)
526
- {
527
- tmpFieldFilterSchema.Ordinal = tmpOrdinal;
528
- }
529
- if (!Array.isArray(tmpFieldFilterSchema.AvailableClauses))
530
- {
531
- tmpFieldFilterSchema.AvailableClauses = [];
532
- }
533
- const tmpFieldFilterClauses = this.getFieldFilterClauses(tmpSchemaField, tmpColumn);
534
- if (Array.isArray(tmpFieldFilterClauses) && tmpFieldFilterClauses.length > 0)
535
- {
536
- for (const tmpFilterClause of tmpFieldFilterClauses)
537
- {
538
- //TODO: allow customization of filter order
539
- tmpFilterClause.Ordinal = tmpFieldFilterSchema.AvailableClauses.length + 1;
540
- tmpFieldFilterSchema.AvailableClauses.push(tmpFilterClause);
541
- }
542
- }
543
- }
544
- if (typeof this.pict.providers.FilterManager.filters === 'object')
545
- {
546
- for (const tmpFilterKey of Object.keys(this.pict.providers.FilterManager.filters))
547
- {
548
- const tmpFilterClause = this.pict.providers.FilterManager.filters[tmpFilterKey];
549
- if (tmpFilterClause.CoreConnectionColumn === `ID${this.options.Entity}`)
550
- {
551
- //FIXME: I don't think using filter key is right here
552
- let tmpFieldFilterSchema = this._FilterSchema[tmpFilterKey];
553
- if (!tmpFieldFilterSchema)
554
- {
555
- this._FilterSchema[tmpFilterKey] = tmpFieldFilterSchema = { };
556
- }
557
- if (!tmpFieldFilterSchema.FilterKey)
558
- {
559
- tmpFieldFilterSchema.FilterKey = tmpFilterKey;
560
- }
561
- if (!tmpFieldFilterSchema.RecordSet)
562
- {
563
- tmpFieldFilterSchema.RecordSet = this.options.RecordSet;
564
- }
565
- const tmpFieldHumanName = this._getHumanReadableFieldName(tmpFilterKey);
566
- if (tmpFilterClause.DisplayName)
567
- {
568
- tmpFieldFilterSchema.DisplayName = tmpFilterClause.DisplayName;
569
- }
570
- if (!tmpFieldFilterSchema.DisplayName)
571
- {
572
- tmpFieldFilterSchema.DisplayName = tmpFieldHumanName;
573
- }
574
- if (!tmpFieldFilterSchema.Description)
575
- {
576
- tmpFieldFilterSchema.Description = tmpFilterClause.Description || `Filter by ${tmpFieldFilterSchema.DisplayName}`;
577
- }
578
- if (!tmpFieldFilterSchema.HelpText)
579
- {
580
- tmpFieldFilterSchema.HelpText = tmpFilterClause.HelpText || `Filter by ${tmpFieldFilterSchema.DisplayName} for the ${this._getHumanReadbleEntityName(this.options.Entity)} entity.`;
581
- }
582
- if (tmpFieldFilterSchema.Ordinal == null)
583
- {
584
- tmpFieldFilterSchema.Ordinal = tmpOrdinal;
585
- }
586
- if (!Array.isArray(tmpFieldFilterSchema.AvailableClauses))
587
- {
588
- tmpFieldFilterSchema.AvailableClauses = [];
589
- }
590
- tmpFieldFilterSchema.AvailableClauses.push(tmpFilterClause);
591
- if (!tmpFilterClause.FilterKey)
592
- {
593
- tmpFilterClause.FilterKey = tmpFilterKey;
594
- }
595
- if (!tmpFilterClause.ClauseKey)
596
- {
597
- tmpFilterClause.ClauseKey = tmpFilterKey;
598
- }
599
- if (!tmpFilterClause.DisplayName)
600
- {
601
- tmpFilterClause.DisplayName = tmpFieldHumanName;
602
- }
603
- tmpFilterClause.Ordinal = tmpFieldFilterSchema.AvailableClauses.length + 1;
604
- }
605
- }
606
- }
607
- return fCallback(pError);
499
+ this.initializeFilterSchema();
500
+ return fCallback();
608
501
  });
609
502
  });
610
503
  }
@@ -687,6 +580,133 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
687
580
  });
688
581
  }
689
582
 
583
+ initializeFilterSchema()
584
+ {
585
+ const tmpSchema = this._Schema;
586
+ if (!tmpSchema || !tmpSchema.properties)
587
+ {
588
+ return;
589
+ }
590
+ const tmpProperties = tmpSchema?.properties;
591
+ // loop through the schema and add the columns to the tableCells
592
+ let tmpOrdinal = 0;
593
+ for (const tmpSchemaField in tmpProperties)
594
+ {
595
+ if (this.ignoreFilterFields.includes(tmpSchemaField))
596
+ {
597
+ continue;
598
+ }
599
+ ++tmpOrdinal;
600
+ const tmpColumn = tmpProperties[tmpSchemaField];
601
+ let tmpFieldFilterSchema = this._FilterSchema[tmpSchemaField];
602
+ if (!tmpFieldFilterSchema)
603
+ {
604
+ this._FilterSchema[tmpSchemaField] = tmpFieldFilterSchema = { };
605
+ }
606
+ if (!tmpFieldFilterSchema.FilterKey)
607
+ {
608
+ tmpFieldFilterSchema.FilterKey = tmpSchemaField;
609
+ }
610
+ if (!tmpFieldFilterSchema.RecordSet)
611
+ {
612
+ tmpFieldFilterSchema.RecordSet = this.options.RecordSet;
613
+ }
614
+ if (!tmpFieldFilterSchema.DisplayName)
615
+ {
616
+ tmpFieldFilterSchema.DisplayName = this._getHumanReadableFieldName(tmpSchemaField);
617
+ }
618
+ if (!tmpFieldFilterSchema.Description)
619
+ {
620
+ tmpFieldFilterSchema.Description = `Filter by ${tmpFieldFilterSchema.DisplayName}`;
621
+ }
622
+ if (!tmpFieldFilterSchema.HelpText)
623
+ {
624
+ tmpFieldFilterSchema.HelpText = `Filter by ${tmpFieldFilterSchema.DisplayName} for the ${this._getHumanReadbleEntityName(this.options.Entity)} entity.`;
625
+ }
626
+ if (tmpFieldFilterSchema.Ordinal == null)
627
+ {
628
+ tmpFieldFilterSchema.Ordinal = tmpOrdinal;
629
+ }
630
+ if (!Array.isArray(tmpFieldFilterSchema.AvailableClauses))
631
+ {
632
+ tmpFieldFilterSchema.AvailableClauses = [];
633
+ }
634
+ const tmpFieldFilterClauses = this.getFieldFilterClauses(tmpSchemaField, tmpColumn);
635
+ if (Array.isArray(tmpFieldFilterClauses) && tmpFieldFilterClauses.length > 0)
636
+ {
637
+ for (const tmpFilterClause of tmpFieldFilterClauses)
638
+ {
639
+ //TODO: allow customization of filter order
640
+ tmpFilterClause.Ordinal = tmpFieldFilterSchema.AvailableClauses.length + 1;
641
+ tmpFieldFilterSchema.AvailableClauses.push(tmpFilterClause);
642
+ }
643
+ }
644
+ }
645
+ if (typeof this.pict.providers.FilterManager.filters === 'object')
646
+ {
647
+ for (const tmpFilterKey of Object.keys(this.pict.providers.FilterManager.filters))
648
+ {
649
+ const tmpFilterClause = this.pict.providers.FilterManager.filters[tmpFilterKey];
650
+ if (tmpFilterClause.CoreConnectionColumn === `ID${this.options.Entity}`)
651
+ {
652
+ //FIXME: I don't think using filter key is right here
653
+ let tmpFieldFilterSchema = this._FilterSchema[tmpFilterKey];
654
+ if (!tmpFieldFilterSchema)
655
+ {
656
+ this._FilterSchema[tmpFilterKey] = tmpFieldFilterSchema = { };
657
+ }
658
+ if (!tmpFieldFilterSchema.FilterKey)
659
+ {
660
+ tmpFieldFilterSchema.FilterKey = tmpFilterKey;
661
+ }
662
+ if (!tmpFieldFilterSchema.RecordSet)
663
+ {
664
+ tmpFieldFilterSchema.RecordSet = this.options.RecordSet;
665
+ }
666
+ const tmpFieldHumanName = this._getHumanReadableFieldName(tmpFilterKey);
667
+ if (tmpFilterClause.DisplayName)
668
+ {
669
+ tmpFieldFilterSchema.DisplayName = tmpFilterClause.DisplayName;
670
+ }
671
+ if (!tmpFieldFilterSchema.DisplayName)
672
+ {
673
+ tmpFieldFilterSchema.DisplayName = tmpFieldHumanName;
674
+ }
675
+ if (!tmpFieldFilterSchema.Description)
676
+ {
677
+ tmpFieldFilterSchema.Description = tmpFilterClause.Description || `Filter by ${tmpFieldFilterSchema.DisplayName}`;
678
+ }
679
+ if (!tmpFieldFilterSchema.HelpText)
680
+ {
681
+ tmpFieldFilterSchema.HelpText = tmpFilterClause.HelpText || `Filter by ${tmpFieldFilterSchema.DisplayName} for the ${this._getHumanReadbleEntityName(this.options.Entity)} entity.`;
682
+ }
683
+ if (tmpFieldFilterSchema.Ordinal == null)
684
+ {
685
+ tmpFieldFilterSchema.Ordinal = tmpOrdinal;
686
+ }
687
+ if (!Array.isArray(tmpFieldFilterSchema.AvailableClauses))
688
+ {
689
+ tmpFieldFilterSchema.AvailableClauses = [];
690
+ }
691
+ tmpFieldFilterSchema.AvailableClauses.push(tmpFilterClause);
692
+ if (!tmpFilterClause.FilterKey)
693
+ {
694
+ tmpFilterClause.FilterKey = tmpFilterKey;
695
+ }
696
+ if (!tmpFilterClause.ClauseKey)
697
+ {
698
+ tmpFilterClause.ClauseKey = tmpFilterKey;
699
+ }
700
+ if (!tmpFilterClause.DisplayName)
701
+ {
702
+ tmpFilterClause.DisplayName = tmpFieldHumanName;
703
+ }
704
+ tmpFilterClause.Ordinal = tmpFieldFilterSchema.AvailableClauses.length + 1;
705
+ }
706
+ }
707
+ }
708
+ }
709
+
690
710
  /**
691
711
  * @return {Promise<Record<string, any>>} The schema of the record.
692
712
  */
@@ -700,6 +720,7 @@ class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
700
720
  {
701
721
  return reject(pError);
702
722
  }
723
+ this.initializeFilterSchema();
703
724
  resolve();
704
725
  }));
705
726
  }
@@ -146,6 +146,7 @@ declare class MeadowEndpointsRecordSetProvider extends libRecordSetProviderBase
146
146
  * @param {(error?: Error) => void} fCallback - The callback function.
147
147
  */
148
148
  initializeEntitySchema(fCallback: (error?: Error) => void): void;
149
+ initializeFilterSchema(): void;
149
150
  }
150
151
  declare namespace MeadowEndpointsRecordSetProvider {
151
152
  export { RecordSetFilter, RecordSetResult };
@@ -1 +1 @@
1
- {"version":3,"file":"RecordSet-RecordProvider-MeadowEndpoints.d.ts","sourceRoot":"","sources":["../../source/providers/RecordSet-RecordProvider-MeadowEndpoints.js"],"names":[],"mappings":";AAGA;;;GAGG;AAEH;;;GAGG;AACH;IAcE;;;;;;;;;aASS;IACT,MAVW,OAAO,MAAM,CAAC,GAAG;QACpB,GAAG,EAAE,GAAG,CAAC;QACT,QAAQ,EACf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB,CAAC;QACE,6CAA6C,EAAE,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC;QACrE,oBAAoB,EAAE,YAAY,CAAC;;;;;;SAAsC,CAAC,CAAA;KAC7E,CACI;IACT;aAVa,GAAG;kBAEf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB;uDACkD,CAAC,IAAI,QAAQ,KAAK,GAAG;8BAC9C,YAAY,CAAC;;;;;;SAAsC,CAAC;MAG5D;IAMtB,kCAAkC;IAClC,SADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAClB;IACZ,kDAAkD;IAClD,cADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACvB;IACvB,kDAAkD;IAClD,iBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACpB;IAG3B,0EAA0E;IAC1E,sBADa,OAAO,iDAAiD,CAAC,CAerE;IAVC,wEAAwE;IAExE,iBAFW,OAAO,iDAAiD,CAAC,CAE4B;IAUlG;;OAEG;IACH,0BAFY,KAAK,CAAC,MAAM,CAAC,CASxB;IAED;;;;OAIG;IACH,qBAFW,MAAM,GAAC,MAAM,gBA4BvB;IAED;;;;OAIG;IACH,uBAFW,MAAM,GAAC,MAAM,gBA2BvB;IAED,iGAiBC;IA+CD;;;;OAIG;IACH,4BAFW,eAAe,gBA0BzB;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,GAAC,MAAM,gBAKvB;IAaD;;;;OAIG;IACH,qBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAK7B;IAcD;;;OAGG;IACH,oCAHW,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAiC7B;IAED;;OAEG;IACH,6BAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QA+MjC;IAED;;;OAGG;IACH,oCAHW,MAAM,GACL,MAAM,CAKjB;IAED;;;OAGG;IACH,yCAHW,MAAM,GACL,MAAM,CAiCjB;IAED;;OAEG;IACH,kCAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QA6BjC;CAyDD;;;;;uBApuBY,OAAO,oCAAoC,EAAE,eAAe;uBAC5D,OAAO,oCAAoC,EAAE,eAAe"}
1
+ {"version":3,"file":"RecordSet-RecordProvider-MeadowEndpoints.d.ts","sourceRoot":"","sources":["../../source/providers/RecordSet-RecordProvider-MeadowEndpoints.js"],"names":[],"mappings":";AAGA;;;GAGG;AAEH;;;GAGG;AACH;IAcE;;;;;;;;;aASS;IACT,MAVW,OAAO,MAAM,CAAC,GAAG;QACpB,GAAG,EAAE,GAAG,CAAC;QACT,QAAQ,EACf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB,CAAC;QACE,6CAA6C,EAAE,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC;QACrE,oBAAoB,EAAE,YAAY,CAAC;;;;;;SAAsC,CAAC,CAAA;KAC7E,CACI;IACT;aAVa,GAAG;kBAEf;YACI,oBAAoB,EAAE,YAAY,CAAC;;;;;;aAAsC,CAAC,CAAC;YAC/E,CAAK,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;SACnB;uDACkD,CAAC,IAAI,QAAQ,KAAK,GAAG;8BAC9C,YAAY,CAAC;;;;;;SAAsC,CAAC;MAG5D;IAMtB,kCAAkC;IAClC,SADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAClB;IACZ,kDAAkD;IAClD,cADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACvB;IACvB,kDAAkD;IAClD,iBADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CACpB;IAG3B,0EAA0E;IAC1E,sBADa,OAAO,iDAAiD,CAAC,CAerE;IAVC,wEAAwE;IAExE,iBAFW,OAAO,iDAAiD,CAAC,CAE4B;IAUlG;;OAEG;IACH,0BAFY,KAAK,CAAC,MAAM,CAAC,CASxB;IAED;;;;OAIG;IACH,qBAFW,MAAM,GAAC,MAAM,gBA4BvB;IAED;;;;OAIG;IACH,uBAFW,MAAM,GAAC,MAAM,gBA2BvB;IAED,iGAiBC;IA+CD;;;;OAIG;IACH,4BAFW,eAAe,gBA0BzB;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAsB7B;IAED;;;;OAIG;IACH,sBAFW,MAAM,GAAC,MAAM,gBAKvB;IAaD;;;;OAIG;IACH,qBAFW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAK7B;IAcD;;;OAGG;IACH,oCAHW,MAAM,WACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OA4C7B;IAED;;OAEG;IACH,6BAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QAyFjC;IAED;;;OAGG;IACH,oCAHW,MAAM,GACL,MAAM,CAKjB;IAED;;;OAGG;IACH,yCAHW,MAAM,GACL,MAAM,CAiCjB;IAED;;OAEG;IACH,kCAFW,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,QA6BjC;IAED,+BA6HC;CA0DD;;;;;uBAzvBY,OAAO,oCAAoC,EAAE,eAAe;uBAC5D,OAAO,oCAAoC,EAAE,eAAe"}