@dereekb/dbx-form 9.20.20 → 9.22.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.
Files changed (78) hide show
  1. package/calendar/lib/calendar.schedule.selection.range.component.d.ts +4 -4
  2. package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +0 -1
  3. package/esm2020/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +1 -1
  4. package/esm2020/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +1 -1
  5. package/esm2020/calendar/lib/calendar.schedule.selection.range.component.mjs +14 -12
  6. package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +4 -7
  7. package/esm2020/lib/formly/field/field.mjs +1 -1
  8. package/esm2020/lib/formly/field/selection/index.mjs +2 -1
  9. package/esm2020/lib/formly/field/selection/list/list.field.component.mjs +1 -1
  10. package/esm2020/lib/formly/field/selection/pickable/pickable.field.directive.mjs +5 -4
  11. package/esm2020/lib/formly/field/selection/pickable/pickable.field.mjs +5 -3
  12. package/esm2020/lib/formly/field/selection/searchable/searchable.field.directive.mjs +7 -6
  13. package/esm2020/lib/formly/field/selection/searchable/searchable.field.mjs +5 -3
  14. package/esm2020/lib/formly/field/selection/searchable/searchable.mjs +1 -1
  15. package/esm2020/lib/formly/field/selection/selection.field.mjs +3 -2
  16. package/esm2020/lib/formly/field/selection/selection.module.mjs +5 -4
  17. package/esm2020/lib/formly/field/selection/sourceselect/index.mjs +5 -0
  18. package/esm2020/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +316 -0
  19. package/esm2020/lib/formly/field/selection/sourceselect/sourceselect.field.mjs +14 -0
  20. package/esm2020/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +93 -0
  21. package/esm2020/lib/formly/field/selection/sourceselect/sourceselect.mjs +2 -0
  22. package/esm2020/lib/formly/field/texteditor/texteditor.field.mjs +3 -2
  23. package/esm2020/lib/formly/field/value/array/array.field.component.mjs +12 -10
  24. package/esm2020/lib/formly/field/value/boolean/boolean.field.mjs +11 -5
  25. package/esm2020/lib/formly/field/value/date/date.field.module.mjs +5 -1
  26. package/esm2020/lib/formly/field/value/date/datetime.field.component.mjs +11 -10
  27. package/esm2020/lib/formly/field/value/date/datetime.field.mjs +4 -2
  28. package/esm2020/lib/formly/field/value/number/number.field.mjs +3 -2
  29. package/esm2020/lib/formly/field/value/phone/phone.field.mjs +3 -2
  30. package/esm2020/lib/formly/field/value/text/text.field.mjs +5 -3
  31. package/esm2020/mapbox/lib/field/latlng/latlng.field.component.mjs +3 -3
  32. package/esm2020/mapbox/lib/field/zoom/zoom.field.component.mjs +3 -3
  33. package/fesm2015/dereekb-dbx-form-calendar.mjs +23 -24
  34. package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
  35. package/fesm2015/dereekb-dbx-form-mapbox.mjs +4 -4
  36. package/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -1
  37. package/fesm2015/dereekb-dbx-form.mjs +470 -87
  38. package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
  39. package/fesm2020/dereekb-dbx-form-calendar.mjs +21 -23
  40. package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
  41. package/fesm2020/dereekb-dbx-form-mapbox.mjs +4 -4
  42. package/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -1
  43. package/fesm2020/dereekb-dbx-form.mjs +476 -59
  44. package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
  45. package/lib/formly/_formly.scss +4 -0
  46. package/lib/formly/field/field.d.ts +4 -0
  47. package/lib/formly/field/selection/_selection.scss +4 -0
  48. package/lib/formly/field/selection/index.d.ts +1 -0
  49. package/lib/formly/field/selection/list/list.field.component.d.ts +1 -1
  50. package/lib/formly/field/selection/pickable/pickable.field.d.ts +2 -2
  51. package/lib/formly/field/selection/searchable/_searchable.scss +2 -0
  52. package/lib/formly/field/selection/searchable/searchable.d.ts +4 -4
  53. package/lib/formly/field/selection/searchable/searchable.field.d.ts +3 -3
  54. package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +1 -1
  55. package/lib/formly/field/selection/selection.field.d.ts +11 -2
  56. package/lib/formly/field/selection/selection.module.d.ts +2 -1
  57. package/lib/formly/field/selection/sourceselect/_sourceselect.scss +54 -0
  58. package/lib/formly/field/selection/sourceselect/index.d.ts +4 -0
  59. package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +97 -0
  60. package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +92 -0
  61. package/lib/formly/field/selection/sourceselect/sourceselect.field.d.ts +7 -0
  62. package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +23 -0
  63. package/lib/formly/field/texteditor/texteditor.field.d.ts +2 -2
  64. package/lib/formly/field/value/array/_array.scss +6 -2
  65. package/lib/formly/field/value/boolean/boolean.field.d.ts +3 -3
  66. package/lib/formly/field/value/date/_date.scss +8 -2
  67. package/lib/formly/field/value/date/date.field.module.d.ts +12 -11
  68. package/lib/formly/field/value/date/datetime.field.d.ts +2 -2
  69. package/lib/formly/field/value/number/number.field.d.ts +2 -2
  70. package/lib/formly/field/value/text/text.field.d.ts +3 -3
  71. package/mapbox/esm2020/lib/field/latlng/latlng.field.component.mjs +3 -3
  72. package/mapbox/esm2020/lib/field/zoom/zoom.field.component.mjs +3 -3
  73. package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs +4 -4
  74. package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -1
  75. package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs +4 -4
  76. package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -1
  77. package/mapbox/package.json +4 -4
  78. package/package.json +4 -4
@@ -3,18 +3,19 @@ import { CommonModule } from '@angular/common';
3
3
  import { DbxFormFormlyPickableFieldModule } from './pickable/pickable.field.module';
4
4
  import { DbxFormFormlySearchableFieldModule } from './searchable/searchable.field.module';
5
5
  import { DbxFormFormlyDbxListFieldModule } from './list/list.field.module';
6
+ import { DbxFormFormlySourceSelectModule } from './sourceselect/sourceselect.field.module';
6
7
  import * as i0 from "@angular/core";
7
8
  export class DbxFormFormlySelectionModule {
8
9
  }
9
10
  DbxFormFormlySelectionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- DbxFormFormlySelectionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySelectionModule, imports: [CommonModule], exports: [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule] });
11
- DbxFormFormlySelectionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySelectionModule, imports: [CommonModule, DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule] });
11
+ DbxFormFormlySelectionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySelectionModule, imports: [CommonModule], exports: [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule] });
12
+ DbxFormFormlySelectionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySelectionModule, imports: [CommonModule, DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule] });
12
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySelectionModule, decorators: [{
13
14
  type: NgModule,
14
15
  args: [{
15
16
  imports: [CommonModule],
16
17
  declarations: [],
17
- exports: [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule]
18
+ exports: [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule]
18
19
  }]
19
20
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWxlY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU8zRSxNQUFNLE9BQU8sNEJBQTRCOzswSEFBNUIsNEJBQTRCOzJIQUE1Qiw0QkFBNEIsWUFKN0IsWUFBWSxhQUVaLCtCQUErQixFQUFFLGdDQUFnQyxFQUFFLGtDQUFrQzsySEFFcEcsNEJBQTRCLFlBSjdCLFlBQVksRUFFWiwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0M7NEZBRXBHLDRCQUE0QjtrQkFMeEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsQ0FBQztpQkFDakgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERieEZvcm1Gb3JtbHlQaWNrYWJsZUZpZWxkTW9kdWxlIH0gZnJvbSAnLi9waWNrYWJsZS9waWNrYWJsZS5maWVsZC5tb2R1bGUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUZvcm1seVNlYXJjaGFibGVGaWVsZE1vZHVsZSB9IGZyb20gJy4vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYnhGb3JtRm9ybWx5RGJ4TGlzdEZpZWxkTW9kdWxlIH0gZnJvbSAnLi9saXN0L2xpc3QuZmllbGQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtEYnhGb3JtRm9ybWx5RGJ4TGlzdEZpZWxkTW9kdWxlLCBEYnhGb3JtRm9ybWx5UGlja2FibGVGaWVsZE1vZHVsZSwgRGJ4Rm9ybUZvcm1seVNlYXJjaGFibGVGaWVsZE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybUZvcm1seVNlbGVjdGlvbk1vZHVsZSB7fVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWxlY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQU8zRixNQUFNLE9BQU8sNEJBQTRCOzswSEFBNUIsNEJBQTRCOzJIQUE1Qiw0QkFBNEIsWUFKN0IsWUFBWSxhQUVaLCtCQUErQixFQUFFLGdDQUFnQyxFQUFFLGtDQUFrQyxFQUFFLCtCQUErQjsySEFFckksNEJBQTRCLFlBSjdCLFlBQVksRUFFWiwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFBRSwrQkFBK0I7NEZBRXJJLDRCQUE0QjtrQkFMeEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFBRSwrQkFBK0IsQ0FBQztpQkFDbEoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERieEZvcm1Gb3JtbHlQaWNrYWJsZUZpZWxkTW9kdWxlIH0gZnJvbSAnLi9waWNrYWJsZS9waWNrYWJsZS5maWVsZC5tb2R1bGUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUZvcm1seVNlYXJjaGFibGVGaWVsZE1vZHVsZSB9IGZyb20gJy4vc2VhcmNoYWJsZS9zZWFyY2hhYmxlLmZpZWxkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYnhGb3JtRm9ybWx5RGJ4TGlzdEZpZWxkTW9kdWxlIH0gZnJvbSAnLi9saXN0L2xpc3QuZmllbGQubW9kdWxlJztcbmltcG9ydCB7IERieEZvcm1Gb3JtbHlTb3VyY2VTZWxlY3RNb2R1bGUgfSBmcm9tICcuL3NvdXJjZXNlbGVjdC9zb3VyY2VzZWxlY3QuZmllbGQubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtEYnhGb3JtRm9ybWx5RGJ4TGlzdEZpZWxkTW9kdWxlLCBEYnhGb3JtRm9ybWx5UGlja2FibGVGaWVsZE1vZHVsZSwgRGJ4Rm9ybUZvcm1seVNlYXJjaGFibGVGaWVsZE1vZHVsZSwgRGJ4Rm9ybUZvcm1seVNvdXJjZVNlbGVjdE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybUZvcm1seVNlbGVjdGlvbk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './sourceselect.field.component';
2
+ export * from './sourceselect.field';
3
+ export * from './sourceselect.field.module';
4
+ export * from './sourceselect';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc291cmNlc2VsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3VyY2VzZWxlY3QuZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3VyY2VzZWxlY3QuZmllbGQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc291cmNlc2VsZWN0JztcbiJdfQ==
@@ -0,0 +1,316 @@
1
+ import { filterMaybe, loadingStateHasValue, loadingStateIsLoading, startWithBeginLoading, SubscriptionObject, successResult, beginLoading, mapLoadingStateValueWithOperator, loadingStateContext, valueFromLoadingState } from '@dereekb/rxjs';
2
+ import { Component } from '@angular/core';
3
+ import { distinctUntilChanged, map, switchMap, shareReplay, startWith, mergeMap, scan, BehaviorSubject, tap, first, combineLatest, of } from 'rxjs';
4
+ import { addToSetCopy, asArray, convertMaybeToArray, filterMaybeValues, lastValue, makeValuesGroupMap, mergeArrays, separateValues, setContainsAllValues, setsAreEquivalent, sortByStringFunction } from '@dereekb/util';
5
+ import { FieldType } from '@ngx-formly/material/form-field';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/material/select";
10
+ import * as i4 from "@angular/material/core";
11
+ import * as i5 from "@dereekb/dbx-web";
12
+ import * as i6 from "@dereekb/dbx-core";
13
+ /**
14
+ * Component that displays a select view (multi or not)
15
+ */
16
+ export class DbxFormSourceSelectFieldComponent extends FieldType {
17
+ constructor() {
18
+ super(...arguments);
19
+ this._cacheMetaSub = new SubscriptionObject();
20
+ this._clearDisplayHashMapSub = new SubscriptionObject();
21
+ this._valueMetaHashMap = new BehaviorSubject(new Map());
22
+ this._displayHashMap = new BehaviorSubject(new Map());
23
+ this._formControlObs = new BehaviorSubject(undefined);
24
+ this._fromOpenSource = new BehaviorSubject({ values: [], valuesSet: new Set() });
25
+ this._loadSources = new BehaviorSubject(undefined);
26
+ this.formControl$ = this._formControlObs.pipe(filterMaybe());
27
+ this.currentFormControlValue$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
28
+ this.values$ = this.currentFormControlValue$.pipe(map(convertMaybeToArray), shareReplay(1));
29
+ this.allValuesEverSelected$ = this.values$.pipe(scan((acc, values) => {
30
+ let result = acc;
31
+ if (!setContainsAllValues(acc, values)) {
32
+ result = addToSetCopy(acc, values);
33
+ }
34
+ return result;
35
+ }, new Set()), distinctUntilChanged(), map((x) => Array.from(x)), shareReplay(1));
36
+ this.sourceSelectValuesFromValuesState$ = this.allValuesEverSelected$.pipe(distinctUntilChanged(), switchMap((values) => this.loadSourceSelectValueForValues(values)), shareReplay(1));
37
+ this.loadSources$ = this._loadSources.pipe(filterMaybe(), switchMap((loadSource) => {
38
+ const { valueReader } = this;
39
+ return loadSource.pipe(switchMap((sources) => {
40
+ const sourceObs = sources.map((x) => x.meta.pipe(map((metaState) => ({ ...metaState, label: x.label }))));
41
+ if (sourceObs.length === 0) {
42
+ return of(successResult([]));
43
+ }
44
+ else {
45
+ return combineLatest(sourceObs).pipe(map((x) => {
46
+ const statesWithValues = x.filter((y) => loadingStateHasValue(y));
47
+ const loading = x.findIndex(loadingStateIsLoading) !== -1;
48
+ const value = statesWithValues.map((y) => {
49
+ const group = {
50
+ label: y.label,
51
+ values: y.value.map((meta) => ({ meta, value: valueReader(meta) }))
52
+ };
53
+ return group;
54
+ });
55
+ return {
56
+ loading,
57
+ value
58
+ };
59
+ }));
60
+ }
61
+ }));
62
+ }));
63
+ this.fromOpenSource$ = this._fromOpenSource.pipe(distinctUntilChanged((a, b) => setsAreEquivalent(a.valuesSet, b.valuesSet)), map((x) => {
64
+ const group = {
65
+ label: '',
66
+ values: x.values
67
+ };
68
+ return group;
69
+ }), shareReplay(1));
70
+ this.valueGroupsFromSourcesState$ = combineLatest([this.fromOpenSource$, this.loadSources$]).pipe(map(([fromOpenSourceGroup, loadSources]) => {
71
+ const loadSourcesValue = loadSources.value ?? [];
72
+ const value = [fromOpenSourceGroup, ...loadSourcesValue];
73
+ const result = {
74
+ loading: loadSources.loading,
75
+ value
76
+ };
77
+ return result;
78
+ }), shareReplay(1));
79
+ this.allValueGroupsState$ = this.sourceSelectValuesFromValuesState$.pipe(switchMap((sourceSelectValuesFromValues) => {
80
+ if (loadingStateHasValue(sourceSelectValuesFromValues)) {
81
+ const valuesFromValuesGroup = {
82
+ label: '',
83
+ values: sourceSelectValuesFromValues.value
84
+ };
85
+ return this.valueGroupsFromSourcesState$.pipe(map((sourcesState) => {
86
+ const allGroups = [valuesFromValuesGroup, ...sourcesState.value];
87
+ const result = {
88
+ loading: sourceSelectValuesFromValues.loading || sourcesState.loading,
89
+ value: allGroups
90
+ };
91
+ return result;
92
+ }));
93
+ }
94
+ else {
95
+ return of(beginLoading({}));
96
+ }
97
+ }), shareReplay(1));
98
+ this.allOptionGroupsState$ = this.allValueGroupsState$.pipe(mapLoadingStateValueWithOperator(switchMap((groups) => {
99
+ const allGroupsReducedByLabel = makeValuesGroupMap(groups, (x) => x.label);
100
+ const valuesEncountered = new Set();
101
+ const allUniqueValues = [];
102
+ const simplifiedValuesGroups = [];
103
+ // sort to put the blank label first
104
+ Array.from(allGroupsReducedByLabel.entries())
105
+ .sort(sortByStringFunction((x) => x[0]))
106
+ .forEach(([label, groups]) => {
107
+ const values = [];
108
+ groups.forEach((group) => {
109
+ group.values.forEach((selectValue) => {
110
+ if (!valuesEncountered.has(selectValue.value)) {
111
+ values.push(selectValue);
112
+ allUniqueValues.push(selectValue);
113
+ valuesEncountered.add(selectValue.value);
114
+ }
115
+ });
116
+ });
117
+ if (values.length > 0) {
118
+ simplifiedValuesGroups.push({
119
+ label,
120
+ values
121
+ });
122
+ }
123
+ });
124
+ const obs = this.getDisplayValuesForSelectValues(allUniqueValues).pipe(map((displayValues) => {
125
+ const displayValuesMap = new Map(displayValues.map((x) => [x.value, x]));
126
+ const displayGroups = simplifiedValuesGroups.map((valueGroup) => {
127
+ const values = filterMaybeValues(valueGroup.values.map((x) => displayValuesMap.get(x.value)));
128
+ return {
129
+ label: valueGroup.label,
130
+ values
131
+ };
132
+ });
133
+ return displayGroups;
134
+ }));
135
+ return obs;
136
+ })), shareReplay(1));
137
+ this.allOptionGroups$ = this.allOptionGroupsState$.pipe(valueFromLoadingState(), shareReplay(1));
138
+ this.options$ = this.allOptionGroups$.pipe(map((x) => {
139
+ const { included: groupedValues, excluded: nonGroupedGroup } = separateValues(x, (y) => Boolean(y.label));
140
+ const result = {
141
+ nonGroupedValues: nonGroupedGroup[0]?.values ?? [],
142
+ groupedValues
143
+ };
144
+ return result;
145
+ }), shareReplay(1));
146
+ this.nonGroupedValues$ = this.options$.pipe(map((x) => x.nonGroupedValues));
147
+ this.groupedOptions$ = this.options$.pipe(map((x) => x.groupedValues));
148
+ this.context = loadingStateContext({ obs: this.allOptionGroupsState$ });
149
+ this.handleSelectOptions = (_, context) => {
150
+ const { openSource } = this;
151
+ if (openSource) {
152
+ const sourceObs = openSource();
153
+ context.startWorkingWithObservable(sourceObs.pipe(first(), tap((result) => {
154
+ const valuesToAdd = mergeArrays([result.select, result.options]);
155
+ if (valuesToAdd.length) {
156
+ this.addToOpenSourceMap(valuesToAdd);
157
+ }
158
+ if (result.select) {
159
+ this.addToCurrentValue(result.select.map((x) => this.valueReader(x)));
160
+ }
161
+ })));
162
+ }
163
+ else {
164
+ context.reject();
165
+ }
166
+ };
167
+ }
168
+ get sourceSelectField() {
169
+ return this.props;
170
+ }
171
+ get openSource() {
172
+ return this.props.openSource;
173
+ }
174
+ get showOpenSourceButton() {
175
+ return Boolean(this.openSource);
176
+ }
177
+ get loadSources() {
178
+ return this.props.loadSources;
179
+ }
180
+ get valueReader() {
181
+ return this.props.valueReader;
182
+ }
183
+ get metaLoader() {
184
+ return this.props.metaLoader;
185
+ }
186
+ get displayForValue() {
187
+ return this.props.displayForValue;
188
+ }
189
+ get selectButtonIcon() {
190
+ return this.props.selectButtonIcon ?? 'add';
191
+ }
192
+ get multiple() {
193
+ return this.props.multiple || false;
194
+ }
195
+ get refreshDisplayValues$() {
196
+ return this.props.refreshDisplayValues$;
197
+ }
198
+ loadSourceSelectValueForValues(values) {
199
+ return this.getSourceSelectValueForValues(values).pipe(map((sourceSelectValues) => successResult(sourceSelectValues)), startWithBeginLoading(), shareReplay(1));
200
+ }
201
+ getSourceSelectValueForValues(values) {
202
+ const { valueReader } = this;
203
+ return this._valueMetaHashMap.pipe(mergeMap((metaMap) => {
204
+ const mappingResult = values.map((hash, i) => [i, hash, metaMap.get(hash)]);
205
+ const {
206
+ //
207
+ included: hasMeta, excluded: needsMeta } = separateValues(mappingResult, (x) => Boolean(x[2]));
208
+ let obs;
209
+ if (needsMeta.length > 0) {
210
+ // Go get the meta value.
211
+ const metaValuesObs = this.metaLoader(needsMeta.map((x) => x[1]));
212
+ obs = metaValuesObs.pipe(first(), map((metaResults) => {
213
+ const metaResultsMapping = metaResults.map((meta) => ({ meta, value: valueReader(meta) }));
214
+ const valueIndexHashMap = new Map(metaResultsMapping.map((x) => [x.value, x]));
215
+ // Update metaMap. No need to push an update notification.
216
+ metaResultsMapping.forEach((x) => metaMap.set(x.value, x));
217
+ // Zip values back together.
218
+ const newDisplayValues = mappingResult.map((x) => x[2] ?? valueIndexHashMap.get(x[1]));
219
+ // Return display values.
220
+ return newDisplayValues;
221
+ }));
222
+ }
223
+ else {
224
+ // If all display values are hashed return them
225
+ obs = of(hasMeta.map((x) => x[2]));
226
+ }
227
+ return obs;
228
+ }));
229
+ }
230
+ loadDisplayValuesForSelectValues(values) {
231
+ return this.getDisplayValuesForSelectValues(values).pipe(map((displayValues) => successResult(displayValues)), startWithBeginLoading(), shareReplay(1));
232
+ }
233
+ getDisplayValuesForSelectValues(values) {
234
+ return this._displayHashMap.pipe(mergeMap((metaMap) => {
235
+ const mappingResult = values.map((x) => [x, x.value]).map(([x, hash], i) => [i, hash, x, metaMap.get(hash)]);
236
+ const hasDisplay = mappingResult.filter((x) => Boolean(x[3]));
237
+ const needsDisplay = mappingResult.filter((x) => !x[3]);
238
+ let obs;
239
+ if (needsDisplay.length > 0) {
240
+ // Go get the display value.
241
+ const displayValuesObs = this.displayForValue(needsDisplay.map((x) => x[2]));
242
+ obs = displayValuesObs.pipe(first(), map((displayResults) => {
243
+ const displayResultsMapping = displayResults.map((x) => [x, x.value]);
244
+ const valueIndexHashMap = new Map(displayResultsMapping.map(([x, hash]) => [hash, x]));
245
+ // Update metaMap. No need to push an update notification.
246
+ displayResultsMapping.forEach(([x, hash]) => metaMap.set(hash, x));
247
+ // Zip values back together.
248
+ const newDisplayValues = mappingResult.map((x) => x[3] ?? valueIndexHashMap.get(x[1]));
249
+ // Return display values.
250
+ return newDisplayValues;
251
+ }));
252
+ }
253
+ else {
254
+ // If all display values are hashed return that.
255
+ obs = of(hasDisplay.map((x) => x[3]));
256
+ }
257
+ return obs;
258
+ }));
259
+ }
260
+ ngOnInit() {
261
+ const { loadSources } = this;
262
+ this._loadSources.next(loadSources?.() || of([]));
263
+ if (this.refreshDisplayValues$ != null) {
264
+ this._clearDisplayHashMapSub.subscription = this.refreshDisplayValues$.subscribe(() => this._displayHashMap.next(new Map()));
265
+ }
266
+ this._formControlObs.next(this.formControl);
267
+ // copy all values from the sources into the values hash map to prevent reloading
268
+ this._cacheMetaSub.subscription = this.valueGroupsFromSourcesState$.subscribe((x) => {
269
+ const hashMap = this._valueMetaHashMap.value;
270
+ x.value.forEach((x) => x.values.forEach((y) => hashMap.set(y.value, y)));
271
+ });
272
+ }
273
+ ngOnDestroy() {
274
+ super.ngOnDestroy();
275
+ this._valueMetaHashMap.complete();
276
+ this._displayHashMap.complete();
277
+ this._formControlObs.complete();
278
+ this._fromOpenSource.complete();
279
+ this._loadSources.complete();
280
+ this.context.destroy();
281
+ }
282
+ addToOpenSourceMap(input) {
283
+ const { valueReader } = this;
284
+ const { values: meta, valuesSet: initialValues } = this._fromOpenSource.value;
285
+ const newMetaFromInput = [];
286
+ const valuesSet = new Set(initialValues);
287
+ input.forEach((x) => {
288
+ const value = valueReader(x);
289
+ if (!valuesSet.has(value)) {
290
+ newMetaFromInput.push({ meta: x, value });
291
+ valuesSet.add(value);
292
+ }
293
+ });
294
+ if (newMetaFromInput.length > 0) {
295
+ this._fromOpenSource.next({
296
+ values: [...meta, ...newMetaFromInput],
297
+ valuesSet: valuesSet
298
+ });
299
+ }
300
+ }
301
+ addToCurrentValue(values) {
302
+ const currentValue = asArray(this.formControl.value);
303
+ const newValueArray = [...currentValue, ...values];
304
+ const value = this.multiple ? values : lastValue(newValueArray); // pick last value, as the last value added is the newest value.
305
+ this.formControl.setValue(value);
306
+ this.formControl.markAsDirty();
307
+ this.formControl.markAsTouched();
308
+ }
309
+ }
310
+ DbxFormSourceSelectFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormSourceSelectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
311
+ DbxFormSourceSelectFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFormSourceSelectFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-source-select-field\">\n <div class=\"dbx-source-select-field-content\">\n <mat-select class=\"dbx-source-select-field-select\" [id]=\"id\" [formControl]=\"formControl\" [multiple]=\"props.multiple\">\n <mat-option *ngFor=\"let value of nonGroupedValues$ | async\" [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n <mat-optgroup *ngFor=\"let optionGroup of groupedOptions$ | async\" [label]=\"optionGroup.label\">\n <mat-option *ngFor=\"let value of optionGroup.values\" [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n </mat-optgroup>\n </mat-select>\n <ng-container *ngIf=\"showOpenSourceButton\">\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\" class=\"dbx-source-select-field-button\">\n <dbx-button dbxActionButton [iconOnly]=\"true\" [icon]=\"selectButtonIcon\"></dbx-button>\n </dbx-action>\n </ng-container>\n </div>\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatOptgroup, selector: "mat-optgroup", inputs: ["disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.DbxLoadingComponent, selector: "dbx-loading", inputs: ["show", "text", "mode", "color", "diameter", "linear", "context", "loading", "error"] }, { kind: "directive", type: i6.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: i5.DbxButtonComponent, selector: "dbx-button", inputs: ["type", "raised", "stroked", "flat", "iconOnly", "color", "customButtonColor", "customTextColor", "customSpinnerColor"] }, { kind: "directive", type: i5.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "directive", type: i6.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i6.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i6.DbxActionValueDirective, selector: "[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormSourceSelectFieldComponent, decorators: [{
313
+ type: Component,
314
+ args: [{ template: "<div class=\"dbx-source-select-field\">\n <div class=\"dbx-source-select-field-content\">\n <mat-select class=\"dbx-source-select-field-select\" [id]=\"id\" [formControl]=\"formControl\" [multiple]=\"props.multiple\">\n <mat-option *ngFor=\"let value of nonGroupedValues$ | async\" [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n <mat-optgroup *ngFor=\"let optionGroup of groupedOptions$ | async\" [label]=\"optionGroup.label\">\n <mat-option *ngFor=\"let value of optionGroup.values\" [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n </mat-optgroup>\n </mat-select>\n <ng-container *ngIf=\"showOpenSourceButton\">\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\" class=\"dbx-source-select-field-button\">\n <dbx-button dbxActionButton [iconOnly]=\"true\" [icon]=\"selectButtonIcon\"></dbx-button>\n </dbx-action>\n </ng-container>\n </div>\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n</div>\n" }]
315
+ }] });
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWdCLG9CQUFvQixFQUFFLHFCQUFxQixFQUFnQyxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNSLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhLLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBUyxXQUFXLEVBQWdCLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5TyxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7OztB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QUMsZ0VBQWdFO1FBQ2pJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzsrSEFwYlUsaUNBQWlDO21IQUFqQyxpQ0FBaUMsMkVDeEQ5Qyx5bkNBcUJBOzRGRG1DYSxpQ0FBaUM7a0JBSDdDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSwgTG9hZGluZ1N0YXRlLCBsb2FkaW5nU3RhdGVIYXNWYWx1ZSwgbG9hZGluZ1N0YXRlSXNMb2FkaW5nLCBMb2FkaW5nU3RhdGVXaXRoTWF5YmVTb1ZhbHVlLCBzdGFydFdpdGhCZWdpbkxvYWRpbmcsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3VjY2Vzc1Jlc3VsdCwgYmVnaW5Mb2FkaW5nLCBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvciwgbG9hZGluZ1N0YXRlQ29udGV4dCwgdmFsdWVGcm9tTG9hZGluZ1N0YXRlIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIG1lcmdlTWFwLCBzY2FuLCBCZWhhdmlvclN1YmplY3QsIHRhcCwgZmlyc3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIYW5kbGVBY3Rpb25XaXRoQ29udGV4dCB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IGFkZFRvU2V0Q29weSwgYXNBcnJheSwgY29udmVydE1heWJlVG9BcnJheSwgZmlsdGVyTWF5YmVWYWx1ZXMsIGxhc3RWYWx1ZSwgbWFrZVZhbHVlc0dyb3VwTWFwLCBNYXliZSwgbWVyZ2VBcnJheXMsIFByaW1hdGl2ZUtleSwgc2VwYXJhdGVWYWx1ZXMsIHNldENvbnRhaW5zQWxsVmFsdWVzLCBzZXRzQXJlRXF1aXZhbGVudCwgc29ydEJ5U3RyaW5nRnVuY3Rpb24gfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBTb3VyY2VTZWxlY3RWYWx1ZU1ldGFMb2FkZXIsIFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlciwgU291cmNlU2VsZWN0T3BlbkZ1bmN0aW9uLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlLCBTb3VyY2VTZWxlY3RMb2FkU291cmNlTG9hZGluZ1N0YXRlLCBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWUsIFNvdXJjZVNlbGVjdFZhbHVlLCBTb3VyY2VTZWxlY3REaXNwbGF5RnVuY3Rpb24sIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwLCBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwLCBTb3VyY2VTZWxlY3RPcHRpb25zLCBTb3VyY2VTZWxlY3RPcGVuU291cmNlUmVzdWx0IH0gZnJvbSAnLi9zb3VyY2VzZWxlY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBvcGVuIHRoZSBzb3VyY2UgYW5kIHJlcXVlc3QgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblNvdXJjZT86IFNvdXJjZVNlbGVjdE9wZW5GdW5jdGlvbjxNPjtcbiAgLyoqXG4gICAqIExvYWRzIHRoZSBzb3VyY2VzIHRvIGRpc3BsYXkgZW50cmllcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZFNvdXJjZXM/OiBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uPE0+O1xuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlIGZyb20gYSBtZXRhIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVSZWFkZXI6IFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlcjxULCBNPjtcbiAgLyoqXG4gICAqIExvYWRzIG1ldGFkYXRhIGZvciB0aGUgaW5wdXQgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YUxvYWRlcjogU291cmNlU2VsZWN0VmFsdWVNZXRhTG9hZGVyPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogU2VsZWN0IGJ1dHRvbiBpY29uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RCdXR0b25JY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHNlbGVjdGlvbiBpcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmludGVyZmFjZSBTZWxlY3RGaWVsZE9wZW5Tb3VyY2VNYXA8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgdmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdO1xuICByZWFkb25seSB2YWx1ZXNTZXQ6IFNldDxUPjtcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIHNlbGVjdCB2aWV3IChtdWx0aSBvciBub3QpXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybVNvdXJjZVNlbGVjdEZpZWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8U291cmNlU2VsZWN0RmllbGRQcm9wczxULCBNPj4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jYWNoZU1ldGFTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlTWV0YUhhc2hNYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxULCBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPj4+KG5ldyBNYXAoKSk7XG4gIHByaXZhdGUgX2Rpc3BsYXlIYXNoTWFwID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8VCwgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+Pj4obmV3IE1hcCgpKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPFRbXT4+Pih1bmRlZmluZWQpO1xuICBwcml2YXRlIF9mcm9tT3BlblNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VsZWN0RmllbGRPcGVuU291cmNlTWFwPFQsIE0+Pih7IHZhbHVlczogW10sIHZhbHVlc1NldDogbmV3IFNldCgpIH0pO1xuICBwcml2YXRlIF9sb2FkU291cmNlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RMb2FkU291cmNlPE0+W10+Pj4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRGb3JtQ29udHJvbFZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5jdXJyZW50Rm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBhbGxWYWx1ZXNFdmVyU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPFRbXT4gPSB0aGlzLnZhbHVlcyQucGlwZShcbiAgICBzY2FuKChhY2MsIHZhbHVlcykgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogU2V0PFQ+ID0gYWNjO1xuXG4gICAgICBpZiAoIXNldENvbnRhaW5zQWxsVmFsdWVzKGFjYywgdmFsdWVzKSkge1xuICAgICAgICByZXN1bHQgPSBhZGRUb1NldENvcHkoYWNjLCB2YWx1ZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIG5ldyBTZXQ8VD4oKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IEFycmF5LmZyb20oeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy5hbGxWYWx1ZXNFdmVyU2VsZWN0ZWQkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzd2l0Y2hNYXAoKHZhbHVlczogVFtdKSA9PiB0aGlzLmxvYWRTb3VyY2VTZWxlY3RWYWx1ZUZvclZhbHVlcyh2YWx1ZXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRTb3VyY2VzJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPj4gPSB0aGlzLl9sb2FkU291cmNlcy5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgc3dpdGNoTWFwKChsb2FkU291cmNlKSA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlUmVhZGVyIH0gPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbG9hZFNvdXJjZS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHNvdXJjZXM6IFNvdXJjZVNlbGVjdExvYWRTb3VyY2U8TT5bXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZU9iczogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RMb2FkU291cmNlTG9hZGluZ1N0YXRlPE0+PltdID0gc291cmNlcy5tYXAoKHgpID0+IHgubWV0YS5waXBlKG1hcCgobWV0YVN0YXRlKSA9PiAoeyAuLi5tZXRhU3RhdGUsIGxhYmVsOiB4LmxhYmVsIH0pKSkpO1xuXG4gICAgICAgICAgaWYgKHNvdXJjZU9icy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZihzdWNjZXNzUmVzdWx0KFtdKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHNvdXJjZU9icykucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVzV2l0aFZhbHVlcyA9IHguZmlsdGVyKCh5KSA9PiBsb2FkaW5nU3RhdGVIYXNWYWx1ZSh5KSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9hZGluZyA9IHguZmluZEluZGV4KGxvYWRpbmdTdGF0ZUlzTG9hZGluZykgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10gPSBzdGF0ZXNXaXRoVmFsdWVzLm1hcCgoeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXA6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT4gPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiB5LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6ICh5LnZhbHVlIGFzIE1bXSkubWFwKChtZXRhKSA9PiAoeyBtZXRhLCB2YWx1ZTogdmFsdWVSZWFkZXIobWV0YSkgfSkpXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgbG9hZGluZyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGZyb21PcGVuU291cmNlJDogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+PiA9IHRoaXMuX2Zyb21PcGVuU291cmNlLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHNldHNBcmVFcXVpdmFsZW50KGEudmFsdWVzU2V0LCBiLnZhbHVlc1NldCkpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgY29uc3QgZ3JvdXA6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT4gPSB7XG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgdmFsdWVzOiB4LnZhbHVlc1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVHcm91cHNGcm9tU291cmNlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGVXaXRoTWF5YmVTb1ZhbHVlPFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT4+ID0gY29tYmluZUxhdGVzdChbdGhpcy5mcm9tT3BlblNvdXJjZSQsIHRoaXMubG9hZFNvdXJjZXMkXSkucGlwZShcbiAgICBtYXAoKFtmcm9tT3BlblNvdXJjZUdyb3VwLCBsb2FkU291cmNlc10pID0+IHtcbiAgICAgIGNvbnN0IGxvYWRTb3VyY2VzVmFsdWUgPSBsb2FkU291cmNlcy52YWx1ZSA/PyBbXTtcbiAgICAgIGNvbnN0IHZhbHVlOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10gPSBbZnJvbU9wZW5Tb3VyY2VHcm91cCwgLi4ubG9hZFNvdXJjZXNWYWx1ZV07XG5cbiAgICAgIGNvbnN0IHJlc3VsdDogTG9hZGluZ1N0YXRlV2l0aE1heWJlU29WYWx1ZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+ID0ge1xuICAgICAgICBsb2FkaW5nOiBsb2FkU291cmNlcy5sb2FkaW5nLFxuICAgICAgICB2YWx1ZVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFsbFZhbHVlR3JvdXBzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+PiA9IHRoaXMuc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlc1N0YXRlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlczogTG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10+KSA9PiB7XG4gICAgICBpZiAobG9hZGluZ1N0YXRlSGFzVmFsdWUoc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlcykpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzRnJvbVZhbHVlc0dyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgICB2YWx1ZXM6IHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXMudmFsdWVcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZUdyb3Vwc0Zyb21Tb3VyY2VzU3RhdGUkLnBpcGUoXG4gICAgICAgICAgbWFwKChzb3VyY2VzU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsbEdyb3VwczogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gW3ZhbHVlc0Zyb21WYWx1ZXNHcm91cCwgLi4uc291cmNlc1N0YXRlLnZhbHVlXTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPiA9IHtcbiAgICAgICAgICAgICAgbG9hZGluZzogc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlcy5sb2FkaW5nIHx8IHNvdXJjZXNTdGF0ZS5sb2FkaW5nLFxuICAgICAgICAgICAgICB2YWx1ZTogYWxsR3JvdXBzXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb2YoYmVnaW5Mb2FkaW5nPFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT4oe30pKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGFsbE9wdGlvbkdyb3Vwc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlR3JvdXA8VCwgTT5bXT4+ID0gdGhpcy5hbGxWYWx1ZUdyb3Vwc1N0YXRlJC5waXBlKFxuICAgIG1hcExvYWRpbmdTdGF0ZVZhbHVlV2l0aE9wZXJhdG9yKFxuICAgICAgc3dpdGNoTWFwKChncm91cHM6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXSkgPT4ge1xuICAgICAgICBjb25zdCBhbGxHcm91cHNSZWR1Y2VkQnlMYWJlbCA9IG1ha2VWYWx1ZXNHcm91cE1hcChncm91cHMsICh4KSA9PiB4LmxhYmVsKSBhcyBNYXA8c3RyaW5nLCBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+O1xuXG4gICAgICAgIGNvbnN0IHZhbHVlc0VuY291bnRlcmVkID0gbmV3IFNldDxUPigpO1xuICAgICAgICBjb25zdCBhbGxVbmlxdWVWYWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBbXTtcblxuICAgICAgICBjb25zdCBzaW1wbGlmaWVkVmFsdWVzR3JvdXBzOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10gPSBbXTtcblxuICAgICAgICAvLyBzb3J0IHRvIHB1dCB0aGUgYmxhbmsgbGFiZWwgZmlyc3RcbiAgICAgICAgQXJyYXkuZnJvbShhbGxHcm91cHNSZWR1Y2VkQnlMYWJlbC5lbnRyaWVzKCkpXG4gICAgICAgICAgLnNvcnQoc29ydEJ5U3RyaW5nRnVuY3Rpb24oKHgpID0+IHhbMF0pKVxuICAgICAgICAgIC5mb3JFYWNoKChbbGFiZWwsIGdyb3Vwc10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlczogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSA9IFtdO1xuXG4gICAgICAgICAgICBncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgZ3JvdXAudmFsdWVzLmZvckVhY2goKHNlbGVjdFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZXNFbmNvdW50ZXJlZC5oYXMoc2VsZWN0VmFsdWUudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChzZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICBhbGxVbmlxdWVWYWx1ZXMucHVzaChzZWxlY3RWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICB2YWx1ZXNFbmNvdW50ZXJlZC5hZGQoc2VsZWN0VmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHNpbXBsaWZpZWRWYWx1ZXNHcm91cHMucHVzaCh7XG4gICAgICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWVzXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMuZ2V0RGlzcGxheVZhbHVlc0ZvclNlbGVjdFZhbHVlcyhhbGxVbmlxdWVWYWx1ZXMpLnBpcGUoXG4gICAgICAgICAgbWFwKChkaXNwbGF5VmFsdWVzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzTWFwID0gbmV3IE1hcChkaXNwbGF5VmFsdWVzLm1hcCgoeCkgPT4gW3gudmFsdWUsIHhdKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlHcm91cHM6IFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwPFQsIE0+W10gPSBzaW1wbGlmaWVkVmFsdWVzR3JvdXBzLm1hcCgodmFsdWVHcm91cCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBmaWx0ZXJNYXliZVZhbHVlcyh2YWx1ZUdyb3VwLnZhbHVlcy5tYXAoKHgpID0+IGRpc3BsYXlWYWx1ZXNNYXAuZ2V0KHgudmFsdWUpKSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogdmFsdWVHcm91cC5sYWJlbCxcbiAgICAgICAgICAgICAgICB2YWx1ZXNcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGlzcGxheUdyb3VwcztcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxPcHRpb25Hcm91cHMkOiBPYnNlcnZhYmxlPFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZUdyb3VwPFQsIE0+W10+ID0gdGhpcy5hbGxPcHRpb25Hcm91cHNTdGF0ZSQucGlwZSh2YWx1ZUZyb21Mb2FkaW5nU3RhdGUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IG9wdGlvbnMkOiBPYnNlcnZhYmxlPFNvdXJjZVNlbGVjdE9wdGlvbnM8VCwgTT4+ID0gdGhpcy5hbGxPcHRpb25Hcm91cHMkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBjb25zdCB7IGluY2x1ZGVkOiBncm91cGVkVmFsdWVzLCBleGNsdWRlZDogbm9uR3JvdXBlZEdyb3VwIH0gPSBzZXBhcmF0ZVZhbHVlcyh4LCAoeSkgPT4gQm9vbGVhbih5LmxhYmVsKSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdDogU291cmNlU2VsZWN0T3B0aW9uczxULCBNPiA9IHtcbiAgICAgICAgbm9uR3JvdXBlZFZhbHVlczogbm9uR3JvdXBlZEdyb3VwWzBdPy52YWx1ZXMgPz8gW10sXG4gICAgICAgIGdyb3VwZWRWYWx1ZXNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBub25Hcm91cGVkVmFsdWVzJCA9IHRoaXMub3B0aW9ucyQucGlwZShtYXAoKHgpID0+IHgubm9uR3JvdXBlZFZhbHVlcykpO1xuICByZWFkb25seSBncm91cGVkT3B0aW9ucyQgPSB0aGlzLm9wdGlvbnMkLnBpcGUobWFwKCh4KSA9PiB4Lmdyb3VwZWRWYWx1ZXMpKTtcblxuICBnZXQgc291cmNlU2VsZWN0RmllbGQoKTogU291cmNlU2VsZWN0RmllbGRQcm9wczxULCBNPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM7XG4gIH1cblxuICBnZXQgb3BlblNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5vcGVuU291cmNlO1xuICB9XG5cbiAgZ2V0IHNob3dPcGVuU291cmNlQnV0dG9uKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMub3BlblNvdXJjZSk7XG4gIH1cblxuICBnZXQgbG9hZFNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubG9hZFNvdXJjZXM7XG4gIH1cblxuICBnZXQgdmFsdWVSZWFkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudmFsdWVSZWFkZXI7XG4gIH1cblxuICBnZXQgbWV0YUxvYWRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5tZXRhTG9hZGVyO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlGb3JWYWx1ZSgpOiBTb3VyY2VTZWxlY3REaXNwbGF5RnVuY3Rpb248VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRpc3BsYXlGb3JWYWx1ZTtcbiAgfVxuXG4gIGdldCBzZWxlY3RCdXR0b25JY29uKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdEJ1dHRvbkljb24gPz8gJ2FkZCc7XG4gIH1cblxuICBnZXQgbXVsdGlwbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubXVsdGlwbGUgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgcmVmcmVzaERpc3BsYXlWYWx1ZXMkKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlZnJlc2hEaXNwbGF5VmFsdWVzJDtcbiAgfVxuXG4gIGxvYWRTb3VyY2VTZWxlY3RWYWx1ZUZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U291cmNlU2VsZWN0VmFsdWVGb3JWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChzb3VyY2VTZWxlY3RWYWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10pID0+IHN1Y2Nlc3NSZXN1bHQoc291cmNlU2VsZWN0VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldFNvdXJjZVNlbGVjdFZhbHVlRm9yVmFsdWVzKHZhbHVlczogVFtdKTogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPiB7XG4gICAgY29uc3QgeyB2YWx1ZVJlYWRlciB9ID0gdGhpcztcblxuICAgIHJldHVybiB0aGlzLl92YWx1ZU1ldGFIYXNoTWFwLnBpcGUoXG4gICAgICBtZXJnZU1hcCgobWV0YU1hcCkgPT4ge1xuICAgICAgICBjb25zdCBtYXBwaW5nUmVzdWx0ID0gdmFsdWVzLm1hcCgoaGFzaCwgaSkgPT4gW2ksIGhhc2gsIG1ldGFNYXAuZ2V0KGhhc2gpXSBhcyBbbnVtYmVyLCBULCBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPl0pO1xuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAvL1xuICAgICAgICAgIGluY2x1ZGVkOiBoYXNNZXRhLFxuICAgICAgICAgIGV4Y2x1ZGVkOiBuZWVkc01ldGFcbiAgICAgICAgfSA9IHNlcGFyYXRlVmFsdWVzKG1hcHBpbmdSZXN1bHQsICh4KSA9PiBCb29sZWFuKHhbMl0pKTtcblxuICAgICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc01ldGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgbWV0YSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBtZXRhVmFsdWVzT2JzID0gdGhpcy5tZXRhTG9hZGVyKG5lZWRzTWV0YS5tYXAoKHgpID0+IHhbMV0pKTtcblxuICAgICAgICAgIG9icyA9IG1ldGFWYWx1ZXNPYnMucGlwZShcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBtYXAoKG1ldGFSZXN1bHRzKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1ldGFSZXN1bHRzTWFwcGluZzogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSA9IG1ldGFSZXN1bHRzLm1hcCgobWV0YSkgPT4gKHsgbWV0YSwgdmFsdWU6IHZhbHVlUmVhZGVyKG1ldGEpIH0pKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKG1ldGFSZXN1bHRzTWFwcGluZy5tYXAoKHgpID0+IFt4LnZhbHVlLCB4XSkpO1xuXG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSBtZXRhTWFwLiBObyBuZWVkIHRvIHB1c2ggYW4gdXBkYXRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICAgICAgbWV0YVJlc3VsdHNNYXBwaW5nLmZvckVhY2goKHgpID0+IG1ldGFNYXAuc2V0KHgudmFsdWUsIHgpKTtcblxuICAgICAgICAgICAgICAvLyBaaXAgdmFsdWVzIGJhY2sgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlWYWx1ZXMgPSBtYXBwaW5nUmVzdWx0Lm1hcCgoeCkgPT4geFsyXSA/PyB2YWx1ZUluZGV4SGFzaE1hcC5nZXQoeFsxXSkpO1xuXG4gICAgICAgICAgICAgIC8vIFJldHVybiBkaXNwbGF5IHZhbHVlcy5cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0Rpc3BsYXlWYWx1ZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgYWxsIGRpc3BsYXkgdmFsdWVzIGFyZSBoYXNoZWQgcmV0dXJuIHRoZW1cbiAgICAgICAgICBvYnMgPSBvZihoYXNNZXRhLm1hcCgoeCkgPT4geFsyXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9icztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGxvYWREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlczogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmdldERpc3BsYXlWYWx1ZXNGb3JTZWxlY3RWYWx1ZXModmFsdWVzKS5waXBlKFxuICAgICAgbWFwKChkaXNwbGF5VmFsdWVzOiBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXSkgPT4gc3VjY2Vzc1Jlc3VsdChkaXNwbGF5VmFsdWVzKSksXG4gICAgICBzdGFydFdpdGhCZWdpbkxvYWRpbmcoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfVxuXG4gIGdldERpc3BsYXlWYWx1ZXNGb3JTZWxlY3RWYWx1ZXModmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdKTogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXT4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5SGFzaE1hcC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKG1ldGFNYXApID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGluZ1Jlc3VsdCA9IHZhbHVlcy5tYXAoKHgpID0+IFt4LCB4LnZhbHVlXSBhcyBbU291cmNlU2VsZWN0VmFsdWU8VCwgTT4sIFRdKS5tYXAoKFt4LCBoYXNoXSwgaSkgPT4gW2ksIGhhc2gsIHgsIG1ldGFNYXAuZ2V0KGhhc2gpXSBhcyBbbnVtYmVyLCBULCBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPiwgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+XSk7XG5cbiAgICAgICAgY29uc3QgaGFzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKCh4KSA9PiBCb29sZWFuKHhbM10pKTtcbiAgICAgICAgY29uc3QgbmVlZHNEaXNwbGF5ID0gbWFwcGluZ1Jlc3VsdC5maWx0ZXIoKHgpID0+ICF4WzNdKTtcbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXT47XG5cbiAgICAgICAgaWYgKG5lZWRzRGlzcGxheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gR28gZ2V0IHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNPYnMgPSB0aGlzLmRpc3BsYXlGb3JWYWx1ZShuZWVkc0Rpc3BsYXkubWFwKCh4KSA9PiB4WzJdKSk7XG5cbiAgICAgICAgICBvYnMgPSBkaXNwbGF5VmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChkaXNwbGF5UmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5UmVzdWx0c01hcHBpbmc6IFtTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT4sIFRdW10gPSAoZGlzcGxheVJlc3VsdHMgYXMgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10pLm1hcCgoeCkgPT4gW3gsIHgudmFsdWVdKTtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVJbmRleEhhc2hNYXAgPSBuZXcgTWFwKGRpc3BsYXlSZXN1bHRzTWFwcGluZy5tYXAoKFt4LCBoYXNoXSkgPT4gW2hhc2gsIHhdKSk7XG5cbiAgICAgICAgICAgICAgLy8gVXBkYXRlIG1ldGFNYXAuIE5vIG5lZWQgdG8gcHVzaCBhbiB1cGRhdGUgbm90aWZpY2F0aW9uLlxuICAgICAgICAgICAgICBkaXNwbGF5UmVzdWx0c01hcHBpbmcuZm9yRWFjaCgoW3gsIGhhc2hdKSA9PiBtZXRhTWFwLnNldChoYXNoLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoKHgpID0+IHhbM10gPz8gdmFsdWVJbmRleEhhc2hNYXAuZ2V0KHhbMV0pKTtcblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gZGlzcGxheSB2YWx1ZXMuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdEaXNwbGF5VmFsdWVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGF0LlxuICAgICAgICAgIG9icyA9IG9mKGhhc0Rpc3BsYXkubWFwKCh4KSA9PiB4WzNdKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVhZG9ubHkgY29udGV4dCA9IGxvYWRpbmdTdGF0ZUNvbnRleHQoeyBvYnM6IHRoaXMuYWxsT3B0aW9uR3JvdXBzU3RhdGUkIH0pO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgbG9hZFNvdXJjZXMgfSA9IHRoaXM7XG5cbiAgICB0aGlzLl9sb2FkU291cmNlcy5uZXh0KGxvYWRTb3VyY2VzPy4oKSB8fCBvZihbXSkpO1xuXG4gICAgaWYgKHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2NsZWFyRGlzcGxheUhhc2hNYXBTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Rpc3BsYXlIYXNoTWFwLm5leHQobmV3IE1hcCgpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcblxuICAgIC8vIGNvcHkgYWxsIHZhbHVlcyBmcm9tIHRoZSBzb3VyY2VzIGludG8gdGhlIHZhbHVlcyBoYXNoIG1hcCB0byBwcmV2ZW50IHJlbG9hZGluZ1xuICAgIHRoaXMuX2NhY2hlTWV0YVN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlR3JvdXBzRnJvbVNvdXJjZXNTdGF0ZSQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICBjb25zdCBoYXNoTWFwID0gdGhpcy5fdmFsdWVNZXRhSGFzaE1hcC52YWx1ZTtcbiAgICAgIHgudmFsdWUuZm9yRWFjaCgoeCkgPT4geC52YWx1ZXMuZm9yRWFjaCgoeSkgPT4gaGFzaE1hcC5zZXQoeS52YWx1ZSwgeSkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVNZXRhSGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mcm9tT3BlblNvdXJjZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2xvYWRTb3VyY2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jb250ZXh0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGhhbmRsZVNlbGVjdE9wdGlvbnM6IEhhbmRsZUFjdGlvbldpdGhDb250ZXh0PHVua25vd24+ID0gKF8sIGNvbnRleHQpID0+IHtcbiAgICBjb25zdCB7IG9wZW5Tb3VyY2UgfSA9IHRoaXM7XG5cbiAgICBpZiAob3BlblNvdXJjZSkge1xuICAgICAgY29uc3Qgc291cmNlT2JzID0gb3BlblNvdXJjZSgpO1xuICAgICAgY29udGV4dC5zdGFydFdvcmtpbmdXaXRoT2JzZXJ2YWJsZShcbiAgICAgICAgc291cmNlT2JzLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICB0YXAoKHJlc3VsdDogU291cmNlU2VsZWN0T3BlblNvdXJjZVJlc3VsdDxNPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzVG9BZGQgPSBtZXJnZUFycmF5cyhbcmVzdWx0LnNlbGVjdCwgcmVzdWx0Lm9wdGlvbnNdKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmFkZFRvT3BlblNvdXJjZU1hcCh2YWx1ZXNUb0FkZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQuc2VsZWN0KSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkVG9DdXJyZW50VmFsdWUocmVzdWx0LnNlbGVjdC5tYXAoKHgpID0+IHRoaXMudmFsdWVSZWFkZXIoeCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnJlamVjdCgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGFkZFRvT3BlblNvdXJjZU1hcChpbnB1dDogTVtdKSB7XG4gICAgY29uc3QgeyB2YWx1ZVJlYWRlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZhbHVlczogbWV0YSwgdmFsdWVzU2V0OiBpbml0aWFsVmFsdWVzIH0gPSB0aGlzLl9mcm9tT3BlblNvdXJjZS52YWx1ZTtcblxuICAgIGNvbnN0IG5ld01ldGFGcm9tSW5wdXQ6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBbXTtcbiAgICBjb25zdCB2YWx1ZXNTZXQgPSBuZXcgU2V0KGluaXRpYWxWYWx1ZXMpO1xuXG4gICAgaW5wdXQuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZVJlYWRlcih4KTtcblxuICAgICAgaWYgKCF2YWx1ZXNTZXQuaGFzKHZhbHVlKSkge1xuICAgICAgICBuZXdNZXRhRnJvbUlucHV0LnB1c2goeyBtZXRhOiB4LCB2YWx1ZSB9KTtcbiAgICAgICAgdmFsdWVzU2V0LmFkZCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobmV3TWV0YUZyb21JbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9mcm9tT3BlblNvdXJjZS5uZXh0KHtcbiAgICAgICAgdmFsdWVzOiBbLi4ubWV0YSwgLi4ubmV3TWV0YUZyb21JbnB1dF0sXG4gICAgICAgIHZhbHVlc1NldDogdmFsdWVzU2V0XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRvQ3VycmVudFZhbHVlKHZhbHVlczogVFtdKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYXNBcnJheSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWx1ZUFycmF5ID0gWy4uLmN1cnJlbnRWYWx1ZSwgLi4udmFsdWVzXTtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IHZhbHVlcyA6IGxhc3RWYWx1ZShuZXdWYWx1ZUFycmF5KTsgLy8gcGljayBsYXN0IHZhbHVlLCBhcyB0aGUgbGFzdCB2YWx1ZSBhZGRlZCBpcyB0aGUgbmV3ZXN0IHZhbHVlLlxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRieC1zb3VyY2Utc2VsZWN0LWZpZWxkXCI+XG4gIDxkaXYgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1jb250ZW50XCI+XG4gICAgPG1hdC1zZWxlY3QgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1zZWxlY3RcIiBbaWRdPVwiaWRcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbbXVsdGlwbGVdPVwicHJvcHMubXVsdGlwbGVcIj5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBub25Hcm91cGVkVmFsdWVzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+XG4gICAgICAgIHt7IHZhbHVlLmxhYmVsIH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8bWF0LW9wdGdyb3VwICpuZ0Zvcj1cImxldCBvcHRpb25Hcm91cCBvZiBncm91cGVkT3B0aW9ucyQgfCBhc3luY1wiIFtsYWJlbF09XCJvcHRpb25Hcm91cC5sYWJlbFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2Ygb3B0aW9uR3JvdXAudmFsdWVzXCIgW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+XG4gICAgICAgICAge3sgdmFsdWUubGFiZWwgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgPC9tYXQtc2VsZWN0PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93T3BlblNvdXJjZUJ1dHRvblwiPlxuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICA8ZGJ4LWFjdGlvbiBkYnhBY3Rpb25WYWx1ZSBbZGJ4QWN0aW9uSGFuZGxlcl09XCJoYW5kbGVTZWxlY3RPcHRpb25zXCIgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1idXR0b25cIj5cbiAgICAgICAgPGRieC1idXR0b24gZGJ4QWN0aW9uQnV0dG9uIFtpY29uT25seV09XCJ0cnVlXCIgW2ljb25dPVwic2VsZWN0QnV0dG9uSWNvblwiPjwvZGJ4LWJ1dHRvbj5cbiAgICAgIDwvZGJ4LWFjdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkYngtbG9hZGluZyBjbGFzcz1cImRieC1zb3VyY2Utc2VsZWN0LWZpZWxkLWxvYWRpbmdcIiBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJjb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbjwvZGl2PlxuIl19
@@ -0,0 +1,14 @@
1
+ import { formlyField, propsAndConfigForFieldConfig } from '../../field';
2
+ export function sourceSelectField(config) {
3
+ const { key, materialFormField } = config;
4
+ return formlyField({
5
+ key,
6
+ type: 'sourceselectfield',
7
+ ...propsAndConfigForFieldConfig(config, {
8
+ ...materialFormField,
9
+ ...config,
10
+ autocomplete: false
11
+ })
12
+ });
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3NvdXJjZXNlbGVjdC9zb3VyY2VzZWxlY3QuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBTTdJLE1BQU0sVUFBVSxpQkFBaUIsQ0FBcUQsTUFBcUM7SUFDekgsTUFBTSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxQyxPQUFPLFdBQVcsQ0FBQztRQUNqQixHQUFHO1FBQ0gsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixHQUFHLE1BQU07WUFDVCxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByaW1hdGl2ZUtleSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgU291cmNlU2VsZWN0RmllbGRQcm9wcyB9IGZyb20gJy4vc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudCc7XG5cbi8vIE1BUks6IFRleHRcbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0RmllbGRDb25maWc8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZywgU291cmNlU2VsZWN0RmllbGRQcm9wczxULCBNPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gc291cmNlU2VsZWN0RmllbGQ8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+KGNvbmZpZzogU291cmNlU2VsZWN0RmllbGRDb25maWc8VCwgTT4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5LCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnc291cmNlc2VsZWN0ZmllbGQnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAuLi5tYXRlcmlhbEZvcm1GaWVsZCxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2VcbiAgICB9KVxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,93 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { MatChipsModule } from '@angular/material/chips';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { FormlyModule } from '@ngx-formly/core';
9
+ import { DbxDatePipeModule } from '@dereekb/dbx-core';
10
+ import { MatDatepickerModule } from '@angular/material/datepicker';
11
+ import { MatNativeDateModule } from '@angular/material/core';
12
+ import { FlexLayoutModule } from '@angular/flex-layout';
13
+ import { MatButtonModule } from '@angular/material/button';
14
+ import { MatMenuModule } from '@angular/material/menu';
15
+ import { MatDividerModule } from '@angular/material/divider';
16
+ import { DbxFormSourceSelectFieldComponent } from './sourceselect.field.component';
17
+ import { MatSelectModule } from '@angular/material/select';
18
+ import { DbxActionModule, DbxButtonModule, DbxLoadingModule } from '@dereekb/dbx-web';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@ngx-formly/core";
21
+ export class DbxFormFormlySourceSelectModule {
22
+ }
23
+ DbxFormFormlySourceSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySourceSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
+ DbxFormFormlySourceSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySourceSelectModule, declarations: [DbxFormSourceSelectFieldComponent], imports: [CommonModule,
25
+ FormsModule,
26
+ MatInputModule,
27
+ MatDividerModule,
28
+ MatFormFieldModule,
29
+ MatSelectModule,
30
+ MatButtonModule,
31
+ MatDatepickerModule,
32
+ MatNativeDateModule,
33
+ MatMenuModule,
34
+ ReactiveFormsModule,
35
+ DbxDatePipeModule,
36
+ DbxLoadingModule,
37
+ DbxButtonModule,
38
+ DbxActionModule,
39
+ MatChipsModule,
40
+ MatIconModule,
41
+ FlexLayoutModule, i1.FormlyModule], exports: [DbxFormSourceSelectFieldComponent] });
42
+ DbxFormFormlySourceSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySourceSelectModule, imports: [CommonModule,
43
+ FormsModule,
44
+ MatInputModule,
45
+ MatDividerModule,
46
+ MatFormFieldModule,
47
+ MatSelectModule,
48
+ MatButtonModule,
49
+ MatDatepickerModule,
50
+ MatNativeDateModule,
51
+ MatMenuModule,
52
+ ReactiveFormsModule,
53
+ DbxDatePipeModule,
54
+ DbxLoadingModule,
55
+ DbxButtonModule,
56
+ DbxActionModule,
57
+ MatChipsModule,
58
+ MatIconModule,
59
+ FlexLayoutModule,
60
+ FormlyModule.forChild({
61
+ types: [{ name: 'sourceselectfield', component: DbxFormSourceSelectFieldComponent, wrappers: ['form-field'] }]
62
+ })] });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormFormlySourceSelectModule, decorators: [{
64
+ type: NgModule,
65
+ args: [{
66
+ imports: [
67
+ CommonModule,
68
+ FormsModule,
69
+ MatInputModule,
70
+ MatDividerModule,
71
+ MatFormFieldModule,
72
+ MatSelectModule,
73
+ MatButtonModule,
74
+ MatDatepickerModule,
75
+ MatNativeDateModule,
76
+ MatMenuModule,
77
+ ReactiveFormsModule,
78
+ DbxDatePipeModule,
79
+ DbxLoadingModule,
80
+ DbxButtonModule,
81
+ DbxActionModule,
82
+ MatChipsModule,
83
+ MatIconModule,
84
+ FlexLayoutModule,
85
+ FormlyModule.forChild({
86
+ types: [{ name: 'sourceselectfield', component: DbxFormSourceSelectFieldComponent, wrappers: ['form-field'] }]
87
+ })
88
+ ],
89
+ declarations: [DbxFormSourceSelectFieldComponent],
90
+ exports: [DbxFormSourceSelectFieldComponent]
91
+ }]
92
+ }] });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQTZCdEYsTUFBTSxPQUFPLCtCQUErQjs7NkhBQS9CLCtCQUErQjs4SEFBL0IsK0JBQStCLGlCQUgzQixpQ0FBaUMsYUF0QjlDLFlBQVk7UUFDWixXQUFXO1FBQ1gsY0FBYztRQUNkLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YsZUFBZTtRQUNmLGNBQWM7UUFDZCxhQUFhO1FBQ2IsZ0JBQWdCLDhCQU1SLGlDQUFpQzs4SEFFaEMsK0JBQStCLFlBekJ4QyxZQUFZO1FBQ1osV0FBVztRQUNYLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsZUFBZTtRQUNmLGVBQWU7UUFDZixjQUFjO1FBQ2QsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ3BCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1NBQy9HLENBQUM7NEZBS08sK0JBQStCO2tCQTNCM0MsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsWUFBWSxDQUFDLFFBQVEsQ0FBQzs0QkFDcEIsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7eUJBQy9HLENBQUM7cUJBQ0g7b0JBQ0QsWUFBWSxFQUFFLENBQUMsaUNBQWlDLENBQUM7b0JBQ2pELE9BQU8sRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2lCQUM3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IERieERhdGVQaXBlTW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRmxleExheW91dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBEYnhGb3JtU291cmNlU2VsZWN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IERieEFjdGlvbk1vZHVsZSwgRGJ4QnV0dG9uTW9kdWxlLCBEYnhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERieERhdGVQaXBlTW9kdWxlLFxuICAgIERieExvYWRpbmdNb2R1bGUsXG4gICAgRGJ4QnV0dG9uTW9kdWxlLFxuICAgIERieEFjdGlvbk1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHR5cGVzOiBbeyBuYW1lOiAnc291cmNlc2VsZWN0ZmllbGQnLCBjb21wb25lbnQ6IERieEZvcm1Tb3VyY2VTZWxlY3RGaWVsZENvbXBvbmVudCwgd3JhcHBlcnM6IFsnZm9ybS1maWVsZCddIH1dXG4gICAgfSlcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbRGJ4Rm9ybVNvdXJjZVNlbGVjdEZpZWxkQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RieEZvcm1Tb3VyY2VTZWxlY3RGaWVsZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybUZvcm1seVNvdXJjZVNlbGVjdE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3NvdXJjZXNlbGVjdC9zb3VyY2VzZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbkRpc3BsYXlWYWx1ZSB9IGZyb20gJy4vLi4vc2VsZWN0aW9uJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRmFjdG9yeSwgRmFjdG9yeVdpdGhSZXF1aXJlZElucHV0LCBNYXBGdW5jdGlvbiwgTWF5YmUsIFByaW1hdGl2ZUtleSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVNlbGVjdFZhbHVlPFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiB7XG4gIHZhbHVlOiBUO1xuICBtZXRhOiBNO1xufVxuXG4vKipcbiAqIEdyb3VwIG9mIFNvdXJjZVNlbGVjdFZhbHVlcyB3aXRoIGEgbGFiZWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0VmFsdWVHcm91cDxUIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBNID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogTGFiZWwgZm9yIHRoaXMgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFZhbHVlc1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdO1xufVxuXG4vKipcbiAqIERpc3BsYXkgdmFsdWUgY29uZmlndXJhdGlvbiBmb3IgYSBTb3VyY2VTZWxlY3RWYWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiA9IE9taXQ8U2VsZWN0aW9uRGlzcGxheVZhbHVlPFQsIE0+LCAnbWV0YSc+ICYgUGljazxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPiwgJ21ldGEnPjtcblxuLyoqXG4gKiBEaXNwbGF5IHZhbHVlIGNvbmZpZ3VyYXRpb24gZm9yIGEgU291cmNlU2VsZWN0VmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlR3JvdXA8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IHtcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGlzIHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBWYWx1ZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W107XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYSBTb3VyY2VTZWxlY3QgaW5wdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0T3B0aW9uczxUIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBNID0gdW5rbm93bj4ge1xuICByZWFkb25seSBub25Hcm91cGVkVmFsdWVzOiBTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXTtcbiAgcmVhZG9ubHkgZ3JvdXBlZFZhbHVlczogU291cmNlU2VsZWN0RGlzcGxheVZhbHVlR3JvdXA8VCwgTT5bXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBsb2FkcyBhbGwgdGhlIGRpc3BsYXkgaW5mbyBmb3IgdGhlIGlucHV0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiA9IE1hcEZ1bmN0aW9uPFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10sIE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+PjtcblxuLyoqXG4gKiBSZWFkcyB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWV0YSB2YWx1ZS4gU2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4gKi9cbmV4cG9ydCB0eXBlIFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlcjxUIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBNID0gdW5rbm93bj4gPSBNYXBGdW5jdGlvbjxNLCBUPjtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBsb2FkcyB0aGUgbWV0YWRhdGEgb2YgdGhlIGlucHV0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlU2VsZWN0VmFsdWVNZXRhTG9hZGVyPFQgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXksIE0gPSB1bmtub3duPiA9IEZhY3RvcnlXaXRoUmVxdWlyZWRJbnB1dDxPYnNlcnZhYmxlPE1bXT4sIFRbXT47XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgcmV0dXJucyBhbiBhcnJheSBvZiBtZXRhIHZhbHVlcyB0byBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTb3VyY2VTZWxlY3RPcGVuRnVuY3Rpb248TSA9IHVua25vd24+ID0gRmFjdG9yeTxPYnNlcnZhYmxlPFNvdXJjZVNlbGVjdE9wZW5Tb3VyY2VSZXN1bHQ8TT4+PjtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCByZXR1cm5zIGFuIGFycmF5IG9mIG1ldGEgdmFsdWVzIHRvIGJlIGFkZGVkIHRvIHRoZSBzZWxlY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0T3BlblNvdXJjZVJlc3VsdDxNID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogTmV3IHZhbHVlcyB0byBzZWxlY3QsIGlmIGFwcGxpY2FibGUuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3Q/OiBNYXliZTxNW10+O1xuICAvKipcbiAgICogTmV3IG9wdGlvbnMgdG8gbWFrZSBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogTWF5YmU8TVtdPjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB1c2VkIHRvIHJldHVybiBhbiBvYnNlcnZhYmxlIGZvciBhbiBhcnJheSBvZiBTb3VyY2VTZWxlY3RMb2FkU291cmNlIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU291cmNlU2VsZWN0TG9hZFNvdXJjZXNGdW5jdGlvbjxNID0gdW5rbm93bj4gPSBGYWN0b3J5PE9ic2VydmFibGU8U291cmNlU2VsZWN0TG9hZFNvdXJjZTxNPltdPj47XG5cbi8qKlxuICogU291cmNlIHRoYXQgaGFzIGEgbGFiZWwgYW5kIGFuIG9ic2VydmFibGUgb2YgbWV0YSB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0TG9hZFNvdXJjZTxNID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogTGFiZWwgZm9yIHRoaXMgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIE1ldGFkYXRhIGxvYWRlZCBmcm9tIHRoaXMgc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YTogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8TVtdPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0TG9hZFNvdXJjZUxvYWRpbmdTdGF0ZTxNID0gdW5rbm93bj4gZXh0ZW5kcyBMb2FkaW5nU3RhdGU8TVtdPiB7XG4gIC8qKlxuICAgKiBMYWJlbCBmb3IgdGhpcyBzb3VyY2UuXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { formlyField, propsAndConfigForFieldConfig } from '../field';
2
2
  export function textEditorField(config) {
3
- const { key, minLength, maxLength } = config;
3
+ const { key, minLength, maxLength, materialFormField } = config;
4
4
  const fieldConfig = formlyField({
5
5
  key,
6
6
  type: 'texteditor',
@@ -11,10 +11,11 @@ export function textEditorField(config) {
11
11
  updateOn: 'blur'
12
12
  },
13
13
  ...propsAndConfigForFieldConfig(config, {
14
+ ...materialFormField,
14
15
  minLength,
15
16
  maxLength
16
17
  })
17
18
  });
18
19
  return fieldConfig;
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGVkaXRvci5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3RleHRlZGl0b3IvdGV4dGVkaXRvci5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUt6RixNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQTZCO0lBQzNELE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM3QyxNQUFNLFdBQVcsR0FBc0IsV0FBVyxDQUFDO1FBQ2pELEdBQUc7UUFDSCxJQUFJLEVBQUUsWUFBWTtRQUNsQixZQUFZLEVBQUUsRUFBRTtRQUNoQixZQUFZLEVBQUU7WUFDWixvRUFBb0U7WUFDcEUsZ0dBQWdHO1lBQ2hHLFFBQVEsRUFBRSxNQUFNO1NBQ2pCO1FBQ0QsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsU0FBUztZQUNULFNBQVM7U0FDVixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0lBRUgsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0aW9uRmllbGRDb25maWcgfSBmcm9tICcuLy4uL2ZpZWxkJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBwcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vZmllbGQnO1xuaW1wb3J0IHsgVGV4dEZpZWxkTGVuZ3RoQ29uZmlnIH0gZnJvbSAnLi4vdmFsdWUvdGV4dC90ZXh0LmZpZWxkJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0RWRpdG9yRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIFRleHRGaWVsZExlbmd0aENvbmZpZyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gdGV4dEVkaXRvckZpZWxkKGNvbmZpZzogVGV4dEVkaXRvckZpZWxkQ29uZmlnKTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSwgbWluTGVuZ3RoLCBtYXhMZW5ndGggfSA9IGNvbmZpZztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAndGV4dGVkaXRvcicsXG4gICAgZGVmYXVsdFZhbHVlOiAnJywgLy8gU2V0IHRvIGFsd2F5cyBnZXQgYSBzdHJpbmcgYXMgYSByZXN1bHQuXG4gICAgbW9kZWxPcHRpb25zOiB7XG4gICAgICAvLyBodHRwczovL2Zvcm1seS5kZXYvZXhhbXBsZXMvdmFsaWRhdGlvbi9hc3luYy12YWxpZGF0aW9uLXVwZGF0ZS1vblxuICAgICAgLy8gU2V0IHRvIHRyaWdnZXIgdmFsdWUgdXBkYXRlIG9uIGJsdXJzIHdpdGggdGhlIGZvcm0uIEhvd2V2ZXIsIHRoZSB2YWx1ZSBpcyBzZXQgaW50ZXJuYWxseSB0b28uXG4gICAgICB1cGRhdGVPbjogJ2JsdXInXG4gICAgfSxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgbWluTGVuZ3RoLFxuICAgICAgbWF4TGVuZ3RoXG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGVkaXRvci5maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3RleHRlZGl0b3IvdGV4dGVkaXRvci5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUt6RixNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQTZCO0lBQzNELE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNoRSxNQUFNLFdBQVcsR0FBc0IsV0FBVyxDQUFDO1FBQ2pELEdBQUc7UUFDSCxJQUFJLEVBQUUsWUFBWTtRQUNsQixZQUFZLEVBQUUsRUFBRTtRQUNoQixZQUFZLEVBQUU7WUFDWixvRUFBb0U7WUFDcEUsZ0dBQWdHO1lBQ2hHLFFBQVEsRUFBRSxNQUFNO1NBQ2pCO1FBQ0QsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsU0FBUztZQUNULFNBQVM7U0FDVixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0lBRUgsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi8uLi9maWVsZCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyB9IGZyb20gJy4uL2ZpZWxkJztcbmltcG9ydCB7IFRleHRGaWVsZExlbmd0aENvbmZpZyB9IGZyb20gJy4uL3ZhbHVlL3RleHQvdGV4dC5maWVsZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEVkaXRvckZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBUZXh0RmllbGRMZW5ndGhDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0RWRpdG9yRmllbGQoY29uZmlnOiBUZXh0RWRpdG9yRmllbGRDb25maWcpOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5LCBtaW5MZW5ndGgsIG1heExlbmd0aCwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAndGV4dGVkaXRvcicsXG4gICAgZGVmYXVsdFZhbHVlOiAnJywgLy8gU2V0IHRvIGFsd2F5cyBnZXQgYSBzdHJpbmcgYXMgYSByZXN1bHQuXG4gICAgbW9kZWxPcHRpb25zOiB7XG4gICAgICAvLyBodHRwczovL2Zvcm1seS5kZXYvZXhhbXBsZXMvdmFsaWRhdGlvbi9hc3luYy12YWxpZGF0aW9uLXVwZGF0ZS1vblxuICAgICAgLy8gU2V0IHRvIHRyaWdnZXIgdmFsdWUgdXBkYXRlIG9uIGJsdXJzIHdpdGggdGhlIGZvcm0uIEhvd2V2ZXIsIHRoZSB2YWx1ZSBpcyBzZXQgaW50ZXJuYWxseSB0b28uXG4gICAgICB1cGRhdGVPbjogJ2JsdXInXG4gICAgfSxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBtaW5MZW5ndGgsXG4gICAgICBtYXhMZW5ndGhcbiAgICB9KVxuICB9KTtcblxuICByZXR1cm4gZmllbGRDb25maWc7XG59XG4iXX0=