@thecodeblogs/blog 0.15.4 → 0.15.5

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.
@@ -14,6 +14,7 @@ import * as i5 from "@angular/forms";
14
14
  import * as i6 from "@angular/material/input";
15
15
  import * as i7 from "@angular/material/form-field";
16
16
  import * as i8 from "@angular/material/list";
17
+ import * as i9 from "@angular/material/progress-spinner";
17
18
  export class SideNavigationComponent {
18
19
  constructor(entryService, router, identityService, renderer) {
19
20
  this.entryService = entryService;
@@ -21,6 +22,9 @@ export class SideNavigationComponent {
21
22
  this.identityService = identityService;
22
23
  this.renderer = renderer;
23
24
  this.state = 'out';
25
+ this.response = null;
26
+ this.debounceTimeout = 200;
27
+ this.loading = true;
24
28
  this.entries = [];
25
29
  this.entriesByMonthAndYear = [];
26
30
  this.searchTerm = "";
@@ -28,7 +32,7 @@ export class SideNavigationComponent {
28
32
  this.searchControl = new FormControl('');
29
33
  }
30
34
  ngOnInit() {
31
- this.doSearch.pipe(debounceTime(500)).subscribe((result) => {
35
+ this.doSearch.pipe(debounceTime(this.debounceTimeout)).subscribe((result) => {
32
36
  this.searchEntries(result);
33
37
  });
34
38
  this.identityService.getMe().subscribe((identity) => {
@@ -38,23 +42,27 @@ export class SideNavigationComponent {
38
42
  });
39
43
  this.getEntries();
40
44
  }
41
- getEntriesWithUrl(url) {
45
+ getMore() {
46
+ this.getEntriesWithUrl(this.response.next, false);
47
+ }
48
+ getEntriesWithUrl(url, wipe = true) {
49
+ this.loading = true;
42
50
  this.entryService.getListByUrl(url).subscribe((response) => {
51
+ this.response = response;
43
52
  this.entries = this.entries.concat(map(response.results, (result) => {
44
53
  return { id: result.id, entry: new Entry(result) };
45
54
  }));
46
- if (response.next) {
47
- this.getEntriesWithUrl(response.next);
48
- }
49
- else {
50
- this.organizeEntries();
51
- }
55
+ this.organizeEntries(wipe);
52
56
  });
53
57
  }
54
- organizeEntries() {
55
- this.state = 'out';
58
+ organizeEntries(wipe = true) {
59
+ if (wipe) {
60
+ this.state = 'out';
61
+ }
56
62
  let organizeEntriesFn = () => {
57
- this.entriesByMonthAndYear = [];
63
+ if (wipe) {
64
+ this.entriesByMonthAndYear = [];
65
+ }
58
66
  let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));
59
67
  for (const entryWrapper of this.entries) {
60
68
  const entry = entryWrapper.entry;
@@ -82,37 +90,37 @@ export class SideNavigationComponent {
82
90
  newEntries.reverse();
83
91
  let setEntriesFn = () => {
84
92
  this.entriesByMonthAndYear = newEntries;
85
- this.state = 'in';
93
+ this.loading = false;
94
+ if (wipe) {
95
+ this.state = 'in';
96
+ }
86
97
  };
87
98
  setTimeout(setEntriesFn.bind(this), 400);
88
99
  };
89
100
  setTimeout(organizeEntriesFn.bind(this), 400);
90
101
  }
91
102
  getEntries() {
103
+ this.loading = true;
92
104
  this.entryService.get().subscribe((response) => {
105
+ this.response = response;
93
106
  this.entries = map(response.results, (result) => {
94
107
  return { id: result.id, entry: new Entry(result) };
95
108
  });
96
- if (response.next) {
97
- this.getEntriesWithUrl(response.next);
98
- }
99
- else {
100
- this.organizeEntries();
101
- }
109
+ this.organizeEntries();
102
110
  });
103
111
  }
104
112
  searchEntries(searchTerm) {
113
+ let turnOnLoading = () => {
114
+ this.loading = true;
115
+ };
116
+ setTimeout(turnOnLoading.bind(this), this.debounceTimeout + 100);
105
117
  if (searchTerm !== "") {
106
118
  this.entryService.search(searchTerm).subscribe((response) => {
119
+ this.response = response;
107
120
  this.entries = map(response.results, (result) => {
108
121
  return { id: result.id, entry: new Entry(result) };
109
122
  });
110
- if (response.next) {
111
- this.getEntriesWithUrl(response.next);
112
- }
113
- else {
114
- this.organizeEntries();
115
- }
123
+ this.organizeEntries();
116
124
  });
117
125
  }
118
126
  else {
@@ -189,7 +197,7 @@ export class SideNavigationComponent {
189
197
  }
190
198
  }
191
199
  SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: i1.EntryService }, { token: i2.Router }, { token: i3.IdentityService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
192
- SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], animations: [
200
+ SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div\n class=\"progress\"\n [hidden]=\"!loading\"\n >\n <mat-progress-spinner\n style=\"margin-left: 16px;\"\n [diameter]=20\n mode=\"indeterminate\"\n >\n </mat-progress-spinner>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n <a\n class=\"sidelink\"\n *ngIf=\"this?.response?.next && !loading\"\n (click)=\"getMore()\"\n href=\"javascript:void(0);\">More...</a>\n </div>\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".progress{position:absolute;top:100px;left:0}.sidelink{padding-left:16px}.sidenav{position:relative;max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], animations: [
193
201
  trigger('sideNavAnimation', [
194
202
  state('in', style({ transform: 'translateX(0%)' })),
195
203
  state('out', style({ transform: 'translateX(110%)' })),
@@ -214,9 +222,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
214
222
  animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
215
223
  ])
216
224
  ]),
217
- ], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
225
+ ], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div\n class=\"progress\"\n [hidden]=\"!loading\"\n >\n <mat-progress-spinner\n style=\"margin-left: 16px;\"\n [diameter]=20\n mode=\"indeterminate\"\n >\n </mat-progress-spinner>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n <a\n class=\"sidelink\"\n *ngIf=\"this?.response?.next && !loading\"\n (click)=\"getMore()\"\n href=\"javascript:void(0);\">More...</a>\n </div>\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".progress{position:absolute;top:100px;left:0}.sidelink{padding-left:16px}.sidenav{position:relative;max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
218
226
  }], ctorParameters: function () { return [{ type: i1.EntryService }, { type: i2.Router }, { type: i3.IdentityService }, { type: i0.Renderer2 }]; }, propDecorators: { divNav: [{
219
227
  type: ViewChild,
220
228
  args: ['navcontainer', { static: false }]
221
229
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtbmF2aWdhdGlvbi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXZpZ2F0aW9uL3NpZGUtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBeUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBdUJ2QyxNQUFNLE9BQU8sdUJBQXVCO0lBZ0JsQyxZQUNVLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxRQUFtQjtRQUhuQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFsQjdCLFVBQUssR0FBaUIsS0FBSyxDQUFDO1FBSzVCLFlBQU8sR0FBaUMsRUFBRSxDQUFDO1FBQzNDLDBCQUFxQixHQUF3RSxFQUFFLENBQUM7UUFFaEcsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUF1THBELGtCQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUE3S3BDLENBQUM7SUFFRCxRQUFRO1FBRU4sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDM0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVwQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNoQyxHQUFHLENBQUUsUUFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFLLFFBQWdCLENBQUMsSUFBSSxFQUFFO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDdkMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7Z0JBQy9CLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDN0YsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDekIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2RixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUM5QixTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDL0I7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxZQUFZLEdBQUcsRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDO29CQUN4RixVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUMvQjthQUNGO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FDYixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDbkIsT0FBTyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQy9ELENBQUMsQ0FBQyxDQUFDO1lBQ0wsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXJCLElBQUksWUFBWSxHQUFHLEdBQUcsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDcEIsQ0FBQyxDQUFBO1lBQ0QsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDMUMsQ0FBQyxDQUFBO1FBQ0QsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM5QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFLLFFBQWdCLENBQUMsSUFBSSxFQUFFO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFrQjtRQUM5QixJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDOUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDO2dCQUNwRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFLLFFBQWdCLENBQUMsSUFBSSxFQUFFO29CQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN2QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELE1BQU07SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUs7UUFDWCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBRWpGLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN4RCxPQUFPO1lBQ1QsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFXO1FBQ2hDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksVUFBVSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFVBQVUsSUFBSSxXQUFXLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osVUFBVSxJQUFJLFFBQVEsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksUUFBUSxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFVBQVUsSUFBSSxNQUFNLENBQUM7Z0JBQ3JCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osVUFBVSxJQUFJLE9BQU8sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksT0FBTyxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFVBQVUsSUFBSSxTQUFTLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osVUFBVSxJQUFJLFlBQVksQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksVUFBVSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxFQUFFO2dCQUNMLFVBQVUsSUFBSSxXQUFXLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLEVBQUU7Z0JBQ0wsVUFBVSxJQUFJLFdBQVcsQ0FBQztnQkFDMUIsTUFBTTtZQUNSO2dCQUNFLFVBQVUsSUFBSSxVQUFVLENBQUM7U0FDNUI7UUFDRCxVQUFVLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBSUQsY0FBYyxDQUFDLFdBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O29IQXZNVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixtS0MvQnBDLGkrQkE4QkEsMnlERFpjO1FBQ1YsT0FBTyxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7WUFDcEQsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7YUFDbEUsQ0FBQztZQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzthQUMvRCxDQUFDO1NBQ0gsQ0FBQztLQUNIOzJGQUVVLHVCQUF1QjtrQkFqQm5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CO3dCQUNWLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTs0QkFDMUIsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDOzRCQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7NEJBQ3BELFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDOzZCQUNsRSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzs2QkFDL0QsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzhLQWdCNkMsTUFBTTtzQkFBbkQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCBhbmltYXRlLCB0cmFuc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge21hcH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7RW50cnl9IGZyb20gJy4uLy4uL2RhdGEvZW50cnknO1xuaW1wb3J0IHtJZGVudGl0eX0gZnJvbSAnLi4vLi4vZGF0YS9pZGVudGl0eSc7XG5cbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7SWRlbnRpdHlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNpZGUtbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3NpZGVOYXZBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDExMCUpJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMTAlKSd9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignb3V0ID0+IGluJywgW1xuICAgICAgICBhbmltYXRlKCcxMDBtcyBlYXNlLWluJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJ30pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBzdGF0ZTogJ2luJyB8ICdvdXQnID0gJ291dCc7XG5cbiAgc291cmNlU3ViO1xuICBpZGVudGl0eTogSWRlbnRpdHk7XG5cbiAgZW50cmllczoge2lkOiBzdHJpbmcsIGVudHJ5OiBFbnRyeX1bXSA9IFtdO1xuICBlbnRyaWVzQnlNb250aEFuZFllYXI6IHttb250aF95ZWFyOiBzdHJpbmcsIG1vbnRoX3llYXJfbnVtYmVyOiBudW1iZXIsIGVudHJpZXM6IEVudHJ5W119W10gPSBbXTtcblxuICBzZWFyY2hUZXJtID0gXCJcIjtcblxuICBkb1NlYXJjaDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnbmF2Y29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRpdk5hdjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudHJ5U2VydmljZTogRW50cnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2U6IElkZW50aXR5U2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmRvU2VhcmNoLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEVudHJpZXMocmVzdWx0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldE1lKCkuc3Vic2NyaWJlKChpZGVudGl0eSkgPT4ge1xuICAgICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5pZGVudGl0eSA9IG51bGw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0RW50cmllcygpO1xuXG4gIH1cblxuICBnZXRFbnRyaWVzV2l0aFVybCh1cmw6IHN0cmluZykge1xuICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldExpc3RCeVVybCh1cmwpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuZW50cmllcyA9IHRoaXMuZW50cmllcy5jb25jYXQoXG4gICAgICAgIG1hcCgocmVzcG9uc2UgYXMgYW55KS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIGFueSkubmV4dCkge1xuICAgICAgICB0aGlzLmdldEVudHJpZXNXaXRoVXJsKHJlc3BvbnNlLm5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9yZ2FuaXplRW50cmllcygpIHtcbiAgICB0aGlzLnN0YXRlID0gJ291dCc7XG4gICAgbGV0IG9yZ2FuaXplRW50cmllc0ZuID0gKCkgPT4ge1xuICAgICAgdGhpcy5lbnRyaWVzQnlNb250aEFuZFllYXIgPSBbXTtcbiAgICAgIGxldCBuZXdFbnRyaWVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmVudHJpZXNCeU1vbnRoQW5kWWVhcikpO1xuICAgICAgZm9yIChjb25zdCBlbnRyeVdyYXBwZXIgb2YgdGhpcy5lbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cnlXcmFwcGVyLmVudHJ5O1xuICAgICAgICBjb25zdCBjcmVhdGVfZGF0ZSA9IG5ldyBEYXRlKGVudHJ5LmNyZWF0ZV9kYXRlKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBjcmVhdGVfZGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gY3JlYXRlX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gbW9udGggKyAnLycgKyB5ZWFyO1xuICAgICAgICBjb25zdCBzb3J0X2luZGV4ID0gKHllYXIgKiAxMDApICsgbW9udGg7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBmaWx0ZXIobmV3RW50cmllcywgKGVudHJ5Q29udGFpbmVyKSA9PiBlbnRyeUNvbnRhaW5lci5tb250aF95ZWFyID09PSBrZXkpO1xuICAgICAgICBpZiAoY29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyc1swXTtcbiAgICAgICAgICBjb25zdCBlbnRyaWVzV2l0aElkID0gZmlsdGVyKGNvbnRhaW5lci5lbnRyaWVzLCAoZSkgPT4gZS5pZCA9PT0gZW50cnlXcmFwcGVyLmVudHJ5LmlkKTtcbiAgICAgICAgICBpZiAoZW50cmllc1dpdGhJZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5lbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdDb250YWluZXIgPSB7bW9udGhfeWVhcjoga2V5LCBtb250aF95ZWFyX251bWJlcjogc29ydF9pbmRleCwgZW50cmllczogW2VudHJ5XX07XG4gICAgICAgICAgbmV3RW50cmllcy5wdXNoKG5ld0NvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5ld0VudHJpZXMuc29ydChcbiAgICAgICAgKGVudHJ5X2EsIGVudHJ5X2IpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50cnlfYS5tb250aF95ZWFyX251bWJlciAtIGVudHJ5X2IubW9udGhfeWVhcl9udW1iZXI7XG4gICAgICAgIH0pO1xuICAgICAgbmV3RW50cmllcy5yZXZlcnNlKCk7XG5cbiAgICAgIGxldCBzZXRFbnRyaWVzRm4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllc0J5TW9udGhBbmRZZWFyID0gbmV3RW50cmllcztcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdpbic7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KHNldEVudHJpZXNGbi5iaW5kKHRoaXMpLCA0MDApXG4gICAgfVxuICAgIHNldFRpbWVvdXQob3JnYW5pemVFbnRyaWVzRm4uYmluZCh0aGlzKSwgNDAwKVxuICB9XG5cbiAgZ2V0RW50cmllcygpIHtcbiAgICB0aGlzLmVudHJ5U2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICB0aGlzLmVudHJpZXMgPSBtYXAocmVzcG9uc2UucmVzdWx0cywgKHJlc3VsdCkgPT4ge1xuICAgICAgICByZXR1cm4geyBpZDogcmVzdWx0LmlkLCBlbnRyeTogbmV3IEVudHJ5KHJlc3VsdCl9O1xuICAgICAgfSk7XG4gICAgICBpZiAoKHJlc3BvbnNlIGFzIGFueSkubmV4dCkge1xuICAgICAgICB0aGlzLmdldEVudHJpZXNXaXRoVXJsKHJlc3BvbnNlLm5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlYXJjaEVudHJpZXMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgaWYgKHNlYXJjaFRlcm0gIT09IFwiXCIpIHtcbiAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLnNlYXJjaChzZWFyY2hUZXJtKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IG1hcChyZXNwb25zZS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICgocmVzcG9uc2UgYXMgYW55KS5uZXh0KSB7XG4gICAgICAgICAgdGhpcy5nZXRFbnRyaWVzV2l0aFVybChyZXNwb25zZS5uZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9yZ2FuaXplRW50cmllcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRFbnRyaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICB9XG5cbiAgcm91dGVUbyhlbnRyeSkge1xuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ2NyZWF0ZShsZWZ0LWNvbDpjcmVhdGUvL3JpZ2h0LWNvbDpjcmVhdGUpJykudGhlbigoKSA9PiB7XG5cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnYmxvZycsIGVudHJ5LnNsdWddKS50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gTm9vcFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9udGhBbmRZZWFyRnJvbUtleShrZXk6IHN0cmluZykge1xuICAgIGxldCBzdWJoZWFkaW5nID0gJyc7XG4gICAgY29uc3QgcGFydHMgPSBrZXkuc3BsaXQoJy8nKTtcblxuICAgIHN3aXRjaCAoTnVtYmVyKHBhcnRzWzBdKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdKYW51YXJ5ICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdGZWJydWFyeSAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnTWFyY2ggJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0FwcmlsICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdNYXkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bmUgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0p1bHkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0F1Z3VzdCAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnU2VwdGVtYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdPY3RvYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnTm92ZW1iZXIgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDExOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdEZWNlbWJlciAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0phbnVhcnkgJztcbiAgICB9XG4gICAgc3ViaGVhZGluZyArPSBwYXJ0c1sxXTtcblxuICAgIHJldHVybiBzdWJoZWFkaW5nO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc291cmNlU3ViKSB7XG4gICAgICB0aGlzLnNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zb3VyY2VTdWIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIG9uU2VhcmNoQ2hhbmdlKHNlYXJjaFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRvU2VhcmNoLmVtaXQoc2VhcmNoVmFsdWUpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZW5hdiBuby1zY3JvbGxiYXJcIj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDIwcHg7XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgIDxtYXQtbGFiZWw+U2VhcmNoPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjbmF2Y29udGFpbmVyIGNsYXNzPVwibmF2Y29udGFpbmVyXCJcbiAgICBbQHNpZGVOYXZBbmltYXRpb25dPVwic3RhdGVcIlxuICA+XG4gICAgPG1hdC1uYXYtbGlzdFxuICAgICAgKm5nRm9yPVwibGV0IGNvbnRhaW5lciBvZiBlbnRyaWVzQnlNb250aEFuZFllYXJcIlxuICAgID5cbiAgICAgIDxoMz57e2dldE1vbnRoQW5kWWVhckZyb21LZXkoY29udGFpbmVyLm1vbnRoX3llYXIpfX08L2gzPlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgZW50cnkgb2YgY29udGFpbmVyLmVudHJpZXNcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJvdXRlVG8oZW50cnkpXCI+e3tlbnRyeS50aXRsZX19PC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuXG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZGVudGl0eT8uaWQgPT09IDFcIj5cbiAgICA8aDI+TWlzYzwvaDI+XG5cbiAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJyb3V0ZVRvKG51bGwpXCI+Q3JlYXRlPC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGgzICpuZ0lmPVwiaWRlbnRpdHlcIj5Mb2dnZWQgaW4gYXMge3tpZGVudGl0eT8uZW1haWx9fTwvaDM+XG48L2Rpdj5cblxuIl19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtbmF2aWdhdGlvbi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXZpZ2F0aW9uL3NpZGUtbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBeUMsU0FBUyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMzQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQXdCdkMsTUFBTSxPQUFPLHVCQUF1QjtJQW9CbEMsWUFDVSxZQUEwQixFQUMxQixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsUUFBbUI7UUFIbkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBdEI3QixVQUFLLEdBQWlCLEtBQUssQ0FBQztRQUs1QixhQUFRLEdBQXdCLElBQUksQ0FBQztRQUNyQyxvQkFBZSxHQUFHLEdBQUcsQ0FBQztRQUN0QixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsWUFBTyxHQUFpQyxFQUFFLENBQUM7UUFDM0MsMEJBQXFCLEdBQXdFLEVBQUUsQ0FBQztRQUVoRyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGFBQVEsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWdNcEQsa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQXRMcEMsQ0FBQztJQUVELFFBQVE7UUFFTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDM0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUVwQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBVyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2hDLEdBQUcsQ0FBRSxRQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN4QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJO1FBQ3pCLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7UUFDRCxJQUFJLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFHLElBQUksRUFBRTtnQkFDUCxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO2FBQ2pDO1lBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7WUFDeEUsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN2QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2hELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDL0IsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUM3RixJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN6QixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3ZGLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQzlCLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMvQjtpQkFDRjtxQkFBTTtvQkFDTCxNQUFNLFlBQVksR0FBRyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUM7b0JBQ3hGLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7WUFDRCxVQUFVLENBQUMsSUFBSSxDQUNiLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUNuQixPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7WUFDL0QsQ0FBQyxDQUFDLENBQUM7WUFDTCxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFckIsSUFBSSxZQUFZLEdBQUcsR0FBRyxFQUFFO2dCQUN0QixJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7aUJBQ25CO1lBQ0gsQ0FBQyxDQUFBO1lBQ0QsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDMUMsQ0FBQyxDQUFBO1FBQ0QsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM5QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQWtCO1FBRTlCLElBQUksYUFBYSxHQUFHLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDLENBQUE7UUFDRCxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksVUFBVSxLQUFLLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDOUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDO2dCQUNwRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELE1BQU07SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUs7UUFDWCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBRWpGLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN4RCxPQUFPO1lBQ1QsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFXO1FBQ2hDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksVUFBVSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFVBQVUsSUFBSSxXQUFXLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osVUFBVSxJQUFJLFFBQVEsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksUUFBUSxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFVBQVUsSUFBSSxNQUFNLENBQUM7Z0JBQ3JCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osVUFBVSxJQUFJLE9BQU8sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksT0FBTyxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLFVBQVUsSUFBSSxTQUFTLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osVUFBVSxJQUFJLFlBQVksQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixVQUFVLElBQUksVUFBVSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxFQUFFO2dCQUNMLFVBQVUsSUFBSSxXQUFXLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLEVBQUU7Z0JBQ0wsVUFBVSxJQUFJLFdBQVcsQ0FBQztnQkFDMUIsTUFBTTtZQUNSO2dCQUNFLFVBQVUsSUFBSSxVQUFVLENBQUM7U0FDNUI7UUFDRCxVQUFVLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBSUQsY0FBYyxDQUFDLFdBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O29IQXBOVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixtS0NoQ3BDLGsyQ0E4Q0EsMGtFRDNCYztRQUNWLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUM7WUFDakQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDO1lBQ3BELFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDO2FBQ2xFLENBQUM7WUFDRixVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUN0QixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUM7YUFDL0QsQ0FBQztTQUNILENBQUM7S0FDSDsyRkFFVSx1QkFBdUI7a0JBakJuQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQjt3QkFDVixPQUFPLENBQUMsa0JBQWtCLEVBQUU7NEJBQzFCLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLENBQUMsQ0FBQzs0QkFDakQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDOzRCQUNwRCxVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQzs2QkFDbEUsQ0FBQzs0QkFDRixVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN0QixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUM7NkJBQy9ELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs4S0FvQjZDLE1BQU07c0JBQW5ELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgYW5pbWF0ZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHttYXB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2RlYm91bmNlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0VudHJ5fSBmcm9tICcuLi8uLi9kYXRhL2VudHJ5JztcbmltcG9ydCB7SWRlbnRpdHl9IGZyb20gJy4uLy4uL2RhdGEvaWRlbnRpdHknO1xuaW1wb3J0IHtMaXN0UmVzcG9uc2V9IGZyb20gJy4uLy4uL2RhdGEvbGlzdC1yZXNwb25zZSc7XG5cbmltcG9ydCB7RW50cnlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRyeS5zZXJ2aWNlJztcbmltcG9ydCB7SWRlbnRpdHlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNpZGUtbmF2aWdhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3NpZGVOYXZBbmltYXRpb24nLCBbXG4gICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwJSknfSkpLFxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHt0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDExMCUpJ30pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2luID0+IG91dCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7dHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMTAlKSd9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignb3V0ID0+IGluJywgW1xuICAgICAgICBhbmltYXRlKCcxMDBtcyBlYXNlLWluJywgc3R5bGUoe3RyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCUpJ30pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBzdGF0ZTogJ2luJyB8ICdvdXQnID0gJ291dCc7XG5cbiAgc291cmNlU3ViO1xuICBpZGVudGl0eTogSWRlbnRpdHk7XG5cbiAgcmVzcG9uc2U6IExpc3RSZXNwb25zZTxFbnRyeT4gPSBudWxsO1xuICBkZWJvdW5jZVRpbWVvdXQgPSAyMDA7XG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIGVudHJpZXM6IHtpZDogc3RyaW5nLCBlbnRyeTogRW50cnl9W10gPSBbXTtcbiAgZW50cmllc0J5TW9udGhBbmRZZWFyOiB7bW9udGhfeWVhcjogc3RyaW5nLCBtb250aF95ZWFyX251bWJlcjogbnVtYmVyLCBlbnRyaWVzOiBFbnRyeVtdfVtdID0gW107XG5cbiAgc2VhcmNoVGVybSA9IFwiXCI7XG5cbiAgZG9TZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ25hdmNvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBkaXZOYXY6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbnRyeVNlcnZpY2U6IEVudHJ5U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgaWRlbnRpdHlTZXJ2aWNlOiBJZGVudGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5kb1NlYXJjaC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZW91dCkpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEVudHJpZXMocmVzdWx0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuaWRlbnRpdHlTZXJ2aWNlLmdldE1lKCkuc3Vic2NyaWJlKChpZGVudGl0eSkgPT4ge1xuICAgICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5pZGVudGl0eSA9IG51bGw7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ2V0RW50cmllcygpO1xuXG4gIH1cblxuICBnZXRNb3JlKCkge1xuICAgIHRoaXMuZ2V0RW50cmllc1dpdGhVcmwodGhpcy5yZXNwb25zZS5uZXh0LCBmYWxzZSk7XG4gIH1cblxuICBnZXRFbnRyaWVzV2l0aFVybCh1cmw6IHN0cmluZywgd2lwZSA9IHRydWUpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuZW50cnlTZXJ2aWNlLmdldExpc3RCeVVybCh1cmwpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgIHRoaXMuZW50cmllcyA9IHRoaXMuZW50cmllcy5jb25jYXQoXG4gICAgICAgIG1hcCgocmVzcG9uc2UgYXMgYW55KS5yZXN1bHRzLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm9yZ2FuaXplRW50cmllcyh3aXBlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9yZ2FuaXplRW50cmllcyh3aXBlID0gdHJ1ZSkge1xuICAgIGlmICh3aXBlKSB7XG4gICAgICB0aGlzLnN0YXRlID0gJ291dCc7XG4gICAgfVxuICAgIGxldCBvcmdhbml6ZUVudHJpZXNGbiA9ICgpID0+IHtcbiAgICAgIGlmKHdpcGUpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzQnlNb250aEFuZFllYXIgPSBbXTtcbiAgICAgIH1cbiAgICAgIGxldCBuZXdFbnRyaWVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmVudHJpZXNCeU1vbnRoQW5kWWVhcikpO1xuICAgICAgZm9yIChjb25zdCBlbnRyeVdyYXBwZXIgb2YgdGhpcy5lbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cnlXcmFwcGVyLmVudHJ5O1xuICAgICAgICBjb25zdCBjcmVhdGVfZGF0ZSA9IG5ldyBEYXRlKGVudHJ5LmNyZWF0ZV9kYXRlKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBjcmVhdGVfZGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gY3JlYXRlX2RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gbW9udGggKyAnLycgKyB5ZWFyO1xuICAgICAgICBjb25zdCBzb3J0X2luZGV4ID0gKHllYXIgKiAxMDApICsgbW9udGg7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBmaWx0ZXIobmV3RW50cmllcywgKGVudHJ5Q29udGFpbmVyKSA9PiBlbnRyeUNvbnRhaW5lci5tb250aF95ZWFyID09PSBrZXkpO1xuICAgICAgICBpZiAoY29udGFpbmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyc1swXTtcbiAgICAgICAgICBjb25zdCBlbnRyaWVzV2l0aElkID0gZmlsdGVyKGNvbnRhaW5lci5lbnRyaWVzLCAoZSkgPT4gZS5pZCA9PT0gZW50cnlXcmFwcGVyLmVudHJ5LmlkKTtcbiAgICAgICAgICBpZiAoZW50cmllc1dpdGhJZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5lbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdDb250YWluZXIgPSB7bW9udGhfeWVhcjoga2V5LCBtb250aF95ZWFyX251bWJlcjogc29ydF9pbmRleCwgZW50cmllczogW2VudHJ5XX07XG4gICAgICAgICAgbmV3RW50cmllcy5wdXNoKG5ld0NvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5ld0VudHJpZXMuc29ydChcbiAgICAgICAgKGVudHJ5X2EsIGVudHJ5X2IpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50cnlfYS5tb250aF95ZWFyX251bWJlciAtIGVudHJ5X2IubW9udGhfeWVhcl9udW1iZXI7XG4gICAgICAgIH0pO1xuICAgICAgbmV3RW50cmllcy5yZXZlcnNlKCk7XG5cbiAgICAgIGxldCBzZXRFbnRyaWVzRm4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuZW50cmllc0J5TW9udGhBbmRZZWFyID0gbmV3RW50cmllcztcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh3aXBlKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9ICdpbic7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoc2V0RW50cmllc0ZuLmJpbmQodGhpcyksIDQwMClcbiAgICB9XG4gICAgc2V0VGltZW91dChvcmdhbml6ZUVudHJpZXNGbi5iaW5kKHRoaXMpLCA0MDApXG4gIH1cblxuICBnZXRFbnRyaWVzKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5lbnRyeVNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5lbnRyaWVzID0gbWFwKHJlc3BvbnNlLnJlc3VsdHMsIChyZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgaWQ6IHJlc3VsdC5pZCwgZW50cnk6IG5ldyBFbnRyeShyZXN1bHQpfTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlYXJjaEVudHJpZXMoc2VhcmNoVGVybTogc3RyaW5nKSB7XG5cbiAgICBsZXQgdHVybk9uTG9hZGluZyA9ICgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgfVxuICAgIHNldFRpbWVvdXQodHVybk9uTG9hZGluZy5iaW5kKHRoaXMpLCB0aGlzLmRlYm91bmNlVGltZW91dCArIDEwMCk7XG4gICAgaWYgKHNlYXJjaFRlcm0gIT09IFwiXCIpIHtcbiAgICAgIHRoaXMuZW50cnlTZXJ2aWNlLnNlYXJjaChzZWFyY2hUZXJtKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gbWFwKHJlc3BvbnNlLnJlc3VsdHMsIChyZXN1bHQpID0+IHtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzdWx0LmlkLCBlbnRyeTogbmV3IEVudHJ5KHJlc3VsdCl9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcmdhbml6ZUVudHJpZXMoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldEVudHJpZXMoKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gIH1cblxuICByb3V0ZVRvKGVudHJ5KSB7XG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnY3JlYXRlKGxlZnQtY29sOmNyZWF0ZS8vcmlnaHQtY29sOmNyZWF0ZSknKS50aGVuKCgpID0+IHtcblxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdibG9nJywgZW50cnkuc2x1Z10pLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBOb29wXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRNb250aEFuZFllYXJGcm9tS2V5KGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHN1YmhlYWRpbmcgPSAnJztcbiAgICBjb25zdCBwYXJ0cyA9IGtleS5zcGxpdCgnLycpO1xuXG4gICAgc3dpdGNoIChOdW1iZXIocGFydHNbMF0pKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0phbnVhcnkgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0ZlYnJ1YXJ5ICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdNYXJjaCAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnQXByaWwgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ01heSAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnSnVuZSAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnSnVseSAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnQXVndXN0ICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4OlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdTZXB0ZW1iZXIgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDk6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ09jdG9iZXIgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwOlxuICAgICAgICBzdWJoZWFkaW5nICs9ICdOb3ZlbWJlciAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIHN1YmhlYWRpbmcgKz0gJ0RlY2VtYmVyICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc3ViaGVhZGluZyArPSAnSmFudWFyeSAnO1xuICAgIH1cbiAgICBzdWJoZWFkaW5nICs9IHBhcnRzWzFdO1xuXG4gICAgcmV0dXJuIHN1YmhlYWRpbmc7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zb3VyY2VTdWIpIHtcbiAgICAgIHRoaXMuc291cmNlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnNvdXJjZVN1YiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgb25TZWFyY2hDaGFuZ2Uoc2VhcmNoVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZG9TZWFyY2guZW1pdChzZWFyY2hWYWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzaWRlbmF2IG5vLXNjcm9sbGJhclwiPlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMjBweDtcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxuICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJwcm9ncmVzc1wiXG4gICAgW2hpZGRlbl09XCIhbG9hZGluZ1wiXG4gID5cbiAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXJcbiAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDE2cHg7XCJcbiAgICAgIFtkaWFtZXRlcl09MjBcbiAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICA+XG4gICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAjbmF2Y29udGFpbmVyIGNsYXNzPVwibmF2Y29udGFpbmVyXCJcbiAgICBbQHNpZGVOYXZBbmltYXRpb25dPVwic3RhdGVcIlxuICA+XG4gICAgPG1hdC1uYXYtbGlzdFxuICAgICAgKm5nRm9yPVwibGV0IGNvbnRhaW5lciBvZiBlbnRyaWVzQnlNb250aEFuZFllYXJcIlxuICAgID5cbiAgICAgIDxoMz57e2dldE1vbnRoQW5kWWVhckZyb21LZXkoY29udGFpbmVyLm1vbnRoX3llYXIpfX08L2gzPlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgZW50cnkgb2YgY29udGFpbmVyLmVudHJpZXNcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgKGNsaWNrKT1cInJvdXRlVG8oZW50cnkpXCI+e3tlbnRyeS50aXRsZX19PC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuXG4gICAgPGFcbiAgICAgIGNsYXNzPVwic2lkZWxpbmtcIlxuICAgICAgKm5nSWY9XCJ0aGlzPy5yZXNwb25zZT8ubmV4dCAmJiAhbG9hZGluZ1wiXG4gICAgICAoY2xpY2spPVwiZ2V0TW9yZSgpXCJcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+TW9yZS4uLjwvYT5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZGVudGl0eT8uaWQgPT09IDFcIj5cbiAgICA8aDI+TWlzYzwvaDI+XG5cbiAgICA8bWF0LW5hdi1saXN0PlxuICAgICAgPGEgbWF0LWxpc3QtaXRlbSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJyb3V0ZVRvKG51bGwpXCI+Q3JlYXRlPC9hPlxuICAgIDwvbWF0LW5hdi1saXN0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGgzICpuZ0lmPVwiaWRlbnRpdHlcIj5Mb2dnZWQgaW4gYXMge3tpZGVudGl0eT8uZW1haWx9fTwvaDM+XG48L2Rpdj5cblxuIl19
@@ -17,6 +17,7 @@ import { MatIconModule } from '@angular/material/icon';
17
17
  import { MatNativeDateModule } from '@angular/material/core';
18
18
  import { MatDatepickerModule } from '@angular/material/datepicker';
19
19
  import { MatTableModule } from '@angular/material/table';
20
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
20
21
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
21
22
  import { faSpinner } from '@fortawesome/free-solid-svg-icons';
22
23
  import { FileUploadModule } from 'ng2-file-upload';
@@ -87,6 +88,7 @@ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15
87
88
  MatDatepickerModule,
88
89
  MatNativeDateModule,
89
90
  MatTableModule,
91
+ MatProgressSpinnerModule,
90
92
  FontAwesomeModule,
91
93
  FileUploadModule,
92
94
  NgxMaterialTimepickerModule], exports: [EntryRendererComponent,
@@ -131,6 +133,7 @@ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15
131
133
  MatDatepickerModule,
132
134
  MatNativeDateModule,
133
135
  MatTableModule,
136
+ MatProgressSpinnerModule,
134
137
  FontAwesomeModule,
135
138
  FileUploadModule,
136
139
  NgxMaterialTimepickerModule] });
@@ -175,6 +178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
175
178
  MatDatepickerModule,
176
179
  MatNativeDateModule,
177
180
  MatTableModule,
181
+ MatProgressSpinnerModule,
178
182
  FontAwesomeModule,
179
183
  FileUploadModule,
180
184
  NgxMaterialTimepickerModule,
@@ -206,4 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
206
210
  ]
207
211
  }]
208
212
  }], ctorParameters: function () { return [{ type: i1.FaIconLibrary }]; } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8s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QVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQiwyQkFBMkI7cUJBQzlCO29CQUNELFNBQVMsRUFBRTt3QkFDUCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0NBQWtDO3dCQUNsQyxVQUFVO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDTCxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3dCQUN6QixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLDZCQUE2QjtxQkFDaEM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QnJvd3Nlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RHJhZ0Ryb3BNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtNYXREaXZpZGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7TWF0Q2FyZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQge01hdFNpZGVuYXZNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdExpc3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtNYXRSYWRpb01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHtNYXREaWFsb2dNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge01hdENoZWNrYm94TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7TWF0Q2hpcHNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdE5hdGl2ZURhdGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNYXREYXRlcGlja2VyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7TWF0VGFibGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcblxuaW1wb3J0IHtGb250QXdlc29tZU1vZHVsZSwgRmFJY29uTGlicmFyeX0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHtmYVNwaW5uZXJ9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gJ25nMi1maWxlLXVwbG9hZCc7XG5pbXBvcnQge05neE1hdGVyaWFsVGltZXBpY2tlck1vZHVsZX0gZnJvbSAnbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXInO1xuXG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVudHJ5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZW50cnkuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBQcmlzbVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByaXNtLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9pZGVudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IERqYW5nb1Jlc3RGcmFtZXdvcmtFbmRwb2ludFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RqYW5nby1yZXN0LWZyYW1ld29yay1lbmRwb2ludC5zZXJ2aWNlJztcbmltcG9ydCB7RW50cnlSZW5kZXJlckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2VudHJ5LXJlbmRlcmVyL2VudHJ5LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0VudHJ5Q3JlYXRvckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2VudHJ5LWNyZWF0b3IvZW50cnktY3JlYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHtPdXRsaW5lVmlld0NvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL291dGxpbmUtdmlldy9vdXRsaW5lLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7U2lkZU5hdmlnYXRpb25Db21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9zaWRlLW5hdmlnYXRpb24vc2lkZS1uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQge0xhbmRpbmdQYWdlQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvbGFuZGluZy1wYWdlL2xhbmRpbmctcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHtKc29uUmVuZGVyZXJDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9qc29uLXJlbmRlcmVyL2pzb24tcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7RW50cnlTdW1tYXJ5Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZW50cnktc3VtbWFyeS9lbnRyeS1zdW1tYXJ5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZWRpYVVwbG9hZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21lZGlhLXVwbG9hZC1tb2RhbC9tZWRpYS11cGxvYWQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVudHJ5U2VsZWN0b3JEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW50cnktc2VsZWN0b3ItZGlhbG9nL2VudHJ5LXNlbGVjdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtUaW1lQWdvUGlwZX0gZnJvbSAnLi9waXBlcy9UaW1lQWdvUGlwZSc7XG5pbXBvcnQge0xpbmt5UGlwZX0gZnJvbSAnLi9waXBlcy9MaW5reVBpcGUnO1xuaW1wb3J0IHsgU3RhdGljSHRtbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zdGF0aWMtaHRtbC9zdGF0aWMtaHRtbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWdTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL3RhZy5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbWFpbi9tYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnRyeVJlbmRlcmVyV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbnRyeS1yZW5kZXJlci13cmFwcGVyL2VudHJ5LXJlbmRlcmVyLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2NoZWR1bGVQdWJsaXNoRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nL3NjaGVkdWxlLXB1Ymxpc2gtZGlhbG9nLmNvbXBvbmVudCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgRW50cnlSZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgRW50cnlDcmVhdG9yQ29tcG9uZW50LFxuICAgICAgICBMYW5kaW5nUGFnZUNvbXBvbmVudCxcbiAgICAgICAgU2lkZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgICAgIE91dGxpbmVWaWV3Q29tcG9uZW50LFxuICAgICAgICBKc29uUmVuZGVyZXJDb21wb25lbnQsXG4gICAgICAgIEVudHJ5U3VtbWFyeUNvbXBvbmVudCxcbiAgICAgICAgRW50cnlTZWxlY3RvckRpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgTWVkaWFVcGxvYWRNb2RhbENvbXBvbmVudCxcbiAgICAgICAgVGltZUFnb1BpcGUsXG4gICAgICAgIExpbmt5UGlwZSxcbiAgICAgICAgU3RhdGljSHRtbENvbXBvbmVudCxcbiAgICAgICAgTWFpbkNvbXBvbmVudCxcbiAgICAgICAgRW50cnlSZW5kZXJlcldyYXBwZXJDb21wb25lbnQsXG4gICAgICAgIFNjaGVkdWxlUHVibGlzaERpYWxvZ0NvbXBvbmVudCxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgTWF0Q2FyZE1vZHVsZSxcbiAgICAgICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0TGlzdE1vZHVsZSxcbiAgICAgICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICAgICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgICAgICBGb250QXdlc29tZU1vZHVsZSxcbiAgICAgICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICAgICAgTmd4TWF0ZXJpYWxUaW1lcGlja2VyTW9kdWxlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIENvbW1lbnRTZXJ2aWNlLFxuICAgICAgICBFbnRyeVNlcnZpY2UsXG4gICAgICAgIFVwbG9hZFNlcnZpY2UsXG4gICAgICAgIFByaXNtU2VydmljZSxcbiAgICAgICAgSWRlbnRpdHlTZXJ2aWNlLFxuICAgICAgICBEamFuZ29SZXN0RnJhbWV3b3JrRW5kcG9pbnRTZXJ2aWNlLFxuICAgICAgICBUYWdTZXJ2aWNlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbnRyeVJlbmRlcmVyQ29tcG9uZW50LFxuICAgICAgICBFbnRyeUNyZWF0b3JDb21wb25lbnQsXG4gICAgICAgIExhbmRpbmdQYWdlQ29tcG9uZW50LFxuICAgICAgICBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgT3V0bGluZVZpZXdDb21wb25lbnQsXG4gICAgICAgIEpzb25SZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgRW50cnlTdW1tYXJ5Q29tcG9uZW50LFxuICAgICAgICBFbnRyeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBNZWRpYVVwbG9hZE1vZGFsQ29tcG9uZW50LFxuICAgICAgICBUaW1lQWdvUGlwZSxcbiAgICAgICAgTGlua3lQaXBlLFxuICAgICAgICBTdGF0aWNIdG1sQ29tcG9uZW50LFxuICAgICAgICBNYWluQ29tcG9uZW50LFxuICAgICAgICBFbnRyeVJlbmRlcmVyV3JhcHBlckNvbXBvbmVudCxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvcmVNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGxpYnJhcnk6IEZhSWNvbkxpYnJhcnlcbiAgICApIHtcbiAgICAgICAgdGhpcy5saWJyYXJ5LmFkZEljb25zKGZhU3Bpbm5lcik7XG4gICAgfVxufVxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWhFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8s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QTZCO3dCQUM3Qiw4QkFBOEI7cUJBQ2pDO29CQUNELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3FCQUM5QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtDQUFrQzt3QkFDbEMsVUFBVTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQiw0QkFBNEI7d0JBQzVCLHlCQUF5Qjt3QkFDekIsV0FBVzt3QkFDWCxTQUFTO3dCQUNULG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYiw2QkFBNkI7cUJBQ2hDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Jyb3dzZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0RyYWdEcm9wTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7TWF0RGl2aWRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQge01hdENhcmRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHtNYXRTaWRlbmF2TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRMaXN0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7TWF0UmFkaW9Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7TWF0RGlhbG9nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtNYXRDaGVja2JveE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGVNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge01hdENoaXBzTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXROYXRpdmVEYXRlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TWF0RGF0ZXBpY2tlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQge01hdFRhYmxlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge01hdFByb2dyZXNzU3Bpbm5lck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbmltcG9ydCB7Rm9udEF3ZXNvbWVNb2R1bGUsIEZhSWNvbkxpYnJhcnl9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7ZmFTcGlubmVyfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHtGaWxlVXBsb2FkTW9kdWxlfSBmcm9tICduZzItZmlsZS11cGxvYWQnO1xuaW1wb3J0IHtOZ3hNYXRlcmlhbFRpbWVwaWNrZXJNb2R1bGV9IGZyb20gJ25neC1tYXRlcmlhbC10aW1lcGlja2VyJztcblxuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBFbnRyeVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VudHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJpc21TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcmlzbS5zZXJ2aWNlJztcbmltcG9ydCB7IElkZW50aXR5U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvaWRlbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBEamFuZ29SZXN0RnJhbWV3b3JrRW5kcG9pbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kamFuZ28tcmVzdC1mcmFtZXdvcmstZW5kcG9pbnQuc2VydmljZSc7XG5pbXBvcnQge0VudHJ5UmVuZGVyZXJDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9lbnRyeS1yZW5kZXJlci9lbnRyeS1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHtFbnRyeUNyZWF0b3JDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9lbnRyeS1jcmVhdG9yL2VudHJ5LWNyZWF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7T3V0bGluZVZpZXdDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9vdXRsaW5lLXZpZXcvb3V0bGluZS12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQge1NpZGVOYXZpZ2F0aW9uQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvc2lkZS1uYXZpZ2F0aW9uL3NpZGUtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtMYW5kaW5nUGFnZUNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2xhbmRpbmctcGFnZS9sYW5kaW5nLXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7SnNvblJlbmRlcmVyQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvanNvbi1yZW5kZXJlci9qc29uLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0VudHJ5U3VtbWFyeUNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2VudHJ5LXN1bW1hcnkvZW50cnktc3VtbWFyeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVkaWFVcGxvYWRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tZWRpYS11cGxvYWQtbW9kYWwvbWVkaWEtdXBsb2FkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnRyeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VudHJ5LXNlbGVjdG9yLWRpYWxvZy9lbnRyeS1zZWxlY3Rvci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7VGltZUFnb1BpcGV9IGZyb20gJy4vcGlwZXMvVGltZUFnb1BpcGUnO1xuaW1wb3J0IHtMaW5reVBpcGV9IGZyb20gJy4vcGlwZXMvTGlua3lQaXBlJztcbmltcG9ydCB7IFN0YXRpY0h0bWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc3RhdGljLWh0bWwvc3RhdGljLWh0bWwuY29tcG9uZW50JztcbmltcG9ydCB7VGFnU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy90YWcuc2VydmljZSc7XG5pbXBvcnQgeyBNYWluQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21haW4vbWFpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW50cnlSZW5kZXJlcldyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW50cnktcmVuZGVyZXItd3JhcHBlci9lbnRyeS1yZW5kZXJlci13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNjaGVkdWxlUHVibGlzaERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zY2hlZHVsZS1wdWJsaXNoLWRpYWxvZy9zY2hlZHVsZS1wdWJsaXNoLWRpYWxvZy5jb21wb25lbnQnO1xuXG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEVudHJ5UmVuZGVyZXJDb21wb25lbnQsXG4gICAgICAgIEVudHJ5Q3JlYXRvckNvbXBvbmVudCxcbiAgICAgICAgTGFuZGluZ1BhZ2VDb21wb25lbnQsXG4gICAgICAgIFNpZGVOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgICAgICBPdXRsaW5lVmlld0NvbXBvbmVudCxcbiAgICAgICAgSnNvblJlbmRlcmVyQ29tcG9uZW50LFxuICAgICAgICBFbnRyeVN1bW1hcnlDb21wb25lbnQsXG4gICAgICAgIEVudHJ5U2VsZWN0b3JEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIE1lZGlhVXBsb2FkTW9kYWxDb21wb25lbnQsXG4gICAgICAgIFRpbWVBZ29QaXBlLFxuICAgICAgICBMaW5reVBpcGUsXG4gICAgICAgIFN0YXRpY0h0bWxDb21wb25lbnQsXG4gICAgICAgIE1haW5Db21wb25lbnQsXG4gICAgICAgIEVudHJ5UmVuZGVyZXJXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBTY2hlZHVsZVB1Ymxpc2hEaWFsb2dDb21wb25lbnQsXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgICAgIE1hdENhcmRNb2R1bGUsXG4gICAgICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdExpc3RNb2R1bGUsXG4gICAgICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgICAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgICAgIE1hdENoaXBzTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgICAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgICAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBGb250QXdlc29tZU1vZHVsZSxcbiAgICAgICAgRmlsZVVwbG9hZE1vZHVsZSxcbiAgICAgICAgTmd4TWF0ZXJpYWxUaW1lcGlja2VyTW9kdWxlLFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIENvbW1lbnRTZXJ2aWNlLFxuICAgICAgICBFbnRyeVNlcnZpY2UsXG4gICAgICAgIFVwbG9hZFNlcnZpY2UsXG4gICAgICAgIFByaXNtU2VydmljZSxcbiAgICAgICAgSWRlbnRpdHlTZXJ2aWNlLFxuICAgICAgICBEamFuZ29SZXN0RnJhbWV3b3JrRW5kcG9pbnRTZXJ2aWNlLFxuICAgICAgICBUYWdTZXJ2aWNlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBFbnRyeVJlbmRlcmVyQ29tcG9uZW50LFxuICAgICAgICBFbnRyeUNyZWF0b3JDb21wb25lbnQsXG4gICAgICAgIExhbmRpbmdQYWdlQ29tcG9uZW50LFxuICAgICAgICBTaWRlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICAgICAgT3V0bGluZVZpZXdDb21wb25lbnQsXG4gICAgICAgIEpzb25SZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgRW50cnlTdW1tYXJ5Q29tcG9uZW50LFxuICAgICAgICBFbnRyeVNlbGVjdG9yRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBNZWRpYVVwbG9hZE1vZGFsQ29tcG9uZW50LFxuICAgICAgICBUaW1lQWdvUGlwZSxcbiAgICAgICAgTGlua3lQaXBlLFxuICAgICAgICBTdGF0aWNIdG1sQ29tcG9uZW50LFxuICAgICAgICBNYWluQ29tcG9uZW50LFxuICAgICAgICBFbnRyeVJlbmRlcmVyV3JhcHBlckNvbXBvbmVudCxcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvcmVNb2R1bGUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGxpYnJhcnk6IEZhSWNvbkxpYnJhcnlcbiAgICApIHtcbiAgICAgICAgdGhpcy5saWJyYXJ5LmFkZEljb25zKGZhU3Bpbm5lcik7XG4gICAgfVxufVxuIl19
@@ -62,6 +62,8 @@ import { DragDropModule } from '@angular/cdk/drag-drop';
62
62
  import { trigger, state, style, transition, animate } from '@angular/animations';
63
63
  import * as i8$1 from '@angular/material/list';
64
64
  import { MatListModule } from '@angular/material/list';
65
+ import * as i9$1 from '@angular/material/progress-spinner';
66
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
65
67
  import * as i3$1 from '@angular/material/sidenav';
66
68
  import { MatSidenavModule } from '@angular/material/sidenav';
67
69
  import Autolinker from 'autolinker';
@@ -1388,6 +1390,9 @@ class SideNavigationComponent {
1388
1390
  this.identityService = identityService;
1389
1391
  this.renderer = renderer;
1390
1392
  this.state = 'out';
1393
+ this.response = null;
1394
+ this.debounceTimeout = 200;
1395
+ this.loading = true;
1391
1396
  this.entries = [];
1392
1397
  this.entriesByMonthAndYear = [];
1393
1398
  this.searchTerm = "";
@@ -1395,7 +1400,7 @@ class SideNavigationComponent {
1395
1400
  this.searchControl = new FormControl('');
1396
1401
  }
1397
1402
  ngOnInit() {
1398
- this.doSearch.pipe(debounceTime(500)).subscribe((result) => {
1403
+ this.doSearch.pipe(debounceTime(this.debounceTimeout)).subscribe((result) => {
1399
1404
  this.searchEntries(result);
1400
1405
  });
1401
1406
  this.identityService.getMe().subscribe((identity) => {
@@ -1405,23 +1410,27 @@ class SideNavigationComponent {
1405
1410
  });
1406
1411
  this.getEntries();
1407
1412
  }
1408
- getEntriesWithUrl(url) {
1413
+ getMore() {
1414
+ this.getEntriesWithUrl(this.response.next, false);
1415
+ }
1416
+ getEntriesWithUrl(url, wipe = true) {
1417
+ this.loading = true;
1409
1418
  this.entryService.getListByUrl(url).subscribe((response) => {
1419
+ this.response = response;
1410
1420
  this.entries = this.entries.concat(map$1(response.results, (result) => {
1411
1421
  return { id: result.id, entry: new Entry(result) };
1412
1422
  }));
1413
- if (response.next) {
1414
- this.getEntriesWithUrl(response.next);
1415
- }
1416
- else {
1417
- this.organizeEntries();
1418
- }
1423
+ this.organizeEntries(wipe);
1419
1424
  });
1420
1425
  }
1421
- organizeEntries() {
1422
- this.state = 'out';
1426
+ organizeEntries(wipe = true) {
1427
+ if (wipe) {
1428
+ this.state = 'out';
1429
+ }
1423
1430
  let organizeEntriesFn = () => {
1424
- this.entriesByMonthAndYear = [];
1431
+ if (wipe) {
1432
+ this.entriesByMonthAndYear = [];
1433
+ }
1425
1434
  let newEntries = JSON.parse(JSON.stringify(this.entriesByMonthAndYear));
1426
1435
  for (const entryWrapper of this.entries) {
1427
1436
  const entry = entryWrapper.entry;
@@ -1449,37 +1458,37 @@ class SideNavigationComponent {
1449
1458
  newEntries.reverse();
1450
1459
  let setEntriesFn = () => {
1451
1460
  this.entriesByMonthAndYear = newEntries;
1452
- this.state = 'in';
1461
+ this.loading = false;
1462
+ if (wipe) {
1463
+ this.state = 'in';
1464
+ }
1453
1465
  };
1454
1466
  setTimeout(setEntriesFn.bind(this), 400);
1455
1467
  };
1456
1468
  setTimeout(organizeEntriesFn.bind(this), 400);
1457
1469
  }
1458
1470
  getEntries() {
1471
+ this.loading = true;
1459
1472
  this.entryService.get().subscribe((response) => {
1473
+ this.response = response;
1460
1474
  this.entries = map$1(response.results, (result) => {
1461
1475
  return { id: result.id, entry: new Entry(result) };
1462
1476
  });
1463
- if (response.next) {
1464
- this.getEntriesWithUrl(response.next);
1465
- }
1466
- else {
1467
- this.organizeEntries();
1468
- }
1477
+ this.organizeEntries();
1469
1478
  });
1470
1479
  }
1471
1480
  searchEntries(searchTerm) {
1481
+ let turnOnLoading = () => {
1482
+ this.loading = true;
1483
+ };
1484
+ setTimeout(turnOnLoading.bind(this), this.debounceTimeout + 100);
1472
1485
  if (searchTerm !== "") {
1473
1486
  this.entryService.search(searchTerm).subscribe((response) => {
1487
+ this.response = response;
1474
1488
  this.entries = map$1(response.results, (result) => {
1475
1489
  return { id: result.id, entry: new Entry(result) };
1476
1490
  });
1477
- if (response.next) {
1478
- this.getEntriesWithUrl(response.next);
1479
- }
1480
- else {
1481
- this.organizeEntries();
1482
- }
1491
+ this.organizeEntries();
1483
1492
  });
1484
1493
  }
1485
1494
  else {
@@ -1556,7 +1565,7 @@ class SideNavigationComponent {
1556
1565
  }
1557
1566
  }
1558
1567
  SideNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SideNavigationComponent, deps: [{ token: EntryService }, { token: i1$4.Router }, { token: IdentityService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
1559
- SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i8$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }], animations: [
1568
+ SideNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SideNavigationComponent, selector: "app-side-navigation", viewQueries: [{ propertyName: "divNav", first: true, predicate: ["navcontainer"], descendants: true }], ngImport: i0, template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div\n class=\"progress\"\n [hidden]=\"!loading\"\n >\n <mat-progress-spinner\n style=\"margin-left: 16px;\"\n [diameter]=20\n mode=\"indeterminate\"\n >\n </mat-progress-spinner>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n <a\n class=\"sidelink\"\n *ngIf=\"this?.response?.next && !loading\"\n (click)=\"getMore()\"\n href=\"javascript:void(0);\">More...</a>\n </div>\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".progress{position:absolute;top:100px;left:0}.sidelink{padding-left:16px}.sidenav{position:relative;max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i8$1.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i8$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i9$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], animations: [
1560
1569
  trigger('sideNavAnimation', [
1561
1570
  state('in', style({ transform: 'translateX(0%)' })),
1562
1571
  state('out', style({ transform: 'translateX(110%)' })),
@@ -1581,7 +1590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1581
1590
  animate('100ms ease-in', style({ transform: 'translateX(0%)' }))
1582
1591
  ])
1583
1592
  ]),
1584
- ], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n </div>\n\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".sidenav{max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
1593
+ ], template: "<div class=\"sidenav no-scrollbar\">\n <div style=\"margin-top: 20px;\">\n <mat-form-field style=\"width: 100%\">\n <mat-label>Search</mat-label>\n <input matInput [formControl]=\"searchControl\" (ngModelChange)=\"onSearchChange($event)\">\n </mat-form-field>\n </div>\n\n <div\n class=\"progress\"\n [hidden]=\"!loading\"\n >\n <mat-progress-spinner\n style=\"margin-left: 16px;\"\n [diameter]=20\n mode=\"indeterminate\"\n >\n </mat-progress-spinner>\n </div>\n\n <div #navcontainer class=\"navcontainer\"\n [@sideNavAnimation]=\"state\"\n >\n <mat-nav-list\n *ngFor=\"let container of entriesByMonthAndYear\"\n >\n <h3>{{getMonthAndYearFromKey(container.month_year)}}</h3>\n <a mat-list-item *ngFor=\"let entry of container.entries\" href=\"javascript:void(0)\" (click)=\"routeTo(entry)\">{{entry.title}}</a>\n </mat-nav-list>\n\n <a\n class=\"sidelink\"\n *ngIf=\"this?.response?.next && !loading\"\n (click)=\"getMore()\"\n href=\"javascript:void(0);\">More...</a>\n </div>\n <ng-container *ngIf=\"identity?.id === 1\">\n <h2>Misc</h2>\n\n <mat-nav-list>\n <a mat-list-item href=\"javascript:void(0);\" (click)=\"routeTo(null)\">Create</a>\n </mat-nav-list>\n </ng-container>\n <h3 *ngIf=\"identity\">Logged in as {{identity?.email}}</h3>\n</div>\n\n", styles: [".progress{position:absolute;top:100px;left:0}.sidelink{padding-left:16px}.sidenav{position:relative;max-height:calc(100vh - 100px)}@media screen and (max-height: 560px){.sidenav{max-height:100vh}}h2,h3{margin-left:10px;justify-content:right}\n"] }]
1585
1594
  }], ctorParameters: function () { return [{ type: EntryService }, { type: i1$4.Router }, { type: IdentityService }, { type: i0.Renderer2 }]; }, propDecorators: { divNav: [{
1586
1595
  type: ViewChild,
1587
1596
  args: ['navcontainer', { static: false }]
@@ -1798,6 +1807,7 @@ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15
1798
1807
  MatDatepickerModule,
1799
1808
  MatNativeDateModule,
1800
1809
  MatTableModule,
1810
+ MatProgressSpinnerModule,
1801
1811
  FontAwesomeModule,
1802
1812
  FileUploadModule,
1803
1813
  NgxMaterialTimepickerModule], exports: [EntryRendererComponent,
@@ -1842,6 +1852,7 @@ CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15
1842
1852
  MatDatepickerModule,
1843
1853
  MatNativeDateModule,
1844
1854
  MatTableModule,
1855
+ MatProgressSpinnerModule,
1845
1856
  FontAwesomeModule,
1846
1857
  FileUploadModule,
1847
1858
  NgxMaterialTimepickerModule] });
@@ -1886,6 +1897,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1886
1897
  MatDatepickerModule,
1887
1898
  MatNativeDateModule,
1888
1899
  MatTableModule,
1900
+ MatProgressSpinnerModule,
1889
1901
  FontAwesomeModule,
1890
1902
  FileUploadModule,
1891
1903
  NgxMaterialTimepickerModule,