fabrikantencore 2.18.7 → 2.18.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@ class BeheerBcbInstanceComponent {
33
33
  this.ChangeDetectorRef = ChangeDetectorRef;
34
34
  }
35
35
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerBcbInstanceComponent, deps: [{ token: i1.BcbProductInstanceService }, { token: i2.TranslateService }, { token: i3.FabrikantenService }, { token: i4.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
36
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", ngImport: i0, template: "<div *ngIf=\"BcbProductInstanceService.IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!BcbProductInstanceService.IsLoading()\">\n <div class=\"displayflex\">\n <div style=\"flex: auto;\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, BcbProductInstanceService.BCBProductInstanceViewModel.productId) }}\n </div>\n\n <div style=\"padding: 10px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.SaveConfiguration(ChangeDetectorRef)\">\n Save\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.DownloadPDF(this.TranslateService.ActiveLanguage.id)\">\n Download PDF\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.UnselectBCBProductInstance()\">\n Terug\n </button>\n </div>\n </div>\n <div class=\"displayflex\">\n <div class=\"dividercolumn leftcol\">\n <mat-tab-group style=\"height: 100%;\">\n <mat-tab label=\"Configuratie\">\n <div class=\"filter-scroll-section\">\n <fab-filters-input></fab-filters-input>\n </div>\n </mat-tab>\n <mat-tab label=\"Info\">\n <app-fab-form [form]=\"BcbProductInstanceService.FabrikantenCustomFormViewModel\"></app-fab-form>\n </mat-tab>\n <mat-tab label=\"Upload\">\n <br />\n <app-fab-upload name=\"snede naar onder\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n <hr />\n <app-fab-upload name=\"bovenaanzicht\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n <hr />\n <app-fab-upload name=\"vooraanzicht\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n <hr />\n <app-fab-upload name=\"rechteraanzicht\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n </mat-tab>\n </mat-tab-group>\n </div>\n <div style=\"width: 50%;\">\n <ng-container *ngIf=\"!FabrikantenService.ShowVariants()\">\n <app-fab-svg-viewer></app-fab-svg-viewer>\n </ng-container>\n <ng-container *ngIf=\"FabrikantenService.ShowVariants()\">\n <div style=\"padding: 10px;\">\n Er zijn nog meerdere varianten van dit product die voldoen aan de huidige filter selectie. Vul meer filters om de selectie te specificeren.\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["app-beheer-bcb-instance .displayflex{display:flex}app-beheer-bcb-instance .leftcol{padding:10px}app-beheer-bcb-instance .dividercolumn{width:50%;max-height:calc(100vH - 174px);overflow:auto}app-beheer-bcb-instance .filter-scroll-section{max-height:calc(100vH - 1px)}app-beheer-bcb-instance .filter-affects-sign{display:none}app-beheer-bcb-instance .affects-only-bestek{display:none}app-beheer-bcb-instance .svg-settings{top:80px!important;right:25px!important}app-beheer-bcb-instance .toolbar-button{display:none}app-beheer-bcb-instance .prop{font-size:20px;padding:5px;border-bottom:1px solid #000}app-beheer-bcb-instance .prop-name{width:200px}app-beheer-bcb-instance .prop-value{width:calc(100% - 220px)}app-beheer-bcb-instance .border-bottom{border-bottom:1px solid #000;font-size:20px;padding:4px}app-beheer-bcb-instance .form-button-row{display:none}app-beheer-bcb-instance .value-cell{text-align:right;padding-right:5px}app-beheer-bcb-instance .info-row:hover{background-color:#efefef}app-beheer-bcb-instance .button-row{padding-top:3px;text-align:right}app-beheer-bcb-instance app-fab-loader{position:fixed;background-color:#00000080;width:100%;top:0;left:0;height:100%;z-index:10}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatLegacyTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i7.MatLegacyTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i9.FabFiltersInputComponent, selector: "fab-filters-input" }, { kind: "component", type: i10.FabSvgViewerComponent, selector: "app-fab-svg-viewer" }, { kind: "component", type: i11.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }, { kind: "component", type: i12.FabUploadComponent, selector: "app-fab-upload", inputs: ["name", "customid"] }], encapsulation: i0.ViewEncapsulation.None });
36
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", ngImport: i0, template: "<div *ngIf=\"BcbProductInstanceService.IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!BcbProductInstanceService.IsLoading()\">\n <div class=\"displayflex\">\n <div style=\"flex: auto;\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, BcbProductInstanceService.BCBProductInstanceViewModel.productId) }}\n </div>\n\n <div style=\"padding: 10px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.SaveConfiguration(ChangeDetectorRef)\">\n Save\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.DownloadPDF(this.TranslateService.ActiveLanguage.id)\">\n Download PDF\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.UnselectBCBProductInstance()\">\n Terug\n </button>\n </div>\n </div>\n <div class=\"displayflex\">\n <div class=\"dividercolumn leftcol\">\n <mat-tab-group style=\"height: 100%;\">\n <mat-tab label=\"Configuratie\">\n <div class=\"filter-scroll-section\">\n <fab-filters-input></fab-filters-input>\n </div>\n </mat-tab>\n <mat-tab label=\"Info\">\n <app-fab-form [form]=\"BcbProductInstanceService.FabrikantenCustomFormViewModel\"></app-fab-form>\n </mat-tab>\n <mat-tab label=\"Upload\">\n <br />\n <app-fab-upload name=\"snede naar onder\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n <hr />\n <app-fab-upload name=\"bovenaanzicht\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n <hr />\n <app-fab-upload name=\"vooraanzicht\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n <hr />\n <app-fab-upload name=\"rechteraanzicht\" [customid]=\"BcbProductInstanceService.BCBProductInstanceViewModel.id\"></app-fab-upload>\n </mat-tab>\n </mat-tab-group>\n </div>\n <div style=\"width: 50%;\">\n <ng-container *ngIf=\"!FabrikantenService.ShowVariants()\">\n <app-fab-svg-viewer></app-fab-svg-viewer>\n </ng-container>\n <ng-container *ngIf=\"FabrikantenService.ShowVariants()\">\n <div style=\"padding: 10px;\">\n Er zijn nog meerdere varianten van dit product die voldoen aan de huidige filter selectie. Vul meer filters om de selectie te specificeren.\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["app-beheer-bcb-instance .displayflex{display:flex}app-beheer-bcb-instance .leftcol{padding:10px}app-beheer-bcb-instance .dividercolumn{width:50%;max-height:calc(100vH - 174px);overflow:auto}app-beheer-bcb-instance .filter-scroll-section{max-height:calc(100vH - 1px)}app-beheer-bcb-instance .filter-affects-sign{display:none}app-beheer-bcb-instance .affects-only-bestek{display:none}app-beheer-bcb-instance .svg-settings{top:80px!important;right:25px!important}app-beheer-bcb-instance .toolbar-button{display:none}app-beheer-bcb-instance .prop{font-size:20px;padding:5px;border-bottom:1px solid #000}app-beheer-bcb-instance .prop-name{width:200px}app-beheer-bcb-instance .prop-value{width:calc(100% - 220px)}app-beheer-bcb-instance .border-bottom{border-bottom:1px solid #000;font-size:20px;padding:4px}app-beheer-bcb-instance .form-button-row{display:none}app-beheer-bcb-instance .value-cell{text-align:right;padding-right:5px}app-beheer-bcb-instance .info-row:hover{background-color:#efefef}app-beheer-bcb-instance .button-row{padding-top:3px;text-align:right}app-beheer-bcb-instance app-fab-loader{position:fixed;background-color:#00000080;width:100%;top:0;left:0;height:100%;z-index:10}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatLegacyTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i7.MatLegacyTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i9.FabFiltersInputComponent, selector: "fab-filters-input" }, { kind: "component", type: i10.FabSvgViewerComponent, selector: "app-fab-svg-viewer" }, { kind: "component", type: i11.FabFormComponent, selector: "app-fab-form", inputs: ["form", "instanceid"], outputs: ["completed"] }, { kind: "component", type: i12.FabUploadComponent, selector: "app-fab-upload", inputs: ["name", "customid"] }], encapsulation: i0.ViewEncapsulation.None });
37
37
  }
38
38
  export { BeheerBcbInstanceComponent };
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerBcbInstanceComponent, decorators: [{
@@ -36,7 +36,7 @@ class BeheerProjectComponent {
36
36
  //this.LoadForm();
37
37
  }
38
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerProjectComponent, deps: [{ token: i1.BcbProductInstanceService }, { token: i2.TranslateService }, { token: i3.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
39
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerProjectComponent, selector: "app-beheer-project", ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\">\n <ng-container *ngIf=\"BcbProductInstanceService.BCBProductInstanceViewModel == null\">\n <div style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <h1>Info</h1>\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"BcbProductInstanceService.ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"BcbProductInstanceService.FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div>\n <table class=\"products-table\">\n <tr>\n <td colspan=\"5\">\n <div class=\"conf-header\">\n <div style=\"flex: auto;\">\n <h1>Producten</h1>\n </div>\n <div class=\"toevoegen-div\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\n Product\n </mat-label>\n <mat-select [(ngModel)]=\"BcbProductInstanceService.SelectedProductId\">\n <ng-container *ngFor=\"let product of BcbProductInstanceService.ConfigurationsViewModel.products\">\n <mat-option [value]=\"product.id\">\n {{ product.name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <div style=\"padding-top: 8px;\">\n <button class=\"toevoegen-button\" mat-raised-button (click)=\"BcbProductInstanceService.CreateBCBProductInstance()\">\n Toevoegen\n </button>\n </div>\n </div>\n </div>\n </td>\n </tr>\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n </tr>\n <tr *ngFor=\"let instance of BcbProductInstanceService.ProjectViewModel.instances\" class=\"selectable\">\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectBCBProductInstance(instance, ChangeDetectorRef)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectBCBProductInstance(instance, ChangeDetectorRef)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.DeleteBCBProductInstance(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n </div>\n <br />\n <br />\n <button mat-raised-button (click)=\"BcbProductInstanceService.SaveForm()\">\n Save\n </button>\n <br />\n <br />\n <button mat-raised-button (click)=\"BcbProductInstanceService.UnselectProject()\">\n Terug\n </button>\n\n </ng-container>\n <ng-container>\n <div *ngIf=\"BcbProductInstanceService.BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance></app-beheer-bcb-instance>\n </div>\n </ng-container>\n\n</div>\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .products-table{width:100%}app-beheer-project .products-table .selectable:hover{background-color:#d3d3d3}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .conf-header{display:flex;border-bottom:1px solid #000}app-beheer-project .selectable{cursor:pointer}app-beheer-project .toevoegen-button{margin-left:5px}app-beheer-project .toevoegen-div{display:flex}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i12.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }, { kind: "component", type: i13.BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance" }], encapsulation: i0.ViewEncapsulation.None });
39
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerProjectComponent, selector: "app-beheer-project", ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\">\n <ng-container *ngIf=\"BcbProductInstanceService.BCBProductInstanceViewModel == null\">\n <div style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <h1>Info</h1>\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"BcbProductInstanceService.ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"BcbProductInstanceService.FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div>\n <table class=\"products-table\">\n <tr>\n <td colspan=\"5\">\n <div class=\"conf-header\">\n <div style=\"flex: auto;\">\n <h1>Producten</h1>\n </div>\n <div class=\"toevoegen-div\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\n Product\n </mat-label>\n <mat-select [(ngModel)]=\"BcbProductInstanceService.SelectedProductId\">\n <ng-container *ngFor=\"let product of BcbProductInstanceService.ConfigurationsViewModel.products\">\n <mat-option [value]=\"product.id\">\n {{ product.name }}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n\n <div style=\"padding-top: 8px;\">\n <button class=\"toevoegen-button\" mat-raised-button (click)=\"BcbProductInstanceService.CreateBCBProductInstance()\">\n Toevoegen\n </button>\n </div>\n </div>\n </div>\n </td>\n </tr>\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n </tr>\n <tr *ngFor=\"let instance of BcbProductInstanceService.ProjectViewModel.instances\" class=\"selectable\">\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectBCBProductInstance(instance, ChangeDetectorRef)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectBCBProductInstance(instance, ChangeDetectorRef)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.DeleteBCBProductInstance(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n </div>\n </div>\n <br />\n <br />\n <button mat-raised-button (click)=\"BcbProductInstanceService.SaveForm()\">\n Save\n </button>\n <br />\n <br />\n <button mat-raised-button (click)=\"BcbProductInstanceService.UnselectProject()\">\n Terug\n </button>\n\n </ng-container>\n <ng-container>\n <div *ngIf=\"BcbProductInstanceService.BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance></app-beheer-bcb-instance>\n </div>\n </ng-container>\n\n</div>\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .products-table{width:100%}app-beheer-project .products-table .selectable:hover{background-color:#d3d3d3}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .conf-header{display:flex;border-bottom:1px solid #000}app-beheer-project .selectable{cursor:pointer}app-beheer-project .toevoegen-button{margin-left:5px}app-beheer-project .toevoegen-div{display:flex}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i12.FabFormComponent, selector: "app-fab-form", inputs: ["form", "instanceid"], outputs: ["completed"] }, { kind: "component", type: i13.BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance" }], encapsulation: i0.ViewEncapsulation.None });
40
40
  }
41
41
  export { BeheerProjectComponent };
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerProjectComponent, decorators: [{
@@ -19,6 +19,7 @@ class FabFormComponent {
19
19
  FabrikantenService;
20
20
  TranslateService;
21
21
  ChangeDetectorRef;
22
+ InstanceId = "";
22
23
  _form;
23
24
  get form() {
24
25
  return this._form;
@@ -61,8 +62,10 @@ class FabFormComponent {
61
62
  alert('error');
62
63
  }
63
64
  }
65
+ set instanceid(value) {
66
+ this.InstanceId = value;
67
+ }
64
68
  completed = new EventEmitter();
65
- //@Output() cancel: EventEmitter<void> = new EventEmitter<void>();
66
69
  FormGroup;
67
70
  get TranslationCategory() {
68
71
  return TranslationCategory;
@@ -85,6 +88,7 @@ class FabFormComponent {
85
88
  request.languageId = this.TranslateService.ActiveLanguage.id;
86
89
  request.countryCode = this.TranslateService.ActiveLanguage.countryCode;
87
90
  request.fabrikantenSettingsViewModel = this.FabrikantenService.FabrikantenSettingsViewModel;
91
+ request.instanceId = this.InstanceId;
88
92
  this.FabrikantenApiClient.setForm(request).subscribe(() => {
89
93
  this.FabrikantenService.ReloadModel(this.ChangeDetectorRef, undefined, () => {
90
94
  this.completed.emit();
@@ -145,7 +149,7 @@ class FabFormComponent {
145
149
  return null;
146
150
  }
147
151
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FabFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.FabrikantenApiClient }, { token: i3.FabrikantenService }, { token: i4.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
148
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FabFormComponent, selector: "app-fab-form", inputs: { form: "form" }, outputs: { completed: "completed" }, ngImport: i0, template: "<form [formGroup]=\"FormGroup\">\n <ng-container *ngFor=\"let cat of form.formCategories\">\n <div class=\"form-cat-name\" [ngClass]=\"'cat-' + cat.id\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Category, cat.id) }}\n </div>\n <ng-container *ngFor=\"let row of cat.rows\">\n <div class=\"form-cat-inputs displayflex\">\n <div class=\"form-cat-input\" *ngFor=\"let input of row.inputs\">\n <ng-container *ngIf=\"input.formInputType == 1 || input.formInputType == 6\">\n <mat-form-field appearance=\"fill\" class=\"full-width form-cat-input-input\">\n <mat-label>\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <input matInput type=\"text\" formControlName=\"{{ input.name }}\" [(ngModel)]=\"input.value\">\n <mat-error></mat-error>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 2\">\n <mat-form-field appearance=\"fill\" class=\"full-width form-cat-input-select\">\n <mat-label class=\"select-mat-label filter-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <mat-select formControlName=\"{{ input.name }}\">\n <ng-container *ngFor=\"let option of input.options\">\n <mat-option [value]=\"option.id\" class=\"select-mat-option\">\n <span class=\"name-span\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Option, option.id) }}\n </span>\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 3 || input.formInputType == 7\">\n <mat-checkbox class=\"form-cat-input-checkbox\" formControlName=\"{{ input.name }}\">\n <span [innerHTML]=\"TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id)\"></span>\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 5\">\n <mat-form-field class=\"full-width form-cat-input-textarea\">\n <mat-label>\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <textarea matInput formControlName=\"{{ input.name }}\" style=\"height: 100px;\"></textarea>\n </mat-form-field>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"form-button-row\">\n <button mat-raised-button (click)=\"Close()\" class=\"form-cat-close form-button-row-button\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Close) }}\n </button>\n <button mat-raised-button (click)=\"OnSubmit()\" class=\"form-cat-submit form-button-row-button\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Send) }}\n </button>\n </div>\n</form>\n", styles: ["app-fab-form .mat-form-field-wrapper{padding-bottom:0}app-fab-form .mat-form-field-underline{bottom:0}app-fab-form .displayflex{display:flex}app-fab-form .form-cat-name{border-bottom:1px solid #000;font-size:20px;padding:5px}app-fab-form .form-cat-input{padding:3px;width:100%}app-fab-form .form-button-row{text-align:right}app-fab-form .form-button-row-button{margin:5px}app-fab-form .full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], encapsulation: i0.ViewEncapsulation.None });
152
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FabFormComponent, selector: "app-fab-form", inputs: { form: "form", instanceid: "instanceid" }, outputs: { completed: "completed" }, ngImport: i0, template: "<form [formGroup]=\"FormGroup\">\n <ng-container *ngFor=\"let cat of form.formCategories\">\n <div class=\"form-cat-name\" [ngClass]=\"'cat-' + cat.id\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Category, cat.id) }}\n </div>\n <ng-container *ngFor=\"let row of cat.rows\">\n <div class=\"form-cat-inputs displayflex\">\n <div class=\"form-cat-input\" *ngFor=\"let input of row.inputs\">\n <ng-container *ngIf=\"input.formInputType == 1 || input.formInputType == 6\">\n <mat-form-field appearance=\"fill\" class=\"full-width form-cat-input-input\">\n <mat-label>\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <input matInput type=\"text\" formControlName=\"{{ input.name }}\" [(ngModel)]=\"input.value\">\n <mat-error></mat-error>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 2\">\n <mat-form-field appearance=\"fill\" class=\"full-width form-cat-input-select\">\n <mat-label class=\"select-mat-label filter-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <mat-select formControlName=\"{{ input.name }}\">\n <ng-container *ngFor=\"let option of input.options\">\n <mat-option [value]=\"option.id\" class=\"select-mat-option\">\n <span class=\"name-span\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Option, option.id) }}\n </span>\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 3 || input.formInputType == 7\">\n <mat-checkbox class=\"form-cat-input-checkbox\" formControlName=\"{{ input.name }}\">\n <span [innerHTML]=\"TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id)\"></span>\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 5\">\n <mat-form-field class=\"full-width form-cat-input-textarea\">\n <mat-label>\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <textarea matInput formControlName=\"{{ input.name }}\" style=\"height: 100px;\"></textarea>\n </mat-form-field>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"form-button-row\">\n <button mat-raised-button (click)=\"Close()\" class=\"form-cat-close form-button-row-button\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Close) }}\n </button>\n <button mat-raised-button (click)=\"OnSubmit()\" class=\"form-cat-submit form-button-row-button\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Send) }}\n </button>\n </div>\n</form>\n", styles: ["app-fab-form .mat-form-field-wrapper{padding-bottom:0}app-fab-form .mat-form-field-underline{bottom:0}app-fab-form .displayflex{display:flex}app-fab-form .form-cat-name{border-bottom:1px solid #000;font-size:20px;padding:5px}app-fab-form .form-cat-input{padding:3px;width:100%}app-fab-form .form-button-row{text-align:right}app-fab-form .form-button-row-button{margin:5px}app-fab-form .full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], encapsulation: i0.ViewEncapsulation.None });
149
153
  }
150
154
  export { FabFormComponent };
151
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FabFormComponent, decorators: [{
@@ -153,7 +157,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
153
157
  args: [{ selector: 'app-fab-form', encapsulation: ViewEncapsulation.None, template: "<form [formGroup]=\"FormGroup\">\n <ng-container *ngFor=\"let cat of form.formCategories\">\n <div class=\"form-cat-name\" [ngClass]=\"'cat-' + cat.id\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Category, cat.id) }}\n </div>\n <ng-container *ngFor=\"let row of cat.rows\">\n <div class=\"form-cat-inputs displayflex\">\n <div class=\"form-cat-input\" *ngFor=\"let input of row.inputs\">\n <ng-container *ngIf=\"input.formInputType == 1 || input.formInputType == 6\">\n <mat-form-field appearance=\"fill\" class=\"full-width form-cat-input-input\">\n <mat-label>\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <input matInput type=\"text\" formControlName=\"{{ input.name }}\" [(ngModel)]=\"input.value\">\n <mat-error></mat-error>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 2\">\n <mat-form-field appearance=\"fill\" class=\"full-width form-cat-input-select\">\n <mat-label class=\"select-mat-label filter-name\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <mat-select formControlName=\"{{ input.name }}\">\n <ng-container *ngFor=\"let option of input.options\">\n <mat-option [value]=\"option.id\" class=\"select-mat-option\">\n <span class=\"name-span\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Option, option.id) }}\n </span>\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 3 || input.formInputType == 7\">\n <mat-checkbox class=\"form-cat-input-checkbox\" formControlName=\"{{ input.name }}\">\n <span [innerHTML]=\"TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id)\"></span>\n </mat-checkbox>\n </ng-container>\n\n <ng-container *ngIf=\"input.formInputType == 5\">\n <mat-form-field class=\"full-width form-cat-input-textarea\">\n <mat-label>\n {{ TranslateService.GetActiveValue(TranslationCategory.Forms, TranslationSubCategory.Input, input.id) }}\n </mat-label>\n <textarea matInput formControlName=\"{{ input.name }}\" style=\"height: 100px;\"></textarea>\n </mat-form-field>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"form-button-row\">\n <button mat-raised-button (click)=\"Close()\" class=\"form-cat-close form-button-row-button\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Close) }}\n </button>\n <button mat-raised-button (click)=\"OnSubmit()\" class=\"form-cat-submit form-button-row-button\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.Send) }}\n </button>\n </div>\n</form>\n", styles: ["app-fab-form .mat-form-field-wrapper{padding-bottom:0}app-fab-form .mat-form-field-underline{bottom:0}app-fab-form .displayflex{display:flex}app-fab-form .form-cat-name{border-bottom:1px solid #000;font-size:20px;padding:5px}app-fab-form .form-cat-input{padding:3px;width:100%}app-fab-form .form-button-row{text-align:right}app-fab-form .form-button-row-button{margin:5px}app-fab-form .full-width{width:100%}\n"] }]
154
158
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.FabrikantenApiClient }, { type: i3.FabrikantenService }, { type: i4.TranslateService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { form: [{
155
159
  type: Input
160
+ }], instanceid: [{
161
+ type: Input
156
162
  }], completed: [{
157
163
  type: Output
158
164
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1mb3JtL2ZhYi1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZm9ybS9mYWItZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQXlELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBNEIsYUFBYSxFQUF3Qix5QkFBeUIsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBaUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUluTixNQU1hLGdCQUFnQjtJQXFFakI7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQXZFVixLQUFLLENBQTJCO0lBQ2hDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBYSxJQUFJLENBQUMsS0FBK0I7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUVwQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElB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RUFBRTtZQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFeEIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO29CQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3QkFFNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFOzRCQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQ0FDdEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtvQ0FDMUIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQ2xCOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0EvSlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsbUhDWjdCLHUxR0ErREE7O1NEbkRhLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSTtxT0FTeEIsSUFBSTtzQkFBaEIsS0FBSztnQkFnREksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsIEZvcm1JbnB1dFR5cGUsIEZhYnJpa2FudGVuQXBpQ2xpZW50LCBGYWJyaWthbnRlblNldEZvcm1SZXF1ZXN0LCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LCBGYWJyaWthbnRlbkZvcm1JbnB1dFZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcbmltcG9ydCB7IEZhYnJpa2FudGVuU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZhYnJpa2FudGVuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mYWItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWItZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZhYi1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRmFiRm9ybUNvbXBvbmVudCB7XG5cbiAgX2Zvcm06IEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbDtcclxuICBnZXQgZm9ybSgpOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm07XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgZm9ybSh2YWx1ZTogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsKSB7XHJcbiAgICB0aGlzLl9mb3JtID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KVxuICAgIHZhciBjYXRzID0gdGhpcy5mb3JtLmZvcm1DYXRlZ29yaWVzO1xuXG4gICAgaWYgKGNhdHMgIT0gbnVsbCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3dzID0gY2F0c1tpXS5yb3dzO1xyXG5cclxuICAgICAgICBpZiAocm93cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgdmFyIGlucHV0cyA9IHJvd3Nbal0uaW5wdXRzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBpbnB1dHMubGVuZ3RoOyBwKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgVmFsaWRhdG9yc0FycmF5OiBWYWxpZGF0b3JGbltdID0gbmV3IEFycmF5KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0c1twXS5mb3JtSW5wdXRUeXBlID09IEZvcm1JbnB1dFR5cGUuRW1haWwpIHtcclxuICAgICAgICAgICAgICAgICAgVmFsaWRhdG9yc0FycmF5LnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0c1twXS5mb3JtSW5wdXRUeXBlID09IEZvcm1JbnB1dFR5cGUuQ2hlY2tib3hSZXF1aXJlZFRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgVmFsaWRhdG9yc0FycmF5LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHNbcF0ucmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgVmFsaWRhdG9yc0FycmF5LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0c1twXS5mb3JtSW5wdXRUeXBlID09IEZvcm1JbnB1dFR5cGUuRHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5Gb3JtR3JvdXAuYWRkQ29udHJvbChpbnB1dHNbcF0ubmFtZSArIFwiXCIsIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChpbnB1dHNbcF0uc2VsZWN0ZWRPcHRpb24/LmlkLCBWYWxpZGF0b3JzQXJyYXkpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLkZvcm1Hcm91cC5hZGRDb250cm9sKGlucHV0c1twXS5uYW1lICsgXCJcIiwgdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKGlucHV0c1twXS52YWx1ZSwgVmFsaWRhdG9yc0FycmF5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWxlcnQoJ2Vycm9yJyk7XHJcbiAgICB9XHJcbiAgfVxuXG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLy9AT3V0cHV0KCkgY2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIEZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcbiAgICByZXR1cm4gVHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgRmFicmlrYW50ZW5BcGlDbGllbnQ6IEZhYnJpa2FudGVuQXBpQ2xpZW50LFxuICAgIHByaXZhdGUgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICBcbiAgfVxuXG4gIHB1YmxpYyBPblN1Ym1pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZvcm1Hcm91cC52YWxpZCkge1xyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlblNldEZvcm1SZXF1ZXN0KCk7XHJcblxyXG4gICAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgICAgcmVxdWVzdC5mb3JtID0gdGhpcy5mb3JtO1xyXG4gICAgICByZXF1ZXN0Lmxhbmd1YWdlSWQgPSB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuQWN0aXZlTGFuZ3VhZ2UuaWQ7XHJcbiAgICAgIHJlcXVlc3QuY291bnRyeUNvZGUgPSB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuQWN0aXZlTGFuZ3VhZ2UuY291bnRyeUNvZGU7XHJcbiAgICAgIHJlcXVlc3QuZmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbCA9IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw7XHJcblxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNldEZvcm0ocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZWxvYWRNb2RlbCh0aGlzLkNoYW5nZURldGVjdG9yUmVmLCB1bmRlZmluZWQsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tcGxldGVkLmVtaXQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciB0ZXh0ID0gXCJcIjtcclxuXHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuRm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgdmFyIHRlbXAgPSB0aGlzLkZvcm1Hcm91cC5nZXQoa2V5KTtcclxuXHJcbiAgICAgICAgaWYgKHRlbXAgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gdGVtcC5lcnJvcnMgYXMgVmFsaWRhdGlvbkVycm9ycztcclxuICAgICAgICAgIGlmIChjb250cm9sRXJyb3JzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpLmZvckVhY2goa2V5RXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChrZXlFcnJvciA9PSBcInJlcXVpcmVkXCIgfHwga2V5RXJyb3IgPT0gXCJlbWFpbFwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLkdldElucHV0KGtleSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0aW9uX2lucHV0ID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSW5wdXQsIGlucHV0LmlkKVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGV4dCArPSBcIjxsaT5cIiArIHRyYW5zbGF0aW9uX2lucHV0ICsgXCI8L2xpPlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciB0ZXN0ID0gXCJcIjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB2YXIgdHJhbnNsYXRpb24gPSB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuUmVxdWlyZWQpO1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5TaG93UG9wdXBUZXh0KHRyYW5zbGF0aW9uICsgXCI8dWw+XCIgKyB0ZXh0ICsgXCI8L3VsPlwiKTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIENsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoKTtcclxuICB9XG5cbiAgcHVibGljIEdldElucHV0KG5hbWU6IHN0cmluZyk6IEZhYnJpa2FudGVuRm9ybUlucHV0Vmlld01vZGVsIHwgbnVsbCB7XG4gICAgdmFyIGNhdHMgPSB0aGlzLmZvcm0/LmZvcm1DYXRlZ29yaWVzO1xuXG4gICAgaWYgKGNhdHMgIT0gbnVsbCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3dzID0gY2F0c1tpXS5yb3dzO1xyXG5cclxuICAgICAgICBpZiAocm93cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgdmFyIGlucHV0cyA9IHJvd3Nbal0uaW5wdXRzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBpbnB1dHMubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHNbcF0ubmFtZSA9PSBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dHNbcF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiRm9ybUdyb3VwXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdCBvZiBmb3JtLmZvcm1DYXRlZ29yaWVzXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2F0LW5hbWVcIiBbbmdDbGFzc109XCInY2F0LScgKyBjYXQuaWRcIj5cbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Gb3JtcywgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5DYXRlZ29yeSwgY2F0LmlkKSB9fVxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBjYXQucm93c1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2F0LWlucHV0cyBkaXNwbGF5ZmxleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jYXQtaW5wdXRcIiAqbmdGb3I9XCJsZXQgaW5wdXQgb2Ygcm93LmlucHV0c1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dC5mb3JtSW5wdXRUeXBlID09IDEgfHwgaW5wdXQuZm9ybUlucHV0VHlwZSA9PSA2XCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1jYXQtaW5wdXQtaW5wdXRcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSW5wdXQsIGlucHV0LmlkKSB9fVxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgaW5wdXQubmFtZSB9fVwiIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIj5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj48L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXQuZm9ybUlucHV0VHlwZSA9PSAyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1jYXQtaW5wdXQtc2VsZWN0XCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsIGZpbHRlci1uYW1lXCI+XG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZvcm1zLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LklucHV0LCBpbnB1dC5pZCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInt7IGlucHV0Lm5hbWUgfX1cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW5wdXQub3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5pZFwiIGNsYXNzPVwic2VsZWN0LW1hdC1vcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lLXNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuT3B0aW9uLCBvcHRpb24uaWQpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dC5mb3JtSW5wdXRUeXBlID09IDMgfHwgaW5wdXQuZm9ybUlucHV0VHlwZSA9PSA3XCI+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiZm9ybS1jYXQtaW5wdXQtY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBpbnB1dC5uYW1lIH19XCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZvcm1zLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LklucHV0LCBpbnB1dC5pZClcIj48L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dC5mb3JtSW5wdXRUeXBlID09IDVcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1jYXQtaW5wdXQtdGV4dGFyZWFcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSW5wdXQsIGlucHV0LmlkKSB9fVxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInt7IGlucHV0Lm5hbWUgfX1cIiBzdHlsZT1cImhlaWdodDogMTAwcHg7XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbi1yb3dcIj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDbG9zZSgpXCIgY2xhc3M9XCJmb3JtLWNhdC1jbG9zZSBmb3JtLWJ1dHRvbi1yb3ctYnV0dG9uXCI+XG4gICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsb3NlKSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk9uU3VibWl0KClcIiBjbGFzcz1cImZvcm0tY2F0LXN1Ym1pdCBmb3JtLWJ1dHRvbi1yb3ctYnV0dG9uXCI+XG4gICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNlbmQpIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1mb3JtL2ZhYi1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZm9ybS9mYWItZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQXlELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBNEIsYUFBYSxFQUF3Qix5QkFBeUIsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBaUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUluTixNQU1hLGdCQUFnQjtJQTBFakI7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQTVFSCxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBRS9CLEtBQUssQ0FBMkI7SUFDaEMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFhLElBQUksQ0FBQyxLQUErQjtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzNDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRXBDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixLQUFLLElBQUksQ0FBQyxH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c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdG9yUmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLCBGb3JtSW5wdXRUeXBlLCBGYWJyaWthbnRlbkFwaUNsaWVudCwgRmFicmlrYW50ZW5TZXRGb3JtUmVxdWVzdCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSwgRmFicmlrYW50ZW5Gb3JtSW5wdXRWaWV3TW9kZWwgfSBmcm9tICcuLi8uLi9zd2FnZ2VyL1N3YWdnZXJDbGllbnQnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmFiLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWItZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZhYkZvcm1Db21wb25lbnQge1xuXG4gIHB1YmxpYyBJbnN0YW5jZUlkOiBzdHJpbmcgPSBcIlwiO1xuXG4gIF9mb3JtOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWw7XHJcbiAgZ2V0IGZvcm0oKTogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsdWU6IEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbCkge1xyXG4gICAgdGhpcy5fZm9ybSA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMuRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSlcbiAgICB2YXIgY2F0cyA9IHRoaXMuZm9ybS5mb3JtQ2F0ZWdvcmllcztcblxuICAgIGlmIChjYXRzICE9IG51bGwpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcm93cyA9IGNhdHNbaV0ucm93cztcclxuXHJcbiAgICAgICAgaWYgKHJvd3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByb3dzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2pdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgIGlmIChpbnB1dHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgaW5wdXRzLmxlbmd0aDsgcCsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIFZhbGlkYXRvcnNBcnJheTogVmFsaWRhdG9yRm5bXSA9IG5ldyBBcnJheSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHNbcF0uZm9ybUlucHV0VHlwZSA9PSBGb3JtSW5wdXRUeXBlLkVtYWlsKSB7XHJcbiAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHNbcF0uZm9ybUlucHV0VHlwZSA9PSBGb3JtSW5wdXRUeXBlLkNoZWNrYm94UmVxdWlyZWRUcnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRzW3BdLnJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHNbcF0uZm9ybUlucHV0VHlwZSA9PSBGb3JtSW5wdXRUeXBlLkRyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuRm9ybUdyb3VwLmFkZENvbnRyb2woaW5wdXRzW3BdLm5hbWUgKyBcIlwiLCB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woaW5wdXRzW3BdLnNlbGVjdGVkT3B0aW9uPy5pZCwgVmFsaWRhdG9yc0FycmF5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5Gb3JtR3JvdXAuYWRkQ29udHJvbChpbnB1dHNbcF0ubmFtZSArIFwiXCIsIHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChpbnB1dHNbcF0udmFsdWUsIFZhbGlkYXRvcnNBcnJheSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGFsZXJ0KCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cblxuICBASW5wdXQoKSBzZXQgaW5zdGFuY2VpZCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLkluc3RhbmNlSWQgPSB2YWx1ZTtcclxuICB9XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uQ2F0ZWdvcnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkoKSB7XG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCxcbiAgICBwcml2YXRlIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgXG4gIH1cblxuICBwdWJsaWMgT25TdWJtaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5Gb3JtR3JvdXAudmFsaWQpIHtcclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5TZXRGb3JtUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICAgIHJlcXVlc3QuZm9ybSA9IHRoaXMuZm9ybTtcclxuICAgICAgcmVxdWVzdC5sYW5ndWFnZUlkID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkFjdGl2ZUxhbmd1YWdlLmlkO1xyXG4gICAgICByZXF1ZXN0LmNvdW50cnlDb2RlID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkFjdGl2ZUxhbmd1YWdlLmNvdW50cnlDb2RlO1xyXG4gICAgICByZXF1ZXN0LmZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsO1xyXG4gICAgICByZXF1ZXN0Lmluc3RhbmNlSWQgPSB0aGlzLkluc3RhbmNlSWQ7XHJcblxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNldEZvcm0ocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZWxvYWRNb2RlbCh0aGlzLkNoYW5nZURldGVjdG9yUmVmLCB1bmRlZmluZWQsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29tcGxldGVkLmVtaXQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHZhciB0ZXh0ID0gXCJcIjtcclxuXHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuRm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgdmFyIHRlbXAgPSB0aGlzLkZvcm1Hcm91cC5nZXQoa2V5KTtcclxuXHJcbiAgICAgICAgaWYgKHRlbXAgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBjb25zdCBjb250cm9sRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0gdGVtcC5lcnJvcnMgYXMgVmFsaWRhdGlvbkVycm9ycztcclxuICAgICAgICAgIGlmIChjb250cm9sRXJyb3JzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpLmZvckVhY2goa2V5RXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChrZXlFcnJvciA9PSBcInJlcXVpcmVkXCIgfHwga2V5RXJyb3IgPT0gXCJlbWFpbFwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSB0aGlzLkdldElucHV0KGtleSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0aW9uX2lucHV0ID0gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSW5wdXQsIGlucHV0LmlkKVxyXG5cclxuICAgICAgICAgICAgICAgICAgdGV4dCArPSBcIjxsaT5cIiArIHRyYW5zbGF0aW9uX2lucHV0ICsgXCI8L2xpPlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciB0ZXN0ID0gXCJcIjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB2YXIgdHJhbnNsYXRpb24gPSB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuUmVxdWlyZWQpO1xyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5TaG93UG9wdXBUZXh0KHRyYW5zbGF0aW9uICsgXCI8dWw+XCIgKyB0ZXh0ICsgXCI8L3VsPlwiKTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIENsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoKTtcclxuICB9XG5cbiAgcHVibGljIEdldElucHV0KG5hbWU6IHN0cmluZyk6IEZhYnJpa2FudGVuRm9ybUlucHV0Vmlld01vZGVsIHwgbnVsbCB7XG4gICAgdmFyIGNhdHMgPSB0aGlzLmZvcm0/LmZvcm1DYXRlZ29yaWVzO1xuXG4gICAgaWYgKGNhdHMgIT0gbnVsbCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3dzID0gY2F0c1tpXS5yb3dzO1xyXG5cclxuICAgICAgICBpZiAocm93cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgdmFyIGlucHV0cyA9IHJvd3Nbal0uaW5wdXRzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBpbnB1dHMubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dHNbcF0ubmFtZSA9PSBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dHNbcF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiRm9ybUdyb3VwXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdCBvZiBmb3JtLmZvcm1DYXRlZ29yaWVzXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY2F0LW5hbWVcIiBbbmdDbGFzc109XCInY2F0LScgKyBjYXQuaWRcIj5cbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Gb3JtcywgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5DYXRlZ29yeSwgY2F0LmlkKSB9fVxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBjYXQucm93c1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2F0LWlucHV0cyBkaXNwbGF5ZmxleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jYXQtaW5wdXRcIiAqbmdGb3I9XCJsZXQgaW5wdXQgb2Ygcm93LmlucHV0c1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dC5mb3JtSW5wdXRUeXBlID09IDEgfHwgaW5wdXQuZm9ybUlucHV0VHlwZSA9PSA2XCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1jYXQtaW5wdXQtaW5wdXRcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSW5wdXQsIGlucHV0LmlkKSB9fVxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwie3sgaW5wdXQubmFtZSB9fVwiIFsobmdNb2RlbCldPVwiaW5wdXQudmFsdWVcIj5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj48L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5wdXQuZm9ybUlucHV0VHlwZSA9PSAyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1jYXQtaW5wdXQtc2VsZWN0XCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzZWxlY3QtbWF0LWxhYmVsIGZpbHRlci1uYW1lXCI+XG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZvcm1zLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LklucHV0LCBpbnB1dC5pZCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInt7IGlucHV0Lm5hbWUgfX1cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgaW5wdXQub3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5pZFwiIGNsYXNzPVwic2VsZWN0LW1hdC1vcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lLXNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuT3B0aW9uLCBvcHRpb24uaWQpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dC5mb3JtSW5wdXRUeXBlID09IDMgfHwgaW5wdXQuZm9ybUlucHV0VHlwZSA9PSA3XCI+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwiZm9ybS1jYXQtaW5wdXQtY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJ7eyBpbnB1dC5uYW1lIH19XCI+XG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZvcm1zLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LklucHV0LCBpbnB1dC5pZClcIj48L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dC5mb3JtSW5wdXRUeXBlID09IDVcIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGggZm9ybS1jYXQtaW5wdXQtdGV4dGFyZWFcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRm9ybXMsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuSW5wdXQsIGlucHV0LmlkKSB9fVxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInt7IGlucHV0Lm5hbWUgfX1cIiBzdHlsZT1cImhlaWdodDogMTAwcHg7XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbi1yb3dcIj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDbG9zZSgpXCIgY2xhc3M9XCJmb3JtLWNhdC1jbG9zZSBmb3JtLWJ1dHRvbi1yb3ctYnV0dG9uXCI+XG4gICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkNsb3NlKSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIk9uU3VibWl0KClcIiBjbGFzcz1cImZvcm0tY2F0LXN1Ym1pdCBmb3JtLWJ1dHRvbi1yb3ctYnV0dG9uXCI+XG4gICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlNlbmQpIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
@@ -24,7 +24,7 @@ class FabFormDialogComponent {
24
24
  this.dialogRef.close();
25
25
  }
26
26
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FabFormDialogComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FabFormDialogComponent, selector: "app-fab-form-dialog", ngImport: i0, template: "<div class=\"form-container\">\n <app-fab-form [form]=\"Form\" (completed)=\"Close()\"></app-fab-form>\n</div>\n", styles: [".form-container{width:500px}\n"], dependencies: [{ kind: "component", type: i3.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }] });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FabFormDialogComponent, selector: "app-fab-form-dialog", ngImport: i0, template: "<div class=\"form-container\">\n <app-fab-form [form]=\"Form\" (completed)=\"Close()\"></app-fab-form>\n</div>\n", styles: [".form-container{width:500px}\n"], dependencies: [{ kind: "component", type: i3.FabFormComponent, selector: "app-fab-form", inputs: ["form", "instanceid"], outputs: ["completed"] }] });
28
28
  }
29
29
  export { FabFormDialogComponent };
30
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FabFormDialogComponent, decorators: [{