ngx-material-entity 16.1.0 → 16.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/classes/base.builder.d.ts +1 -1
  2. package/components/confirm-dialog/confirm-dialog-data.builder.d.ts +1 -1
  3. package/components/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  4. package/components/create-page/create-page.component.d.ts +11 -20
  5. package/components/create-page/page-create-data.builder.d.ts +1 -1
  6. package/components/edit-page/edit-page.component.d.ts +10 -25
  7. package/components/edit-page/page-edit-data.builder.d.ts +1 -1
  8. package/components/form/form.component.d.ts +59 -0
  9. package/components/input/array/array-date-input/array-date-input.component.d.ts +1 -1
  10. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +1 -1
  11. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +1 -1
  12. package/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +1 -1
  13. package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +1 -1
  14. package/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.d.ts +1 -1
  15. package/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.d.ts +1 -1
  16. package/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.d.ts +1 -1
  17. package/components/input/custom/custom.component.d.ts +1 -1
  18. package/components/input/date/date-input/date-input.component.d.ts +1 -1
  19. package/components/input/date/date-range-input/date-range-input.component.d.ts +1 -1
  20. package/components/input/date/date-time-input/date-time-input.component.d.ts +1 -1
  21. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  22. package/components/input/file/file-image-input/file-image-input.component.d.ts +1 -1
  23. package/components/input/file/file-input/file-input.component.d.ts +1 -1
  24. package/components/input/input.component.d.ts +33 -3
  25. package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +1 -1
  26. package/components/input/number/number-input/number-input.component.d.ts +1 -1
  27. package/components/input/number/number-slider-input/number-slider-input.component.d.ts +1 -1
  28. package/components/input/relations/references-many-input/references-many-input.component.d.ts +1 -1
  29. package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +1 -1
  30. package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +1 -1
  31. package/components/input/string/string-input/string-input.component.d.ts +1 -1
  32. package/components/input/string/string-password-input/string-password-input.component.d.ts +1 -1
  33. package/components/input/string/string-textbox-input/string-textbox-input.component.d.ts +1 -1
  34. package/components/table/create-dialog/create-data.builder.d.ts +4 -1
  35. package/components/table/create-dialog/create-entity-data.builder.d.ts +2 -2
  36. package/components/table/create-dialog/create-entity-dialog.component.d.ts +22 -14
  37. package/components/table/display-column-value/display-column-value.component.d.ts +1 -1
  38. package/components/table/edit-dialog/edit-data.builder.d.ts +4 -2
  39. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +12 -7
  40. package/components/table/edit-dialog/edit-entity.builder.d.ts +2 -2
  41. package/components/table/table-data.builder.d.ts +3 -3
  42. package/components/table/table-data.d.ts +17 -1
  43. package/components/table/table.component.d.ts +9 -7
  44. package/decorators/array/array-decorator-internal.data.d.ts +1 -1
  45. package/decorators/array/array.decorator.d.ts +1 -1
  46. package/decorators/base/decorator-types.enum.d.ts +3 -2
  47. package/decorators/boolean/boolean-decorator-internal.data.d.ts +1 -1
  48. package/decorators/custom/custom-decorator-internal.data.d.ts +1 -1
  49. package/decorators/custom/custom.decorator.d.ts +1 -1
  50. package/decorators/date/date-decorator-internal.data.d.ts +1 -1
  51. package/decorators/file/file-decorator-internal.data.d.ts +1 -1
  52. package/decorators/file/file-decorator.data.d.ts +1 -1
  53. package/decorators/has-many/has-many-decorator-internal.data.d.ts +1 -1
  54. package/decorators/has-many/has-many.decorator.d.ts +1 -1
  55. package/decorators/number/number-decorator-internal.data.d.ts +1 -2
  56. package/decorators/object/object-decorator-internal.data.d.ts +12 -1
  57. package/decorators/object/object-decorator.data.d.ts +14 -1
  58. package/decorators/object/object.decorator.d.ts +2 -2
  59. package/decorators/references-many/references-many-decorator-internal.data.d.ts +1 -1
  60. package/decorators/references-many/references-many.decorator.d.ts +1 -1
  61. package/decorators/references-one/references-one-decorator-internal.data.d.ts +1 -1
  62. package/decorators/references-one/references-one.decorator.d.ts +1 -1
  63. package/decorators/string/string-decorator-internal.data.d.ts +1 -2
  64. package/default-global-configuration-values.d.ts +0 -5
  65. package/directives/drag-drop.directive.d.ts +1 -1
  66. package/esm2022/classes/base.builder.mjs +2 -2
  67. package/esm2022/classes/entity.model.mjs +1 -1
  68. package/esm2022/components/confirm-dialog/confirm-dialog-data.builder.mjs +1 -1
  69. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  70. package/esm2022/components/create-page/create-data.route.mjs +1 -1
  71. package/esm2022/components/create-page/create-page.component.mjs +31 -43
  72. package/esm2022/components/create-page/page-create-data.builder.mjs +1 -1
  73. package/esm2022/components/edit-page/edit-data.route.mjs +1 -1
  74. package/esm2022/components/edit-page/edit-page.component.mjs +30 -56
  75. package/esm2022/components/edit-page/page-edit-data.builder.mjs +1 -1
  76. package/esm2022/components/form/form.component.mjs +99 -0
  77. package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +30 -14
  78. package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +28 -14
  79. package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +34 -15
  80. package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +22 -10
  81. package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +18 -9
  82. package/esm2022/components/input/array/array-table.class.mjs +1 -1
  83. package/esm2022/components/input/base-input.component.mjs +1 -1
  84. package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +14 -6
  85. package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +19 -11
  86. package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +16 -8
  87. package/esm2022/components/input/custom/custom.component.mjs +3 -4
  88. package/esm2022/components/input/date/date-input/date-input.component.mjs +15 -7
  89. package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +19 -11
  90. package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +26 -14
  91. package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +6 -5
  92. package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +8 -6
  93. package/esm2022/components/input/file/file-input/file-input.component.mjs +21 -10
  94. package/esm2022/components/input/input.component.mjs +156 -53
  95. package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +18 -8
  96. package/esm2022/components/input/number/number-input/number-input.component.mjs +12 -7
  97. package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +14 -8
  98. package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +32 -17
  99. package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +22 -11
  100. package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +21 -11
  101. package/esm2022/components/input/string/string-input/string-input.component.mjs +12 -6
  102. package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +19 -9
  103. package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +12 -6
  104. package/esm2022/components/table/create-dialog/create-data.builder.mjs +14 -3
  105. package/esm2022/components/table/create-dialog/create-entity-data.builder.mjs +2 -2
  106. package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +66 -38
  107. package/esm2022/components/table/default.actions.mjs +1 -1
  108. package/esm2022/components/table/display-column-value/base-display-column-value.component.mjs +1 -1
  109. package/esm2022/components/table/display-column-value/display-column-value.component.mjs +1 -1
  110. package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +18 -7
  111. package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +45 -24
  112. package/esm2022/components/table/edit-dialog/edit-entity.builder.mjs +2 -2
  113. package/esm2022/components/table/table-data.builder.mjs +7 -7
  114. package/esm2022/components/table/table-data.mjs +1 -1
  115. package/esm2022/components/table/table.component.mjs +30 -24
  116. package/esm2022/components/tooltip/tooltip.component.mjs +1 -1
  117. package/esm2022/decorators/array/array-decorator-internal.data.mjs +1 -1
  118. package/esm2022/decorators/array/array-decorator.data.mjs +1 -1
  119. package/esm2022/decorators/array/array.decorator.mjs +2 -2
  120. package/esm2022/decorators/base/base-property.decorator.mjs +1 -1
  121. package/esm2022/decorators/base/decorator-types.enum.mjs +2 -1
  122. package/esm2022/decorators/base/property-decorator-internal.data.mjs +1 -1
  123. package/esm2022/decorators/boolean/boolean-decorator-internal.data.mjs +1 -1
  124. package/esm2022/decorators/boolean/boolean.decorator.mjs +2 -2
  125. package/esm2022/decorators/custom/custom-decorator-internal.data.mjs +1 -1
  126. package/esm2022/decorators/custom/custom-decorator.data.mjs +1 -1
  127. package/esm2022/decorators/custom/custom.decorator.mjs +2 -2
  128. package/esm2022/decorators/date/date-decorator-internal.data.mjs +1 -1
  129. package/esm2022/decorators/date/date-decorator.data.mjs +1 -1
  130. package/esm2022/decorators/date/date.decorator.mjs +2 -2
  131. package/esm2022/decorators/file/file-decorator-internal.data.mjs +1 -1
  132. package/esm2022/decorators/file/file-decorator.data.mjs +1 -1
  133. package/esm2022/decorators/file/file.decorator.mjs +2 -2
  134. package/esm2022/decorators/has-many/has-many-decorator-internal.data.mjs +1 -1
  135. package/esm2022/decorators/has-many/has-many.decorator.mjs +2 -2
  136. package/esm2022/decorators/number/number-decorator-internal.data.mjs +3 -10
  137. package/esm2022/decorators/number/number.decorator.mjs +2 -2
  138. package/esm2022/decorators/object/object-decorator-internal.data.mjs +23 -1
  139. package/esm2022/decorators/object/object-decorator.data.mjs +1 -1
  140. package/esm2022/decorators/object/object.decorator.mjs +8 -3
  141. package/esm2022/decorators/references-many/references-many-decorator-internal.data.mjs +1 -1
  142. package/esm2022/decorators/references-many/references-many.decorator.mjs +2 -2
  143. package/esm2022/decorators/references-one/references-one-decorator-internal.data.mjs +1 -1
  144. package/esm2022/decorators/references-one/references-one.decorator.mjs +2 -2
  145. package/esm2022/decorators/string/string-decorator-internal.data.mjs +3 -10
  146. package/esm2022/decorators/string/string.decorator.mjs +2 -2
  147. package/esm2022/default-global-configuration-values.mjs +5 -17
  148. package/esm2022/directives/drag-drop.directive.mjs +4 -3
  149. package/esm2022/directives/dynamic-style-class.directive.mjs +1 -1
  150. package/esm2022/encapsulation/reflect.utilities.mjs +2 -1
  151. package/esm2022/functions/dropdown-values-to-function.function.mjs +14 -0
  152. package/esm2022/functions/get-validation-errors-tooltip-content.function.ts.mjs +1 -1
  153. package/esm2022/global-configuration-values.mjs +16 -2
  154. package/esm2022/public-api.mjs +1 -2
  155. package/esm2022/services/entity.service.mjs +1 -1
  156. package/esm2022/services/unsaved-changes.guard.mjs +7 -13
  157. package/esm2022/utilities/date.utilities.mjs +1 -1
  158. package/esm2022/utilities/entity.utilities.mjs +9 -9
  159. package/esm2022/utilities/file.utilities.mjs +1 -1
  160. package/esm2022/utilities/validation.utilities.mjs +11 -6
  161. package/fesm2022/ngx-material-entity.mjs +4760 -4510
  162. package/fesm2022/ngx-material-entity.mjs.map +1 -1
  163. package/functions/dropdown-values-to-function.function.d.ts +11 -0
  164. package/global-configuration-values.d.ts +15 -1
  165. package/package.json +1 -1
  166. package/public-api.d.ts +0 -1
  167. package/services/unsaved-changes.guard.d.ts +15 -8
  168. package/utilities/entity.utilities.d.ts +2 -2
  169. package/components/input/input.module.d.ts +0 -58
  170. package/esm2022/components/input/input.module.mjs +0 -192
@@ -1,20 +1,25 @@
1
+ /* eslint-disable jsdoc/require-jsdoc */
2
+ import { NgFor } from '@angular/common';
1
3
  import { Component, Inject } from '@angular/core';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatDatepickerModule } from '@angular/material/datepicker';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { MatSelectModule } from '@angular/material/select';
2
9
  import { DateTimeDateDecoratorConfigInternal } from '../../../../decorators/date/date-decorator-internal.data';
3
- import { NGX_INTERNAL_GLOBAL_DEFAULT_VALUES } from '../../../../default-global-configuration-values';
4
10
  import { ReflectUtilities } from '../../../../encapsulation/reflect.utilities';
5
11
  import { defaultTrue } from '../../../../functions/default-true.function';
12
+ import { NGX_COMPLETE_GLOBAL_DEFAULT_VALUES } from '../../../../global-configuration-values';
6
13
  import { DateUtilities } from '../../../../utilities/date.utilities';
7
14
  import { EntityUtilities } from '../../../../utilities/entity.utilities';
8
15
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
9
16
  import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@angular/material/core";
13
- import * as i4 from "@angular/material/datepicker";
14
- import * as i5 from "@angular/material/form-field";
15
- import * as i6 from "@angular/material/input";
16
- import * as i7 from "@angular/material/select";
17
- // eslint-disable-next-line angular/prefer-standalone-component
17
+ import * as i1 from "@angular/material/input";
18
+ import * as i2 from "@angular/material/form-field";
19
+ import * as i3 from "@angular/material/datepicker";
20
+ import * as i4 from "@angular/forms";
21
+ import * as i5 from "@angular/material/select";
22
+ import * as i6 from "@angular/material/core";
18
23
  export class DateTimeInputComponent extends NgxMatEntityBaseInputComponent {
19
24
  globalConfig;
20
25
  DateUtilities = DateUtilities;
@@ -68,14 +73,21 @@ export class DateTimeInputComponent extends NgxMatEntityBaseInputComponent {
68
73
  }
69
74
  this.emitChange();
70
75
  }
71
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DateTimeInputComponent, deps: [{ token: NGX_INTERNAL_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
72
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: DateTimeInputComponent, selector: "date-time-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"date-time\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [matDatepicker]=\"picker\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.minDate ? metadata.minDate(propertyValue) : undefined\"\n [max]=\"metadata.maxDate ? metadata.maxDate(propertyValue) : undefined\"\n [matDatepickerFilter]=\"metadata.filterDate ?? defaultDateFilter\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (dateChange)=\"setTime()\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field class=\"timepicker\">\n <mat-label>{{metadata.timeDisplayName}}</mat-label>\n <mat-select\n #timeModel=\"ngModel\"\n [name]=\"name + 'time'\"\n [required]=\"metadata.required(entity)\"\n [compareWith]=\"compareTimes\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"time\"\n (selectionChange)=\"setTime()\"\n >\n <mat-option *ngFor=\"let validTime of DateUtilities.getValidTimesForDropdown(\n metadata.times,\n propertyValue,\n metadata.minTime,\n metadata.maxTime,\n metadata.filterTime\n )\"\n [value]=\"validTime.value\"\n >\n {{validTime.displayName}}\n </mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(timeModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: ["mat-form-field{width:100%}.date-time{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }] });
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DateTimeInputComponent, deps: [{ token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: DateTimeInputComponent, isStandalone: true, selector: "date-time-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"date-time\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [matDatepicker]=\"picker\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.minDate ? metadata.minDate(propertyValue) : undefined\"\n [max]=\"metadata.maxDate ? metadata.maxDate(propertyValue) : undefined\"\n [matDatepickerFilter]=\"metadata.filterDate ?? defaultDateFilter\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (dateChange)=\"setTime()\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field class=\"timepicker\">\n <mat-label>{{metadata.timeDisplayName}}</mat-label>\n <mat-select\n #timeModel=\"ngModel\"\n [name]=\"name + 'time'\"\n [required]=\"metadata.required(entity)\"\n [compareWith]=\"compareTimes\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"time\"\n (selectionChange)=\"setTime()\"\n >\n <mat-option *ngFor=\"let validTime of DateUtilities.getValidTimesForDropdown(\n metadata.times,\n propertyValue,\n metadata.minTime,\n metadata.maxTime,\n metadata.filterTime\n )\"\n [value]=\"validTime.value\"\n >\n {{validTime.displayName}}\n </mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(timeModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: ["mat-form-field{width:100%}.date-time{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
73
78
  }
74
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: DateTimeInputComponent, decorators: [{
75
80
  type: Component,
76
- args: [{ selector: 'date-time-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"date-time\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [matDatepicker]=\"picker\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.minDate ? metadata.minDate(propertyValue) : undefined\"\n [max]=\"metadata.maxDate ? metadata.maxDate(propertyValue) : undefined\"\n [matDatepickerFilter]=\"metadata.filterDate ?? defaultDateFilter\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (dateChange)=\"setTime()\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field class=\"timepicker\">\n <mat-label>{{metadata.timeDisplayName}}</mat-label>\n <mat-select\n #timeModel=\"ngModel\"\n [name]=\"name + 'time'\"\n [required]=\"metadata.required(entity)\"\n [compareWith]=\"compareTimes\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"time\"\n (selectionChange)=\"setTime()\"\n >\n <mat-option *ngFor=\"let validTime of DateUtilities.getValidTimesForDropdown(\n metadata.times,\n propertyValue,\n metadata.minTime,\n metadata.maxTime,\n metadata.filterTime\n )\"\n [value]=\"validTime.value\"\n >\n {{validTime.displayName}}\n </mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(timeModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: ["mat-form-field{width:100%}.date-time{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:10px}\n"] }]
81
+ args: [{ selector: 'date-time-input', standalone: true, imports: [
82
+ MatInputModule,
83
+ MatFormFieldModule,
84
+ MatDatepickerModule,
85
+ FormsModule,
86
+ MatSelectModule,
87
+ NgFor
88
+ ], template: "<!-- eslint-disable angular/no-call-expression -->\n<div class=\"date-time\">\n <mat-form-field>\n <mat-label>{{metadata.displayName}}</mat-label>\n <input\n #model=\"ngModel\"\n matInput\n [name]=\"name\"\n [matDatepicker]=\"picker\"\n [required]=\"metadata.required(entity)\"\n [min]=\"metadata.minDate ? metadata.minDate(propertyValue) : undefined\"\n [max]=\"metadata.maxDate ? metadata.maxDate(propertyValue) : undefined\"\n [matDatepickerFilter]=\"metadata.filterDate ?? defaultDateFilter\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"propertyValue\"\n (dateChange)=\"setTime()\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n </mat-form-field>\n <mat-form-field class=\"timepicker\">\n <mat-label>{{metadata.timeDisplayName}}</mat-label>\n <mat-select\n #timeModel=\"ngModel\"\n [name]=\"name + 'time'\"\n [required]=\"metadata.required(entity)\"\n [compareWith]=\"compareTimes\"\n [disabled]=\"isReadOnly\"\n [(ngModel)]=\"time\"\n (selectionChange)=\"setTime()\"\n >\n <mat-option *ngFor=\"let validTime of DateUtilities.getValidTimesForDropdown(\n metadata.times,\n propertyValue,\n metadata.minTime,\n metadata.maxTime,\n metadata.filterTime\n )\"\n [value]=\"validTime.value\"\n >\n {{validTime.displayName}}\n </mat-option>\n </mat-select>\n <mat-error>{{getValidationErrorMessage(timeModel)}}</mat-error>\n </mat-form-field>\n</div>", styles: ["mat-form-field{width:100%}.date-time{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:10px}\n"] }]
77
89
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
78
90
  type: Inject,
79
- args: [NGX_INTERNAL_GLOBAL_DEFAULT_VALUES]
91
+ args: [NGX_COMPLETE_GLOBAL_DEFAULT_VALUES]
80
92
  }] }]; } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS9kYXRlLXRpbWUtaW5wdXQvZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS9kYXRlLXRpbWUtaW5wdXQvZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSzFELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFFNUUsK0RBQStEO0FBTy9ELE1BQU0sT0FBTyxzQkFDVCxTQUFRLDhCQUEwRTtJQWtCN0Q7SUFoQnJCLGFBQWEsR0FBeUIsYUFBYSxDQUFDO0lBRXBELGtCQUFrQixDQUFxQztJQUV2RCxJQUFJLElBQUk7UUFDSixPQUFPLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQztJQUM3RyxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBdUI7UUFDNUIsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxpQkFBaUIsR0FBMEMsV0FBVyxDQUFDO0lBRXZFLFlBRXFCLFlBQW9DO1FBRXJELEtBQUssRUFBRSxDQUFDO1FBRlMsaUJBQVksR0FBWixZQUFZLENBQXdCO0lBR3pELENBQUM7SUFFUSxRQUFRO1FBQ2IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckQ7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsS0FBWSxFQUFFLEtBQVk7UUFDbkMsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDbEYsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6RTthQUNJO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt1R0EvRFEsc0JBQXNCLGtCQWtCbkIsa0NBQWtDOzJGQWxCckMsc0JBQXNCLDhFQ3ZCbkMsODVEQThDTTs7MkZEdkJPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFFSSxpQkFBaUI7OzBCQXNCdEIsTUFBTTsyQkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG5pbXBvcnQgeyBUaW1lIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvZGF0ZS9kYXRlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBSZWZsZWN0VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBkZWZhdWx0VHJ1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Z1bmN0aW9ucy9kZWZhdWx0LXRydWUuZnVuY3Rpb24nO1xuaW1wb3J0IHsgTmd4R2xvYmFsRGVmYXVsdFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2dsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBEYXRlVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2RhdGUudXRpbGl0aWVzJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvcHJlZmVyLXN0YW5kYWxvbmUtY29tcG9uZW50XG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYW5ndWxhci9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RhdGUtdGltZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSwgRGVjb3JhdG9yVHlwZXMuREFURV9USU1FLCBEYXRlPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBEYXRlVXRpbGl0aWVzOiB0eXBlb2YgRGF0ZVV0aWxpdGllcyA9IERhdGVVdGlsaXRpZXM7XG5cbiAgICB0aW1lRHJvcGRvd25WYWx1ZXMhOiBEcm9wZG93blZhbHVlPFRpbWUgfCB1bmRlZmluZWQ+W107XG5cbiAgICBnZXQgdGltZSgpOiBUaW1lIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RVdGlsaXRpZXMuZ2V0TWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLlRJTUVfS0VZLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpIGFzIFRpbWUgfCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc2V0IHRpbWUodmFsdWU6IFRpbWUgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuVElNRV9LRVksIHZhbHVlLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpO1xuICAgIH1cblxuICAgIGRlZmF1bHREYXRlRmlsdGVyOiBEYXRlRmlsdGVyRm48RGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ+ID0gZGVmYXVsdFRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm1ldGFkYXRhID0gbmV3IERhdGVUaW1lRGF0ZURlY29yYXRvckNvbmZpZ0ludGVybmFsKHRoaXMubWV0YWRhdGEsIHRoaXMuZ2xvYmFsQ29uZmlnKTtcbiAgICAgICAgdGhpcy50aW1lID0gRGF0ZVV0aWxpdGllcy5nZXRUaW1lRnJvbURhdGUodGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgdGhpcy50aW1lRHJvcGRvd25WYWx1ZXMgPSB0aGlzLm1ldGFkYXRhLnRpbWVzO1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHR3byB0aW1lcyBhcmUgZXF1YWwuIElzIG5lZWRlZCBmb3IgdGhlIGRyb3Bkb3duLlxuICAgICAqIEBwYXJhbSB0aW1lMSAtIFRoZSBmaXJzdCB0aW1lIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHRpbWUyIC0gVGhlIHNlY29uZCB0aW1lIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIHRpbWUgb2JqZWN0cyBhcmUgdGhlIHNhbWUuXG4gICAgICovXG4gICAgY29tcGFyZVRpbWVzKHRpbWUxPzogVGltZSwgdGltZTI/OiBUaW1lKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aW1lMSAmJiB0aW1lMiAmJiB0aW1lMS5ob3VycyA9PT0gdGltZTIuaG91cnMgJiYgdGltZTEubWludXRlcyA9PT0gdGltZTIubWludXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRpbWUgb24gYSBkYXRldGltZSBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBzZXRUaW1lKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucHJvcGVydHlWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gbmV3IERhdGUodGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMudGltZT8uaG91cnMgIT0gbnVsbCAmJiB0aGlzLnRpbWU/Lm1pbnV0ZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlLnNldEhvdXJzKHRoaXMudGltZS5ob3VycywgdGhpcy50aW1lLm1pbnV0ZXMsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cbn0iLCI8IS0tIGVzbGludC1kaXNhYmxlIGFuZ3VsYXIvbm8tY2FsbC1leHByZXNzaW9uIC0tPlxuPGRpdiBjbGFzcz1cImRhdGUtdGltZVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwibWV0YWRhdGEucmVxdWlyZWQoZW50aXR5KVwiXG4gICAgICAgICAgICBbbWluXT1cIm1ldGFkYXRhLm1pbkRhdGUgPyBtZXRhZGF0YS5taW5EYXRlKHByb3BlcnR5VmFsdWUpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFttYXhdPVwibWV0YWRhdGEubWF4RGF0ZSA/IG1ldGFkYXRhLm1heERhdGUocHJvcGVydHlWYWx1ZSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwibWV0YWRhdGEuZmlsdGVyRGF0ZSA/PyBkZWZhdWx0RGF0ZUZpbHRlclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwic2V0VGltZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidGltZXBpY2tlclwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEudGltZURpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICN0aW1lTW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgKyAndGltZSdcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIlxuICAgICAgICAgICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVUaW1lc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRpbWVcIlxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZXRUaW1lKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsaWRUaW1lIG9mIERhdGVVdGlsaXRpZXMuZ2V0VmFsaWRUaW1lc0ZvckRyb3Bkb3duKFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS50aW1lcyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubWluVGltZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubWF4VGltZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEuZmlsdGVyVGltZVxuICAgICAgICAgICAgICAgIClcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWxpZFRpbWUudmFsdWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7dmFsaWRUaW1lLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZSh0aW1lTW9kZWwpfX08L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuPC9kaXY+Il19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS9kYXRlLXRpbWUtaW5wdXQvZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZGF0ZS9kYXRlLXRpbWUtaW5wdXQvZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFRLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBZ0IsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSzNELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0NBQWtDLEVBQTBCLE1BQU0seUNBQXlDLENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FB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QjtrQkFmbEMsU0FBUzsrQkFFSSxpQkFBaUIsY0FHZixJQUFJLFdBQ1A7d0JBQ0wsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLEtBQUs7cUJBQ1I7OzBCQW9CSSxNQUFNOzJCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IE5nRm9yLCBUaW1lIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckZuLCBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWNvcmF0b3JUeXBlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRlVGltZURhdGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvZGF0ZS9kYXRlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IFJlZmxlY3RVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL3JlZmxlY3QudXRpbGl0aWVzJztcbmltcG9ydCB7IGRlZmF1bHRUcnVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnVuY3Rpb25zL2RlZmF1bHQtdHJ1ZS5mdW5jdGlvbic7XG5pbXBvcnQgeyBOR1hfQ09NUExFVEVfR0xPQkFMX0RFRkFVTFRfVkFMVUVTLCBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IERhdGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZGF0ZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYW5ndWxhci9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2RhdGUtdGltZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtdGltZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgICAgIE5nRm9yXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGltZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5EQVRFX1RJTUUsIERhdGU+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIERhdGVVdGlsaXRpZXM6IHR5cGVvZiBEYXRlVXRpbGl0aWVzID0gRGF0ZVV0aWxpdGllcztcblxuICAgIHRpbWVEcm9wZG93blZhbHVlcyE6IERyb3Bkb3duVmFsdWU8VGltZSB8IHVuZGVmaW5lZD5bXTtcblxuICAgIGdldCB0aW1lKCk6IFRpbWUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUmVmbGVjdFV0aWxpdGllcy5nZXRNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuVElNRV9LRVksIHRoaXMuZW50aXR5LCB0aGlzLmtleSkgYXMgVGltZSB8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBzZXQgdGltZSh2YWx1ZTogVGltZSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBSZWZsZWN0VXRpbGl0aWVzLmRlZmluZU1ldGFkYXRhKEVudGl0eVV0aWxpdGllcy5USU1FX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgZGVmYXVsdERhdGVGaWx0ZXI6IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD4gPSBkZWZhdWx0VHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubWV0YWRhdGEgPSBuZXcgRGF0ZVRpbWVEYXRlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwodGhpcy5tZXRhZGF0YSwgdGhpcy5nbG9iYWxDb25maWcpO1xuICAgICAgICB0aGlzLnRpbWUgPSBEYXRlVXRpbGl0aWVzLmdldFRpbWVGcm9tRGF0ZSh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgICAgICB0aGlzLnRpbWVEcm9wZG93blZhbHVlcyA9IHRoaXMubWV0YWRhdGEudGltZXM7XG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IG5ldyBEYXRlKHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdHdvIHRpbWVzIGFyZSBlcXVhbC4gSXMgbmVlZGVkIGZvciB0aGUgZHJvcGRvd24uXG4gICAgICogQHBhcmFtIHRpbWUxIC0gVGhlIGZpcnN0IHRpbWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0gdGltZTIgLSBUaGUgc2Vjb25kIHRpbWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgdGltZSBvYmplY3RzIGFyZSB0aGUgc2FtZS5cbiAgICAgKi9cbiAgICBjb21wYXJlVGltZXModGltZTE/OiBUaW1lLCB0aW1lMj86IFRpbWUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRpbWUxICYmIHRpbWUyICYmIHRpbWUxLmhvdXJzID09PSB0aW1lMi5ob3VycyAmJiB0aW1lMS5taW51dGVzID09PSB0aW1lMi5taW51dGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGltZSBvbiBhIGRhdGV0aW1lIHByb3BlcnR5LlxuICAgICAqL1xuICAgIHNldFRpbWUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgICAgICBpZiAodGhpcy50aW1lPy5ob3VycyAhPSBudWxsICYmIHRoaXMudGltZT8ubWludXRlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUuc2V0SG91cnModGhpcy50aW1lLmhvdXJzLCB0aGlzLnRpbWUubWludXRlcywgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48ZGl2IGNsYXNzPVwiZGF0ZS10aW1lXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPnt7bWV0YWRhdGEuZGlzcGxheU5hbWV9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNtb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgICAgIFttaW5dPVwibWV0YWRhdGEubWluRGF0ZSA/IG1ldGFkYXRhLm1pbkRhdGUocHJvcGVydHlWYWx1ZSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW21heF09XCJtZXRhZGF0YS5tYXhEYXRlID8gbWV0YWRhdGEubWF4RGF0ZShwcm9wZXJ0eVZhbHVlKSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJtZXRhZGF0YS5maWx0ZXJEYXRlID8/IGRlZmF1bHREYXRlRmlsdGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJzZXRUaW1lKClcIlxuICAgICAgICA+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ0aW1lcGlja2VyXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS50aW1lRGlzcGxheU5hbWV9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgI3RpbWVNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICd0aW1lJ1wiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwibWV0YWRhdGEucmVxdWlyZWQoZW50aXR5KVwiXG4gICAgICAgICAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVRpbWVzXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGltZVwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNldFRpbWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB2YWxpZFRpbWUgb2YgRGF0ZVV0aWxpdGllcy5nZXRWYWxpZFRpbWVzRm9yRHJvcGRvd24oXG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLnRpbWVzLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5taW5UaW1lLFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tYXhUaW1lLFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5maWx0ZXJUaW1lXG4gICAgICAgICAgICAgICAgKVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbGlkVGltZS52YWx1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3t2YWxpZFRpbWUuZGlzcGxheU5hbWV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKHRpbWVNb2RlbCl9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj4iXX0=
@@ -1,19 +1,20 @@
1
1
  /* eslint-disable jsdoc/require-jsdoc */
2
2
  import { Component } from '@angular/core';
3
3
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
4
+ import { FileInputComponent } from '../file-input/file-input.component';
4
5
  import * as i0 from "@angular/core";
5
- import * as i1 from "../file-input/file-input.component";
6
- // eslint-disable-next-line angular/prefer-standalone-component
7
6
  export class FileDefaultInputComponent extends NgxMatEntityBaseInputComponent {
8
7
  async refreshFileData(fileData) {
9
8
  this.propertyValue = fileData;
10
9
  this.emitChange();
11
10
  }
12
11
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: FileDefaultInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: FileDefaultInputComponent, selector: "file-default-input", usesInheritance: true, ngImport: i0, template: "<div [class.file-input]=\"metadata.dragAndDrop\" [class.mat-elevation-z8]=\"metadata.dragAndDrop\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}\n"], dependencies: [{ kind: "component", type: i1.FileInputComponent, selector: "file-input", inputs: ["propertyValue", "entity", "key", "metadata", "getValidationErrorMessage", "isReadOnly"], outputs: ["fileDataChangeEvent"] }] });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: FileDefaultInputComponent, isStandalone: true, selector: "file-default-input", usesInheritance: true, ngImport: i0, template: "<div [class.file-input]=\"metadata.dragAndDrop\" [class.mat-elevation-z8]=\"metadata.dragAndDrop\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}\n"], dependencies: [{ kind: "component", type: FileInputComponent, selector: "file-input", inputs: ["propertyValue", "entity", "key", "metadata", "getValidationErrorMessage", "isReadOnly"], outputs: ["fileDataChangeEvent"] }] });
14
13
  }
15
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: FileDefaultInputComponent, decorators: [{
16
15
  type: Component,
17
- args: [{ selector: 'file-default-input', template: "<div [class.file-input]=\"metadata.dragAndDrop\" [class.mat-elevation-z8]=\"metadata.dragAndDrop\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}\n"] }]
16
+ args: [{ selector: 'file-default-input', standalone: true, imports: [
17
+ FileInputComponent
18
+ ], template: "<div [class.file-input]=\"metadata.dragAndDrop\" [class.mat-elevation-z8]=\"metadata.dragAndDrop\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}\n"] }]
18
19
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWRlZmF1bHQtaW5wdXQvZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWRlZmF1bHQtaW5wdXQvZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFFNUUsK0RBQStEO0FBTy9ELE1BQU0sT0FBTyx5QkFDVCxTQUFRLDhCQUE4RjtJQUV0RyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQWdDO1FBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO3VHQU5RLHlCQUF5QjsyRkFBekIseUJBQXlCLGlGQ2R0QywyYkFXTTs7MkZER08seUJBQXlCO2tCQU5yQyxTQUFTOytCQUVJLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IEZpbGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYW5ndWxhci9wcmVmZXItc3RhbmRhbG9uZS1jb21wb25lbnRcbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmlsZS1kZWZhdWx0LWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLWRlZmF1bHQtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRGVmYXVsdElucHV0Q29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlLCBEZWNvcmF0b3JUeXBlcy5GSUxFX0RFRkFVTFQsIEZpbGVEYXRhIHwgRmlsZURhdGFbXT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgYXN5bmMgcmVmcmVzaEZpbGVEYXRhKGZpbGVEYXRhPzogRmlsZURhdGEgfCBGaWxlRGF0YVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IGZpbGVEYXRhO1xuICAgICAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB9XG59IiwiPGRpdiBbY2xhc3MuZmlsZS1pbnB1dF09XCJtZXRhZGF0YS5kcmFnQW5kRHJvcFwiIFtjbGFzcy5tYXQtZWxldmF0aW9uLXo4XT1cIm1ldGFkYXRhLmRyYWdBbmREcm9wXCI+XG4gICAgPGZpbGUtaW5wdXRcbiAgICAgICAgW3Byb3BlcnR5VmFsdWVdPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIFttZXRhZGF0YV09XCJtZXRhZGF0YVwiXG4gICAgICAgIFtnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXT1cImdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VcIlxuICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICBba2V5XT1cImtleVwiXG4gICAgICAgIChmaWxlRGF0YUNoYW5nZUV2ZW50KT1cInJlZnJlc2hGaWxlRGF0YSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9maWxlLWlucHV0PlxuPC9kaXY+Il19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWRlZmF1bHQtaW5wdXQvZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWRlZmF1bHQtaW5wdXQvZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBS2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVl4RSxNQUFNLE9BQU8seUJBQ1QsU0FBUSw4QkFBOEY7SUFFdEcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFnQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQzt1R0FOUSx5QkFBeUI7MkZBQXpCLHlCQUF5QixxR0NuQnRDLDJiQVdNLDBJREtFLGtCQUFrQjs7MkZBR2IseUJBQXlCO2tCQVZyQyxTQUFTOytCQUVJLG9CQUFvQixjQUdsQixJQUFJLFdBQ1A7d0JBQ0wsa0JBQWtCO3FCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRmlsZURhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmaWxlLWRlZmF1bHQtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRlZmF1bHQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtZGVmYXVsdC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGaWxlSW5wdXRDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVEZWZhdWx0SW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLkZJTEVfREVGQVVMVCwgRmlsZURhdGEgfCBGaWxlRGF0YVtdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBhc3luYyByZWZyZXNoRmlsZURhdGEoZmlsZURhdGE/OiBGaWxlRGF0YSB8IEZpbGVEYXRhW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gZmlsZURhdGE7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cbn0iLCI8ZGl2IFtjbGFzcy5maWxlLWlucHV0XT1cIm1ldGFkYXRhLmRyYWdBbmREcm9wXCIgW2NsYXNzLm1hdC1lbGV2YXRpb24tejhdPVwibWV0YWRhdGEuZHJhZ0FuZERyb3BcIj5cbiAgICA8ZmlsZS1pbnB1dFxuICAgICAgICBbcHJvcGVydHlWYWx1ZV09XCJwcm9wZXJ0eVZhbHVlXCJcbiAgICAgICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCJcbiAgICAgICAgW2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VdPVwiZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgIFtrZXldPVwia2V5XCJcbiAgICAgICAgKGZpbGVEYXRhQ2hhbmdlRXZlbnQpPVwicmVmcmVzaEZpbGVEYXRhKCRldmVudClcIlxuICAgID5cbiAgICA8L2ZpbGUtaW5wdXQ+XG48L2Rpdj4iXX0=
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable jsdoc/require-jsdoc */
2
+ import { NgIf } from '@angular/common';
2
3
  import { HttpClient } from '@angular/common/http';
3
4
  import { Component } from '@angular/core';
4
5
  import { ReflectUtilities } from '../../../../encapsulation/reflect.utilities';
@@ -6,11 +7,9 @@ import { PLACEHOLDER } from '../../../../mocks/placeholder-data.png';
6
7
  import { EntityUtilities } from '../../../../utilities/entity.utilities';
7
8
  import { FileUtilities } from '../../../../utilities/file.utilities';
8
9
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
10
+ import { FileInputComponent } from '../file-input/file-input.component';
9
11
  import * as i0 from "@angular/core";
10
12
  import * as i1 from "@angular/common/http";
11
- import * as i2 from "@angular/common";
12
- import * as i3 from "../file-input/file-input.component";
13
- // eslint-disable-next-line angular/prefer-standalone-component
14
13
  export class FileImageInputComponent extends NgxMatEntityBaseInputComponent {
15
14
  http;
16
15
  get multiPreviewImages() {
@@ -92,10 +91,13 @@ export class FileImageInputComponent extends NgxMatEntityBaseInputComponent {
92
91
  this.imageIndex = index;
93
92
  }
94
93
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: FileImageInputComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
95
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: FileImageInputComponent, selector: "file-image-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/conditional-complexity -->\n<!-- eslint-disable angular/prefer-ngsrc -->\n<!-- eslint-disable angular/alt-text -->\n<!-- eslint-disable angular/cyclomatic-complexity -->\n<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n\n <ng-container *ngIf=\"metadata.preview\">\n <ng-container *ngIf=\"metadata.multiple\">\n <div class=\"image-preview\">\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n \n <div class=\"preview-nav\">\n <i class=\"fas fa-angle-left left-button\" [class.disabled]=\"imageIndex === 0\" (click)=\"prev()\"></i>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (multiPreviewImages.length - 1)\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-4)\"\n >\n <div class=\"image-index\">{{imageIndex - 3}}</div>\n </div>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (multiPreviewImages.length - 2)\n || imageIndex === (multiPreviewImages.length - 1)\n )\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-3)\"\n >\n <div class=\"image-index\">{{imageIndex - 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-2]\" class=\"dot\" (click)=\"setIndex(imageIndex-2)\">\n <div class=\"image-index\">{{imageIndex - 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-1]\" class=\"dot\" (click)=\"setIndex(imageIndex-1)\">\n <div class=\"image-index\">{{imageIndex}}</div>\n </div>\n <div class=\"dot selected disabled\">\n <div class=\"image-index\">{{imageIndex + 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+1]\" class=\"dot\" (click)=\"setIndex(imageIndex+1)\">\n <div class=\"image-index\">{{imageIndex + 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+2]\" class=\"dot\" (click)=\"setIndex(imageIndex+2)\">\n <div class=\"image-index\">{{imageIndex + 3}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\" class=\"dot\" (click)=\"setIndex(imageIndex+3)\">\n <div class=\"image-index\">{{imageIndex + 4}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\" class=\"dot\" (click)=\"setIndex(imageIndex+4)\">\n <div class=\"image-index\">{{imageIndex + 5}}</div>\n </div>\n <i class=\"fas fa-angle-right right-button\" [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\" (click)=\"next()\"></i>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!metadata.multiple\">\n <div class=\"image-preview\">\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n </ng-container>\n </ng-container>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview img{max-width:100%;max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{display:flex;align-items:center;justify-content:center;column-gap:5px}.preview-nav .left-button,.preview-nav .right-button{font-size:30px;color:#00000061}.preview-nav .left-button:hover,.preview-nav .right-button:hover{color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .left-button.disabled,.preview-nav .right-button.disabled{color:#00000042}.preview-nav .left-button.disabled:hover,.preview-nav .right-button.disabled:hover{color:#00000042;transition:none;cursor:default}.preview-nav .dot{display:flex;align-items:center;justify-content:center;height:30px;width:30px;min-width:30px;background-color:#00000061;border-radius:50%}.preview-nav .dot .image-index{color:#fff;font-size:24px;font-weight:600}.preview-nav .dot.selected{background-color:#0000008a}.preview-nav .dot:hover{background-color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .dot.disabled:hover{cursor:default}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FileInputComponent, selector: "file-input", inputs: ["propertyValue", "entity", "key", "metadata", "getValidationErrorMessage", "isReadOnly"], outputs: ["fileDataChangeEvent"] }] });
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: FileImageInputComponent, isStandalone: true, selector: "file-image-input", usesInheritance: true, ngImport: i0, template: "<!-- eslint-disable angular/conditional-complexity -->\n<!-- eslint-disable angular/prefer-ngsrc -->\n<!-- eslint-disable angular/alt-text -->\n<!-- eslint-disable angular/cyclomatic-complexity -->\n<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n\n <ng-container *ngIf=\"metadata.preview\">\n <ng-container *ngIf=\"metadata.multiple\">\n <div class=\"image-preview\">\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n \n <div class=\"preview-nav\">\n <i class=\"fas fa-angle-left left-button\" [class.disabled]=\"imageIndex === 0\" (click)=\"prev()\"></i>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (multiPreviewImages.length - 1)\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-4)\"\n >\n <div class=\"image-index\">{{imageIndex - 3}}</div>\n </div>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (multiPreviewImages.length - 2)\n || imageIndex === (multiPreviewImages.length - 1)\n )\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-3)\"\n >\n <div class=\"image-index\">{{imageIndex - 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-2]\" class=\"dot\" (click)=\"setIndex(imageIndex-2)\">\n <div class=\"image-index\">{{imageIndex - 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-1]\" class=\"dot\" (click)=\"setIndex(imageIndex-1)\">\n <div class=\"image-index\">{{imageIndex}}</div>\n </div>\n <div class=\"dot selected disabled\">\n <div class=\"image-index\">{{imageIndex + 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+1]\" class=\"dot\" (click)=\"setIndex(imageIndex+1)\">\n <div class=\"image-index\">{{imageIndex + 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+2]\" class=\"dot\" (click)=\"setIndex(imageIndex+2)\">\n <div class=\"image-index\">{{imageIndex + 3}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\" class=\"dot\" (click)=\"setIndex(imageIndex+3)\">\n <div class=\"image-index\">{{imageIndex + 4}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\" class=\"dot\" (click)=\"setIndex(imageIndex+4)\">\n <div class=\"image-index\">{{imageIndex + 5}}</div>\n </div>\n <i class=\"fas fa-angle-right right-button\" [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\" (click)=\"next()\"></i>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!metadata.multiple\">\n <div class=\"image-preview\">\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n </ng-container>\n </ng-container>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview img{max-width:100%;max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{display:flex;align-items:center;justify-content:center;column-gap:5px}.preview-nav .left-button,.preview-nav .right-button{font-size:30px;color:#00000061}.preview-nav .left-button:hover,.preview-nav .right-button:hover{color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .left-button.disabled,.preview-nav .right-button.disabled{color:#00000042}.preview-nav .left-button.disabled:hover,.preview-nav .right-button.disabled:hover{color:#00000042;transition:none;cursor:default}.preview-nav .dot{display:flex;align-items:center;justify-content:center;height:30px;width:30px;min-width:30px;background-color:#00000061;border-radius:50%}.preview-nav .dot .image-index{color:#fff;font-size:24px;font-weight:600}.preview-nav .dot.selected{background-color:#0000008a}.preview-nav .dot:hover{background-color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .dot.disabled:hover{cursor:default}\n"], dependencies: [{ kind: "component", type: FileInputComponent, selector: "file-input", inputs: ["propertyValue", "entity", "key", "metadata", "getValidationErrorMessage", "isReadOnly"], outputs: ["fileDataChangeEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
96
95
  }
97
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: FileImageInputComponent, decorators: [{
98
97
  type: Component,
99
- args: [{ selector: 'file-image-input', template: "<!-- eslint-disable angular/conditional-complexity -->\n<!-- eslint-disable angular/prefer-ngsrc -->\n<!-- eslint-disable angular/alt-text -->\n<!-- eslint-disable angular/cyclomatic-complexity -->\n<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n\n <ng-container *ngIf=\"metadata.preview\">\n <ng-container *ngIf=\"metadata.multiple\">\n <div class=\"image-preview\">\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n \n <div class=\"preview-nav\">\n <i class=\"fas fa-angle-left left-button\" [class.disabled]=\"imageIndex === 0\" (click)=\"prev()\"></i>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (multiPreviewImages.length - 1)\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-4)\"\n >\n <div class=\"image-index\">{{imageIndex - 3}}</div>\n </div>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (multiPreviewImages.length - 2)\n || imageIndex === (multiPreviewImages.length - 1)\n )\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-3)\"\n >\n <div class=\"image-index\">{{imageIndex - 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-2]\" class=\"dot\" (click)=\"setIndex(imageIndex-2)\">\n <div class=\"image-index\">{{imageIndex - 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-1]\" class=\"dot\" (click)=\"setIndex(imageIndex-1)\">\n <div class=\"image-index\">{{imageIndex}}</div>\n </div>\n <div class=\"dot selected disabled\">\n <div class=\"image-index\">{{imageIndex + 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+1]\" class=\"dot\" (click)=\"setIndex(imageIndex+1)\">\n <div class=\"image-index\">{{imageIndex + 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+2]\" class=\"dot\" (click)=\"setIndex(imageIndex+2)\">\n <div class=\"image-index\">{{imageIndex + 3}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\" class=\"dot\" (click)=\"setIndex(imageIndex+3)\">\n <div class=\"image-index\">{{imageIndex + 4}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\" class=\"dot\" (click)=\"setIndex(imageIndex+4)\">\n <div class=\"image-index\">{{imageIndex + 5}}</div>\n </div>\n <i class=\"fas fa-angle-right right-button\" [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\" (click)=\"next()\"></i>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!metadata.multiple\">\n <div class=\"image-preview\">\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n </ng-container>\n </ng-container>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview img{max-width:100%;max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{display:flex;align-items:center;justify-content:center;column-gap:5px}.preview-nav .left-button,.preview-nav .right-button{font-size:30px;color:#00000061}.preview-nav .left-button:hover,.preview-nav .right-button:hover{color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .left-button.disabled,.preview-nav .right-button.disabled{color:#00000042}.preview-nav .left-button.disabled:hover,.preview-nav .right-button.disabled:hover{color:#00000042;transition:none;cursor:default}.preview-nav .dot{display:flex;align-items:center;justify-content:center;height:30px;width:30px;min-width:30px;background-color:#00000061;border-radius:50%}.preview-nav .dot .image-index{color:#fff;font-size:24px;font-weight:600}.preview-nav .dot.selected{background-color:#0000008a}.preview-nav .dot:hover{background-color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .dot.disabled:hover{cursor:default}\n"] }]
98
+ args: [{ selector: 'file-image-input', standalone: true, imports: [
99
+ FileInputComponent,
100
+ NgIf
101
+ ], template: "<!-- eslint-disable angular/conditional-complexity -->\n<!-- eslint-disable angular/prefer-ngsrc -->\n<!-- eslint-disable angular/alt-text -->\n<!-- eslint-disable angular/cyclomatic-complexity -->\n<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n >\n </file-input>\n\n <ng-container *ngIf=\"metadata.preview\">\n <ng-container *ngIf=\"metadata.multiple\">\n <div class=\"image-preview\">\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n \n <div class=\"preview-nav\">\n <i class=\"fas fa-angle-left left-button\" [class.disabled]=\"imageIndex === 0\" (click)=\"prev()\"></i>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (multiPreviewImages.length - 1)\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-4)\"\n >\n <div class=\"image-index\">{{imageIndex - 3}}</div>\n </div>\n <div *ngIf=\"\n multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (multiPreviewImages.length - 2)\n || imageIndex === (multiPreviewImages.length - 1)\n )\n \"\n class=\"dot\"\n (click)=\"setIndex(imageIndex-3)\"\n >\n <div class=\"image-index\">{{imageIndex - 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-2]\" class=\"dot\" (click)=\"setIndex(imageIndex-2)\">\n <div class=\"image-index\">{{imageIndex - 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex-1]\" class=\"dot\" (click)=\"setIndex(imageIndex-1)\">\n <div class=\"image-index\">{{imageIndex}}</div>\n </div>\n <div class=\"dot selected disabled\">\n <div class=\"image-index\">{{imageIndex + 1}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+1]\" class=\"dot\" (click)=\"setIndex(imageIndex+1)\">\n <div class=\"image-index\">{{imageIndex + 2}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+2]\" class=\"dot\" (click)=\"setIndex(imageIndex+2)\">\n <div class=\"image-index\">{{imageIndex + 3}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\" class=\"dot\" (click)=\"setIndex(imageIndex+3)\">\n <div class=\"image-index\">{{imageIndex + 4}}</div>\n </div>\n <div *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\" class=\"dot\" (click)=\"setIndex(imageIndex+4)\">\n <div class=\"image-index\">{{imageIndex + 5}}</div>\n </div>\n <i class=\"fas fa-angle-right right-button\" [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\" (click)=\"next()\"></i>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!metadata.multiple\">\n <div class=\"image-preview\">\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n </div>\n </ng-container>\n </ng-container>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview img{max-width:100%;max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{display:flex;align-items:center;justify-content:center;column-gap:5px}.preview-nav .left-button,.preview-nav .right-button{font-size:30px;color:#00000061}.preview-nav .left-button:hover,.preview-nav .right-button:hover{color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .left-button.disabled,.preview-nav .right-button.disabled{color:#00000042}.preview-nav .left-button.disabled:hover,.preview-nav .right-button.disabled:hover{color:#00000042;transition:none;cursor:default}.preview-nav .dot{display:flex;align-items:center;justify-content:center;height:30px;width:30px;min-width:30px;background-color:#00000061;border-radius:50%}.preview-nav .dot .image-index{color:#fff;font-size:24px;font-weight:600}.preview-nav .dot.selected{background-color:#0000008a}.preview-nav .dot:hover{background-color:#0000008a;cursor:pointer;transition:all .3s ease}.preview-nav .dot.disabled:hover{cursor:default}\n"] }]
100
102
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbWFnZS1pbnB1dC9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWltYWdlLWlucHV0L2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQUU1RSwrREFBK0Q7QUFPL0QsTUFBTSxPQUFPLHVCQUNULFNBQVEsOEJBQTRGO0lBbUJ2RTtJQWpCN0IsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBeUIsQ0FBQztJQUNqSSxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxLQUEyQjtRQUM5QyxnQkFBZ0Is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SSxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUU7WUFDdEIsT0FBTztTQUNWO1FBQ0QsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUU7WUFDbEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMxRCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7dUdBeEZRLHVCQUF1QjsyRkFBdkIsdUJBQXVCLCtFQ25CcEMsb29KQTRGTTs7MkZEekVPLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFFSSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRmlsZURhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBSZWZsZWN0VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBQTEFDRUhPTERFUiB9IGZyb20gJy4uLy4uLy4uLy4uL21vY2tzL3BsYWNlaG9sZGVyLWRhdGEucG5nJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IEZpbGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZmlsZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYW5ndWxhci9wcmVmZXItc3RhbmRhbG9uZS1jb21wb25lbnRcbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmlsZS1pbWFnZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSW1hZ2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSwgRGVjb3JhdG9yVHlwZXMuRklMRV9JTUFHRSwgRmlsZURhdGEgfCBGaWxlRGF0YVtdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBnZXQgbXVsdGlQcmV2aWV3SW1hZ2VzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RVdGlsaXRpZXMuZ2V0TWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLk1VTFRJX1BSRVZJRVdfSU1BR0VTX0tFWSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IG11bHRpUHJldmlld0ltYWdlcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuTVVMVElfUFJFVklFV19JTUFHRVNfS0VZLCB2YWx1ZSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBnZXQgc2luZ2xlUHJldmlld0ltYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0VXRpbGl0aWVzLmdldE1ldGFkYXRhKEVudGl0eVV0aWxpdGllcy5TSU5HTEVfUFJFVklFV19JTUFHRV9LRVksIHRoaXMuZW50aXR5LCB0aGlzLmtleSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBzZXQgc2luZ2xlUHJldmlld0ltYWdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuU0lOR0xFX1BSRVZJRVdfSU1BR0VfS0VZLCB2YWx1ZSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBpbWFnZUluZGV4OiBudW1iZXIgPSAwO1xuICAgIHBsYWNlSG9sZGVyOiBzdHJpbmcgPSBQTEFDRUhPTERFUjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0U2luZ2xlUHJldmlld0ltYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YSwgdGhpcy5odHRwKTtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlUHJldmlld0ltYWdlID0gYXdhaXQgRmlsZVV0aWxpdGllcy5nZXREYXRhVVJMRnJvbUZpbGUodGhpcy5wcm9wZXJ0eVZhbHVlLmZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVQcmV2aWV3SW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldE11bHRpUHJldmlld0ltYWdlcyhpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG11bHRpRmlsZURhdGE6IEZpbGVEYXRhW10gfCB1bmRlZmluZWQgPSB0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJldmlld0ltYWdlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKG11bHRpRmlsZURhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IG11bHRpRmlsZURhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlGaWxlRGF0YVtpbmRleF0gPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKG11bHRpRmlsZURhdGFbaW5kZXhdLCB0aGlzLmh0dHApO1xuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VzLnB1c2goYXdhaXQgRmlsZVV0aWxpdGllcy5nZXREYXRhVVJMRnJvbUZpbGUobXVsdGlGaWxlRGF0YVtpbmRleF0uZmlsZSkgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZXMucHVzaCgnZW1wdHknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tdWx0aVByZXZpZXdJbWFnZXMgPSBwcmV2aWV3SW1hZ2VzO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hGaWxlRGF0YShmaWxlRGF0YT86IEZpbGVEYXRhIHwgRmlsZURhdGFbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBmaWxlRGF0YTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlRGF0YSA9IChmaWxlRGF0YSBhcyBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGlmICghZmlsZURhdGE/Llt0aGlzLmltYWdlSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUluZGV4ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFNpbmdsZVByZXZpZXdJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcHJldigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zZXRNdWx0aVByZXZpZXdJbWFnZXModGhpcy5pbWFnZUluZGV4IC0gMSk7XG4gICAgICAgIHRoaXMuaW1hZ2VJbmRleC0tO1xuICAgIH1cblxuICAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aVByZXZpZXdJbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmltYWdlSW5kZXggPT09ICh0aGlzLm11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCArIDEpO1xuICAgICAgICB0aGlzLmltYWdlSW5kZXgrKztcbiAgICB9XG5cbiAgICBhc3luYyBzZXRJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKGluZGV4KTtcbiAgICAgICAgdGhpcy5pbWFnZUluZGV4ID0gaW5kZXg7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9jb25kaXRpb25hbC1jb21wbGV4aXR5IC0tPlxuPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL3ByZWZlci1uZ3NyYyAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9hbHQtdGV4dCAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9jeWNsb21hdGljLWNvbXBsZXhpdHkgLS0+XG48ZGl2ICpuZ0lmPVwiIW1ldGFkYXRhLmRyYWdBbmREcm9wICYmICFtZXRhZGF0YS5wcmV2aWV3XCI+XG4gICAgPGZpbGUtaW5wdXRcbiAgICAgICAgW3Byb3BlcnR5VmFsdWVdPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIFttZXRhZGF0YV09XCJtZXRhZGF0YVwiXG4gICAgICAgIFtnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXT1cImdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VcIlxuICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICBba2V5XT1cImtleVwiXG4gICAgICAgIChmaWxlRGF0YUNoYW5nZUV2ZW50KT1cInJlZnJlc2hGaWxlRGF0YSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9maWxlLWlucHV0PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJtZXRhZGF0YS5kcmFnQW5kRHJvcCB8fCBtZXRhZGF0YS5wcmV2aWV3XCIgY2xhc3M9XCJmaWxlLWlucHV0IG1hdC1lbGV2YXRpb24tejhcIj5cbiAgICA8ZmlsZS1pbnB1dFxuICAgICAgICBbcHJvcGVydHlWYWx1ZV09XCJwcm9wZXJ0eVZhbHVlXCJcbiAgICAgICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCJcbiAgICAgICAgW2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VdPVwiZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgIFtrZXldPVwia2V5XCJcbiAgICAgICAgKGZpbGVEYXRhQ2hhbmdlRXZlbnQpPVwicmVmcmVzaEZpbGVEYXRhKCRldmVudClcIlxuICAgID5cbiAgICA8L2ZpbGUtaW5wdXQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0YWRhdGEucHJldmlld1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0YWRhdGEubXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXhdXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4XVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhbXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleF1cIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIiBbc3JjXT1cIm1ldGFkYXRhLnByZXZpZXdQbGFjZWhvbGRlclVybCA/PyBwbGFjZUhvbGRlclwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctbmF2XCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtbGVmdCBsZWZ0LWJ1dHRvblwiIFtjbGFzcy5kaXNhYmxlZF09XCJpbWFnZUluZGV4ID09PSAwXCIgKGNsaWNrKT1cInByZXYoKVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aVByZXZpZXdJbWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG11bHRpUHJldmlld0ltYWdlc1tpbWFnZUluZGV4LTRdXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG90XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtNClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4IC0gM319PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpUHJldmlld0ltYWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG11bHRpUHJldmlld0ltYWdlc1tpbWFnZUluZGV4LTNdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGltYWdlSW5kZXggPT09IChtdWx0aVByZXZpZXdJbWFnZXMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtMylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCAtIDJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4LTJdXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleC0yKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggLSAxfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleC0xXVwiIGNsYXNzPVwiZG90XCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG90IHNlbGVjdGVkIGRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCArIDF9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4KzFdXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCsxKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyAyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCsyXVwiIGNsYXNzPVwiZG90XCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgrMilcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4ICsgM319PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXgrM10gJiYgaW1hZ2VJbmRleCA8PSAxXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCszKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyA0fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCs0XSAmJiBpbWFnZUluZGV4ID09PSAwXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCs0KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyA1fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1yaWdodCByaWdodC1idXR0b25cIiBbY2xhc3MuZGlzYWJsZWRdPVwiIW11bHRpUHJldmlld0ltYWdlcyB8fCAhbXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCB8fCBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXCIgKGNsaWNrKT1cIm5leHQoKVwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1ldGFkYXRhLm11bHRpcGxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcHJldmlld1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJzaW5nbGVQcmV2aWV3SW1hZ2UgPz8gbWV0YWRhdGEucHJldmlld1BsYWNlaG9sZGVyVXJsID8/IHBsYWNlSG9sZGVyXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbWFnZS1pbnB1dC9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWltYWdlLWlucHV0L2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUtsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBYXhFLE1BQU0sT0FBTyx1QkFDVCxTQUFRLDhCQUE0RjtJQW1CdkU7SUFqQjdCLElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUks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SSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFO1lBQ3RCLE9BQU87U0FDVjtRQUNELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsT0FBTztTQUNWO1FBQ0QsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYTtRQUN4QixNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO3VHQXhGUSx1QkFBdUI7MkZBQXZCLHVCQUF1QixtR0MxQnBDLG9vSkE0Rk0sK3VDRHRFRSxrQkFBa0IsNExBQ2xCLElBQUk7OzJGQUdDLHVCQUF1QjtrQkFYbkMsU0FBUzsrQkFFSSxrQkFBa0IsY0FHaEIsSUFBSSxXQUNQO3dCQUNMLGtCQUFrQjt3QkFDbEIsSUFBSTtxQkFDUCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRmlsZURhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBSZWZsZWN0VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBQTEFDRUhPTERFUiB9IGZyb20gJy4uLy4uLy4uLy4uL21vY2tzL3BsYWNlaG9sZGVyLWRhdGEucG5nJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IEZpbGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZmlsZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmlsZS1pbWFnZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgICAgICBOZ0lmXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSW1hZ2VJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSwgRGVjb3JhdG9yVHlwZXMuRklMRV9JTUFHRSwgRmlsZURhdGEgfCBGaWxlRGF0YVtdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBnZXQgbXVsdGlQcmV2aWV3SW1hZ2VzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RVdGlsaXRpZXMuZ2V0TWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLk1VTFRJX1BSRVZJRVdfSU1BR0VTX0tFWSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IG11bHRpUHJldmlld0ltYWdlcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuTVVMVElfUFJFVklFV19JTUFHRVNfS0VZLCB2YWx1ZSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBnZXQgc2luZ2xlUHJldmlld0ltYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0VXRpbGl0aWVzLmdldE1ldGFkYXRhKEVudGl0eVV0aWxpdGllcy5TSU5HTEVfUFJFVklFV19JTUFHRV9LRVksIHRoaXMuZW50aXR5LCB0aGlzLmtleSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBzZXQgc2luZ2xlUHJldmlld0ltYWdlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuU0lOR0xFX1BSRVZJRVdfSU1BR0VfS0VZLCB2YWx1ZSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICBpbWFnZUluZGV4OiBudW1iZXIgPSAwO1xuICAgIHBsYWNlSG9sZGVyOiBzdHJpbmcgPSBQTEFDRUhPTERFUjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0U2luZ2xlUHJldmlld0ltYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YSwgdGhpcy5odHRwKTtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlUHJldmlld0ltYWdlID0gYXdhaXQgRmlsZVV0aWxpdGllcy5nZXREYXRhVVJMRnJvbUZpbGUodGhpcy5wcm9wZXJ0eVZhbHVlLmZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVQcmV2aWV3SW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldE11bHRpUHJldmlld0ltYWdlcyhpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG11bHRpRmlsZURhdGE6IEZpbGVEYXRhW10gfCB1bmRlZmluZWQgPSB0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcHJldmlld0ltYWdlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKG11bHRpRmlsZURhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IG11bHRpRmlsZURhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlGaWxlRGF0YVtpbmRleF0gPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKG11bHRpRmlsZURhdGFbaW5kZXhdLCB0aGlzLmh0dHApO1xuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VzLnB1c2goYXdhaXQgRmlsZVV0aWxpdGllcy5nZXREYXRhVVJMRnJvbUZpbGUobXVsdGlGaWxlRGF0YVtpbmRleF0uZmlsZSkgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZXMucHVzaCgnZW1wdHknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tdWx0aVByZXZpZXdJbWFnZXMgPSBwcmV2aWV3SW1hZ2VzO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hGaWxlRGF0YShmaWxlRGF0YT86IEZpbGVEYXRhIHwgRmlsZURhdGFbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBmaWxlRGF0YTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlRGF0YSA9IChmaWxlRGF0YSBhcyBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGlmICghZmlsZURhdGE/Llt0aGlzLmltYWdlSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUluZGV4ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFNpbmdsZVByZXZpZXdJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcHJldigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zZXRNdWx0aVByZXZpZXdJbWFnZXModGhpcy5pbWFnZUluZGV4IC0gMSk7XG4gICAgICAgIHRoaXMuaW1hZ2VJbmRleC0tO1xuICAgIH1cblxuICAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aVByZXZpZXdJbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmltYWdlSW5kZXggPT09ICh0aGlzLm11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCArIDEpO1xuICAgICAgICB0aGlzLmltYWdlSW5kZXgrKztcbiAgICB9XG5cbiAgICBhc3luYyBzZXRJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKGluZGV4KTtcbiAgICAgICAgdGhpcy5pbWFnZUluZGV4ID0gaW5kZXg7XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9jb25kaXRpb25hbC1jb21wbGV4aXR5IC0tPlxuPCEtLSBlc2xpbnQtZGlzYWJsZSBhbmd1bGFyL3ByZWZlci1uZ3NyYyAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9hbHQtdGV4dCAtLT5cbjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9jeWNsb21hdGljLWNvbXBsZXhpdHkgLS0+XG48ZGl2ICpuZ0lmPVwiIW1ldGFkYXRhLmRyYWdBbmREcm9wICYmICFtZXRhZGF0YS5wcmV2aWV3XCI+XG4gICAgPGZpbGUtaW5wdXRcbiAgICAgICAgW3Byb3BlcnR5VmFsdWVdPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIFttZXRhZGF0YV09XCJtZXRhZGF0YVwiXG4gICAgICAgIFtnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXT1cImdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VcIlxuICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICBba2V5XT1cImtleVwiXG4gICAgICAgIChmaWxlRGF0YUNoYW5nZUV2ZW50KT1cInJlZnJlc2hGaWxlRGF0YSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9maWxlLWlucHV0PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJtZXRhZGF0YS5kcmFnQW5kRHJvcCB8fCBtZXRhZGF0YS5wcmV2aWV3XCIgY2xhc3M9XCJmaWxlLWlucHV0IG1hdC1lbGV2YXRpb24tejhcIj5cbiAgICA8ZmlsZS1pbnB1dFxuICAgICAgICBbcHJvcGVydHlWYWx1ZV09XCJwcm9wZXJ0eVZhbHVlXCJcbiAgICAgICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCJcbiAgICAgICAgW2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VdPVwiZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgIFtrZXldPVwia2V5XCJcbiAgICAgICAgKGZpbGVEYXRhQ2hhbmdlRXZlbnQpPVwicmVmcmVzaEZpbGVEYXRhKCRldmVudClcIlxuICAgID5cbiAgICA8L2ZpbGUtaW5wdXQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0YWRhdGEucHJldmlld1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0YWRhdGEubXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXhdXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4XVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhbXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleF1cIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIiBbc3JjXT1cIm1ldGFkYXRhLnByZXZpZXdQbGFjZWhvbGRlclVybCA/PyBwbGFjZUhvbGRlclwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctbmF2XCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYW5nbGUtbGVmdCBsZWZ0LWJ1dHRvblwiIFtjbGFzcy5kaXNhYmxlZF09XCJpbWFnZUluZGV4ID09PSAwXCIgKGNsaWNrKT1cInByZXYoKVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aVByZXZpZXdJbWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG11bHRpUHJldmlld0ltYWdlc1tpbWFnZUluZGV4LTRdXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG90XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtNClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4IC0gM319PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpUHJldmlld0ltYWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG11bHRpUHJldmlld0ltYWdlc1tpbWFnZUluZGV4LTNdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGltYWdlSW5kZXggPT09IChtdWx0aVByZXZpZXdJbWFnZXMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkb3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtMylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCAtIDJ9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4LTJdXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleC0yKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggLSAxfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleC0xXVwiIGNsYXNzPVwiZG90XCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG90IHNlbGVjdGVkIGRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCArIDF9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4KzFdXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCsxKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyAyfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCsyXVwiIGNsYXNzPVwiZG90XCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgrMilcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4ICsgM319PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXgrM10gJiYgaW1hZ2VJbmRleCA8PSAxXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCszKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyA0fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCs0XSAmJiBpbWFnZUluZGV4ID09PSAwXCIgY2xhc3M9XCJkb3RcIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCs0KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyA1fX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1hbmdsZS1yaWdodCByaWdodC1idXR0b25cIiBbY2xhc3MuZGlzYWJsZWRdPVwiIW11bHRpUHJldmlld0ltYWdlcyB8fCAhbXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCB8fCBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXCIgKGNsaWNrKT1cIm5leHQoKVwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1ldGFkYXRhLm11bHRpcGxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcHJldmlld1wiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJzaW5nbGVQcmV2aWV3SW1hZ2UgPz8gbWV0YWRhdGEucHJldmlld1BsYWNlaG9sZGVyVXJsID8/IHBsYWNlSG9sZGVyXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
@@ -1,7 +1,13 @@
1
1
  /* eslint-disable jsdoc/require-jsdoc */
2
+ import { NgFor, NgIf } from '@angular/common';
2
3
  import { HttpClient } from '@angular/common/http';
3
4
  import { Component, EventEmitter, Input, Output } from '@angular/core';
5
+ import { FormsModule } from '@angular/forms';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { MatChipsModule } from '@angular/material/chips';
4
8
  import { MatDialog } from '@angular/material/dialog';
9
+ import { MatFormFieldModule } from '@angular/material/form-field';
10
+ import { DragDropDirective } from '../../../../directives/drag-drop.directive';
5
11
  import { LodashUtilities } from '../../../../encapsulation/lodash.utilities';
6
12
  import { ReflectUtilities } from '../../../../encapsulation/reflect.utilities';
7
13
  import { EntityUtilities } from '../../../../utilities/entity.utilities';
@@ -10,13 +16,10 @@ import { NgxMatEntityConfirmDialogComponent } from '../../../confirm-dialog/conf
10
16
  import * as i0 from "@angular/core";
11
17
  import * as i1 from "@angular/material/dialog";
12
18
  import * as i2 from "@angular/common/http";
13
- import * as i3 from "@angular/common";
14
- import * as i4 from "@angular/forms";
15
- import * as i5 from "@angular/material/button";
16
- import * as i6 from "@angular/material/chips";
17
- import * as i7 from "@angular/material/form-field";
18
- import * as i8 from "../../../../directives/drag-drop.directive";
19
- // eslint-disable-next-line angular/prefer-standalone-component
19
+ import * as i3 from "@angular/material/form-field";
20
+ import * as i4 from "@angular/material/chips";
21
+ import * as i5 from "@angular/forms";
22
+ import * as i6 from "@angular/material/button";
20
23
  export class FileInputComponent {
21
24
  dialog;
22
25
  http;
@@ -184,11 +187,19 @@ export class FileInputComponent {
184
187
  }
185
188
  }
186
189
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: FileInputComponent, deps: [{ token: i1.MatDialog }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
187
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: FileInputComponent, selector: "file-input", inputs: { propertyValue: "propertyValue", entity: "entity", key: "key", metadata: "metadata", getValidationErrorMessage: "getValidationErrorMessage", isReadOnly: "isReadOnly" }, outputs: { fileDataChangeEvent: "fileDataChangeEvent" }, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"acceptString\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n #model=\"ngModel\" name=\"file\" [required]=\"metadata.required(entity)\"\n [(ngModel)]=\"filenames\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i [class]=\"metadata.deleteIcon\"></i>\n </button>\n </mat-chip-row>\n <input hidden [matChipInputFor]=\"chipGrid\" [readonly]=\"true\">\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas\" [class.fa-plus-circle]=\"metadata.multiple\" [class.fa-upload]=\"!metadata.multiple\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.DragDropDirective, selector: "[dragDrop]", outputs: ["files"] }] });
190
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: FileInputComponent, isStandalone: true, selector: "file-input", inputs: { propertyValue: "propertyValue", entity: "entity", key: "key", metadata: "metadata", getValidationErrorMessage: "getValidationErrorMessage", isReadOnly: "isReadOnly" }, outputs: { fileDataChangeEvent: "fileDataChangeEvent" }, ngImport: i0, template: "<!-- eslint-disable angular/no-call-expression -->\n<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"acceptString\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n #model=\"ngModel\" name=\"file\" [required]=\"metadata.required(entity)\"\n [(ngModel)]=\"filenames\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i [class]=\"metadata.deleteIcon\"></i>\n </button>\n </mat-chip-row>\n <input hidden [matChipInputFor]=\"chipGrid\" [readonly]=\"true\">\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas\" [class.fa-plus-circle]=\"metadata.multiple\" [class.fa-upload]=\"!metadata.multiple\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: DragDropDirective, selector: "[dragDrop]", outputs: ["files"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
188
191
  }
189
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: FileInputComponent, decorators: [{
190
193
  type: Component,
191
- args: [{ selector: 'file-input', template: "<!-- eslint-disable angular/no-call-expression -->\n<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"acceptString\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n #model=\"ngModel\" name=\"file\" [required]=\"metadata.required(entity)\"\n [(ngModel)]=\"filenames\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i [class]=\"metadata.deleteIcon\"></i>\n </button>\n </mat-chip-row>\n <input hidden [matChipInputFor]=\"chipGrid\" [readonly]=\"true\">\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas\" [class.fa-plus-circle]=\"metadata.multiple\" [class.fa-upload]=\"!metadata.multiple\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"] }]
194
+ args: [{ selector: 'file-input', standalone: true, imports: [
195
+ MatFormFieldModule,
196
+ MatChipsModule,
197
+ FormsModule,
198
+ NgIf,
199
+ NgFor,
200
+ DragDropDirective,
201
+ MatButtonModule
202
+ ], template: "<!-- eslint-disable angular/no-call-expression -->\n<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"acceptString\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n #model=\"ngModel\" name=\"file\" [required]=\"metadata.required(entity)\"\n [(ngModel)]=\"filenames\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i [class]=\"metadata.deleteIcon\"></i>\n </button>\n </mat-chip-row>\n <input hidden [matChipInputFor]=\"chipGrid\" [readonly]=\"true\">\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas\" [class.fa-plus-circle]=\"metadata.multiple\" [class.fa-upload]=\"!metadata.multiple\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"] }]
192
203
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.HttpClient }]; }, propDecorators: { propertyValue: [{
193
204
  type: Input
194
205
  }], entity: [{
@@ -204,4 +215,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
204
215
  }], fileDataChangeEvent: [{
205
216
  type: Output
206
217
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7OztBQUV0RywrREFBK0Q7QUFPL0QsTUFBTSxPQUFPLGtCQUFrQjtJQWtDRTtJQUFvQztJQWhDakUsSUFBSSxTQUFTO1FBQ1QsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQXlCLENBQUM7SUFDdEgsQ0FBQztJQUNE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REwsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsLCBGaWxlRGF0YVdpdGhGaWxlLCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IEZpbGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IFJlZmxlY3RVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL3JlZmxlY3QudXRpbGl0aWVzJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IEZpbGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZmlsZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBhbmd1bGFyL3ByZWZlci1zdGFuZGFsb25lLWNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmaWxlLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGdldCBmaWxlbmFtZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUmVmbGVjdFV0aWxpdGllcy5nZXRNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGZpbGVuYW1lcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgRmlsZVV0aWxpdGllczogdHlwZW9mIEZpbGVVdGlsaXRpZXMgPSBGaWxlVXRpbGl0aWVzO1xuXG4gICAgQElucHV0KClcbiAgICBwcm9wZXJ0eVZhbHVlITogRmlsZURhdGEgfCBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBrZXkhOiBrZXlvZiBFbnRpdHlUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBtZXRhZGF0YSE6IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZSE6IChtb2RlbDogTmdNb2RlbCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBpc1JlYWRPbmx5ITogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVEYXRhQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxGaWxlRGF0YSB8IEZpbGVEYXRhW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlRGF0YSB8IEZpbGVEYXRhW10+KCk7XG5cbiAgICBhY2NlcHRTdHJpbmchOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRNdWx0aUZpbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNpbmdsZUZpbGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgICAgICB0aGlzLmFjY2VwdFN0cmluZyA9IEZpbGVVdGlsaXRpZXMuZ2V0QWNjZXB0U3RyaW5nKHRoaXMubWV0YWRhdGEuYWxsb3dlZE1pbWVUeXBlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TXVsdGlGaWxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9ICh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSkubWFwKGYgPT4gZi5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNpbmdsZUZpbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gWyh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGEpLm5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0RmlsZUZyb21JbnB1dChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgW10gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzID8/IFtdO1xuICAgICAgICBhd2FpdCB0aGlzLnNldEZpbGUoQXJyYXkuZnJvbShmaWxlcykpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldEZpbGUoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIGRvbmUgaW5saW5lXG4gICAgICAgIGlmIChmaWxlcy5maW5kKGYgPT4gIUZpbGVVdGlsaXRpZXMuaXNNaW1lVHlwZVZhbGlkKGYudHlwZSwgdGhpcy5tZXRhZGF0YS5hbGxvd2VkTWltZVR5cGVzKSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMubWV0YWRhdGEubWltZVR5cGVFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldEZpbGVJbnB1dHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZXMuZmluZChmID0+IEZpbGVVdGlsaXRpZXMudHJhbnNmb3JtVG9NZWdhQnl0ZXMoZi5zaXplLCAnQicpID4gdGhpcy5tZXRhZGF0YS5tYXhTaXplKSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5tZXRhZGF0YS5tYXhTaXplRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGaWxlSW5wdXRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZpbGVTaXplVG90YWw6IG51bWJlciA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgZmlsZVNpemVUb3RhbCArPSBmaWxlLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZpbGVVdGlsaXRpZXMudHJhbnNmb3JtVG9NZWdhQnl0ZXMoZmlsZVNpemVUb3RhbCwgJ0InKSA+IHRoaXMubWV0YWRhdGEubWF4U2l6ZVRvdGFsKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLm1ldGFkYXRhLm1heFNpemVUb3RhbEVycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RmlsZUlucHV0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldE11bHRpRmlsZShBcnJheS5mcm9tKGZpbGVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFNpbmdsZUZpbGUoZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldEZpbGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRNdWx0aUZpbGUoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB0aGlzLnByb3BlcnR5VmFsdWUgPz8gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZURhdGE6IEZpbGVEYXRhID0ge1xuICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLnB1c2goZmlsZURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZW5hbWVzID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5tYXAoZiA9PiBmLm5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0U2luZ2xlRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICBzaXplOiBmaWxlLnNpemVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maWxlbmFtZXMgPSBbdGhpcy5wcm9wZXJ0eVZhbHVlLm5hbWVdO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbGUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlbmFtZXM/LnNwbGljZSh0aGlzLmZpbGVuYW1lcy5pbmRleE9mKG5hbWUpLCAxKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5maWxlbmFtZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZURhdGFUb1JlbW92ZTogRmlsZURhdGEgPSAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmZpbmQoZiA9PiBmLm5hbWUgPT09IG5hbWUpIGFzIEZpbGVEYXRhO1xuICAgICAgICAgICAgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5zcGxpY2UoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5pbmRleE9mKGZpbGVEYXRhVG9SZW1vdmUpLCAxKTtcbiAgICAgICAgICAgIGlmICghKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIGFzeW5jIGRvd25sb2FkRmlsZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMubWV0YWRhdGEubXVsdGlwbGUgJiYgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRmlsZURhdGE6IEZpbGVEYXRhID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKSBhcyBGaWxlRGF0YTtcbiAgICAgICAgICAgIC8vIHRoZSBpbmRleCBuZWVkIHRvIGJlIHNhdmVkIGluIGEgY29uc3RhbnQgYmVjYXVzZSB3ZSBlZGl0IGZvdW5kRmlsZURhdGFcbiAgICAgICAgICAgIC8vID0+IC5pbmRleE9mKCkgcmV0dXJucyB1bmRlZmluZWQuXG4gICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5pbmRleE9mKGZvdW5kRmlsZURhdGEpO1xuICAgICAgICAgICAgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKVtpbmRleF0gPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKGZvdW5kRmlsZURhdGEsIHRoaXMuaHR0cCk7XG4gICAgICAgICAgICBGaWxlVXRpbGl0aWVzLmRvd25sb2FkU2luZ2xlRmlsZSgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pW2luZGV4XSBhcyBGaWxlRGF0YVdpdGhGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhLCB0aGlzLmh0dHApO1xuICAgICAgICAgICAgRmlsZVV0aWxpdGllcy5kb3dubG9hZFNpbmdsZUZpbGUodGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvd25sb2FkQWxsRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZG93bmxvYWRBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmxlbmd0aCkge1xuXG4gICAgICAgICAgICB2b2lkIEZpbGVVdGlsaXRpZXMuZG93bmxvYWRNdWx0aXBsZUZpbGVzKHRoaXMubWV0YWRhdGEuZGlzcGxheU5hbWUsIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLCB0aGlzLmh0dHApO1xuICAgICAgICB9XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48aW5wdXQgI2ZpbGVJbnB1dFxuICAgIHR5cGU9XCJmaWxlXCIgaGlkZGVuXG4gICAgW211bHRpcGxlXT1cIm1ldGFkYXRhLm11bHRpcGxlXCJcbiAgICBbYWNjZXB0XT1cImFjY2VwdFN0cmluZ1wiXG4gICAgKGNoYW5nZSk9XCJzZXRGaWxlRnJvbUlucHV0KCRldmVudClcIlxuPlxuXG48bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1jaGlwLWdyaWQgI2NoaXBHcmlkXG4gICAgICAgICNtb2RlbD1cIm5nTW9kZWxcIiBuYW1lPVwiZmlsZVwiIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlbmFtZXNcIlxuICAgID5cbiAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgbmFtZSBvZiBmaWxlbmFtZXNcIiAocmVtb3ZlZCk9XCJyZW1vdmVGaWxlKG5hbWUpXCI+XG4gICAgICAgICAgICB7e25hbWV9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtbWRjLWNoaXAtcmVtb3ZlIG1hdC1tZGMtY2hpcC10cmFpbGluZy1pY29uIG5neC1tYXQtZ3JleVwiIChjbGljayk9XCJkb3dubG9hZEZpbGUobmFtZSlcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZWFkT25seVwiIHR5cGU9XCJidXR0b25cIiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJtZXRhZGF0YS5kZWxldGVJY29uXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgICA8aW5wdXQgaGlkZGVuIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPlxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cbiAgICA8YnV0dG9uICpuZ0lmPVwiZG93bmxvYWRBbGxFbmFibGVkKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJuZ3gtbWF0LWdyZXlcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJkb3dubG9hZEFsbCgpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbGUtemlwcGVyXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibmd4LW1hdC1ncmV5XCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtjbGFzcy5mYS1wbHVzLWNpcmNsZV09XCJtZXRhZGF0YS5tdWx0aXBsZVwiIFtjbGFzcy5mYS11cGxvYWRdPVwiIW1ldGFkYXRhLm11bHRpcGxlXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48ZGl2ICpuZ0lmPVwibWV0YWRhdGEuZHJhZ0FuZERyb3AgJiYgIWlzUmVhZE9ubHlcIiBjbGFzcz1cImRyYWctZHJvcFwiIGRyYWdEcm9wIChmaWxlcyk9XCJzZXRGaWxlKCRldmVudClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hcnJvdy11cCBuZ3gtbWF0LWdyZXlcIj48L2k+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBS2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFD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QUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBMkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvSTtJQUNMLENBQUM7dUdBL0xRLGtCQUFrQjsyRkFBbEIsa0JBQWtCLGlUQ3BDL0IsKzFEQXNDTSw4VERYRSxrQkFBa0Isd2dCQUNsQixjQUFjLDB5QkFDZCxXQUFXLDRqQkFDWCxJQUFJLDZGQUNKLEtBQUssbUhBQ0wsaUJBQWlCLDBFQUNqQixlQUFlOzsyRkFHVixrQkFBa0I7a0JBaEI5QixTQUFTOytCQUVJLFlBQVksY0FHVixJQUFJLFdBQ1A7d0JBQ0wsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDbEI7eUhBY0QsYUFBYTtzQkFEWixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwsIEZpbGVEYXRhV2l0aEZpbGUsIEltYWdlRmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgRmlsZURhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBEcmFnRHJvcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRmlsZVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9maWxlLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGFuZ3VsYXIvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmaWxlLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdENoaXBzTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIERyYWdEcm9wRGlyZWN0aXZlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGdldCBmaWxlbmFtZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUmVmbGVjdFV0aWxpdGllcy5nZXRNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGZpbGVuYW1lcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgRmlsZVV0aWxpdGllczogdHlwZW9mIEZpbGVVdGlsaXRpZXMgPSBGaWxlVXRpbGl0aWVzO1xuXG4gICAgQElucHV0KClcbiAgICBwcm9wZXJ0eVZhbHVlITogRmlsZURhdGEgfCBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBrZXkhOiBrZXlvZiBFbnRpdHlUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBtZXRhZGF0YSE6IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZSE6IChtb2RlbDogTmdNb2RlbCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBpc1JlYWRPbmx5ITogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVEYXRhQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxGaWxlRGF0YSB8IEZpbGVEYXRhW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlRGF0YSB8IEZpbGVEYXRhW10+KCk7XG5cbiAgICBhY2NlcHRTdHJpbmchOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRNdWx0aUZpbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNpbmdsZUZpbGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgICAgICB0aGlzLmFjY2VwdFN0cmluZyA9IEZpbGVVdGlsaXRpZXMuZ2V0QWNjZXB0U3RyaW5nKHRoaXMubWV0YWRhdGEuYWxsb3dlZE1pbWVUeXBlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TXVsdGlGaWxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9ICh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSkubWFwKGYgPT4gZi5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNpbmdsZUZpbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gWyh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGEpLm5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0RmlsZUZyb21JbnB1dChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgW10gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzID8/IFtdO1xuICAgICAgICBhd2FpdCB0aGlzLnNldEZpbGUoQXJyYXkuZnJvbShmaWxlcykpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldEZpbGUoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIGRvbmUgaW5saW5lXG4gICAgICAgIGlmIChmaWxlcy5maW5kKGYgPT4gIUZpbGVVdGlsaXRpZXMuaXNNaW1lVHlwZVZhbGlkKGYudHlwZSwgdGhpcy5tZXRhZGF0YS5hbGxvd2VkTWltZVR5cGVzKSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMubWV0YWRhdGEubWltZVR5cGVFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldEZpbGVJbnB1dHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZXMuZmluZChmID0+IEZpbGVVdGlsaXRpZXMudHJhbnNmb3JtVG9NZWdhQnl0ZXMoZi5zaXplLCAnQicpID4gdGhpcy5tZXRhZGF0YS5tYXhTaXplKSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5tZXRhZGF0YS5tYXhTaXplRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGaWxlSW5wdXRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZpbGVTaXplVG90YWw6IG51bWJlciA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgZmlsZVNpemVUb3RhbCArPSBmaWxlLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZpbGVVdGlsaXRpZXMudHJhbnNmb3JtVG9NZWdhQnl0ZXMoZmlsZVNpemVUb3RhbCwgJ0InKSA+IHRoaXMubWV0YWRhdGEubWF4U2l6ZVRvdGFsKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLm1ldGFkYXRhLm1heFNpemVUb3RhbEVycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RmlsZUlucHV0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldE11bHRpRmlsZShBcnJheS5mcm9tKGZpbGVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFNpbmdsZUZpbGUoZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldEZpbGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRNdWx0aUZpbGUoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB0aGlzLnByb3BlcnR5VmFsdWUgPz8gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZURhdGE6IEZpbGVEYXRhID0ge1xuICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLnB1c2goZmlsZURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZW5hbWVzID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5tYXAoZiA9PiBmLm5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0U2luZ2xlRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICBzaXplOiBmaWxlLnNpemVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maWxlbmFtZXMgPSBbdGhpcy5wcm9wZXJ0eVZhbHVlLm5hbWVdO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbGUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlbmFtZXM/LnNwbGljZSh0aGlzLmZpbGVuYW1lcy5pbmRleE9mKG5hbWUpLCAxKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5maWxlbmFtZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZURhdGFUb1JlbW92ZTogRmlsZURhdGEgPSAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmZpbmQoZiA9PiBmLm5hbWUgPT09IG5hbWUpIGFzIEZpbGVEYXRhO1xuICAgICAgICAgICAgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5zcGxpY2UoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5pbmRleE9mKGZpbGVEYXRhVG9SZW1vdmUpLCAxKTtcbiAgICAgICAgICAgIGlmICghKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIGFzeW5jIGRvd25sb2FkRmlsZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMubWV0YWRhdGEubXVsdGlwbGUgJiYgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRmlsZURhdGE6IEZpbGVEYXRhID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKSBhcyBGaWxlRGF0YTtcbiAgICAgICAgICAgIC8vIHRoZSBpbmRleCBuZWVkIHRvIGJlIHNhdmVkIGluIGEgY29uc3RhbnQgYmVjYXVzZSB3ZSBlZGl0IGZvdW5kRmlsZURhdGFcbiAgICAgICAgICAgIC8vID0+IC5pbmRleE9mKCkgcmV0dXJucyB1bmRlZmluZWQuXG4gICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5pbmRleE9mKGZvdW5kRmlsZURhdGEpO1xuICAgICAgICAgICAgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKVtpbmRleF0gPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKGZvdW5kRmlsZURhdGEsIHRoaXMuaHR0cCk7XG4gICAgICAgICAgICBGaWxlVXRpbGl0aWVzLmRvd25sb2FkU2luZ2xlRmlsZSgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pW2luZGV4XSBhcyBGaWxlRGF0YVdpdGhGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhLCB0aGlzLmh0dHApO1xuICAgICAgICAgICAgRmlsZVV0aWxpdGllcy5kb3dubG9hZFNpbmdsZUZpbGUodGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvd25sb2FkQWxsRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZG93bmxvYWRBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmxlbmd0aCkge1xuXG4gICAgICAgICAgICB2b2lkIEZpbGVVdGlsaXRpZXMuZG93bmxvYWRNdWx0aXBsZUZpbGVzKHRoaXMubWV0YWRhdGEuZGlzcGxheU5hbWUsIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLCB0aGlzLmh0dHApO1xuICAgICAgICB9XG4gICAgfVxufSIsIjwhLS0gZXNsaW50LWRpc2FibGUgYW5ndWxhci9uby1jYWxsLWV4cHJlc3Npb24gLS0+XG48aW5wdXQgI2ZpbGVJbnB1dFxuICAgIHR5cGU9XCJmaWxlXCIgaGlkZGVuXG4gICAgW211bHRpcGxlXT1cIm1ldGFkYXRhLm11bHRpcGxlXCJcbiAgICBbYWNjZXB0XT1cImFjY2VwdFN0cmluZ1wiXG4gICAgKGNoYW5nZSk9XCJzZXRGaWxlRnJvbUlucHV0KCRldmVudClcIlxuPlxuXG48bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1jaGlwLWdyaWQgI2NoaXBHcmlkXG4gICAgICAgICNtb2RlbD1cIm5nTW9kZWxcIiBuYW1lPVwiZmlsZVwiIFtyZXF1aXJlZF09XCJtZXRhZGF0YS5yZXF1aXJlZChlbnRpdHkpXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlbmFtZXNcIlxuICAgID5cbiAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgbmFtZSBvZiBmaWxlbmFtZXNcIiAocmVtb3ZlZCk9XCJyZW1vdmVGaWxlKG5hbWUpXCI+XG4gICAgICAgICAgICB7e25hbWV9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtbWRjLWNoaXAtcmVtb3ZlIG1hdC1tZGMtY2hpcC10cmFpbGluZy1pY29uIG5neC1tYXQtZ3JleVwiIChjbGljayk9XCJkb3dubG9hZEZpbGUobmFtZSlcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZWFkT25seVwiIHR5cGU9XCJidXR0b25cIiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJtZXRhZGF0YS5kZWxldGVJY29uXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgICA8aW5wdXQgaGlkZGVuIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPlxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cbiAgICA8YnV0dG9uICpuZ0lmPVwiZG93bmxvYWRBbGxFbmFibGVkKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJuZ3gtbWF0LWdyZXlcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJkb3dubG9hZEFsbCgpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbGUtemlwcGVyXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibmd4LW1hdC1ncmV5XCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCBbZGlzYWJsZWRdPVwiaXNSZWFkT25seVwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhc1wiIFtjbGFzcy5mYS1wbHVzLWNpcmNsZV09XCJtZXRhZGF0YS5tdWx0aXBsZVwiIFtjbGFzcy5mYS11cGxvYWRdPVwiIW1ldGFkYXRhLm11bHRpcGxlXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48ZGl2ICpuZ0lmPVwibWV0YWRhdGEuZHJhZ0FuZERyb3AgJiYgIWlzUmVhZE9ubHlcIiBjbGFzcz1cImRyYWctZHJvcFwiIGRyYWdEcm9wIChmaWxlcyk9XCJzZXRGaWxlKCRldmVudClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hcnJvdy11cCBuZ3gtbWF0LWdyZXlcIj48L2k+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=