@rosoftlab/core 0.0.100 → 0.0.101
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2020/lib/base-components/base-form-edit.component.mjs +15 -41
- package/esm2020/lib/base-components/field-error-display/field-error-display.component.mjs +3 -3
- package/esm2020/lib/base-components/generic-table/generic-table.component.mjs +17 -80
- package/esm2020/lib/base-components/index.mjs +1 -2
- package/esm2020/lib/base-components/page-not-found/page-not-found.component.mjs +3 -3
- package/esm2020/lib/base-components/under-construction/under-construction.component.mjs +3 -3
- package/esm2020/lib/decorators/attribute.decorator.mjs +1 -4
- package/esm2020/lib/interfaces/attribute-decorator-options.interface.mjs +1 -1
- package/esm2020/lib/models/base.model.mjs +3 -46
- package/esm2020/lib/models/grid-layout-format.enum.mjs +1 -2
- package/esm2020/lib/module.mjs +5 -14
- package/esm2020/lib/services/base.service.mjs +2 -6
- package/fesm2015/rosoftlab-core.mjs +72 -443
- package/fesm2015/rosoftlab-core.mjs.map +1 -1
- package/fesm2020/rosoftlab-core.mjs +72 -438
- package/fesm2020/rosoftlab-core.mjs.map +1 -1
- package/lib/base-components/base-form-edit.component.d.ts +4 -9
- package/lib/base-components/field-error-display/field-error-display.component.d.ts +1 -1
- package/lib/base-components/generic-table/generic-table.component.d.ts +4 -17
- package/lib/base-components/index.d.ts +0 -1
- package/lib/base-components/page-not-found/page-not-found.component.d.ts +1 -1
- package/lib/base-components/under-construction/under-construction.component.d.ts +1 -1
- package/lib/interfaces/attribute-decorator-options.interface.d.ts +0 -1
- package/lib/models/base.model.d.ts +3 -7
- package/lib/models/grid-layout-format.enum.d.ts +1 -2
- package/lib/module.d.ts +6 -8
- package/package.json +3 -3
- package/esm2020/lib/base-components/searchable-dropdown/searchable-dropdown.component.mjs +0 -231
- package/lib/base-components/searchable-dropdown/searchable-dropdown.component.d.ts +0 -62
@@ -1,10 +1,10 @@
|
|
1
1
|
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
2
|
-
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild
|
2
|
+
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
3
3
|
import { MatPaginator } from '@angular/material/paginator';
|
4
4
|
import { MatSort } from '@angular/material/sort';
|
5
5
|
import { MatTableDataSource } from '@angular/material/table';
|
6
6
|
import * as jsonLogic from 'json-logic-js/logic.js';
|
7
|
-
import {
|
7
|
+
import { merge, of, Subject } from 'rxjs';
|
8
8
|
import { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';
|
9
9
|
import { CellTextAlign, GridLayoutFormat } from '../../models/grid-layout-format.enum';
|
10
10
|
import * as i0 from "@angular/core";
|
@@ -18,19 +18,17 @@ import * as i7 from "@angular/material/icon";
|
|
18
18
|
import * as i8 from "@angular/material/sort";
|
19
19
|
import * as i9 from "@angular/material/paginator";
|
20
20
|
import * as i10 from "@angular/material/input";
|
21
|
-
import * as i11 from "@angular/
|
22
|
-
import * as i12 from "@angular/
|
23
|
-
import * as i13 from "@
|
24
|
-
import * as i14 from "@ngx-translate/core";
|
21
|
+
import * as i11 from "@angular/cdk/drag-drop";
|
22
|
+
import * as i12 from "@angular/material/tooltip";
|
23
|
+
import * as i13 from "@ngx-translate/core";
|
25
24
|
export class GenericTableComponent {
|
26
25
|
// ruleEngineService: RuleEngineService<T>;
|
27
|
-
constructor(dialogService, router, datePipe, numberPipe, percentPipe
|
26
|
+
constructor(dialogService, router, datePipe, numberPipe, percentPipe) {
|
28
27
|
this.dialogService = dialogService;
|
29
28
|
this.router = router;
|
30
29
|
this.datePipe = datePipe;
|
31
30
|
this.numberPipe = numberPipe;
|
32
31
|
this.percentPipe = percentPipe;
|
33
|
-
this.renderer = renderer;
|
34
32
|
this.defaultSort = null;
|
35
33
|
this.defaultSortDirection = null;
|
36
34
|
this.deletePropertyName = 'name';
|
@@ -40,14 +38,12 @@ export class GenericTableComponent {
|
|
40
38
|
this.allowEdit = true;
|
41
39
|
this.popupEdit = false;
|
42
40
|
this.customInclude = null;
|
43
|
-
this.infiniteScroll = false;
|
44
41
|
this.dataSource = new MatTableDataSource();
|
45
42
|
this.resultsLength = 0;
|
46
43
|
this.isLoadingResults = true;
|
47
44
|
this.isRateLimitReached = false;
|
48
45
|
this.filterChanged = new Subject();
|
49
46
|
this.selectedObject = new EventEmitter();
|
50
|
-
this.click = new EventEmitter();
|
51
47
|
this.editModel = new EventEmitter();
|
52
48
|
}
|
53
49
|
ngOnChanges() {
|
@@ -114,20 +110,8 @@ export class GenericTableComponent {
|
|
114
110
|
this.isRateLimitReached = true;
|
115
111
|
return of([]);
|
116
112
|
})).subscribe(data => {
|
117
|
-
// if (this.infiniteScroll) {
|
118
|
-
// let oldData = this.dataSource.data ?? null;
|
119
|
-
// // if (oldData.length === 0) {
|
120
|
-
// // oldData = data;
|
121
|
-
// // } else {
|
122
|
-
// oldData=oldData.concat(data);
|
123
|
-
// // }
|
124
|
-
// this.dataSource.data = oldData;
|
125
|
-
// }
|
126
|
-
// else {
|
127
113
|
this.dataSource.data = data;
|
128
|
-
// }
|
129
114
|
});
|
130
|
-
// this.paginator.nextPage()
|
131
115
|
}
|
132
116
|
getData() {
|
133
117
|
this.isLoadingResults = true;
|
@@ -225,9 +209,6 @@ export class GenericTableComponent {
|
|
225
209
|
getCellTextAlign(column) {
|
226
210
|
return column.textAlign ?? CellTextAlign.left;
|
227
211
|
}
|
228
|
-
showPictureCell(column) {
|
229
|
-
return (column?.formating ?? GridLayoutFormat.none) === GridLayoutFormat.picture;
|
230
|
-
}
|
231
212
|
deleteDisabled(model) {
|
232
213
|
if (this.deleteDisableRule) {
|
233
214
|
return this.evaluateRule(this.deleteDisableRule, model);
|
@@ -236,9 +217,6 @@ export class GenericTableComponent {
|
|
236
217
|
return false;
|
237
218
|
}
|
238
219
|
}
|
239
|
-
cellClick(model, propertyName) {
|
240
|
-
this.click.emit({ propertyName, model });
|
241
|
-
}
|
242
220
|
evaluateRule(rules, model) {
|
243
221
|
let result = true;
|
244
222
|
rules.forEach(rule => {
|
@@ -297,14 +275,12 @@ export class GenericTableComponent {
|
|
297
275
|
applyFilter(event) {
|
298
276
|
}
|
299
277
|
dropTable(event) {
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
this.table.renderRows();
|
307
|
-
}
|
278
|
+
const prevItem = this.dataSource.data[event.previousIndex];
|
279
|
+
const currentItem = this.dataSource.data[event.currentIndex];
|
280
|
+
if (this.changeItemPosition(prevItem, currentItem)) {
|
281
|
+
const prevIndex = this.dataSource.data.findIndex((d) => d === event.item.data);
|
282
|
+
moveItemInArray(this.dataSource.data, prevIndex, event.currentIndex);
|
283
|
+
this.table.renderRows();
|
308
284
|
}
|
309
285
|
}
|
310
286
|
isColumnSticky(name) {
|
@@ -328,45 +304,13 @@ export class GenericTableComponent {
|
|
328
304
|
this.dataSource.data = newData;
|
329
305
|
this.dataSource._updateChangeSubscription();
|
330
306
|
}
|
331
|
-
ngAfterViewInit() {
|
332
|
-
fromEvent(this.matTableRef.nativeElement, 'scroll')
|
333
|
-
.pipe(debounceTime(700))
|
334
|
-
.subscribe((e) => this.onTableScroll(e));
|
335
|
-
}
|
336
|
-
onTableScroll(e) {
|
337
|
-
const tableViewHeight = e.target.offsetHeight; // viewport: ~500px
|
338
|
-
const tableScrollHeight = e.target.scrollHeight; // length of all table
|
339
|
-
const scrollLocation = e.target.scrollTop; // how far user scrolled
|
340
|
-
// If the user has scrolled within 200px of the bottom, add more data
|
341
|
-
const scrollThreshold = 200;
|
342
|
-
const scrollUpLimit = scrollThreshold;
|
343
|
-
if (scrollLocation < scrollUpLimit && this.paginator.pageIndex > 0) {
|
344
|
-
// this.firstPage--;
|
345
|
-
console.log(`onTableScroll() UP: firstPage decreased to ${this.paginator.pageIndex}. Now fetching data...`);
|
346
|
-
// this.fetchData();
|
347
|
-
this.scrollTo(tableScrollHeight / 2 - 2 * tableViewHeight);
|
348
|
-
}
|
349
|
-
const scrollDownLimit = tableScrollHeight - tableViewHeight - scrollThreshold;
|
350
|
-
if (scrollLocation > scrollDownLimit && this.paginator.pageIndex < this.paginator.getNumberOfPages()) {
|
351
|
-
// this.firstPage++;
|
352
|
-
console.log(`onTableScroll(): firstPage increased to ${this.paginator.pageIndex}. Now fetching data...`);
|
353
|
-
this.paginator.nextPage();
|
354
|
-
// this.scrollTo(tableScrollHeight / 2 + tableViewHeight);
|
355
|
-
}
|
356
|
-
}
|
357
|
-
scrollTo(position) {
|
358
|
-
this.renderer.setProperty(this.matTableRef.nativeElement, 'scrollTop', position);
|
359
|
-
}
|
360
|
-
getCellClass(model, property) {
|
361
|
-
return model.getCellClass(property);
|
362
|
-
}
|
363
307
|
}
|
364
|
-
GenericTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: GenericTableComponent, deps: [{ token: i1.DialogService }, { token: i2.Router }, { token: i3.DatePipe }, { token: i3.DecimalPipe }, { token: i3.PercentPipe }
|
365
|
-
GenericTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: GenericTableComponent, selector: "rsl-generic-table", inputs: { modelType: "modelType", baseService: "baseService", gridLayoutService: "gridLayoutService", editLink: "editLink", defaultSort: "defaultSort", defaultSortDirection: "defaultSortDirection", deleteDisableRule: "deleteDisableRule", deletePropertyName: "deletePropertyName", hasSearch: "hasSearch", searchFields: "searchFields", defaultFilter: "defaultFilter", allowReorderItems: "allowReorderItems", stickyColumns: "stickyColumns", editOnClick: "editOnClick", editOnDblClick: "editOnDblClick", allowEdit: "allowEdit", popupEdit: "popupEdit", customInclude: "customInclude", changeItemPosition: "changeItemPosition", infiniteScroll: "infiniteScroll" }, outputs: { selectedObject: "selectedObject", click: "click", editModel: "editModel" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ElementRef, descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }, { propertyName: "matTableRef", first: true, predicate: ["table"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"containerX\" *ngIf=\"hasSearch\">\r\n <div fxLayout=\"row\" fxLayout.xs=\"column\" fxLayout.sm=\"column\" fxFlexFill>\r\n <mat-form-field fxFlex>\r\n <mat-label>Filter</mat-label>\r\n <input matInput [ngModel]='filterValue' (ngModelChange)='filterChanged.next($event)' #filter>\r\n </mat-form-field>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-container\">\r\n <div class=\"mat-elevation-z2\">\r\n <!-- #applicationsContainer -->\r\n <div class=\"example-loading-shade\" *ngIf=\"isLoadingResults || isRateLimitReached\">\r\n <mat-spinner *ngIf=\"isLoadingResults\"></mat-spinner>\r\n <div class=\"example-rate-limit-reached\" *ngIf=\"isRateLimitReached\">\r\n {{'General.LoadingData' | translate}}\r\n </div>\r\n </div>\r\n\r\n\r\n <mat-table fxFlex #table [dataSource]=\"dataSource\" id=\"tempalte-forms-table\" matSort matSortDisableClear\r\n matSortDirection=\"asc\" cdkDropList [cdkDropListData]=\"dataSource\" (cdkDropListDropped)=\"dropTable($event)\">\r\n <!-- (scroll)=\"onTableScroll($event)\" -->\r\n\r\n\r\n <ng-container matColumnDef=\"position\">\r\n <mat-header-cell *matHeaderCellDef disableClear=\"true\">\r\n <!-- {{'General.Order' | translate}} -->\r\n </mat-header-cell>\r\n <mat-cell fxFlex *matCellDef=\"let element;\">\r\n <mat-icon cdkDragHandle>reorder</mat-icon>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngFor=\"let column of gridLayout\" [matColumnDef]=\"column.propertyName\"\r\n [sticky]=\"isColumnSticky(column.propertyName)\">\r\n <mat-header-cell mat-sort-header disableClear [style.flex]=\"getFlexStyle(column)\" *matHeaderCellDef>\r\n {{column.translateKey | translate}}\r\n </mat-header-cell>\r\n <mat-cell matTooltip={{getCelValue(row,column.propertyName)}} [style.flex]=\"getFlexStyle(column)\"\r\n [style.text-align]=\"getCellTextAlign(column)\" *matCellDef=\"let row\" (click)=\"cellClick(row,column.propertyName)\">\r\n <div [ngClass]=\"getCellClass(row,column.propertyName)\" *ngIf=\"!showPictureCell(column)\">\r\n {{getCelValue(row,column.propertyName)}}\r\n </div>\r\n <img [ngClass]=\"getCellClass(row,column.propertyName)\" *ngIf=\"showPictureCell(column)\">\r\n </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"delete\" stickyEnd *ngIf=\"!editOnClick && !editOnDblClick\">\r\n <mat-header-cell *matHeaderCellDef disableClear=\"true\">\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <button class=\"btn btn-green btn-fill btn-wd btn-just-icon\" (click)=\"editObject(row)\"\r\n matTooltip=\"{{'General.Edit' | translate}}\">\r\n <!-- <mat-icon>edit</mat-icon> -->\r\n <i class=\"material-icons\">edit</i>\r\n <div class=\"ripple-container\"></div>\r\n </button>\r\n <button class=\"btn btn-red btn-fill btn-wd btn-just-icon\" (click)=\"deleteObject(row)\"\r\n [disabled]=\"deleteDisabled(row)\" matTooltip=\"{{'General.Delete' | translate}}\">\r\n <i class=\"material-icons\">delete</i>\r\n <div class=\"ripple-container\"></div>\r\n </button>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns;sticky: true\"></mat-header-row>\r\n\r\n <ng-container *ngIf=\"!editOnClick && !editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (click)=\"highlight(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\">\r\n </mat-row>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"editOnClick && !editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (click)=\"editObject(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" style=\"cursor: pointer;\"></mat-row>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!editOnClick && editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (dblclick)=\"editObject(row)\"\r\n (click)=\"highlight(row)\" (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\"\r\n style=\"cursor: pointer;\"></mat-row>\r\n </ng-container>\r\n\r\n <!-- [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\"\r\n (click)=\"highlight(row)\" (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" -->\r\n </mat-table>\r\n <mat-paginator #paginator [hidden]=\"infiniteScroll\" [length]=\"resultsLength\" [pageSize]=\"15\"\r\n [pageSizeOptions]=\"[15, 30, 100]\" [showFirstLastButtons]=\"true\">\r\n </mat-paginator>\r\n </div>\r\n</div>", styles: [".mat-column-delete{flex:0 0 90px;padding-right:30px}.mat-sort-header-button{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-column-position{flex:0 0 60px!important}.mat-table{overflow-x:auto}[hidden]{display:none!important}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i9.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i10.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"] }, { type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i12.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i6.MatCellDef, selector: "[matCellDef]" }, { type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i12.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i12.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }], pipes: { "translate": i14.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
|
308
|
+
GenericTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: GenericTableComponent, deps: [{ token: i1.DialogService }, { token: i2.Router }, { token: i3.DatePipe }, { token: i3.DecimalPipe }, { token: i3.PercentPipe }], target: i0.ɵɵFactoryTarget.Component });
|
309
|
+
GenericTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: GenericTableComponent, selector: "app-generic-table", inputs: { modelType: "modelType", baseService: "baseService", gridLayoutService: "gridLayoutService", editLink: "editLink", defaultSort: "defaultSort", defaultSortDirection: "defaultSortDirection", deleteDisableRule: "deleteDisableRule", deletePropertyName: "deletePropertyName", hasSearch: "hasSearch", searchFields: "searchFields", defaultFilter: "defaultFilter", allowReorderItems: "allowReorderItems", stickyColumns: "stickyColumns", editOnClick: "editOnClick", editOnDblClick: "editOnDblClick", allowEdit: "allowEdit", popupEdit: "popupEdit", customInclude: "customInclude", changeItemPosition: "changeItemPosition" }, outputs: { selectedObject: "selectedObject", editModel: "editModel" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ElementRef, descendants: true }, { propertyName: "table", first: true, predicate: ["table"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"containerX\" *ngIf=\"hasSearch\">\r\n <div fxLayout=\"row\" fxLayout.xs=\"column\" fxLayout.sm=\"column\" fxFlexFill>\r\n <mat-form-field fxFlex>\r\n <mat-label>Filter</mat-label>\r\n <input matInput [ngModel]='filterValue' (ngModelChange)='filterChanged.next($event)' #filter>\r\n </mat-form-field>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-container\">\r\n <div class=\"mat-elevation-z2\">\r\n <!-- #applicationsContainer -->\r\n <div class=\"example-loading-shade\" *ngIf=\"isLoadingResults || isRateLimitReached\">\r\n <mat-spinner *ngIf=\"isLoadingResults\"></mat-spinner>\r\n <div class=\"example-rate-limit-reached\" *ngIf=\"isRateLimitReached\">\r\n {{'General.LoadingData' | translate}}\r\n </div>\r\n </div>\r\n\r\n\r\n <mat-table fxFlex #table [dataSource]=\"dataSource\" id=\"tempalte-forms-table\" matSort matSortDisableClear\r\n matSortDirection=\"asc\" cdkDropList [cdkDropListData]=\"dataSource\" (cdkDropListDropped)=\"dropTable($event)\">\r\n\r\n\r\n <ng-container matColumnDef=\"position\">\r\n <mat-header-cell *matHeaderCellDef disableClear=\"true\">\r\n <!-- {{'General.Order' | translate}} -->\r\n </mat-header-cell>\r\n <mat-cell fxFlex *matCellDef=\"let element;\">\r\n <mat-icon cdkDragHandle>reorder</mat-icon>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngFor=\"let column of gridLayout\" [matColumnDef]=\"column.propertyName\"\r\n [sticky]=\"isColumnSticky(column.propertyName)\">\r\n <mat-header-cell mat-sort-header disableClear [style.flex]=\"getFlexStyle(column)\" *matHeaderCellDef>\r\n {{column.translateKey | translate}}\r\n </mat-header-cell>\r\n <mat-cell matTooltip={{getCelValue(row,column.propertyName)}} [style.flex]=\"getFlexStyle(column)\"\r\n [style.text-align]=\"getCellTextAlign(column)\" *matCellDef=\"let row\">{{getCelValue(row,column.propertyName)}}\r\n </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"delete\" stickyEnd *ngIf=\"!editOnClick && !editOnDblClick\">\r\n <mat-header-cell *matHeaderCellDef disableClear=\"true\">\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <button class=\"btn btn-green btn-fill btn-wd btn-just-icon\" (click)=\"editObject(row)\"\r\n matTooltip=\"{{'General.Edit' | translate}}\">\r\n <!-- <mat-icon>edit</mat-icon> -->\r\n <i class=\"material-icons\">edit</i>\r\n <div class=\"ripple-container\"></div>\r\n </button>\r\n <button class=\"btn btn-red btn-fill btn-wd btn-just-icon\" (click)=\"deleteObject(row)\"\r\n [disabled]=\"deleteDisabled(row)\" matTooltip=\"{{'General.Delete' | translate}}\">\r\n <i class=\"material-icons\">delete</i>\r\n <div class=\"ripple-container\"></div>\r\n </button>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns;sticky: true\"></mat-header-row>\r\n\r\n <ng-container *ngIf=\"!editOnClick && !editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (click)=\"highlight(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\">\r\n </mat-row>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"editOnClick && !editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (click)=\"editObject(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" style=\"cursor: pointer;\"></mat-row>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!editOnClick && editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (dblclick)=\"editObject(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" style=\"cursor: pointer;\"></mat-row>\r\n </ng-container>\r\n\r\n <!-- [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\"\r\n (click)=\"highlight(row)\" (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" -->\r\n </mat-table>\r\n <mat-paginator #paginator [length]=\"resultsLength\" [pageSize]=\"15\" [pageSizeOptions]=\"[15, 30, 100]\"\r\n [showFirstLastButtons]=\"true\">\r\n </mat-paginator>\r\n </div>\r\n</div>", styles: [".mat-column-delete{flex:0 0 90px;padding-right:30px}.mat-sort-header-button{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-column-position{flex:0 0 60px!important}.mat-table{overflow-x:scroll}\n"], components: [{ type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i9.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i10.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"] }, { type: i8.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i11.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i6.MatCellDef, selector: "[matCellDef]" }, { type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i11.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { type: i11.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i13.TranslatePipe } });
|
366
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: GenericTableComponent, decorators: [{
|
367
311
|
type: Component,
|
368
|
-
args: [{ selector: '
|
369
|
-
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.Router }, { type: i3.DatePipe }, { type: i3.DecimalPipe }, { type: i3.PercentPipe }
|
312
|
+
args: [{ selector: 'app-generic-table', template: "<div class=\"containerX\" *ngIf=\"hasSearch\">\r\n <div fxLayout=\"row\" fxLayout.xs=\"column\" fxLayout.sm=\"column\" fxFlexFill>\r\n <mat-form-field fxFlex>\r\n <mat-label>Filter</mat-label>\r\n <input matInput [ngModel]='filterValue' (ngModelChange)='filterChanged.next($event)' #filter>\r\n </mat-form-field>\r\n </div>\r\n</div>\r\n\r\n<div class=\"table-container\">\r\n <div class=\"mat-elevation-z2\">\r\n <!-- #applicationsContainer -->\r\n <div class=\"example-loading-shade\" *ngIf=\"isLoadingResults || isRateLimitReached\">\r\n <mat-spinner *ngIf=\"isLoadingResults\"></mat-spinner>\r\n <div class=\"example-rate-limit-reached\" *ngIf=\"isRateLimitReached\">\r\n {{'General.LoadingData' | translate}}\r\n </div>\r\n </div>\r\n\r\n\r\n <mat-table fxFlex #table [dataSource]=\"dataSource\" id=\"tempalte-forms-table\" matSort matSortDisableClear\r\n matSortDirection=\"asc\" cdkDropList [cdkDropListData]=\"dataSource\" (cdkDropListDropped)=\"dropTable($event)\">\r\n\r\n\r\n <ng-container matColumnDef=\"position\">\r\n <mat-header-cell *matHeaderCellDef disableClear=\"true\">\r\n <!-- {{'General.Order' | translate}} -->\r\n </mat-header-cell>\r\n <mat-cell fxFlex *matCellDef=\"let element;\">\r\n <mat-icon cdkDragHandle>reorder</mat-icon>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngFor=\"let column of gridLayout\" [matColumnDef]=\"column.propertyName\"\r\n [sticky]=\"isColumnSticky(column.propertyName)\">\r\n <mat-header-cell mat-sort-header disableClear [style.flex]=\"getFlexStyle(column)\" *matHeaderCellDef>\r\n {{column.translateKey | translate}}\r\n </mat-header-cell>\r\n <mat-cell matTooltip={{getCelValue(row,column.propertyName)}} [style.flex]=\"getFlexStyle(column)\"\r\n [style.text-align]=\"getCellTextAlign(column)\" *matCellDef=\"let row\">{{getCelValue(row,column.propertyName)}}\r\n </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"delete\" stickyEnd *ngIf=\"!editOnClick && !editOnDblClick\">\r\n <mat-header-cell *matHeaderCellDef disableClear=\"true\">\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <button class=\"btn btn-green btn-fill btn-wd btn-just-icon\" (click)=\"editObject(row)\"\r\n matTooltip=\"{{'General.Edit' | translate}}\">\r\n <!-- <mat-icon>edit</mat-icon> -->\r\n <i class=\"material-icons\">edit</i>\r\n <div class=\"ripple-container\"></div>\r\n </button>\r\n <button class=\"btn btn-red btn-fill btn-wd btn-just-icon\" (click)=\"deleteObject(row)\"\r\n [disabled]=\"deleteDisabled(row)\" matTooltip=\"{{'General.Delete' | translate}}\">\r\n <i class=\"material-icons\">delete</i>\r\n <div class=\"ripple-container\"></div>\r\n </button>\r\n </mat-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns;sticky: true\"></mat-header-row>\r\n\r\n <ng-container *ngIf=\"!editOnClick && !editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (click)=\"highlight(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\">\r\n </mat-row>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"editOnClick && !editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (click)=\"editObject(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" style=\"cursor: pointer;\"></mat-row>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!editOnClick && editOnDblClick\">\r\n <mat-row *matRowDef=\"let row;let index = dataIndex; columns: displayedColumns;\" cdkDrag [cdkDragData]=\"row\"\r\n [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\" (dblclick)=\"editObject(row)\"\r\n (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" style=\"cursor: pointer;\"></mat-row>\r\n </ng-container>\r\n\r\n <!-- [ngClass]=\"{hovered: row.hovered, highlighted: row.highlighted}\"\r\n (click)=\"highlight(row)\" (mouseover)=\"row.hovered = true\" (mouseout)=\"row.hovered = false\" -->\r\n </mat-table>\r\n <mat-paginator #paginator [length]=\"resultsLength\" [pageSize]=\"15\" [pageSizeOptions]=\"[15, 30, 100]\"\r\n [showFirstLastButtons]=\"true\">\r\n </mat-paginator>\r\n </div>\r\n</div>", styles: [".mat-column-delete{flex:0 0 90px;padding-right:30px}.mat-sort-header-button{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-column-position{flex:0 0 60px!important}.mat-table{overflow-x:scroll}\n"] }]
|
313
|
+
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.Router }, { type: i3.DatePipe }, { type: i3.DecimalPipe }, { type: i3.PercentPipe }]; }, propDecorators: { modelType: [{
|
370
314
|
type: Input
|
371
315
|
}], baseService: [{
|
372
316
|
type: Input
|
@@ -404,8 +348,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
404
348
|
type: Input
|
405
349
|
}], changeItemPosition: [{
|
406
350
|
type: Input
|
407
|
-
}], infiniteScroll: [{
|
408
|
-
type: Input
|
409
351
|
}], paginator: [{
|
410
352
|
type: ViewChild,
|
411
353
|
args: [MatPaginator, { static: true }]
|
@@ -418,14 +360,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
|
|
418
360
|
}], table: [{
|
419
361
|
type: ViewChild,
|
420
362
|
args: ['table']
|
421
|
-
}], matTableRef: [{
|
422
|
-
type: ViewChild,
|
423
|
-
args: ['table', { read: ElementRef }]
|
424
363
|
}], selectedObject: [{
|
425
364
|
type: Output
|
426
|
-
}], click: [{
|
427
|
-
type: Output
|
428
365
|
}], editModel: [{
|
429
366
|
type: Output
|
430
367
|
}] } });
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvY29yZS9zcmMvbGliL2Jhc2UtY29tcG9uZW50cy9nZW5lcmljLXRhYmxlL2dlbmVyaWMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2NvcmUvc3JjL2xpYi9iYXNlLWNvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RSxPQUFPLEtBQUssU0FBUyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBYXZGLE1BQU0sT0FBTyxxQkFB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Q0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFVcUMsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDTSxNQUFNO3NCQUEvQyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3BCLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDK0IsV0FBVztzQkFBM0QsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUs5QixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFBlcmNlbnRQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgKiBhcyBqc29uTG9naWMgZnJvbSAnanNvbi1sb2dpYy1qcy9sb2dpYy5qcyc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVF1ZXJ5RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9iYXNlLXF1ZXJ5LWRhdGEnO1xyXG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyaWRMYXlvdXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLWxheW91dCc7XHJcbmltcG9ydCB7IENlbGxUZXh0QWxpZ24sIEdyaWRMYXlvdXRGb3JtYXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1sYXlvdXQtZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBSdWxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3J1bGUnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEdyaWRMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JpZC1sYXlvdXQuc2VydmljZSc7XHJcbmRlY2xhcmUgdmFyICQ6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnNsLWdlbmVyaWMtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJpY1RhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlTW9kZWw+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIC8vIGRpc3BsYXllZENvbHVtbnMgPSBbJ2NvZGUnXTsgLy8sICduYW1lJywgJ2NpZicsICdjaXR5JywgJ2FkZHJlc3MnLCAnc3RhdGUnLCAncHJpY2VMaXN0TmFtZScsICdkZWxldGUnXTtcclxuICBASW5wdXQoKSBtb2RlbFR5cGU6IG5ldyAoLi4uYXJnczogYW55W10pID0+IFQ7XHJcbiAgQElucHV0KCkgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlPFQ+O1xyXG4gIEBJbnB1dCgpIGdyaWRMYXlvdXRTZXJ2aWNlPzogR3JpZExheW91dFNlcnZpY2U8VD47XHJcbiAgQElucHV0KCkgZWRpdExpbms6IHN0cmluZztcclxuICBASW5wdXQoKSBkZWZhdWx0U29ydDogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSBkZWZhdWx0U29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9IG51bGw7XHJcbiAgQElucHV0KCkgZGVsZXRlRGlzYWJsZVJ1bGU6IFJ1bGVbXTtcclxuICBASW5wdXQoKSBkZWxldGVQcm9wZXJ0eU5hbWU6IHN0cmluZyA9ICduYW1lJztcclxuICBASW5wdXQoKSBoYXNTZWFyY2g6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGRzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVmYXVsdEZpbHRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFsbG93UmVvcmRlckl0ZW1zOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHN0aWNreUNvbHVtbnM6IHN0cmluZyA9IG51bGw7XHJcbiAgQElucHV0KCkgZWRpdE9uQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBlZGl0T25EYmxDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsbG93RWRpdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcG9wdXBFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tSW5jbHVkZTogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSBjaGFuZ2VJdGVtUG9zaXRpb246IChwcmV2SXRlbTogVCwgY3VycmVudEl0ZW06IFQpID0+IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8VD4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XHJcbiAgcmVzdWx0c0xlbmd0aCA9IDA7XHJcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IHRydWU7XHJcbiAgaXNSYXRlTGltaXRSZWFjaGVkID0gZmFsc2U7XHJcblxyXG4gIGZpbHRlclZhbHVlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBmaWx0ZXJDaGFuZ2VkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHJpdmF0ZSBmaWx0ZXJDaGFuZ2VkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb25cclxuXHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydDogTWF0U29ydDtcclxuICBAVmlld0NoaWxkKEVsZW1lbnRSZWYsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWx0ZXI6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZTogTWF0VGFibGU8YW55PjtcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwdWJsaWMgbWF0VGFibGVSZWY6IEVsZW1lbnRSZWY7XHJcbiAgcmVzaXplU3Vic2NyaXB0aW9uOiBhbnk7XHJcblxyXG4gIHNlbGVjdGVkSXRlbTogVDtcclxuICBncmlkTGF5b3V0OiBHcmlkTGF5b3V0TW9kZWxbXTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRPYmplY3Q6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuICBAT3V0cHV0KCkgY2xpY2s6IEV2ZW50RW1pdHRlcjx7IHByb3BlcnR5TmFtZTogc3RyaW5nLCBtb2RlbDogVCB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBwcm9wZXJ0eU5hbWU6IHN0cmluZywgbW9kZWw6IFQgfT4oKTtcclxuICBAT3V0cHV0KCkgZWRpdE1vZGVsOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcblxyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIC8vIHJ1bGVFbmdpbmVTZXJ2aWNlOiBSdWxlRW5naW5lU2VydmljZTxUPjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIG51bWJlclBpcGU6IERlY2ltYWxQaXBlLFxyXG4gICAgcHJpdmF0ZSBwZXJjZW50UGlwZTogUGVyY2VudFBpcGUsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuYmFzZVNlcnZpY2UgIT09IHVuZGVmaW5lZCB8fCB0aGlzLmJhc2VTZXJ2aWNlICE9PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRMYXlvdXRTZXJ2aWNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLmdyaWRMYXlvdXQgPSB0aGlzLmdyaWRMYXlvdXRTZXJ2aWNlLmdldEdyaWRMYXlvdXQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuYmFzZVNlcnZpY2UubmV3TW9kZWwoKTtcclxuICAgICAgICB0aGlzLmdyaWRMYXlvdXQgPSBtb2RlbC5nZXRHcmlkTGF5b3V0KCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gW107XHJcbiAgICAgIGlmICh0aGlzLmFsbG93UmVvcmRlckl0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3Bvc2l0aW9uJylcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaC5hcHBseSh0aGlzLmRpc3BsYXllZENvbHVtbnMsIHRoaXMuZ3JpZExheW91dC5tYXAoeCA9PiB4LnByb3BlcnR5TmFtZSkpO1xyXG4gICAgICBpZiAoIXRoaXMuZWRpdE9uQ2xpY2sgJiYgIXRoaXMuZWRpdE9uRGJsQ2xpY2sgJiYgdGhpcy5hbGxvd0VkaXQpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnZGVsZXRlJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDaGFuZ2VkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKG5ld1RleHQgPT4ge1xyXG4gICAgICAgIGlmIChuZXdUZXh0Lmxlbmd0aCA+PSAzIHx8IG5ld1RleHQubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBuZXdUZXh0O1xyXG5cclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIC8vIHRoaXMuZ2V0R3JpZExheW91dCgpO1xyXG4gICAgdGhpcy5zb3J0LnNvcnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDApO1xyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSAxNTtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgIHRoaXMuc29ydC5hY3RpdmUgPSB0aGlzLmRlZmF1bHRTb3J0O1xyXG4gICAgICBpZiAodGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc29ydC5kaXJlY3Rpb24gPSB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc29ydC5kaXJlY3Rpb24gPSAnYXNjJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuICAgIG1lcmdlKHRoaXMuc29ydC5zb3J0Q2hhbmdlLCB0aGlzLnBhZ2luYXRvci5wYWdlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoe30pLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcChkYXRhID0+IHtcclxuICAgICAgICAgIC8vIEZsaXAgZmxhZyB0byBzaG93IHRoYXQgbG9hZGluZyBoYXMgZmluaXNoZWQuXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNSYXRlTGltaXRSZWFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGggPSBkYXRhLmdldE1ldGEoKS5tZXRhLmNvdW50O1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YS5nZXRNb2RlbHMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gQ2F0Y2ggaWYgdGhlIEdpdEh1YiBBUEkgaGFzIHJlYWNoZWQgaXRzIHJhdGUgbGltaXQuIFJldHVybiBlbXB0eSBkYXRhLlxyXG4gICAgICAgICAgdGhpcy5pc1JhdGVMaW1pdFJlYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAvLyBpZiAodGhpcy5pbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICAgIC8vICAgbGV0IG9sZERhdGEgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YSA/PyBudWxsO1xyXG4gICAgICAgIC8vICAgLy8gaWYgKG9sZERhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgLy8gICAvLyAgIG9sZERhdGEgPSBkYXRhO1xyXG4gICAgICAgIC8vICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgb2xkRGF0YT1vbGREYXRhLmNvbmNhdChkYXRhKTtcclxuICAgICAgICAvLyAgIC8vIH1cclxuICAgICAgICAvLyAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gb2xkRGF0YTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgfSk7XHJcbiAgICAvLyB0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpXHJcbiAgfVxyXG4gIGdldERhdGEoKTogT2JzZXJ2YWJsZTxCYXNlUXVlcnlEYXRhPFQ+PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMgPSB0cnVlO1xyXG4gICAgY29uc3QgcGFnZUluZGV4ID0gKHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCB8fCAwKSArIDE7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMucGFnaW5hdG9yLnBhZ2VTaXplIHx8IDIwO1xyXG4gICAgY29uc3QgZmlsdGVycyA9IFtdO1xyXG5cclxuICAgIGxldCBzb3J0cyA9ICcnO1xyXG4gICAgaWYgKHRoaXMuc29ydC5hY3RpdmUpIHtcclxuICAgICAgaWYgKHRoaXMuc29ydC5kaXJlY3Rpb24gPT09ICdkZXNjJykge1xyXG4gICAgICAgIHNvcnRzID0gJy0nICsgdGhpcy5zb3J0LmFjdGl2ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3J0cyA9IHRoaXMuc29ydC5hY3RpdmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmhhc1NlYXJjaCkge1xyXG4gICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgIC8vIGNvbnN0IGZpbHRlcnNBcnIgPSB0aGlzLnNlYXJjaEZpZWxkcy5zcGxpdChcIixcIik7XHJcbiAgICAgICAgLy8gZmlsdGVyc0Fyci5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIC8vICAgZmlsdGVycy5wdXNoKGVsZW1lbnQgKyAnQD0qJyArIHRoaXMuZmlsdGVyVmFsdWUpO1xyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIGNvbnN0IHkgPSAnKCcgKyB0aGlzLnNlYXJjaEZpZWxkcy5yZXBsYWNlKCcsJywgJ3wnKSArICcpJztcclxuICAgICAgICBmaWx0ZXJzLnB1c2goeSArICdAPSonICsgdGhpcy5maWx0ZXJWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRlZmF1bHRGaWx0ZXIpIHtcclxuICAgICAgZmlsdGVycy5wdXNoKHRoaXMuZGVmYXVsdEZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJzVmFsdWUgPSBmaWx0ZXJzLmpvaW4oJywgJyk7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlU2VydmljZS5nZXRBbGwocGFnZUluZGV4LCBwYWdlU2l6ZSwgc29ydHMsIGZpbHRlcnNWYWx1ZSwgdGhpcy5jdXN0b21JbmNsdWRlKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hGb3JtKCkge1xyXG4gICAgdGhpcy5nZXREYXRhKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNSYXRlTGltaXRSZWFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXN1bHRzTGVuZ3RoID0gZGF0YS5nZXRNZXRhKCkubWV0YS5jb3VudDtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGEuZ2V0TW9kZWxzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1JhdGVMaW1pdFJlYWNoZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGggPSAwO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGhpZ2hsaWdodChlbGVtZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbS5oaWdobGlnaHRlZCA9IGVsZW1lbnQuaGlnaGxpZ2h0ZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XHJcbiAgICBlbGVtZW50LmhpZ2hsaWdodGVkID0gIWVsZW1lbnQuaGlnaGxpZ2h0ZWQ7XHJcbiAgICBpZiAoZWxlbWVudC5oaWdobGlnaHRlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGVsZW1lbnQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3QuZW1pdChlbGVtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3QuZW1pdChudWxsKTtcclxuICAgIH1cclxuICB9XHJcbiAgZGVsZXRlT2JqZWN0KG1vZGVsOiBUKSB7XHJcbiAgICBjb25zdCBtc2cgPSAnRG8geW91IHdhbnQgdG8gZGVsZXRlICcgKyBtb2RlbFt0aGlzLmRlbGV0ZVByb3BlcnR5TmFtZV0gKyAnPyc7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybShtc2cpLnN1YnNjcmliZSgocmVzcG9uc2U6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgdGhpcy5iYXNlU2VydmljZS5kZWxldGUobW9kZWwuaWQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB0ZW1wRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KG51bGwpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlkICE9PSBtb2RlbC5pZCkge1xyXG4gICAgICAgICAgICAgIHRlbXBEYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0ZW1wRGF0YTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGVkaXRPYmplY3QobW9kZWw6IFQpIHtcclxuICAgIGlmICghdGhpcy5wb3B1cEVkaXQpIHtcclxuICAgICAgY29uc3QgaWQgPSBtb2RlbC5pZDtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuZWRpdExpbmssIGlkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRNb2RlbC5lbWl0KG1vZGVsKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0RmxleFN0eWxlKGNvbHVtbjogR3JpZExheW91dE1vZGVsKSB7XHJcbiAgICBpZiAoY29sdW1uLndpZHRoKSB7XHJcbiAgICAgIGNvbnN0IHN0eWxlID0gY29sdW1uLmdyb3cgKyAnICcgKyBjb2x1bW4uc2hyaW5rICsgJyAnICsgY29sdW1uLndpZHRoICsgJ3B4JztcclxuICAgICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRDZWxsVGV4dEFsaWduKGNvbHVtbjogR3JpZExheW91dE1vZGVsKSB7XHJcbiAgICByZXR1cm4gY29sdW1uLnRleHRBbGlnbiA/PyBDZWxsVGV4dEFsaWduLmxlZnQ7XHJcbiAgfVxyXG5cclxuICBzaG93UGljdHVyZUNlbGwoY29sdW1uOiBHcmlkTGF5b3V0TW9kZWwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoY29sdW1uPy5mb3JtYXRpbmcgPz8gR3JpZExheW91dEZvcm1hdC5ub25lKT09PUdyaWRMYXlvdXRGb3JtYXQucGljdHVyZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZURpc2FibGVkKG1vZGVsOiBUKSB7XHJcbiAgICBpZiAodGhpcy5kZWxldGVEaXNhYmxlUnVsZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZVJ1bGUodGhpcy5kZWxldGVEaXNhYmxlUnVsZSwgbW9kZWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjZWxsQ2xpY2sobW9kZWw6IFQsIHByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsaWNrLmVtaXQoeyBwcm9wZXJ0eU5hbWUsIG1vZGVsIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsdWF0ZVJ1bGUocnVsZXM6IFJ1bGVbXSwgbW9kZWw6IFQpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSB0cnVlO1xyXG4gICAgcnVsZXMuZm9yRWFjaChydWxlID0+IHtcclxuICAgICAgbGV0IGpzb25SdWxlOiBhbnk7XHJcbiAgICAgIGlmICh0eXBlb2YgcnVsZS5ydWxlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGpzb25SdWxlID0gSlNPTi5wYXJzZShydWxlLnJ1bGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGpzb25SdWxlID0gcnVsZS5ydWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChydWxlLnBhcmFtZXRlcnMpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gJ3snICsgcnVsZS5wYXJhbWV0ZXJzLm1hcCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gJ1wiJyArIGl0ZW0gKyAnXCI6XCInICsgbW9kZWxbaXRlbV0gKyAnXCInO1xyXG4gICAgICAgIH0pLmpvaW4oJywnKSArICd9JztcclxuICAgICAgICByZXN1bHQgPSBqc29uTG9naWMuYXBwbHkoanNvblJ1bGUsIEpTT04ucGFyc2UoZGF0YSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IGpzb25Mb2dpYy5hcHBseShqc29uUnVsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgZ2V0Q2VsVmFsdWUocm93OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGlmICghcm93KVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIC8vIGlmIChwcm9wZXJ0eU5hbWUgPT0gJ2tvbXBldGVuemVuU3RkZXYnKVxyXG4gICAgLy8gICBjb25zb2xlLmxvZyhwcm9wZXJ0eU5hbWUpO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5pbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgIHZhciBncmlkTGF5b3V0ID0gdGhpcy5ncmlkTGF5b3V0LmZpbmQoZiA9PiBmLnByb3BlcnR5TmFtZS5pbmRleE9mKHByb3BlcnR5TmFtZSkgPiAtMSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdGVkVmFsdWUoZ3JpZExheW91dCwgcm93W3Byb3BlcnR5TmFtZV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcHJvcCA9IHByb3BlcnR5TmFtZS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICBjb25zdCBzdWJQcm9wID0gcHJvcGVydHlOYW1lLnJlcGxhY2UocHJvcCArICcuJywgJycpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDZWxWYWx1ZShyb3dbcHJvcF0sIHN1YlByb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIGdldEZvcm1hdGVkVmFsdWUoZ3JpZExheW91dDogR3JpZExheW91dE1vZGVsLCB2YWx1ZTogYW55KSB7XHJcblxyXG4gICAgaWYgKGdyaWRMYXlvdXQpIHtcclxuICAgICAgc3dpdGNoIChncmlkTGF5b3V0LmZvcm1hdGluZykge1xyXG4gICAgICAgIGNhc2UgR3JpZExheW91dEZvcm1hdC5kYXRlOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBncmlkTGF5b3V0LmZvcm1hdCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQubnVtYmVyOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubnVtYmVyUGlwZS50cmFuc2Zvcm0odmFsdWUsIGdyaWRMYXlvdXQuZm9ybWF0KTtcclxuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQucGVyY2VudDpcclxuICAgICAgICAgIGNvbnN0IHZhbHVlUHJjID0gdmFsdWUgLyAxMDA7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5wZXJjZW50UGlwZS50cmFuc2Zvcm0odmFsdWVQcmMsIGdyaWRMYXlvdXQuZm9ybWF0KTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgfVxyXG4gIGRyb3BUYWJsZShldmVudDogQ2RrRHJhZ0Ryb3A8YW55Pikge1xyXG4gICAgaWYgKHRoaXMuY2hhbmdlSXRlbVBvc2l0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHByZXZJdGVtID0gdGhpcy5kYXRhU291cmNlLmRhdGFbZXZlbnQucHJldmlvdXNJbmRleF07XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5kYXRhU291cmNlLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNoYW5nZUl0ZW1Qb3NpdGlvbihwcmV2SXRlbSwgY3VycmVudEl0ZW0pKSB7XHJcbiAgICAgICAgY29uc3QgcHJldkluZGV4ID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZEluZGV4KChkKSA9PiBkID09PSBldmVudC5pdGVtLmRhdGEpO1xyXG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGFTb3VyY2UuZGF0YSwgcHJldkluZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgICAgIHRoaXMudGFibGUucmVuZGVyUm93cygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzQ29sdW1uU3RpY2t5KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuc3RpY2t5Q29sdW1ucykge1xyXG4gICAgICBjb25zdCBmaWx0ZXJzQXJyID0gdGhpcy5zdGlja3lDb2x1bW5zLnNwbGl0KFwiLFwiKTtcclxuICAgICAgcmV0dXJuIGZpbHRlcnNBcnIuZmluZEluZGV4KGYgPT4gZiA9PSBuYW1lKSAhPT0gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIHVwZGF0ZUVsZW1lbnQobW9kZWw6IFQpIHtcclxuICAgIC8vRmluZCBpZiBlbGVtZW50IGV4aXN0XHJcbiAgICB2YXIgY3VycmVudEVsZW1lbnQgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kKGYgPT4gZi5pZCA9PT0gbW9kZWwuaWQpO1xyXG4gICAgaWYgKGN1cnJlbnRFbGVtZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhU291cmNlLmRhdGEuaW5kZXhPZihjdXJyZW50RWxlbWVudCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhW2luZGV4XSA9IG1vZGVsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEucHVzaChtb2RlbCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdEYXRhID0gWy4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gbmV3RGF0YTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBmcm9tRXZlbnQodGhpcy5tYXRUYWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJylcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDcwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGU6IGFueSkgPT4gdGhpcy5vblRhYmxlU2Nyb2xsKGUpKTtcclxuICB9XHJcbiAgb25UYWJsZVNjcm9sbChlKSB7XHJcbiAgICBjb25zdCB0YWJsZVZpZXdIZWlnaHQgPSBlLnRhcmdldC5vZmZzZXRIZWlnaHQgLy8gdmlld3BvcnQ6IH41MDBweFxyXG4gICAgY29uc3QgdGFibGVTY3JvbGxIZWlnaHQgPSBlLnRhcmdldC5zY3JvbGxIZWlnaHQgLy8gbGVuZ3RoIG9mIGFsbCB0YWJsZVxyXG4gICAgY29uc3Qgc2Nyb2xsTG9jYXRpb24gPSBlLnRhcmdldC5zY3JvbGxUb3A7IC8vIGhvdyBmYXIgdXNlciBzY3JvbGxlZFxyXG5cclxuICAgIC8vIElmIHRoZSB1c2VyIGhhcyBzY3JvbGxlZCB3aXRoaW4gMjAwcHggb2YgdGhlIGJvdHRvbSwgYWRkIG1vcmUgZGF0YVxyXG4gICAgY29uc3Qgc2Nyb2xsVGhyZXNob2xkID0gMjAwO1xyXG5cclxuICAgIGNvbnN0IHNjcm9sbFVwTGltaXQgPSBzY3JvbGxUaHJlc2hvbGQ7XHJcbiAgICBpZiAoc2Nyb2xsTG9jYXRpb24gPCBzY3JvbGxVcExpbWl0ICYmIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA+IDApIHtcclxuICAgICAgLy8gdGhpcy5maXJzdFBhZ2UtLTtcclxuICAgICAgY29uc29sZS5sb2coYG9uVGFibGVTY3JvbGwoKSBVUDogZmlyc3RQYWdlIGRlY3JlYXNlZCB0byAke3RoaXMucGFnaW5hdG9yLnBhZ2VJbmRleH0uIE5vdyBmZXRjaGluZyBkYXRhLi4uYCk7XHJcbiAgICAgIC8vIHRoaXMuZmV0Y2hEYXRhKCk7XHJcblxyXG4gICAgICB0aGlzLnNjcm9sbFRvKHRhYmxlU2Nyb2xsSGVpZ2h0IC8gMiAtIDIgKiB0YWJsZVZpZXdIZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNjcm9sbERvd25MaW1pdCA9IHRhYmxlU2Nyb2xsSGVpZ2h0IC0gdGFibGVWaWV3SGVpZ2h0IC0gc2Nyb2xsVGhyZXNob2xkO1xyXG4gICAgaWYgKHNjcm9sbExvY2F0aW9uID4gc2Nyb2xsRG93bkxpbWl0ICYmIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA8IHRoaXMucGFnaW5hdG9yLmdldE51bWJlck9mUGFnZXMoKSkge1xyXG4gICAgICAvLyB0aGlzLmZpcnN0UGFnZSsrO1xyXG4gICAgICBjb25zb2xlLmxvZyhgb25UYWJsZVNjcm9sbCgpOiBmaXJzdFBhZ2UgaW5jcmVhc2VkIHRvICR7dGhpcy5wYWdpbmF0b3IucGFnZUluZGV4fS4gTm93IGZldGNoaW5nIGRhdGEuLi5gKTtcclxuICAgICAgdGhpcy5wYWdpbmF0b3IubmV4dFBhZ2UoKTtcclxuICAgICAgLy8gdGhpcy5zY3JvbGxUbyh0YWJsZVNjcm9sbEhlaWdodCAvIDIgKyB0YWJsZVZpZXdIZWlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHNjcm9sbFRvKHBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5tYXRUYWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsVG9wJywgcG9zaXRpb24pO1xyXG4gIH1cclxuICBnZXRDZWxsQ2xhc3MobW9kZWw6IFQsIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBtb2RlbC5nZXRDZWxsQ2xhc3MocHJvcGVydHkpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyWFwiICpuZ0lmPVwiaGFzU2VhcmNoXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0LnhzPVwiY29sdW1uXCIgZnhMYXlvdXQuc209XCJjb2x1bW5cIiBmeEZsZXhGaWxsPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGZ4RmxleD5cclxuICAgICAgPG1hdC1sYWJlbD5GaWx0ZXI8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtuZ01vZGVsXT0nZmlsdGVyVmFsdWUnIChuZ01vZGVsQ2hhbmdlKT0nZmlsdGVyQ2hhbmdlZC5uZXh0KCRldmVudCknICNmaWx0ZXI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MlwiPlxyXG4gICAgPCEtLSAgI2FwcGxpY2F0aW9uc0NvbnRhaW5lciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWxvYWRpbmctc2hhZGVcIiAqbmdJZj1cImlzTG9hZGluZ1Jlc3VsdHMgfHwgaXNSYXRlTGltaXRSZWFjaGVkXCI+XHJcbiAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1Jlc3VsdHNcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1yYXRlLWxpbWl0LXJlYWNoZWRcIiAqbmdJZj1cImlzUmF0ZUxpbWl0UmVhY2hlZFwiPlxyXG4gICAgICAgIHt7J0dlbmVyYWwuTG9hZGluZ0RhdGEnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPG1hdC10YWJsZSBmeEZsZXggI3RhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBpZD1cInRlbXBhbHRlLWZvcm1zLXRhYmxlXCIgbWF0U29ydCBtYXRTb3J0RGlzYWJsZUNsZWFyXHJcbiAgICAgIG1hdFNvcnREaXJlY3Rpb249XCJhc2NcIiBjZGtEcm9wTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cImRhdGFTb3VyY2VcIiAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BUYWJsZSgkZXZlbnQpXCI+XHJcbiAgICAgIDwhLS0gKHNjcm9sbCk9XCJvblRhYmxlU2Nyb2xsKCRldmVudClcIiAtLT5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInBvc2l0aW9uXCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBkaXNhYmxlQ2xlYXI9XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8IS0tIHt7J0dlbmVyYWwuT3JkZXInIHwgdHJhbnNsYXRlfX0gLS0+XHJcbiAgICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgPG1hdC1jZWxsIGZ4RmxleCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50O1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNka0RyYWdIYW5kbGU+cmVvcmRlcjwvbWF0LWljb24+XHJcbiAgICAgICAgPC9tYXQtY2VsbD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGdyaWRMYXlvdXRcIiBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5wcm9wZXJ0eU5hbWVcIlxyXG4gICAgICAgIFtzdGlja3ldPVwiaXNDb2x1bW5TdGlja3koY29sdW1uLnByb3BlcnR5TmFtZSlcIj5cclxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsIG1hdC1zb3J0LWhlYWRlciBkaXNhYmxlQ2xlYXIgW3N0eWxlLmZsZXhdPVwiZ2V0RmxleFN0eWxlKGNvbHVtbilcIiAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgIHt7Y29sdW1uLnRyYW5zbGF0ZUtleSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XHJcbiAgICAgICAgPG1hdC1jZWxsIG1hdFRvb2x0aXA9e3tnZXRDZWxWYWx1ZShyb3csY29sdW1uLnByb3BlcnR5TmFtZSl9fSBbc3R5bGUuZmxleF09XCJnZXRGbGV4U3R5bGUoY29sdW1uKVwiXHJcbiAgICAgICAgICBbc3R5bGUudGV4dC1hbGlnbl09XCJnZXRDZWxsVGV4dEFsaWduKGNvbHVtbilcIiAqbWF0Q2VsbERlZj1cImxldCByb3dcIiAgKGNsaWNrKT1cImNlbGxDbGljayhyb3csY29sdW1uLnByb3BlcnR5TmFtZSlcIj5cclxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzKHJvdyxjb2x1bW4ucHJvcGVydHlOYW1lKVwiICpuZ0lmPVwiIXNob3dQaWN0dXJlQ2VsbChjb2x1bW4pXCI+XHJcbiAgICAgICAgICAgIHt7Z2V0Q2VsVmFsdWUocm93LGNvbHVtbi5wcm9wZXJ0eU5hbWUpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGltZyBbbmdDbGFzc109XCJnZXRDZWxsQ2xhc3Mocm93LGNvbHVtbi5wcm9wZXJ0eU5hbWUpXCIgKm5nSWY9XCJzaG93UGljdHVyZUNlbGwoY29sdW1uKVwiPlxyXG4gICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZGVsZXRlXCIgc3RpY2t5RW5kICpuZ0lmPVwiIWVkaXRPbkNsaWNrICYmICFlZGl0T25EYmxDbGlja1wiPlxyXG4gICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgZGlzYWJsZUNsZWFyPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWdyZWVuIGJ0bi1maWxsIGJ0bi13ZCBidG4tanVzdC1pY29uXCIgKGNsaWNrKT1cImVkaXRPYmplY3Qocm93KVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydHZW5lcmFsLkVkaXQnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgPCEtLSA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZWRpdDwvaT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpcHBsZS1jb250YWluZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcmVkIGJ0bi1maWxsIGJ0bi13ZCBidG4tanVzdC1pY29uXCIgKGNsaWNrKT1cImRlbGV0ZU9iamVjdChyb3cpXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRlbGV0ZURpc2FibGVkKHJvdylcIiBtYXRUb29sdGlwPVwie3snR2VuZXJhbC5EZWxldGUnIHwgdHJhbnNsYXRlfX1cIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmRlbGV0ZTwvaT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpcHBsZS1jb250YWluZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWNlbGw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zO3N0aWNreTogdHJ1ZVwiPjwvbWF0LWhlYWRlci1yb3c+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVkaXRPbkNsaWNrICYmICFlZGl0T25EYmxDbGlja1wiPlxyXG4gICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93O2xldCBpbmRleCA9IGRhdGFJbmRleDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJyb3dcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie2hvdmVyZWQ6IHJvdy5ob3ZlcmVkLCBoaWdobGlnaHRlZDogcm93LmhpZ2hsaWdodGVkfVwiIChjbGljayk9XCJoaWdobGlnaHQocm93KVwiXHJcbiAgICAgICAgICAobW91c2VvdmVyKT1cInJvdy5ob3ZlcmVkID0gdHJ1ZVwiIChtb3VzZW91dCk9XCJyb3cuaG92ZXJlZCA9IGZhbHNlXCI+XHJcbiAgICAgICAgPC9tYXQtcm93PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0T25DbGljayAmJiAhZWRpdE9uRGJsQ2xpY2tcIj5cclxuICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdztsZXQgaW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwicm93XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcmVkOiByb3cuaG92ZXJlZCwgaGlnaGxpZ2h0ZWQ6IHJvdy5oaWdobGlnaHRlZH1cIiAoY2xpY2spPVwiZWRpdE9iamVjdChyb3cpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwicm93LmhvdmVyZWQgPSB0cnVlXCIgKG1vdXNlb3V0KT1cInJvdy5ob3ZlcmVkID0gZmFsc2VcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj48L21hdC1yb3c+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlZGl0T25DbGljayAmJiBlZGl0T25EYmxDbGlja1wiPlxyXG4gICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93O2xldCBpbmRleCA9IGRhdGFJbmRleDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIiBjZGtEcmFnIFtjZGtEcmFnRGF0YV09XCJyb3dcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie2hvdmVyZWQ6IHJvdy5ob3ZlcmVkLCBoaWdobGlnaHRlZDogcm93LmhpZ2hsaWdodGVkfVwiIChkYmxjbGljayk9XCJlZGl0T2JqZWN0KHJvdylcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImhpZ2hsaWdodChyb3cpXCIgKG1vdXNlb3Zlcik9XCJyb3cuaG92ZXJlZCA9IHRydWVcIiAobW91c2VvdXQpPVwicm93LmhvdmVyZWQgPSBmYWxzZVwiXHJcbiAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj48L21hdC1yb3c+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBbbmdDbGFzc109XCJ7aG92ZXJlZDogcm93LmhvdmVyZWQsIGhpZ2hsaWdodGVkOiByb3cuaGlnaGxpZ2h0ZWR9XCJcclxuICAgICAgICAoY2xpY2spPVwiaGlnaGxpZ2h0KHJvdylcIiAobW91c2VvdmVyKT1cInJvdy5ob3ZlcmVkID0gdHJ1ZVwiIChtb3VzZW91dCk9XCJyb3cuaG92ZXJlZCA9IGZhbHNlXCIgLS0+XHJcbiAgICA8L21hdC10YWJsZT5cclxuICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2hpZGRlbl09XCJpbmZpbml0ZVNjcm9sbFwiIFtsZW5ndGhdPVwicmVzdWx0c0xlbmd0aFwiIFtwYWdlU2l6ZV09XCIxNVwiXHJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzE1LCAzMCwgIDEwMF1cIiBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiPlxyXG4gICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvY29yZS9zcmMvbGliL2Jhc2UtY29tcG9uZW50cy9nZW5lcmljLXRhYmxlL2dlbmVyaWMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2NvcmUvc3JjL2xpYi9iYXNlLWNvbXBvbmVudHMvZ2VuZXJpYy10YWJsZS9nZW5lcmljLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBWSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZFLE9BQU8sS0FBSyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNHLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBWXZGLE1BQU0sT0FBTyxxQkFBcUI7SUEyQ2hDLDJDQUEyQztJQUMzQyxZ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QVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBV3FDLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSCxJQUFJO3NCQUF6QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ00sTUFBTTtzQkFBL0MsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNwQixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBS1IsY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFBlcmNlbnRQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgKiBhcyBqc29uTG9naWMgZnJvbSAnanNvbi1sb2dpYy1qcy9sb2dpYy5qcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VRdWVyeURhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZS1xdWVyeS1kYXRhJztcclxuaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBHcmlkTGF5b3V0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBDZWxsVGV4dEFsaWduLCBHcmlkTGF5b3V0Rm9ybWF0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtbGF5b3V0LWZvcm1hdC5lbnVtJztcclxuaW1wb3J0IHsgUnVsZSB9IGZyb20gJy4uLy4uL21vZGVscy9ydWxlJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHcmlkTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2dyaWQtbGF5b3V0LnNlcnZpY2UnO1xyXG5kZWNsYXJlIHZhciAkOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1nZW5lcmljLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljVGFibGVDb21wb25lbnQ8VCBleHRlbmRzIEJhc2VNb2RlbD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgLy8gZGlzcGxheWVkQ29sdW1ucyA9IFsnY29kZSddOyAvLywgJ25hbWUnLCAnY2lmJywgJ2NpdHknLCAnYWRkcmVzcycsICdzdGF0ZScsICdwcmljZUxpc3ROYW1lJywgJ2RlbGV0ZSddO1xyXG4gIEBJbnB1dCgpIG1vZGVsVHlwZTogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcclxuICBASW5wdXQoKSBiYXNlU2VydmljZTogQmFzZVNlcnZpY2U8VD47XHJcbiAgQElucHV0KCkgZ3JpZExheW91dFNlcnZpY2U/OiBHcmlkTGF5b3V0U2VydmljZTxUPjtcclxuICBASW5wdXQoKSBlZGl0TGluazogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRTb3J0OiBzdHJpbmcgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRTb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uID0gbnVsbDtcclxuICBASW5wdXQoKSBkZWxldGVEaXNhYmxlUnVsZTogUnVsZVtdO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZVByb3BlcnR5TmFtZTogc3RyaW5nID0gJ25hbWUnO1xyXG4gIEBJbnB1dCgpIGhhc1NlYXJjaDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWFyY2hGaWVsZHM6IHN0cmluZztcclxuICBASW5wdXQoKSBkZWZhdWx0RmlsdGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYWxsb3dSZW9yZGVySXRlbXM6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc3RpY2t5Q29sdW1uczogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSBlZGl0T25DbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVkaXRPbkRibENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWxsb3dFZGl0OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwb3B1cEVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjdXN0b21JbmNsdWRlOiBzdHJpbmcgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGNoYW5nZUl0ZW1Qb3NpdGlvbjogKHByZXZJdGVtOiBULCBjdXJyZW50SXRlbTogVCkgPT4gYm9vbGVhbjtcclxuXHJcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPFQ+ID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xyXG4gIHJlc3VsdHNMZW5ndGggPSAwO1xyXG4gIGlzTG9hZGluZ1Jlc3VsdHMgPSB0cnVlO1xyXG4gIGlzUmF0ZUxpbWl0UmVhY2hlZCA9IGZhbHNlO1xyXG5cclxuICBmaWx0ZXJWYWx1ZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgZmlsdGVyQ2hhbmdlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiB0cnVlIH0pIHNvcnQ6IE1hdFNvcnQ7XHJcbiAgQFZpZXdDaGlsZChFbGVtZW50UmVmLCB7IHN0YXRpYzogZmFsc2UgfSkgZmlsdGVyOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGU6IE1hdFRhYmxlPGFueT47XHJcbiAgcmVzaXplU3Vic2NyaXB0aW9uOiBhbnk7XHJcblxyXG4gIHNlbGVjdGVkSXRlbTogVDtcclxuICBncmlkTGF5b3V0OiBHcmlkTGF5b3V0TW9kZWxbXTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRPYmplY3Q6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuICBAT3V0cHV0KCkgZWRpdE1vZGVsOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcblxyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdO1xyXG4gIC8vIHJ1bGVFbmdpbmVTZXJ2aWNlOiBSdWxlRW5naW5lU2VydmljZTxUPjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIG51bWJlclBpcGU6IERlY2ltYWxQaXBlLFxyXG4gICAgcHJpdmF0ZSBwZXJjZW50UGlwZTogUGVyY2VudFBpcGVcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuYmFzZVNlcnZpY2UgIT09IHVuZGVmaW5lZCB8fCB0aGlzLmJhc2VTZXJ2aWNlICE9PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRMYXlvdXRTZXJ2aWNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLmdyaWRMYXlvdXQgPSB0aGlzLmdyaWRMYXlvdXRTZXJ2aWNlLmdldEdyaWRMYXlvdXQoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuYmFzZVNlcnZpY2UubmV3TW9kZWwoKTtcclxuICAgICAgICB0aGlzLmdyaWRMYXlvdXQgPSBtb2RlbC5nZXRHcmlkTGF5b3V0KCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gW107XHJcbiAgICAgIGlmICh0aGlzLmFsbG93UmVvcmRlckl0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3Bvc2l0aW9uJylcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaC5hcHBseSh0aGlzLmRpc3BsYXllZENvbHVtbnMsIHRoaXMuZ3JpZExheW91dC5tYXAoeCA9PiB4LnByb3BlcnR5TmFtZSkpO1xyXG4gICAgICBpZiAoIXRoaXMuZWRpdE9uQ2xpY2sgJiYgIXRoaXMuZWRpdE9uRGJsQ2xpY2sgJiYgdGhpcy5hbGxvd0VkaXQpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMucHVzaCgnZGVsZXRlJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDaGFuZ2VkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKG5ld1RleHQgPT4ge1xyXG4gICAgICAgIGlmIChuZXdUZXh0Lmxlbmd0aCA+PSAzIHx8IG5ld1RleHQubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBuZXdUZXh0O1xyXG5cclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIC8vIHRoaXMuZ2V0R3JpZExheW91dCgpO1xyXG4gICAgdGhpcy5zb3J0LnNvcnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDApO1xyXG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSAxNTtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgIHRoaXMuc29ydC5hY3RpdmUgPSB0aGlzLmRlZmF1bHRTb3J0O1xyXG4gICAgICBpZiAodGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc29ydC5kaXJlY3Rpb24gPSB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc29ydC5kaXJlY3Rpb24gPSAnYXNjJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuICAgIG1lcmdlKHRoaXMuc29ydC5zb3J0Q2hhbmdlLCB0aGlzLnBhZ2luYXRvci5wYWdlKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoe30pLFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcChkYXRhID0+IHtcclxuICAgICAgICAgIC8vIEZsaXAgZmxhZyB0byBzaG93IHRoYXQgbG9hZGluZyBoYXMgZmluaXNoZWQuXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNSYXRlTGltaXRSZWFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGggPSBkYXRhLmdldE1ldGEoKS5tZXRhLmNvdW50O1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YS5nZXRNb2RlbHMoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gQ2F0Y2ggaWYgdGhlIEdpdEh1YiBBUEkgaGFzIHJlYWNoZWQgaXRzIHJhdGUgbGltaXQuIFJldHVybiBlbXB0eSBkYXRhLlxyXG4gICAgICAgICAgdGhpcy5pc1JhdGVMaW1pdFJlYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcbiAgZ2V0RGF0YSgpOiBPYnNlcnZhYmxlPEJhc2VRdWVyeURhdGE8VD4+IHtcclxuICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cyA9IHRydWU7XHJcbiAgICBjb25zdCBwYWdlSW5kZXggPSAodGhpcy5wYWdpbmF0b3IucGFnZUluZGV4IHx8IDApICsgMTtcclxuICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgfHwgMjA7XHJcbiAgICBjb25zdCBmaWx0ZXJzID0gW107XHJcblxyXG4gICAgbGV0IHNvcnRzID0gJyc7XHJcbiAgICBpZiAodGhpcy5zb3J0LmFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5zb3J0LmRpcmVjdGlvbiA9PT0gJ2Rlc2MnKSB7XHJcbiAgICAgICAgc29ydHMgPSAnLScgKyB0aGlzLnNvcnQuYWN0aXZlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNvcnRzID0gdGhpcy5zb3J0LmFjdGl2ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGFzU2VhcmNoKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgLy8gY29uc3QgZmlsdGVyc0FyciA9IHRoaXMuc2VhcmNoRmllbGRzLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAvLyBmaWx0ZXJzQXJyLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgLy8gICBmaWx0ZXJzLnB1c2goZWxlbWVudCArICdAPSonICsgdGhpcy5maWx0ZXJWYWx1ZSk7XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgY29uc3QgeSA9ICcoJyArIHRoaXMuc2VhcmNoRmllbGRzLnJlcGxhY2UoJywnLCAnfCcpICsgJyknO1xyXG4gICAgICAgIGZpbHRlcnMucHVzaCh5ICsgJ0A9KicgKyB0aGlzLmZpbHRlclZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGVmYXVsdEZpbHRlcikge1xyXG4gICAgICBmaWx0ZXJzLnB1c2godGhpcy5kZWZhdWx0RmlsdGVyKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlcnNWYWx1ZSA9IGZpbHRlcnMuam9pbignLCAnKTtcclxuICAgIHJldHVybiB0aGlzLmJhc2VTZXJ2aWNlLmdldEFsbChwYWdlSW5kZXgsIHBhZ2VTaXplLCBzb3J0cywgZmlsdGVyc1ZhbHVlLCB0aGlzLmN1c3RvbUluY2x1ZGUpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaEZvcm0oKSB7XHJcbiAgICB0aGlzLmdldERhdGEoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdSZXN1bHRzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1JhdGVMaW1pdFJlYWNoZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGggPSBkYXRhLmdldE1ldGEoKS5tZXRhLmNvdW50O1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YS5nZXRNb2RlbHMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzUmF0ZUxpbWl0UmVhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aCA9IDA7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgaGlnaGxpZ2h0KGVsZW1lbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmhpZ2hsaWdodGVkID0gZWxlbWVudC5oaWdobGlnaHRlZDtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcclxuICAgIGVsZW1lbnQuaGlnaGxpZ2h0ZWQgPSAhZWxlbWVudC5oaWdobGlnaHRlZDtcclxuICAgIGlmIChlbGVtZW50LmhpZ2hsaWdodGVkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZWxlbWVudDtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9iamVjdC5lbWl0KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuICBkZWxldGVPYmplY3QobW9kZWw6IFQpIHtcclxuICAgIGNvbnN0IG1zZyA9ICdEbyB5b3Ugd2FudCB0byBkZWxldGUgJyArIG1vZGVsW3RoaXMuZGVsZXRlUHJvcGVydHlOYW1lXSArICc/JztcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKG1zZykuc3Vic2NyaWJlKChyZXNwb25zZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmRlbGV0ZShtb2RlbC5pZCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRlbXBEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT2JqZWN0LmVtaXQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgIT09IG1vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgICAgdGVtcERhdGEucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRlbXBEYXRhO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZWRpdE9iamVjdChtb2RlbDogVCkge1xyXG4gICAgaWYgKCF0aGlzLnBvcHVwRWRpdCkge1xyXG4gICAgICBjb25zdCBpZCA9IG1vZGVsLmlkO1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5lZGl0TGluaywgaWRdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdE1vZGVsLmVtaXQobW9kZWwpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRGbGV4U3R5bGUoY29sdW1uOiBHcmlkTGF5b3V0TW9kZWwpIHtcclxuICAgIGlmIChjb2x1bW4ud2lkdGgpIHtcclxuICAgICAgY29uc3Qgc3R5bGUgPSBjb2x1bW4uZ3JvdyArICcgJyArIGNvbHVtbi5zaHJpbmsgKyAnICcgKyBjb2x1bW4ud2lkdGggKyAncHgnO1xyXG4gICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldENlbGxUZXh0QWxpZ24oY29sdW1uOiBHcmlkTGF5b3V0TW9kZWwpIHtcclxuICAgIHJldHVybiBjb2x1bW4udGV4dEFsaWduID8/IENlbGxUZXh0QWxpZ24ubGVmdDtcclxuICB9XHJcblxyXG4gIGRlbGV0ZURpc2FibGVkKG1vZGVsOiBUKSB7XHJcbiAgICBpZiAodGhpcy5kZWxldGVEaXNhYmxlUnVsZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZVJ1bGUodGhpcy5kZWxldGVEaXNhYmxlUnVsZSwgbW9kZWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsdWF0ZVJ1bGUocnVsZXM6IFJ1bGVbXSwgbW9kZWw6IFQpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSB0cnVlO1xyXG4gICAgcnVsZXMuZm9yRWFjaChydWxlID0+IHtcclxuICAgICAgbGV0IGpzb25SdWxlOiBhbnk7XHJcbiAgICAgIGlmICh0eXBlb2YgcnVsZS5ydWxlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGpzb25SdWxlID0gSlNPTi5wYXJzZShydWxlLnJ1bGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGpzb25SdWxlID0gcnVsZS5ydWxlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChydWxlLnBhcmFtZXRlcnMpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gJ3snICsgcnVsZS5wYXJhbWV0ZXJzLm1hcCgoaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gJ1wiJyArIGl0ZW0gKyAnXCI6XCInICsgbW9kZWxbaXRlbV0gKyAnXCInO1xyXG4gICAgICAgIH0pLmpvaW4oJywnKSArICd9JztcclxuICAgICAgICByZXN1bHQgPSBqc29uTG9naWMuYXBwbHkoanNvblJ1bGUsIEpTT04ucGFyc2UoZGF0YSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IGpzb25Mb2dpYy5hcHBseShqc29uUnVsZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgZ2V0Q2VsVmFsdWUocm93OiBhbnksIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGlmICghcm93KVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIC8vIGlmIChwcm9wZXJ0eU5hbWUgPT0gJ2tvbXBldGVuemVuU3RkZXYnKVxyXG4gICAgLy8gICBjb25zb2xlLmxvZyhwcm9wZXJ0eU5hbWUpO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5pbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgIHZhciBncmlkTGF5b3V0ID0gdGhpcy5ncmlkTGF5b3V0LmZpbmQoZiA9PiBmLnByb3BlcnR5TmFtZS5pbmRleE9mKHByb3BlcnR5TmFtZSkgPiAtMSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdGVkVmFsdWUoZ3JpZExheW91dCwgcm93W3Byb3BlcnR5TmFtZV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcHJvcCA9IHByb3BlcnR5TmFtZS5zcGxpdCgnLicpWzBdO1xyXG4gICAgICBjb25zdCBzdWJQcm9wID0gcHJvcGVydHlOYW1lLnJlcGxhY2UocHJvcCArICcuJywgJycpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRDZWxWYWx1ZShyb3dbcHJvcF0sIHN1YlByb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIGdldEZvcm1hdGVkVmFsdWUoZ3JpZExheW91dDogR3JpZExheW91dE1vZGVsLCB2YWx1ZTogYW55KSB7XHJcblxyXG4gICAgaWYgKGdyaWRMYXlvdXQpIHtcclxuICAgICAgc3dpdGNoIChncmlkTGF5b3V0LmZvcm1hdGluZykge1xyXG4gICAgICAgIGNhc2UgR3JpZExheW91dEZvcm1hdC5kYXRlOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBncmlkTGF5b3V0LmZvcm1hdCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQubnVtYmVyOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubnVtYmVyUGlwZS50cmFuc2Zvcm0odmFsdWUsIGdyaWRMYXlvdXQuZm9ybWF0KTtcclxuICAgICAgICBjYXNlIEdyaWRMYXlvdXRGb3JtYXQucGVyY2VudDpcclxuICAgICAgICAgIGNvbnN0IHZhbHVlUHJjID0gdmFsdWUgLyAxMDA7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5wZXJjZW50UGlwZS50cmFuc2Zvcm0odmFsdWVQcmMsIGdyaWRMYXlvdXQuZm9ybWF0KTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgfVxyXG4gIGRyb3BUYWJsZShldmVudDogQ2RrRHJhZ0Ryb3A8YW55Pikge1xyXG4gICAgY29uc3QgcHJldkl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XTtcclxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5kYXRhU291cmNlLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGFuZ2VJdGVtUG9zaXRpb24ocHJldkl0ZW0sIGN1cnJlbnRJdGVtKSkge1xyXG4gICAgICBjb25zdCBwcmV2SW5kZXggPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoKGQpID0+IGQgPT09IGV2ZW50Lml0ZW0uZGF0YSk7XHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGFTb3VyY2UuZGF0YSwgcHJldkluZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgICB0aGlzLnRhYmxlLnJlbmRlclJvd3MoKTtcclxuICAgIH1cclxuICB9XHJcbiAgaXNDb2x1bW5TdGlja3kobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zdGlja3lDb2x1bW5zKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcnNBcnIgPSB0aGlzLnN0aWNreUNvbHVtbnMuc3BsaXQoXCIsXCIpO1xyXG4gICAgICByZXR1cm4gZmlsdGVyc0Fyci5maW5kSW5kZXgoZiA9PiBmID09IG5hbWUpICE9PSAtMTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgdXBkYXRlRWxlbWVudChtb2RlbDogVCkge1xyXG4gICAgLy9GaW5kIGlmIGVsZW1lbnQgZXhpc3RcclxuICAgIHZhciBjdXJyZW50RWxlbWVudCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbmQoZiA9PiBmLmlkID09PSBtb2RlbC5pZCk7XHJcbiAgICBpZiAoY3VycmVudEVsZW1lbnQgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGFbaW5kZXhdID0gbW9kZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5wdXNoKG1vZGVsKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0RhdGEgPSBbIC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhIF07IFxyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBuZXdEYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclhcIiAqbmdJZj1cImhhc1NlYXJjaFwiPlxyXG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dC54cz1cImNvbHVtblwiIGZ4TGF5b3V0LnNtPVwiY29sdW1uXCIgZnhGbGV4RmlsbD5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg+XHJcbiAgICAgIDxtYXQtbGFiZWw+RmlsdGVyPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbmdNb2RlbF09J2ZpbHRlclZhbHVlJyAobmdNb2RlbENoYW5nZSk9J2ZpbHRlckNoYW5nZWQubmV4dCgkZXZlbnQpJyAjZmlsdGVyPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIj5cclxuICAgIDwhLS0gICNhcHBsaWNhdGlvbnNDb250YWluZXIgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1sb2FkaW5nLXNoYWRlXCIgKm5nSWY9XCJpc0xvYWRpbmdSZXN1bHRzIHx8IGlzUmF0ZUxpbWl0UmVhY2hlZFwiPlxyXG4gICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmdSZXN1bHRzXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtcmF0ZS1saW1pdC1yZWFjaGVkXCIgKm5nSWY9XCJpc1JhdGVMaW1pdFJlYWNoZWRcIj5cclxuICAgICAgICB7eydHZW5lcmFsLkxvYWRpbmdEYXRhJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxtYXQtdGFibGUgZnhGbGV4ICN0YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgaWQ9XCJ0ZW1wYWx0ZS1mb3Jtcy10YWJsZVwiIG1hdFNvcnQgbWF0U29ydERpc2FibGVDbGVhclxyXG4gICAgICBtYXRTb3J0RGlyZWN0aW9uPVwiYXNjXCIgY2RrRHJvcExpc3QgW2Nka0Ryb3BMaXN0RGF0YV09XCJkYXRhU291cmNlXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wVGFibGUoJGV2ZW50KVwiPlxyXG5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwicG9zaXRpb25cIj5cclxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGRpc2FibGVDbGVhcj1cInRydWVcIj5cclxuICAgICAgICAgIDwhLS0ge3snR2VuZXJhbC5PcmRlcicgfCB0cmFuc2xhdGV9fSAtLT5cclxuICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgZnhGbGV4ICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2RrRHJhZ0hhbmRsZT5yZW9yZGVyPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZ3JpZExheW91dFwiIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLnByb3BlcnR5TmFtZVwiXHJcbiAgICAgICAgW3N0aWNreV09XCJpc0NvbHVtblN0aWNreShjb2x1bW4ucHJvcGVydHlOYW1lKVwiPlxyXG4gICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhciBbc3R5bGUuZmxleF09XCJnZXRGbGV4U3R5bGUoY29sdW1uKVwiICptYXRIZWFkZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3tjb2x1bW4udHJhbnNsYXRlS2V5IHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgbWF0VG9vbHRpcD17e2dldENlbFZhbHVlKHJvdyxjb2x1bW4ucHJvcGVydHlOYW1lKX19IFtzdHlsZS5mbGV4XT1cImdldEZsZXhTdHlsZShjb2x1bW4pXCJcclxuICAgICAgICAgIFtzdHlsZS50ZXh0LWFsaWduXT1cImdldENlbGxUZXh0QWxpZ24oY29sdW1uKVwiICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPnt7Z2V0Q2VsVmFsdWUocm93LGNvbHVtbi5wcm9wZXJ0eU5hbWUpfX1cclxuICAgICAgICA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlbGV0ZVwiIHN0aWNreUVuZCAqbmdJZj1cIiFlZGl0T25DbGljayAmJiAhZWRpdE9uRGJsQ2xpY2tcIj5cclxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGRpc2FibGVDbGVhcj1cInRydWVcIj5cclxuICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1ncmVlbiBidG4tZmlsbCBidG4td2QgYnRuLWp1c3QtaWNvblwiIChjbGljayk9XCJlZGl0T2JqZWN0KHJvdylcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3snR2VuZXJhbC5FZGl0JyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmVkaXQ8L2k+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaXBwbGUtY29udGFpbmVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXJlZCBidG4tZmlsbCBidG4td2QgYnRuLWp1c3QtaWNvblwiIChjbGljayk9XCJkZWxldGVPYmplY3Qocm93KVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZWxldGVEaXNhYmxlZChyb3cpXCIgbWF0VG9vbHRpcD1cInt7J0dlbmVyYWwuRGVsZXRlJyB8IHRyYW5zbGF0ZX19XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5kZWxldGU8L2k+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaXBwbGUtY29udGFpbmVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1jZWxsPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1ucztzdGlja3k6IHRydWVcIj48L21hdC1oZWFkZXItcm93PlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlZGl0T25DbGljayAmJiAhZWRpdE9uRGJsQ2xpY2tcIj5cclxuICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdztsZXQgaW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwicm93XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcmVkOiByb3cuaG92ZXJlZCwgaGlnaGxpZ2h0ZWQ6IHJvdy5oaWdobGlnaHRlZH1cIiAoY2xpY2spPVwiaGlnaGxpZ2h0KHJvdylcIlxyXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJyb3cuaG92ZXJlZCA9IHRydWVcIiAobW91c2VvdXQpPVwicm93LmhvdmVyZWQgPSBmYWxzZVwiPlxyXG4gICAgICAgIDwvbWF0LXJvdz5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdE9uQ2xpY2sgJiYgIWVkaXRPbkRibENsaWNrXCI+XHJcbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7bGV0IGluZGV4ID0gZGF0YUluZGV4OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiIGNka0RyYWcgW2Nka0RyYWdEYXRhXT1cInJvd1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXJlZDogcm93LmhvdmVyZWQsIGhpZ2hsaWdodGVkOiByb3cuaGlnaGxpZ2h0ZWR9XCIgKGNsaWNrKT1cImVkaXRPYmplY3Qocm93KVwiXHJcbiAgICAgICAgICAobW91c2VvdmVyKT1cInJvdy5ob3ZlcmVkID0gdHJ1ZVwiIChtb3VzZW91dCk9XCJyb3cuaG92ZXJlZCA9IGZhbHNlXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+PC9tYXQtcm93PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZWRpdE9uQ2xpY2sgJiYgZWRpdE9uRGJsQ2xpY2tcIj5cclxuICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdztsZXQgaW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgY2RrRHJhZyBbY2RrRHJhZ0RhdGFdPVwicm93XCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcmVkOiByb3cuaG92ZXJlZCwgaGlnaGxpZ2h0ZWQ6IHJvdy5oaWdobGlnaHRlZH1cIiAoZGJsY2xpY2spPVwiZWRpdE9iamVjdChyb3cpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwicm93LmhvdmVyZWQgPSB0cnVlXCIgKG1vdXNlb3V0KT1cInJvdy5ob3ZlcmVkID0gZmFsc2VcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj48L21hdC1yb3c+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBbbmdDbGFzc109XCJ7aG92ZXJlZDogcm93LmhvdmVyZWQsIGhpZ2hsaWdodGVkOiByb3cuaGlnaGxpZ2h0ZWR9XCJcclxuICAgICAgICAoY2xpY2spPVwiaGlnaGxpZ2h0KHJvdylcIiAobW91c2VvdmVyKT1cInJvdy5ob3ZlcmVkID0gdHJ1ZVwiIChtb3VzZW91dCk9XCJyb3cuaG92ZXJlZCA9IGZhbHNlXCIgLS0+XHJcbiAgICA8L21hdC10YWJsZT5cclxuICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3IgW2xlbmd0aF09XCJyZXN1bHRzTGVuZ3RoXCIgW3BhZ2VTaXplXT1cIjE1XCIgW3BhZ2VTaXplT3B0aW9uc109XCJbMTUsIDMwLCAgMTAwXVwiXHJcbiAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCI+XHJcbiAgICA8L21hdC1wYWdpbmF0b3I+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
@@ -1,5 +1,4 @@
|
|
1
1
|
export * from './field-error-display/field-error-display.component';
|
2
2
|
export * from './page-not-found/page-not-found.component';
|
3
|
-
export * from './searchable-dropdown/searchable-dropdown.component';
|
4
3
|
export * from './under-construction/under-construction.component';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvY29yZS9zcmMvbGliL2Jhc2UtY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1ub3QtZm91bmQvcGFnZS1ub3QtZm91bmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi91bmRlci1jb25zdHJ1Y3Rpb24vdW5kZXItY29uc3RydWN0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5cclxuIl19
|
@@ -7,9 +7,9 @@ export class PageNotFoundComponent {
|
|
7
7
|
}
|
8
8
|
}
|
9
9
|
PageNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: PageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
10
|
-
PageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: PageNotFoundComponent, selector: "
|
10
|
+
PageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: PageNotFoundComponent, selector: "app-page-not-found", ngImport: i0, template: "<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page not found\n </div>\n</div>", styles: [".under-construction-view-container{height:calc(100vh - 250px);margin:60px 0 0;padding:0;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:1.8em;line-height:1.3em;font-weight:300;color:#58585b;text-align:center}\n"] });
|
11
11
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: PageNotFoundComponent, decorators: [{
|
12
12
|
type: Component,
|
13
|
-
args: [{ selector: '
|
13
|
+
args: [{ selector: 'app-page-not-found', template: "<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page not found\n </div>\n</div>", styles: [".under-construction-view-container{height:calc(100vh - 250px);margin:60px 0 0;padding:0;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:1.8em;line-height:1.3em;font-weight:300;color:#58585b;text-align:center}\n"] }]
|
14
14
|
}], ctorParameters: function () { return []; } });
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1ub3QtZm91bmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2NvcmUvc3JjL2xpYi9iYXNlLWNvbXBvbmVudHMvcGFnZS1ub3QtZm91bmQvcGFnZS1ub3QtZm91bmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2NvcmUvc3JjL2xpYi9iYXNlLWNvbXBvbmVudHMvcGFnZS1ub3QtZm91bmQvcGFnZS1ub3QtZm91bmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQztJQUNBLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQzs7a0hBTlUscUJBQXFCO3NHQUFyQixxQkFBcUIsMERDUGxDLGlJQUlNOzJGREdPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGFnZS1ub3QtZm91bmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLW5vdC1mb3VuZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS1ub3QtZm91bmQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZU5vdEZvdW5kQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IFxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybXMtdmlldy1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cInVuZGVyLWNvbnN0cnVjdGlvbi12aWV3LWNvbnRhaW5lclwiPlxuICAgIFBhZ2Ugbm90IGZvdW5kXG4gIDwvZGl2PlxuPC9kaXY+Il19
|
@@ -4,9 +4,9 @@ export class UnderConstructionComponent {
|
|
4
4
|
constructor() { }
|
5
5
|
}
|
6
6
|
UnderConstructionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: UnderConstructionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
7
|
-
UnderConstructionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: UnderConstructionComponent, selector: "
|
7
|
+
UnderConstructionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: UnderConstructionComponent, selector: "app-under-construction", ngImport: i0, template: "<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page under construction\n </div>\n</div>", styles: [".under-construction-view-container{height:calc(100vh - 250px);margin:60px 0 0;padding:0;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:1.8em;line-height:1.3em;font-weight:300;color:#58585b;text-align:center}\n"] });
|
8
8
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: UnderConstructionComponent, decorators: [{
|
9
9
|
type: Component,
|
10
|
-
args: [{ selector: '
|
10
|
+
args: [{ selector: 'app-under-construction', template: "<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page under construction\n </div>\n</div>", styles: [".under-construction-view-container{height:calc(100vh - 250px);margin:60px 0 0;padding:0;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:1.8em;line-height:1.3em;font-weight:300;color:#58585b;text-align:center}\n"] }]
|
11
11
|
}], ctorParameters: function () { return []; } });
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZXItY29uc3RydWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9jb3JlL3NyYy9saWIvYmFzZS1jb21wb25lbnRzL3VuZGVyLWNvbnN0cnVjdGlvbi91bmRlci1jb25zdHJ1Y3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2NvcmUvc3JjL2xpYi9iYXNlLWNvbXBvbmVudHMvdW5kZXItY29uc3RydWN0aW9uL3VuZGVyLWNvbnN0cnVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sMEJBQTBCO0lBRXJDLGdCQUFnQixDQUFDOzt1SEFGTiwwQkFBMEI7MkdBQTFCLDBCQUEwQiw4RENQdkMsMElBSU07MkZER08sMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11bmRlci1jb25zdHJ1Y3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmRlci1jb25zdHJ1Y3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VuZGVyLWNvbnN0cnVjdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVbmRlckNvbnN0cnVjdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvcm1zLXZpZXctY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ1bmRlci1jb25zdHJ1Y3Rpb24tdmlldy1jb250YWluZXJcIj5cbiAgICBQYWdlIHVuZGVyIGNvbnN0cnVjdGlvblxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
@@ -42,9 +42,6 @@ export function Attribute(options = {}) {
|
|
42
42
|
const defaultMetadata = Reflect.getMetadata('AttributedefaultValue', target) || {};
|
43
43
|
defaultMetadata[serializedPropertyName] = options.defaultValue !== undefined ? options.defaultValue : null;
|
44
44
|
Reflect.defineMetadata('AttributedefaultValue', defaultMetadata, target);
|
45
|
-
const formSubGroupMetadata = Reflect.getMetadata('AttributeformSubGroup', target) || {};
|
46
|
-
formSubGroupMetadata[serializedPropertyName] = options.formSubGroup !== undefined ? options.formSubGroup : null;
|
47
|
-
Reflect.defineMetadata('AttributeformSubGroup', formSubGroupMetadata, target);
|
48
45
|
};
|
49
46
|
const setMetadata = (hasDirtyAttributes, instance, oldValue, newValue, isNew) => {
|
50
47
|
const targetType = Reflect.getMetadata('design:type', target, propertyName);
|
@@ -82,4 +79,4 @@ export function Attribute(options = {}) {
|
|
82
79
|
}
|
83
80
|
};
|
84
81
|
}
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9jb3JlL3NyYy9saWIvZGVjb3JhdG9ycy9hdHRyaWJ1dGUuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdsRSxNQUFNLFVBQVUsU0FBUyxDQUFDLFVBQXFDLEVBQUU7SUFDL0QsT0FBTyxDQUFDLE1BQVcsRUFBRSxZQUFvQixFQUFFLEVBQUU7UUFFM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFhLEVBQUUsS0FBVSxFQUFFLGdCQUFnQixHQUFHLEtBQUssRUFBTyxFQUFFO1lBQzdFLElBQUksYUFBYSxDQUFDO1lBQ2xCLElBQUksUUFBUSxFQUFFO2dCQUNaLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtvQkFDckIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQ25DO3FCQUFNLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtvQkFDNUIsYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7b0JBRWhDLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO3dCQUNwQyxhQUFhLEdBQUcsUUFBUSxDQUFDO3FCQUMxQjtpQkFDRjtnQkFFRCxJQUFJLGFBQWEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFO3dCQUNyQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2xDO29CQUNELE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FB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ZGF0YSc7XHJcbmltcG9ydCB7IEF0dHJpYnV0ZU1ldGFkYXRhIH0gZnJvbSAnLi4vY29uc3RhbnRzL3N5bWJvbHMnO1xyXG5pbXBvcnQgeyBEYXRlQ29udmVydGVyIH0gZnJvbSAnLi4vY29udmVydGVycy9kYXRlL2RhdGUuY29udmVydGVyJztcclxuaW1wb3J0IHsgQXR0cmlidXRlRGVjb3JhdG9yT3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvYXR0cmlidXRlLWRlY29yYXRvci1vcHRpb25zLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQXR0cmlidXRlKG9wdGlvbnM6IEF0dHJpYnV0ZURlY29yYXRvck9wdGlvbnMgPSB7fSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICByZXR1cm4gKHRhcmdldDogYW55LCBwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xyXG5cclxuICAgIGNvbnN0IGNvbnZlcnRlciA9IChkYXRhVHlwZTogYW55LCB2YWx1ZTogYW55LCBmb3JTZXJpYWxpc2F0aW9uID0gZmFsc2UpOiBhbnkgPT4ge1xyXG4gICAgICBsZXQgYXR0ckNvbnZlcnRlcjtcclxuICAgICAgaWYgKGRhdGFUeXBlKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuY29udmVydGVyKSB7XHJcbiAgICAgICAgICBhdHRyQ29udmVydGVyID0gb3B0aW9ucy5jb252ZXJ0ZXI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhVHlwZSA9PT0gRGF0ZSkge1xyXG4gICAgICAgICAgYXR0ckNvbnZlcnRlciA9IG5ldyBEYXRlQ29udmVydGVyKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGRhdGF0eXBlID0gbmV3IGRhdGFUeXBlKCk7XHJcblxyXG4gICAgICAgICAgaWYgKGRhdGF0eXBlLm1hc2sgJiYgZGF0YXR5cGUudW5tYXNrKSB7XHJcbiAgICAgICAgICAgIGF0dHJDb252ZXJ0ZXIgPSBkYXRhdHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChhdHRyQ29udmVydGVyKSB7XHJcbiAgICAgICAgICBpZiAoIWZvclNlcmlhbGlzYXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGF0dHJDb252ZXJ0ZXIubWFzayh2YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gYXR0ckNvbnZlcnRlci51bm1hc2sodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNhdmVBbm5vdGF0aW9ucyA9ICgpID0+IHtcclxuICAgICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdBdHRyaWJ1dGUnLCB0YXJnZXQpIHx8IHt9O1xyXG5cclxuICAgICAgbWV0YWRhdGFbcHJvcGVydHlOYW1lXSA9IHtcclxuICAgICAgICBtYXJrZWQ6IHRydWVcclxuICAgICAgfTtcclxuXHJcbiAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ0F0dHJpYnV0ZScsIG1ldGFkYXRhLCB0YXJnZXQpO1xyXG5cclxuICAgICAgY29uc3QgbWFwcGluZ01ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnQXR0cmlidXRlTWFwcGluZycsIHRhcmdldCkgfHwge307XHJcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWRQcm9wZXJ0eU5hbWUgPSBvcHRpb25zLnNlcmlhbGl6ZWROYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnNlcmlhbGl6ZWROYW1lIDogcHJvcGVydHlOYW1lO1xyXG4gICAgICBtYXBwaW5nTWV0YWRhdGFbc2VyaWFsaXplZFByb3BlcnR5TmFtZV0gPSBwcm9wZXJ0eU5hbWU7XHJcbiAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEoJ0F0dHJpYnV0ZU1hcHBpbmcnLCBtYXBwaW5nTWV0YWRhdGEsIHRhcmdldCk7XHJcblxyXG4gICAgICBjb25zdCByZXF1aXJlZE1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnQXR0cmlidXRlUmVxdWlyZWQnLCB0YXJnZXQpIHx8IHt9O1xyXG4gICAgICByZXF1aXJlZE1ldGFkYXRhW3NlcmlhbGl6ZWRQcm9wZXJ0eU5hbWVdID0gb3B0aW9ucy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5yZXF1aXJlZCA6IGZhbHNlO1xyXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdBdHRyaWJ1dGVSZXF1aXJlZCcsIHJlcXVpcmVkTWV0YWRhdGEsIHRhcmdldCk7XHJcblxyXG4gICAgICBjb25zdCBkZWZhdWx0TWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdBdHRyaWJ1dGVkZWZhdWx0VmFsdWUnLCB0YXJnZXQpIHx8IHt9O1xyXG4gICAgICBkZWZhdWx0TWV0YWRhdGFbc2VyaWFsaXplZFByb3BlcnR5TmFtZV0gPSBvcHRpb25zLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5kZWZhdWx0VmFsdWUgOiBudWxsO1xyXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdBdHRyaWJ1dGVkZWZhdWx0VmFsdWUnLCBkZWZhdWx0TWV0YWRhdGEsIHRhcmdldCk7XHJcblxyXG4gICAgICBjb25zdCBmb3JtU3ViR3JvdXBNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ0F0dHJpYnV0ZWZvcm1TdWJHcm91cCcsIHRhcmdldCkgfHwge307XHJcbiAgICAgIGZvcm1TdWJHcm91cE1ldGFkYXRhW3NlcmlhbGl6ZWRQcm9wZXJ0eU5hbWVdID0gb3B0aW9ucy5mb3JtU3ViR3JvdXAgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZm9ybVN1Ykdyb3VwIDogbnVsbDtcclxuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnQXR0cmlidXRlZm9ybVN1Ykdyb3VwJywgZm9ybVN1Ykdyb3VwTWV0YWRhdGEsIHRhcmdldCk7XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzZXRNZXRhZGF0YSA9IChcclxuICAgICAgaGFzRGlydHlBdHRyaWJ1dGVzOiBib29sZWFuLFxyXG4gICAgICBpbnN0YW5jZTogYW55LFxyXG4gICAgICBvbGRWYWx1ZTogYW55LFxyXG4gICAgICBuZXdWYWx1ZTogYW55LFxyXG4gICAgICBpc05ldzogYm9vbGVhblxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdkZXNpZ246dHlwZScsIHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuXHJcbiAgICAgIGlmICghaW5zdGFuY2VbQXR0cmlidXRlTWV0YWRhdGFdKSB7XHJcbiAgICAgICAgaW5zdGFuY2VbQXR0cmlidXRlTWV0YWRhdGFdID0ge307XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHByb3BlcnR5SGFzRGlydHlBdHRyaWJ1dGVzID0gdHlwZW9mIG9sZFZhbHVlID09PSAndW5kZWZpbmVkJyAmJiAhaXNOZXcgPyBmYWxzZSA6IGhhc0RpcnR5QXR0cmlidXRlcztcclxuXHJcbiAgICAgIGluc3RhbmNlW0F0dHJpYnV0ZU1ldGFkYXRhXVtwcm9wZXJ0eU5hbWVdID0ge1xyXG4gICAgICAgIG5ld1ZhbHVlLFxyXG4gICAgICAgIG9sZFZhbHVlLFxyXG4gICAgICAgIHNlcmlhbGl6ZWROYW1lOiBvcHRpb25zLnNlcmlhbGl6ZWROYW1lLFxyXG4gICAgICAgIGhhc0RpcnR5QXR0cmlidXRlczogcHJvcGVydHlIYXNEaXJ0eUF0dHJpYnV0ZXMsXHJcbiAgICAgICAgc2VyaWFsaXNhdGlvblZhbHVlOiBjb252ZXJ0ZXIodGFyZ2V0VHlwZSwgbmV3VmFsdWUsIHRydWUpXHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGdldHRlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHRoaXNbJ18nICsgKHByb3BlcnR5TmFtZSBhcyBzdHJpbmcpXTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2V0dGVyID0gZnVuY3Rpb24gKG5ld1ZhbDogYW55KSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSBSZWZsZWN0LmdldE1ldGFkYXRhKCdkZXNpZ246dHlwZScsIHRhcmdldCwgcHJvcGVydHlOYW1lKTtcclxuICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBjb252ZXJ0ZXIodGFyZ2V0VHlwZSwgbmV3VmFsKTtcclxuXHJcbiAgICAgIGlmIChjb252ZXJ0ZWRWYWx1ZSAhPT0gdGhpc1snXycgKyAocHJvcGVydHlOYW1lIGFzIHN0cmluZyldKSB7XHJcbiAgICAgICAgc2V0TWV0YWRhdGEodHJ1ZSwgdGhpcywgdGhpc1snXycgKyAocHJvcGVydHlOYW1lIGFzIHN0cmluZyldLCBuZXdWYWwsICF0aGlzLmlkKTtcclxuICAgICAgICB0aGlzWydfJyArIChwcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKV0gPSBjb252ZXJ0ZWRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZGVsZXRlIHRhcmdldFtwcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgIHNhdmVBbm5vdGF0aW9ucygpO1xyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eU5hbWUsIHtcclxuICAgICAgICBnZXQ6IGdldHRlcixcclxuICAgICAgICBzZXQ6IHNldHRlcixcclxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcbiJdfQ==
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9jb3JlL3NyYy9saWIvZGVjb3JhdG9ycy9hdHRyaWJ1dGUuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdsRSxNQUFNLFVBQVUsU0FBUyxDQUFDLFVBQXFDLEVBQUU7SUFDL0QsT0FBTyxDQUFDLE1BQVcsRUFBRSxZQUFvQixFQUFFLEVBQUU7UUFFM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFhLEVBQUUsS0FBVSxFQUFFLGdCQUFnQixHQUFHLEtBQUssRUFBTyxFQUFFO1lBQzdFLElBQUksYUFBYSxDQUFDO1lBQ2xCLElBQUksUUFBUSxFQUFFO2dCQUNaLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtvQkFDckIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQ25DO3FCQUFNLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtvQkFDNUIsYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7b0JBRWhDLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFO3dCQUNwQyxhQUFhLEdBQUcsUUFBUSxDQUFDO3FCQUMxQjtpQkFDRjtnQkFFRCxJQUFJLGFBQWEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFO3dCQUNyQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ2xDO29CQUNELE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEM7YUFDRjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzNCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVoRSxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUc7Z0JBQ3ZCLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztZQUVGLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV0RCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5RSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDNUcsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsWUFBWSxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXBFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEYsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3JHLE9BQU8sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkYsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzRyxPQUFPLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUzRSxDQUFDLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxDQUNsQixrQkFBMkIsRUFDM0IsUUFBYSxFQUNiLFFBQWEsRUFDYixRQUFhLEVBQ2IsS0FBYyxFQUNkLEVBQUU7WUFDRixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFNUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUNoQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbEM7WUFFRCxNQUFNLDBCQUEwQixHQUFHLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztZQUUxRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRztnQkFDMUMsUUFBUTtnQkFDUixRQUFRO2dCQUNSLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDdEMsa0JBQWtCLEVBQUUsMEJBQTBCO2dCQUM5QyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7YUFDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHO1lBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxHQUFJLFlBQXVCLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxVQUFVLE1BQVc7WUFDbEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzVFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFckQsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBSSxZQUF1QixDQUFDLEVBQUU7Z0JBQzNELFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUksWUFBdUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLEdBQUcsR0FBSSxZQUF1QixDQUFDLEdBQUcsY0FBYyxDQUFDO2FBQ3ZEO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsSUFBSSxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMvQixlQUFlLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUU7Z0JBQzFDLEdBQUcsRUFBRSxNQUFNO2dCQUNYLEdBQUcsRUFBRSxNQUFNO2dCQUNYLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB9IGZyb20gJ3JlZmxlY3QtbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGVNZXRhZGF0YSB9IGZyb20gJy4uL2NvbnN0YW50cy9zeW1ib2xzJztcclxuaW1wb3J0IHsgRGF0ZUNvbnZlcnRlciB9IGZyb20gJy4uL2NvbnZlcnRlcnMvZGF0ZS9kYXRlLmNvbnZlcnRlcic7XHJcbmltcG9ydCB7IEF0dHJpYnV0ZURlY29yYXRvck9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2F0dHJpYnV0ZS1kZWNvcmF0b3Itb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEF0dHJpYnV0ZShvcHRpb25zOiBBdHRyaWJ1dGVEZWNvcmF0b3JPcHRpb25zID0ge30pOiBQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcclxuXHJcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSAoZGF0YVR5cGU6IGFueSwgdmFsdWU6IGFueSwgZm9yU2VyaWFsaXNhdGlvbiA9IGZhbHNlKTogYW55ID0+IHtcclxuICAgICAgbGV0IGF0dHJDb252ZXJ0ZXI7XHJcbiAgICAgIGlmIChkYXRhVHlwZSkge1xyXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnZlcnRlcikge1xyXG4gICAgICAgICAgYXR0ckNvbnZlcnRlciA9IG9wdGlvbnMuY29udmVydGVyO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGUgPT09IERhdGUpIHtcclxuICAgICAgICAgIGF0dHJDb252ZXJ0ZXIgPSBuZXcgRGF0ZUNvbnZlcnRlcigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBkYXRhdHlwZSA9IG5ldyBkYXRhVHlwZSgpO1xyXG5cclxuICAgICAgICAgIGlmIChkYXRhdHlwZS5tYXNrICYmIGRhdGF0eXBlLnVubWFzaykge1xyXG4gICAgICAgICAgICBhdHRyQ29udmVydGVyID0gZGF0YXR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYXR0ckNvbnZlcnRlcikge1xyXG4gICAgICAgICAgaWYgKCFmb3JTZXJpYWxpc2F0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhdHRyQ29udmVydGVyLm1hc2sodmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGF0dHJDb252ZXJ0ZXIudW5tYXNrKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzYXZlQW5ub3RhdGlvbnMgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnQXR0cmlidXRlJywgdGFyZ2V0KSB8fCB7fTtcclxuXHJcbiAgICAgIG1ldGFkYXRhW3Byb3BlcnR5TmFtZV0gPSB7XHJcbiAgICAgICAgbWFya2VkOiB0cnVlXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdBdHRyaWJ1dGUnLCBtZXRhZGF0YSwgdGFyZ2V0KTtcclxuXHJcbiAgICAgIGNvbnN0IG1hcHBpbmdNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ0F0dHJpYnV0ZU1hcHBpbmcnLCB0YXJnZXQpIHx8IHt9O1xyXG4gICAgICBjb25zdCBzZXJpYWxpemVkUHJvcGVydHlOYW1lID0gb3B0aW9ucy5zZXJpYWxpemVkTmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5zZXJpYWxpemVkTmFtZSA6IHByb3BlcnR5TmFtZTtcclxuICAgICAgbWFwcGluZ01ldGFkYXRhW3NlcmlhbGl6ZWRQcm9wZXJ0eU5hbWVdID0gcHJvcGVydHlOYW1lO1xyXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKCdBdHRyaWJ1dGVNYXBwaW5nJywgbWFwcGluZ01ldGFkYXRhLCB0YXJnZXQpO1xyXG5cclxuICAgICAgY29uc3QgcmVxdWlyZWRNZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ0F0dHJpYnV0ZVJlcXVpcmVkJywgdGFyZ2V0KSB8fCB7fTtcclxuICAgICAgcmVxdWlyZWRNZXRhZGF0YVtzZXJpYWxpemVkUHJvcGVydHlOYW1lXSA9IG9wdGlvbnMucmVxdWlyZWQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMucmVxdWlyZWQgOiBmYWxzZTtcclxuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnQXR0cmlidXRlUmVxdWlyZWQnLCByZXF1aXJlZE1ldGFkYXRhLCB0YXJnZXQpO1xyXG5cclxuICAgICAgY29uc3QgZGVmYXVsdE1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnQXR0cmlidXRlZGVmYXVsdFZhbHVlJywgdGFyZ2V0KSB8fCB7fTtcclxuICAgICAgZGVmYXVsdE1ldGFkYXRhW3NlcmlhbGl6ZWRQcm9wZXJ0eU5hbWVdID0gb3B0aW9ucy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZGVmYXVsdFZhbHVlIDogbnVsbDtcclxuICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSgnQXR0cmlidXRlZGVmYXVsdFZhbHVlJywgZGVmYXVsdE1ldGFkYXRhLCB0YXJnZXQpO1xyXG5cclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc2V0TWV0YWRhdGEgPSAoXHJcbiAgICAgIGhhc0RpcnR5QXR0cmlidXRlczogYm9vbGVhbixcclxuICAgICAgaW5zdGFuY2U6IGFueSxcclxuICAgICAgb2xkVmFsdWU6IGFueSxcclxuICAgICAgbmV3VmFsdWU6IGFueSxcclxuICAgICAgaXNOZXc6IGJvb2xlYW5cclxuICAgICkgPT4ge1xyXG4gICAgICBjb25zdCB0YXJnZXRUeXBlID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnZGVzaWduOnR5cGUnLCB0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgICBpZiAoIWluc3RhbmNlW0F0dHJpYnV0ZU1ldGFkYXRhXSkge1xyXG4gICAgICAgIGluc3RhbmNlW0F0dHJpYnV0ZU1ldGFkYXRhXSA9IHt9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwcm9wZXJ0eUhhc0RpcnR5QXR0cmlidXRlcyA9IHR5cGVvZiBvbGRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWlzTmV3ID8gZmFsc2UgOiBoYXNEaXJ0eUF0dHJpYnV0ZXM7XHJcblxyXG4gICAgICBpbnN0YW5jZVtBdHRyaWJ1dGVNZXRhZGF0YV1bcHJvcGVydHlOYW1lXSA9IHtcclxuICAgICAgICBuZXdWYWx1ZSxcclxuICAgICAgICBvbGRWYWx1ZSxcclxuICAgICAgICBzZXJpYWxpemVkTmFtZTogb3B0aW9ucy5zZXJpYWxpemVkTmFtZSxcclxuICAgICAgICBoYXNEaXJ0eUF0dHJpYnV0ZXM6IHByb3BlcnR5SGFzRGlydHlBdHRyaWJ1dGVzLFxyXG4gICAgICAgIHNlcmlhbGlzYXRpb25WYWx1ZTogY29udmVydGVyKHRhcmdldFR5cGUsIG5ld1ZhbHVlLCB0cnVlKVxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXR0ZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzWydfJyArIChwcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKV07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNldHRlciA9IGZ1bmN0aW9uIChuZXdWYWw6IGFueSkge1xyXG4gICAgICBjb25zdCB0YXJnZXRUeXBlID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnZGVzaWduOnR5cGUnLCB0YXJnZXQsIHByb3BlcnR5TmFtZSk7XHJcbiAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gY29udmVydGVyKHRhcmdldFR5cGUsIG5ld1ZhbCk7XHJcblxyXG4gICAgICBpZiAoY29udmVydGVkVmFsdWUgIT09IHRoaXNbJ18nICsgKHByb3BlcnR5TmFtZSBhcyBzdHJpbmcpXSkge1xyXG4gICAgICAgIHNldE1ldGFkYXRhKHRydWUsIHRoaXMsIHRoaXNbJ18nICsgKHByb3BlcnR5TmFtZSBhcyBzdHJpbmcpXSwgbmV3VmFsLCAhdGhpcy5pZCk7XHJcbiAgICAgICAgdGhpc1snXycgKyAocHJvcGVydHlOYW1lIGFzIHN0cmluZyldID0gY29udmVydGVkVmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRlbGV0ZSB0YXJnZXRbcHJvcGVydHlOYW1lXSkge1xyXG4gICAgICBzYXZlQW5ub3RhdGlvbnMoKTtcclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlOYW1lLCB7XHJcbiAgICAgICAgZ2V0OiBnZXR0ZXIsXHJcbiAgICAgICAgc2V0OiBzZXR0ZXIsXHJcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcclxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG4iXX0=
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWRlY29yYXRvci1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9jb3JlL3NyYy9saWIvaW50ZXJmYWNlcy9hdHRyaWJ1dGUtZGVjb3JhdG9yLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eUNvbnZlcnRlciB9IGZyb20gJy4vcHJvcGVydHktY29udmVydGVyLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZURlY29yYXRvck9wdGlvbnMge1xyXG4gIHNlcmlhbGl6ZWROYW1lPzogc3RyaW5nO1xyXG4gIGNvbnZlcnRlcj86IFByb3BlcnR5Q29udmVydGVyO1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICBkZWZhdWx0VmFsdWU/
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWRlY29yYXRvci1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jvc29mdGxhYi9jb3JlL3NyYy9saWIvaW50ZXJmYWNlcy9hdHRyaWJ1dGUtZGVjb3JhdG9yLW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eUNvbnZlcnRlciB9IGZyb20gJy4vcHJvcGVydHktY29udmVydGVyLmludGVyZmFjZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZURlY29yYXRvck9wdGlvbnMge1xyXG4gIHNlcmlhbGl6ZWROYW1lPzogc3RyaW5nO1xyXG4gIGNvbnZlcnRlcj86IFByb3BlcnR5Q29udmVydGVyO1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbn1cclxuIl19
|