@energinet/watt 2.1.2 → 2.1.4

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 (109) hide show
  1. package/core/styles/@energinet-datahub/watt/theme/material-overwrites/datepicker.scss +8 -2
  2. package/esm2022/badge/watt-badge.component.js +8 -8
  3. package/esm2022/breadcrumbs/watt-breadcrumbs.component.js +8 -8
  4. package/esm2022/button/watt-button.component.js +14 -14
  5. package/esm2022/card/watt-card-title.component.js +3 -3
  6. package/esm2022/card/watt-card.component.js +7 -7
  7. package/esm2022/checkbox/watt-checkbox.component.js +7 -7
  8. package/esm2022/chip/watt-action-chip.component.js +6 -6
  9. package/esm2022/chip/watt-chip.component.js +7 -7
  10. package/esm2022/chip/watt-chip.directive.js +3 -3
  11. package/esm2022/chip/watt-date-chip.component.js +3 -3
  12. package/esm2022/chip/watt-date-range-chip.component.js +8 -8
  13. package/esm2022/chip/watt-filter-chip.component.js +3 -3
  14. package/esm2022/chip/watt-menu-chip.component.js +3 -3
  15. package/esm2022/clipboard/watt-clipboard-intl.service.js +3 -3
  16. package/esm2022/clipboard/watt-copy-to-clipboard.directive.js +5 -5
  17. package/esm2022/code/watt-code.component.js +6 -6
  18. package/esm2022/core/breakpoints/breakpoints-observer.js +3 -3
  19. package/esm2022/core/color/color-helper.service.js +3 -3
  20. package/esm2022/core/date/watt-date.pipe.js +3 -3
  21. package/esm2022/core/date/watt-locale.service.js +7 -7
  22. package/esm2022/data/watt-data-actions.component.js +3 -3
  23. package/esm2022/data/watt-data-filters.component.js +3 -3
  24. package/esm2022/data/watt-data-intl.service.js +3 -3
  25. package/esm2022/data/watt-data-table.component.js +19 -19
  26. package/esm2022/datetime-field/watt-datetime-field.component.js +11 -11
  27. package/esm2022/description-list/watt-description-list-item.component.js +7 -7
  28. package/esm2022/description-list/watt-description-list.component.js +9 -9
  29. package/esm2022/drawer/watt-drawer-actions.component.js +3 -3
  30. package/esm2022/drawer/watt-drawer-content.component.js +3 -3
  31. package/esm2022/drawer/watt-drawer-heading.component.js +3 -3
  32. package/esm2022/drawer/watt-drawer-topbar.component.js +3 -3
  33. package/esm2022/drawer/watt-drawer.component.js +13 -13
  34. package/esm2022/dropdown/watt-dropdown.component.js +4 -4
  35. package/esm2022/dropzone/watt-dropzone-intl.js +3 -3
  36. package/esm2022/dropzone/watt-dropzone-validators.js +6 -6
  37. package/esm2022/dropzone/watt-dropzone.js +9 -9
  38. package/esm2022/empty-state/icons/explore.js +3 -3
  39. package/esm2022/empty-state/icons/no-results.js +3 -3
  40. package/esm2022/empty-state/icons/power.js +3 -3
  41. package/esm2022/empty-state/watt-empty-state.component.js +10 -10
  42. package/esm2022/expandable-card/watt-expandable-card.component.js +15 -15
  43. package/esm2022/expansion/expansion.component.js +3 -3
  44. package/esm2022/field/watt-field-error.component.js +3 -3
  45. package/esm2022/field/watt-field-hint.component.js +3 -3
  46. package/esm2022/field/watt-field-intl.service.js +3 -3
  47. package/esm2022/field/watt-field.component.js +19 -19
  48. package/esm2022/icon/flags/watt-flag-ch.js +3 -3
  49. package/esm2022/icon/flags/watt-flag-de.js +3 -3
  50. package/esm2022/icon/flags/watt-flag-dk.js +3 -3
  51. package/esm2022/icon/flags/watt-flag-fi.js +3 -3
  52. package/esm2022/icon/flags/watt-flag-nl.js +3 -3
  53. package/esm2022/icon/flags/watt-flag-no.js +3 -3
  54. package/esm2022/icon/flags/watt-flag-pl.js +3 -3
  55. package/esm2022/icon/flags/watt-flag-se.js +3 -3
  56. package/esm2022/icon/flags/watt-flag.js +7 -7
  57. package/esm2022/icon/icon.component.js +11 -11
  58. package/esm2022/modal/watt-modal.component.js +8 -8
  59. package/esm2022/modal/watt-modal.service.js +7 -7
  60. package/esm2022/paginator/watt-paginator-intl.service.js +3 -3
  61. package/esm2022/paginator/watt-paginator.component.js +14 -14
  62. package/esm2022/phone-field/watt-phone-field-intl.service.js +3 -3
  63. package/esm2022/phone-field/watt-phone-field.component.js +7 -7
  64. package/esm2022/picker/__shared/placeholder-mask/watt-placeholder-mask.component.js +13 -13
  65. package/esm2022/picker/__shared/watt-picker-base.js +3 -3
  66. package/esm2022/picker/datepicker/watt-datepicker-intl.service.js +3 -3
  67. package/esm2022/picker/datepicker/watt-datepicker.component.js +13 -13
  68. package/esm2022/picker/timepicker/watt-timepicker.component.js +3 -3
  69. package/esm2022/progress-tracker/watt-progress-tracker-step.component.js +9 -9
  70. package/esm2022/progress-tracker/watt-progress-tracker.component.js +3 -3
  71. package/esm2022/query-params/watt-query-params.directive.js +3 -3
  72. package/esm2022/radio/watt-radio.component.js +6 -6
  73. package/esm2022/search/watt-search.component.js +7 -7
  74. package/esm2022/segmented-buttons/watt-segmented-button.component.js +5 -5
  75. package/esm2022/segmented-buttons/watt-segmented-buttons.component.js +7 -7
  76. package/esm2022/shell/nav-list/watt-expand-on-active-link.directive.js +5 -5
  77. package/esm2022/shell/nav-list/watt-nav-list-item.component.js +7 -7
  78. package/esm2022/shell/nav-list/watt-nav-list.component.js +7 -7
  79. package/esm2022/shell/shell.component.js +4 -4
  80. package/esm2022/slide-toggle/watt-slide-toggle.component.js +9 -9
  81. package/esm2022/slider/watt-slider.component.js +3 -3
  82. package/esm2022/spinner/watt-spinner.component.js +7 -7
  83. package/esm2022/stepper/watt-stepper-step.component.js +10 -10
  84. package/esm2022/stepper/watt-stepper.component.js +6 -6
  85. package/esm2022/table/watt-table.component.js +15 -15
  86. package/esm2022/tabs/watt-link-tab.component.js +6 -6
  87. package/esm2022/tabs/watt-link-tabs.component.js +5 -5
  88. package/esm2022/tabs/watt-tab.component.js +5 -5
  89. package/esm2022/tabs/watt-tabs-action.component.js +3 -3
  90. package/esm2022/tabs/watt-tabs.component.js +7 -7
  91. package/esm2022/text-field/watt-text-field.component.js +3 -3
  92. package/esm2022/textarea-field/watt-textarea-field.component.js +3 -3
  93. package/esm2022/toast/watt-toast.component.js +3 -3
  94. package/esm2022/toast/watt-toast.service.js +3 -3
  95. package/esm2022/tooltip/watt-tooltip.component.js +3 -3
  96. package/esm2022/tooltip/watt-tooltip.directive.js +3 -3
  97. package/esm2022/utils/css/css-custom-properties.service.js +3 -3
  98. package/esm2022/utils/intersection-observer/watt-intersection-observer.service.js +3 -3
  99. package/esm2022/utils/resize-observer/watt-resize-observer.directive.js +3 -3
  100. package/esm2022/utils/resize-observer/watt-resize-observer.service.js +3 -3
  101. package/esm2022/validation-message/watt-validation-message.component.js +12 -12
  102. package/esm2022/vater/vater-flex.component.js +5 -5
  103. package/esm2022/vater/vater-layout.directive.js +16 -16
  104. package/esm2022/vater/vater-spacer.component.js +3 -3
  105. package/esm2022/vater/vater-stack.component.js +3 -3
  106. package/esm2022/vater/vater-utility.directive.js +11 -11
  107. package/esm2022/year-field/watt-year-field.component.js +12 -12
  108. package/esm2022/yearmonth-field/watt-yearmonth-field.component.js +12 -12
  109. package/package.json +7 -7
@@ -21,14 +21,14 @@ import { Maskito } from '@maskito/core';
21
21
  import * as i0 from "@angular/core";
22
22
  export class WattPlaceholderMaskComponent {
23
23
  cdr = inject(ChangeDetectorRef);
24
- primaryInputElement = input.required();
25
- secondaryInputElement = input();
26
- mask = input.required();
27
- placeholder = input.required();
24
+ primaryInputElement = input.required(...(ngDevMode ? [{ debugName: "primaryInputElement" }] : []));
25
+ secondaryInputElement = input(...(ngDevMode ? [undefined, { debugName: "secondaryInputElement" }] : []));
26
+ mask = input.required(...(ngDevMode ? [{ debugName: "mask" }] : []));
27
+ placeholder = input.required(...(ngDevMode ? [{ debugName: "placeholder" }] : []));
28
28
  maskApplied = output();
29
- maskedInput = signal(null);
30
- primaryGhost = signal('');
31
- primaryFiller = signal(null);
29
+ maskedInput = signal(null, ...(ngDevMode ? [{ debugName: "maskedInput" }] : []));
30
+ primaryGhost = signal('', ...(ngDevMode ? [{ debugName: "primaryGhost" }] : []));
31
+ primaryFiller = signal(null, ...(ngDevMode ? [{ debugName: "primaryFiller" }] : []));
32
32
  maskEffect = effect((onCleanup) => {
33
33
  const mask = this.mask();
34
34
  const placeholder = this.placeholder();
@@ -56,16 +56,16 @@ export class WattPlaceholderMaskComponent {
56
56
  maskedInput.destroy();
57
57
  this.maskedInput.set(null);
58
58
  });
59
- });
59
+ }, ...(ngDevMode ? [{ debugName: "maskEffect" }] : []));
60
60
  inputEffect = effect(() => {
61
61
  const primaryInputElement = this.primaryInputElement();
62
62
  untracked(() => primaryInputElement.dispatchEvent(new InputEvent('input')));
63
- });
64
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattPlaceholderMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.3", type: WattPlaceholderMaskComponent, isStandalone: true, selector: "watt-placeholder-mask", inputs: { primaryInputElement: { classPropertyName: "primaryInputElement", publicName: "primaryInputElement", isSignal: true, isRequired: true, transformFunction: null }, secondaryInputElement: { classPropertyName: "secondaryInputElement", publicName: "secondaryInputElement", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { maskApplied: "maskApplied" }, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n", styles: ["watt-placeholder-mask{position:absolute;font-family:Droid Sans Mono,monospace;box-sizing:content-box;max-width:100%;line-height:20px;padding:1px 2px;letter-spacing:-.03em;pointer-events:none;display:block}.ghost{color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filler{color:var(--watt-color-neutral-grey-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], encapsulation: i0.ViewEncapsulation.None });
63
+ }, ...(ngDevMode ? [{ debugName: "inputEffect" }] : []));
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPlaceholderMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.3", type: WattPlaceholderMaskComponent, isStandalone: true, selector: "watt-placeholder-mask", inputs: { primaryInputElement: { classPropertyName: "primaryInputElement", publicName: "primaryInputElement", isSignal: true, isRequired: true, transformFunction: null }, secondaryInputElement: { classPropertyName: "secondaryInputElement", publicName: "secondaryInputElement", isSignal: true, isRequired: false, transformFunction: null }, mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: true, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { maskApplied: "maskApplied" }, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n", styles: ["watt-placeholder-mask{position:absolute;font-family:Droid Sans Mono,monospace;box-sizing:content-box;max-width:100%;line-height:20px;padding:1px 2px;letter-spacing:-.03em;pointer-events:none;display:block}.ghost{color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filler{color:var(--watt-color-neutral-grey-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"], encapsulation: i0.ViewEncapsulation.None });
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattPlaceholderMaskComponent, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPlaceholderMaskComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{ selector: 'watt-placeholder-mask', encapsulation: ViewEncapsulation.None, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<span class=\"ghost\">{{ primaryGhost() }}</span>\n<span class=\"filler\">{{ primaryFiller() ?? placeholder() }}</span>\n", styles: ["watt-placeholder-mask{position:absolute;font-family:Droid Sans Mono,monospace;box-sizing:content-box;max-width:100%;line-height:20px;padding:1px 2px;letter-spacing:-.03em;pointer-events:none;display:block}.ghost{color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filler{color:var(--watt-color-neutral-grey-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}\n"] }]
70
70
  }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1wbGFjZWhvbGRlci1tYXNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9fX3NoYXJlZC9wbGFjZWhvbGRlci1tYXNrL3dhdHQtcGxhY2Vob2xkZXItbWFzay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvX19zaGFyZWQvcGxhY2Vob2xkZXItbWFzay93YXR0LXBsYWNlaG9sZGVyLW1hc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxlQUFlLENBQUM7O0FBUXhELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW9CLENBQUM7SUFDekQscUJBQXFCLEdBQUcsS0FBSyxFQUFvQixDQUFDO0lBQ2xELElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO0lBQ3hDLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7SUFDdkMsV0FBVyxHQUFHLE1BQU0sRUFBVSxDQUFDO0lBQy9CLFdBQVcsR0FBRyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsYUFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFNUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsTUFBTSxXQUFXLEdBQW1CO1lBQ2xDLEdBQUcsSUFBSTtZQUNQLGFBQWEsRUFBRTtnQkFDYixHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7Z0JBQzdCLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDN0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUMzRSxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2FBQ0Y7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsQ0FBQyxZQUFZLEVBQUUsRUFBRTtvQkFDZixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFDLE9BQU8sWUFBWSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQzthQUMvQjtTQUNGLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVsQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN4QixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO3VHQTdDUSw0QkFBNEI7MkZBQTVCLDRCQUE0Qiw0c0JDckN6QyxvdEJBa0JBOzsyRkRtQmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFza2l0bywgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2F0dC1wbGFjZWhvbGRlci1tYXNrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhdHQtcGxhY2Vob2xkZXItbWFzay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtcGxhY2Vob2xkZXItbWFzay5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0UGxhY2Vob2xkZXJNYXNrQ29tcG9uZW50IHtcbiAgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpbWFyeUlucHV0RWxlbWVudCA9IGlucHV0LnJlcXVpcmVkPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gIHNlY29uZGFyeUlucHV0RWxlbWVudCA9IGlucHV0PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gIG1hc2sgPSBpbnB1dC5yZXF1aXJlZDxNYXNraXRvT3B0aW9ucz4oKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIG1hc2tBcHBsaWVkID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgbWFza2VkSW5wdXQgPSBzaWduYWw8TWFza2l0byB8IG51bGw+KG51bGwpO1xuICBwcmltYXJ5R2hvc3QgPSBzaWduYWwoJycpO1xuICBwcmltYXJ5RmlsbGVyID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIG1hc2tFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgIGNvbnN0IG1hc2sgPSB0aGlzLm1hc2soKTtcbiAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIoKTtcbiAgICBjb25zdCBwcmltYXJ5TWFzazogTWFza2l0b09wdGlvbnMgPSB7XG4gICAgICAuLi5tYXNrLFxuICAgICAgcHJlcHJvY2Vzc29yczogW1xuICAgICAgICAuLi4obWFzay5wcmVwcm9jZXNzb3JzID8/IFtdKSxcbiAgICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcmltYXJ5R2hvc3Quc2V0KHN0YXRlLmVsZW1lbnRTdGF0ZS52YWx1ZS5zbGljZSgwLCBwbGFjZWhvbGRlci5sZW5ndGgpKTtcbiAgICAgICAgICB0aGlzLnByaW1hcnlGaWxsZXIuc2V0KHBsYWNlaG9sZGVyLnNsaWNlKHN0YXRlLmVsZW1lbnRTdGF0ZS52YWx1ZS5sZW5ndGgpKTtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcG9zdHByb2Nlc3NvcnM6IFtcbiAgICAgICAgKGVsZW1lbnRTdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMubWFza0FwcGxpZWQuZW1pdChlbGVtZW50U3RhdGUudmFsdWUpO1xuICAgICAgICAgIHJldHVybiBlbGVtZW50U3RhdGU7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLihtYXNrLnBvc3Rwcm9jZXNzb3JzID8/IFtdKSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IG1hc2tlZElucHV0ID0gbmV3IE1hc2tpdG8odGhpcy5wcmltYXJ5SW5wdXRFbGVtZW50KCksIHByaW1hcnlNYXNrKTtcbiAgICB0aGlzLm1hc2tlZElucHV0LnNldChtYXNrZWRJbnB1dCk7XG5cbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgbWFza2VkSW5wdXQuZGVzdHJveSgpO1xuICAgICAgdGhpcy5tYXNrZWRJbnB1dC5zZXQobnVsbCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlucHV0RWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcmltYXJ5SW5wdXRFbGVtZW50ID0gdGhpcy5wcmltYXJ5SW5wdXRFbGVtZW50KCk7XG4gICAgdW50cmFja2VkKCgpID0+IHByaW1hcnlJbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnKSkpO1xuICB9KTtcbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48c3BhbiBjbGFzcz1cImdob3N0XCI+e3sgcHJpbWFyeUdob3N0KCkgfX08L3NwYW4+XG48c3BhbiBjbGFzcz1cImZpbGxlclwiPnt7IHByaW1hcnlGaWxsZXIoKSA/PyBwbGFjZWhvbGRlcigpIH19PC9zcGFuPlxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1wbGFjZWhvbGRlci1tYXNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9fX3NoYXJlZC9wbGFjZWhvbGRlci1tYXNrL3dhdHQtcGxhY2Vob2xkZXItbWFzay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvX19zaGFyZWQvcGxhY2Vob2xkZXItbWFzay93YXR0LXBsYWNlaG9sZGVyLW1hc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBa0IsTUFBTSxlQUFlLENBQUM7O0FBUXhELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxRQUFRLDhEQUFvQixDQUFDO0lBQ3pELHFCQUFxQixHQUFHLEtBQUssMkVBQW9CLENBQUM7SUFDbEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLCtDQUFrQixDQUFDO0lBQ3hDLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxzREFBVSxDQUFDO0lBQ3ZDLFdBQVcsR0FBRyxNQUFNLEVBQVUsQ0FBQztJQUMvQixXQUFXLEdBQUcsTUFBTSxDQUFpQixJQUFJLHVEQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLE1BQU0sQ0FBQyxFQUFFLHdEQUFDLENBQUM7SUFDMUIsYUFBYSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSx5REFBQyxDQUFDO0lBRTVDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFtQjtZQUNsQyxHQUFHLElBQUk7WUFDUCxhQUFhLEVBQUU7Z0JBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2dCQUM3QixDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQzdFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDM0UsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQzthQUNGO1lBQ0QsY0FBYyxFQUFFO2dCQUNkLENBQUMsWUFBWSxFQUFFLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQyxPQUFPLFlBQVksQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7YUFDL0I7U0FDRixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsc0RBQUMsQ0FBQztJQUVILFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdkQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQyx1REFBQyxDQUFDO3VHQTdDUSw0QkFBNEI7MkZBQTVCLDRCQUE0Qiw0c0JDckN6QyxvdEJBa0JBOzsyRkRtQmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNFLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWFza2l0bywgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2F0dC1wbGFjZWhvbGRlci1tYXNrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhdHQtcGxhY2Vob2xkZXItbWFzay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtcGxhY2Vob2xkZXItbWFzay5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0UGxhY2Vob2xkZXJNYXNrQ29tcG9uZW50IHtcbiAgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpbWFyeUlucHV0RWxlbWVudCA9IGlucHV0LnJlcXVpcmVkPEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gIHNlY29uZGFyeUlucHV0RWxlbWVudCA9IGlucHV0PEhUTUxJbnB1dEVsZW1lbnQ+KCk7XG4gIG1hc2sgPSBpbnB1dC5yZXF1aXJlZDxNYXNraXRvT3B0aW9ucz4oKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIG1hc2tBcHBsaWVkID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgbWFza2VkSW5wdXQgPSBzaWduYWw8TWFza2l0byB8IG51bGw+KG51bGwpO1xuICBwcmltYXJ5R2hvc3QgPSBzaWduYWwoJycpO1xuICBwcmltYXJ5RmlsbGVyID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIG1hc2tFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgIGNvbnN0IG1hc2sgPSB0aGlzLm1hc2soKTtcbiAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIoKTtcbiAgICBjb25zdCBwcmltYXJ5TWFzazogTWFza2l0b09wdGlvbnMgPSB7XG4gICAgICAuLi5tYXNrLFxuICAgICAgcHJlcHJvY2Vzc29yczogW1xuICAgICAgICAuLi4obWFzay5wcmVwcm9jZXNzb3JzID8/IFtdKSxcbiAgICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcmltYXJ5R2hvc3Quc2V0KHN0YXRlLmVsZW1lbnRTdGF0ZS52YWx1ZS5zbGljZSgwLCBwbGFjZWhvbGRlci5sZW5ndGgpKTtcbiAgICAgICAgICB0aGlzLnByaW1hcnlGaWxsZXIuc2V0KHBsYWNlaG9sZGVyLnNsaWNlKHN0YXRlLmVsZW1lbnRTdGF0ZS52YWx1ZS5sZW5ndGgpKTtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcG9zdHByb2Nlc3NvcnM6IFtcbiAgICAgICAgKGVsZW1lbnRTdGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMubWFza0FwcGxpZWQuZW1pdChlbGVtZW50U3RhdGUudmFsdWUpO1xuICAgICAgICAgIHJldHVybiBlbGVtZW50U3RhdGU7XG4gICAgICAgIH0sXG4gICAgICAgIC4uLihtYXNrLnBvc3Rwcm9jZXNzb3JzID8/IFtdKSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IG1hc2tlZElucHV0ID0gbmV3IE1hc2tpdG8odGhpcy5wcmltYXJ5SW5wdXRFbGVtZW50KCksIHByaW1hcnlNYXNrKTtcbiAgICB0aGlzLm1hc2tlZElucHV0LnNldChtYXNrZWRJbnB1dCk7XG5cbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgbWFza2VkSW5wdXQuZGVzdHJveSgpO1xuICAgICAgdGhpcy5tYXNrZWRJbnB1dC5zZXQobnVsbCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGlucHV0RWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcmltYXJ5SW5wdXRFbGVtZW50ID0gdGhpcy5wcmltYXJ5SW5wdXRFbGVtZW50KCk7XG4gICAgdW50cmFja2VkKCgpID0+IHByaW1hcnlJbnB1dEVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnKSkpO1xuICB9KTtcbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48c3BhbiBjbGFzcz1cImdob3N0XCI+e3sgcHJpbWFyeUdob3N0KCkgfX08L3NwYW4+XG48c3BhbiBjbGFzcz1cImZpbGxlclwiPnt7IHByaW1hcnlGaWxsZXIoKSA/PyBwbGFjZWhvbGRlcigpIH19PC9zcGFuPlxuIl19
@@ -269,10 +269,10 @@ export class WattPickerBase {
269
269
  markParentControlAsTouched = () => {
270
270
  // Intentionally left empty
271
271
  };
272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattPickerBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
273
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: WattPickerBase, isStandalone: true, inputs: { userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"], value: "value", range: "range", required: "required", disabled: "disabled" }, host: { properties: { "attr.watt-field-disabled": "this.disabled" } }, ngImport: i0 });
272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPickerBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
273
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: WattPickerBase, isStandalone: true, inputs: { userAriaDescribedBy: ["aria-describedby", "userAriaDescribedBy"], value: "value", range: "range", required: "required", disabled: "disabled" }, host: { properties: { "attr.watt-field-disabled": "this.disabled" } }, ngImport: i0 });
274
274
  }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattPickerBase, decorators: [{
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPickerBase, decorators: [{
276
276
  type: Directive
277
277
  }], ctorParameters: () => [{ type: undefined }], propDecorators: { userAriaDescribedBy: [{
278
278
  type: Input,
@@ -21,10 +21,10 @@ import * as i0 from "@angular/core";
21
21
  export class WattDatepickerIntlService {
22
22
  clear = 'Clear';
23
23
  select = 'OK';
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattDatepickerIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattDatepickerIntlService, providedIn: 'root' });
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerIntlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerIntlService, providedIn: 'root' });
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattDatepickerIntlService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerIntlService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{ providedIn: 'root' }]
30
30
  }] });
@@ -47,13 +47,13 @@ export class WattDatepickerComponent extends WattPickerBase {
47
47
  ngControl = inject(NgControl, { optional: true, self: true });
48
48
  localeService = inject(WattLocaleService);
49
49
  locale = inject(LOCALE_ID);
50
- max = input();
51
- min = input();
52
- rangeMonthOnlyMode = input(false);
53
- startAt = input(null);
54
- label = input('');
55
- dateClass = input(() => '');
56
- canStepThroughDays = input(false, { transform: booleanAttribute });
50
+ max = input(...(ngDevMode ? [undefined, { debugName: "max" }] : []));
51
+ min = input(...(ngDevMode ? [undefined, { debugName: "min" }] : []));
52
+ rangeMonthOnlyMode = input(false, ...(ngDevMode ? [{ debugName: "rangeMonthOnlyMode" }] : []));
53
+ startAt = input(null, ...(ngDevMode ? [{ debugName: "startAt" }] : []));
54
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
55
+ dateClass = input(() => '', ...(ngDevMode ? [{ debugName: "dateClass" }] : []));
56
+ canStepThroughDays = input(false, ...(ngDevMode ? [{ debugName: "canStepThroughDays", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
57
57
  /**
58
58
  * @ignore
59
59
  */
@@ -108,7 +108,7 @@ export class WattDatepickerComponent extends WattPickerBase {
108
108
  separator: '-',
109
109
  max: this.max(),
110
110
  min: this.min(),
111
- }));
111
+ }), ...(ngDevMode ? [{ debugName: "inputMask" }] : []));
112
112
  /**
113
113
  * @ignore
114
114
  */
@@ -117,7 +117,7 @@ export class WattDatepickerComponent extends WattPickerBase {
117
117
  dateSeparator: '-',
118
118
  max: this.max(),
119
119
  min: this.min(),
120
- }));
120
+ }), ...(ngDevMode ? [{ debugName: "rangeInputMask" }] : []));
121
121
  /**
122
122
  * @ignore
123
123
  */
@@ -372,13 +372,13 @@ export class WattDatepickerComponent extends WattPickerBase {
372
372
  }
373
373
  return maybeDateInDanishTimeZone;
374
374
  }
375
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
376
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: WattDatepickerComponent, isStandalone: true, selector: "watt-datepicker", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, rangeMonthOnlyMode: { classPropertyName: "rangeMonthOnlyMode", publicName: "rangeMonthOnlyMode", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, canStepThroughDays: { classPropertyName: "canStepThroughDays", publicName: "canStepThroughDays", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
375
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
376
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattDatepickerComponent, isStandalone: true, selector: "watt-datepicker", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, rangeMonthOnlyMode: { classPropertyName: "rangeMonthOnlyMode", publicName: "rangeMonthOnlyMode", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, canStepThroughDays: { classPropertyName: "canStepThroughDays", publicName: "canStepThroughDays", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
377
377
  { provide: MatFormFieldControl, useExisting: WattDatepickerComponent },
378
378
  MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,
379
379
  ], viewQueries: [{ propertyName: "matDatepickerInput", first: true, predicate: MatDatepickerInput, descendants: true }, { propertyName: "matDateRangePicker", first: true, predicate: MatDateRangePicker, descendants: true }, { propertyName: "matDateRangeInput", first: true, predicate: MatDateRangeInput, descendants: true }, { propertyName: "matStartDate", first: true, predicate: MatStartDate, descendants: true }, { propertyName: "matEndDate", first: true, predicate: MatEndDate, descendants: true }, { propertyName: "actualInput", first: true, predicate: ["actualInput"], descendants: true }, { propertyName: "input", first: true, predicate: ["dateInput"], descendants: true }, { propertyName: "startInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endInput", first: true, predicate: ["endDateInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [control]=\"control\" [label]=\"label()\">\n @if (range) {\n <mat-date-range-input\n [disabled]=\"disabled\"\n [rangePicker]=\"rangeDatepicker\"\n [min]=\"min() ?? null\"\n [max]=\"max() ?? null\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-date-input\"\n matStartDate\n #startDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n\n <input\n inert\n aria-label=\"end-date-input\"\n matEndDate\n #endDateInput\n [readOnly]=\"rangeMonthOnlyMode()\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [hidden]=\"true\"\n />\n </mat-date-range-input>\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"rangeInputMask()\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"false\"\n (click)=\"rangeDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-date-range-picker\n [panelClass]=\"rangeMonthOnlyMode() ? 'watt-datepicker-range__panel--month-only' : ''\"\n [startView]=\"rangeMonthOnlyMode() ? 'multi-year' : 'month'\"\n [startAt]=\"startAt()\"\n (monthSelected)=\"onMonthSelected($event)\"\n (closed)=\"rangePickerClosed()\"\n #rangeDatepicker\n />\n } @else {\n <input\n inert\n matInput\n tabindex=\"-1\"\n aria-label=\"date-input\"\n #dateInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n [min]=\"min()\"\n [max]=\"max()\"\n [matDatepicker]=\"singleDatepicker\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #actualInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"actualInput\"\n [mask]=\"inputMask()\"\n [placeholder]=\"datePlaceholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n\n <watt-button\n wattSuffix\n variant=\"icon\"\n icon=\"date\"\n [disabled]=\"disabled\"\n (click)=\"singleDatepicker.open()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <mat-datepicker\n #singleDatepicker\n panelClass=\"watt-datepicker-single__panel\"\n [dateClass]=\"dateClass()\"\n [startAt]=\"startAt()\"\n (closed)=\"datepickerClosed()\"\n />\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n\n@if (!range && canStepThroughDays()) {\n <span\n class=\"watt-datepicker-single__step-through\"\n [class.watt-datepicker-single__has-label]=\"!!label()\"\n >\n <watt-button\n variant=\"icon\"\n icon=\"left\"\n (click)=\"prevDay()\"\n [disabled]=\"disabled || isPrevDayButtonDisabled()\"\n />\n <watt-button\n variant=\"icon\"\n icon=\"right\"\n (click)=\"nextDay()\"\n [disabled]=\"disabled || isNextDayButtonDisabled()\"\n />\n </span>\n}\n", styles: ["watt-datepicker{display:flex;align-items:center;width:100%}watt-datepicker watt-button[variant=icon]{margin-left:auto}watt-datepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-datepicker mat-datepicker,watt-datepicker mat-date-range-picker{display:none}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker .mat-date-range-input-mirror,watt-datepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-datepicker input.mat-date-range-input-inner,watt-datepicker input.mat-mdc-input-element,watt-datepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-datepicker input.mask-input{color:#000}watt-datepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-datepicker input.mask-input:focus-visible{outline:none}watt-datepicker .mat-date-range-input-container{align-items:initial}watt-datepicker .mat-date-range-input-start-wrapper,watt-datepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-datepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-datepicker .mat-date-range-input-separator-hidden,watt-datepicker .mat-date-range-input-separator{opacity:0!important}watt-datepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}watt-datepicker watt-button .mat-button{background:transparent}watt-datepicker:has(.watt-datepicker-single__step-through){align-items:flex-start}watt-datepicker:has(.watt-datepicker-single__step-through) .watt-datepicker-single__step-through{display:flex;margin-top:1px}watt-datepicker:has(.watt-datepicker-single__has-label) .watt-datepicker-single__step-through{margin-top:28px}.watt-datepicker-range__panel--month-only .mat-calendar-period-button{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "ngmodule", type: MaskitoModule }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
380
380
  }
381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattDatepickerComponent, decorators: [{
381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattDatepickerComponent, decorators: [{
382
382
  type: Component,
383
383
  args: [{ selector: 'watt-datepicker', providers: [
384
384
  { provide: MatFormFieldControl, useExisting: WattDatepickerComponent },
@@ -419,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
419
419
  type: ViewChild,
420
420
  args: ['endDateInput']
421
421
  }] } });
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9kYXRlcGlja2VyL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvZGF0ZXBpY2tlci93YXR0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUNMLCtDQUErQyxFQUUvQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFlBQVksR0FDYixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0Is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QyxZQUFZO2dCQU92QixVQUFVO3NCQURULFNBQVM7dUJBQUMsVUFBVTtnQkFPckIsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBT3hCLEtBQUs7c0JBREosU0FBUzt1QkFBQyxXQUFXO2dCQU90QixVQUFVO3NCQURULFNBQVM7dUJBQUMsZ0JBQWdCO2dCQU8zQixRQUFRO3NCQURQLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEZvcm1hdFdpZHRoLCBnZXRMb2NhbGVEYXRlRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIExPQ0FMRV9JRCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIGVmZmVjdCxcbiAgbGlua2VkU2lnbmFsLFxuICBib29sZWFuQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNQVRfREFURVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUixcbiAgTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbixcbiAgTWF0RGF0ZVJhbmdlSW5wdXQsXG4gIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgTWF0RGF0ZXBpY2tlcklucHV0LFxuICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICBNYXRFbmREYXRlLFxuICBNYXRTdGFydERhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXNraXRvTW9kdWxlIH0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgeyBtYXNraXRvRGF0ZU9wdGlvbnNHZW5lcmF0b3IsIG1hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yIH0gZnJvbSAnQG1hc2tpdG8va2l0JztcblxuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB7XG4gIFdhdHREYXRlUmFuZ2UsXG4gIFdhdHRMb2NhbGVTZXJ2aWNlLFxuICBXYXR0UmFuZ2UsXG4gIFdhdHRTdXBwb3J0ZWRMb2NhbGVzLFxuICBkYXlqcyxcbn0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIFdhdHRQaWNrZXJCYXNlLFxuICBXYXR0UGlja2VyVmFsdWUsXG4gIFdhdHRQbGFjZWhvbGRlck1hc2tDb21wb25lbnQsXG59IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9waWNrZXIvX19zaGFyZWQnO1xuXG5jb25zdCBkYXRlU2hvcnRGb3JtYXQgPSAnREQtTU0tWVlZWSc7XG5jb25zdCBkYW5pc2hMb2NhbGVDb2RlID0gJ2RhJztcbmV4cG9ydCBjb25zdCBkYW5pc2hUaW1lWm9uZUlkZW50aWZpZXIgPSAnRXVyb3BlL0NvcGVuaGFnZW4nO1xuXG4vKipcbiAqIFVzYWdlOlxuICogYGltcG9ydCB7IFdhdHREYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC1kYXRhaHViL3dhdHQvZGF0ZXBpY2tlcic7YFxuICpcbiAqIElNUE9SVEFOVDpcbiAqIFRoZSBzdHlsaW5nIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gb3VyIG1vbm9zcGFjZWQgZm9udC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2F0dC1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBXYXR0RGF0ZXBpY2tlckNvbXBvbmVudCB9LFxuICAgIE1BVF9EQVRFUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBXYXR0QnV0dG9uQ29tcG9uZW50LFxuICAgIFdhdHRGaWVsZENvbXBvbmVudCxcbiAgICBNYXNraXRvTW9kdWxlLFxuICAgIFdhdHRQbGFjZWhvbGRlck1hc2tDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdhdHREYXRlcGlja2VyQ29tcG9uZW50IGV4dGVuZHMgV2F0dFBpY2tlckJhc2UgaW1wbGVtZW50cyBWYWxpZGF0b3IsIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBjaGFuZ2VEZXRlY3Rpb25SZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KFdhdHRMb2NhbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2NhbGUgPSBpbmplY3Q8V2F0dFN1cHBvcnRlZExvY2FsZXM+KExPQ0FMRV9JRCk7XG5cbiAgbWF4ID0gaW5wdXQ8RGF0ZT4oKTtcbiAgbWluID0gaW5wdXQ8RGF0ZT4oKTtcbiAgcmFuZ2VNb250aE9ubHlNb2RlID0gaW5wdXQoZmFsc2UpO1xuICBzdGFydEF0ID0gaW5wdXQ8RGF0ZSB8IG51bGw+KG51bGwpO1xuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBkYXRlQ2xhc3MgPSBpbnB1dDxNYXRDYWxlbmRhckNlbGxDbGFzc0Z1bmN0aW9uPERhdGU+PigoKSA9PiAnJyk7XG4gIGNhblN0ZXBUaHJvdWdoRGF5cyA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZChNYXREYXRlcGlja2VySW5wdXQpXG4gIG1hdERhdGVwaWNrZXJJbnB1dCE6IE1hdERhdGVwaWNrZXJJbnB1dDxEYXRlIHwgbnVsbD47XG5cbiAgQFZpZXdDaGlsZChNYXREYXRlUmFuZ2VQaWNrZXIpXG4gIG1hdERhdGVSYW5nZVBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlIHwgbnVsbD47XG5cbiAgQFZpZXdDaGlsZChNYXREYXRlUmFuZ2VJbnB1dClcbiAgbWF0RGF0ZVJhbmdlSW5wdXQhOiBNYXREYXRlUmFuZ2VJbnB1dDxEYXRlIHwgbnVsbD47XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoTWF0U3RhcnREYXRlKVxuICBtYXRTdGFydERhdGUhOiBNYXRTdGFydERhdGU8RGF0ZSB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKE1hdEVuZERhdGUpXG4gIG1hdEVuZERhdGUhOiBNYXRFbmREYXRlPERhdGUgfCBudWxsPjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnYWN0dWFsSW5wdXQnKVxuICBhY3R1YWxJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dCcpXG4gIGlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlSW5wdXQnKVxuICBzdGFydElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZUlucHV0JylcbiAgZW5kSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlciA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIodGhpcy5nZXRJbnB1dEZvcm1hdCgpKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZGF0ZVBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlckJ5TG9jYWxlKHRoaXMubG9jYWxlKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2VTZXBhcmF0b3IgPSAnIC0gJztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2VQbGFjZWhvbGRlciA9IHRoaXMuZGF0ZVBsYWNlaG9sZGVyICsgdGhpcy5yYW5nZVNlcGFyYXRvciArIHRoaXMuZGF0ZVBsYWNlaG9sZGVyO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpbnB1dE1hc2sgPSBjb21wdXRlZCgoKSA9PlxuICAgIG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICBtb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgIG1heDogdGhpcy5tYXgoKSxcbiAgICAgIG1pbjogdGhpcy5taW4oKSxcbiAgICB9KVxuICApO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByYW5nZUlucHV0TWFzayA9IGNvbXB1dGVkKCgpID0+XG4gICAgbWFza2l0b0RhdGVSYW5nZU9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgbW9kZTogJ2RkL21tL3l5eXknLFxuICAgICAgZGF0ZVNlcGFyYXRvcjogJy0nLFxuICAgICAgbWF4OiB0aGlzLm1heCgpLFxuICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgIH0pXG4gICk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldFBsYWNlaG9sZGVyQnlMb2NhbGUobG9jYWxlOiBXYXR0U3VwcG9ydGVkTG9jYWxlcyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2FsZSA9PT0gJ2RhJyA/ICdkZC1tbS3DpcOlw6XDpScgOiAnZGQtbW0teXl5eSc7XG4gIH1cbiAgZ2V0UmFuZ2VQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVQbGFjZWhvbGRlciArIHRoaXMucmFuZ2VTZXBhcmF0b3IgKyB0aGlzLmRhdGVQbGFjZWhvbGRlcjtcbiAgfVxuXG4gIGlzUHJldkRheUJ1dHRvbkRpc2FibGVkID0gbGlua2VkU2lnbmFsKCgpID0+IHRoaXMuaXNQcmV2RGF5QmVmb3JlT3JFcXVhbFRvTWluRGF0ZSgpKTtcbiAgaXNOZXh0RGF5QnV0dG9uRGlzYWJsZWQgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5pc05leHREYXlBZnRlck9yRXF1YWxUb01heERhdGUoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYHdhdHQtZGF0ZXBpY2tlci0ke1dhdHREYXRlcGlja2VyQ29tcG9uZW50Lm5leHRJZCsrfWApO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlU2VydmljZS5sb2NhbGUoKTtcbiAgICAgIHRoaXMuZGF0ZVBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlckJ5TG9jYWxlKGxvY2FsZSk7XG4gICAgICB0aGlzLnJhbmdlUGxhY2Vob2xkZXIgPSB0aGlzLmdldFJhbmdlUGxhY2Vob2xkZXIoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnJhbmdlTW9udGhPbmx5TW9kZSgpO1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5hZGRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKSk7XG4gIH1cblxuICB2YWxpZGF0ZSh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbDxXYXR0UmFuZ2U8c3RyaW5nPj4pIHtcbiAgICBpZiAoIXZhbHVlPy5lbmQgfHwgIXZhbHVlPy5zdGFydCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCF0aGlzLnJhbmdlTW9udGhPbmx5TW9kZSgpKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdGFydCA9IGRheWpzKHZhbHVlLnN0YXJ0KTtcbiAgICBjb25zdCBlbmQgPSBkYXlqcyh2YWx1ZS5lbmQpO1xuICAgIHJldHVybiBzdGFydC5pc1NhbWUoc3RhcnQuc3RhcnRPZignbW9udGgnKSkgJiYgZW5kLmlzU2FtZShzdGFydC5lbmRPZignbW9udGgnKSlcbiAgICAgID8gbnVsbFxuICAgICAgOiB7IG1vbnRoT25seTogdHJ1ZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRTaW5nbGVJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMubWF0RGF0ZXBpY2tlcklucHV0LnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQoKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dENoYW5nZWQodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGVTdHJpbmcgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLmRhdGVQbGFjZWhvbGRlci5sZW5ndGgpO1xuXG4gICAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRlU3RyaW5nLmxlbmd0aCAhPT0gdGhpcy5kYXRlUGxhY2Vob2xkZXIubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VEYXRlU2hvcnRGb3JtYXQoZGF0ZVN0cmluZyk7XG4gICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwoZGF0ZSkpO1xuICB9XG5cbiAgZGF0ZXBpY2tlckNsb3NlZCgpIHtcbiAgICBpZiAodGhpcy5tYXREYXRlcGlja2VySW5wdXQudmFsdWUpIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUodGhpcy5tYXREYXRlcGlja2VySW5wdXQudmFsdWUpO1xuXG4gICAgICB0aGlzLmFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KFxuICAgICAgICB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwodGhpcy5tYXREYXRlcGlja2VySW5wdXQudmFsdWUpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1ByZXZEYXlCdXR0b25EaXNhYmxlZC5zZXQodGhpcy5pc1ByZXZEYXlCZWZvcmVPckVxdWFsVG9NaW5EYXRlKCkpO1xuICAgIHRoaXMuaXNOZXh0RGF5QnV0dG9uRGlzYWJsZWQuc2V0KHRoaXMuaXNOZXh0RGF5QWZ0ZXJPckVxdWFsVG9NYXhEYXRlKCkpO1xuXG4gICAgdGhpcy5hY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICB9XG5cbiAgb25Nb250aFNlbGVjdGVkKGRhdGU6IERhdGUpIHtcbiAgICBpZiAodGhpcy5yYW5nZU1vbnRoT25seU1vZGUoKSAmJiBkYXRlKSB7XG4gICAgICB0aGlzLm1hdERhdGVSYW5nZVBpY2tlci5zZWxlY3QoZGF5anMoZGF0ZSkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKSk7XG4gICAgICB0aGlzLm1hdERhdGVSYW5nZVBpY2tlci5zZWxlY3QoZGF5anMoZGF0ZSkuZW5kT2YoJ21vbnRoJykudG9EYXRlKCkpO1xuICAgICAgdGhpcy5tYXREYXRlUmFuZ2VQaWNrZXIuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRSYW5nZUlucHV0KCkge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5tYXRTdGFydERhdGUudmFsdWUgPSAodGhpcy5pbml0aWFsVmFsdWUgYXMgV2F0dERhdGVSYW5nZSkuc3RhcnQ7XG4gICAgICB0aGlzLm1hdEVuZERhdGUudmFsdWUgPSAodGhpcy5pbml0aWFsVmFsdWUgYXMgV2F0dERhdGVSYW5nZSkuZW5kO1xuICAgICAgdGhpcy5yYW5nZVBpY2tlckNsb3NlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUmFuZ2VQaWNrZXIoKSB7XG4gICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLmFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLmFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnKSk7XG4gIH1cblxuICByYW5nZUlucHV0Q2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhcnREYXRlU3RyaW5nID0gdmFsdWUuc2xpY2UoMCwgdGhpcy5kYXRlUGxhY2Vob2xkZXIubGVuZ3RoKTtcblxuICAgIGlmIChzdGFydERhdGVTdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzdGFydERhdGVTdHJpbmcubGVuZ3RoICE9PSB0aGlzLmRhdGVQbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IHRoaXMucGFyc2VEYXRlU2hvcnRGb3JtYXQoc3RhcnREYXRlU3RyaW5nKTtcbiAgICBjb25zdCBlbmREYXRlU3RyaW5nID0gdmFsdWUuc2xpY2UodGhpcy5kYXRlUGxhY2Vob2xkZXIubGVuZ3RoICsgdGhpcy5yYW5nZVNlcGFyYXRvci5sZW5ndGgpO1xuICAgIGxldCBlbmQgPSB0aGlzLnNldEVuZERhdGVUb0RhbmlzaFRpbWVab25lKGVuZERhdGVTdHJpbmcpO1xuXG4gICAgaWYgKGVuZCAhPT0gbnVsbCkge1xuICAgICAgZW5kID0gdGhpcy5zZXRUb0VuZE9mRGF5KGVuZCk7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHsgc3RhcnQsIGVuZCB9KTtcbiAgICB9XG4gIH1cblxuICByYW5nZVBpY2tlckNsb3NlZCgpIHtcbiAgICBpZiAodGhpcy5tYXREYXRlUmFuZ2VJbnB1dC52YWx1ZT8uc3RhcnQgJiYgdGhpcy5tYXREYXRlUmFuZ2VJbnB1dC52YWx1ZS5lbmQpIHtcbiAgICAgIHRoaXMuYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9XG4gICAgICAgIHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcoXG4gICAgICAgICAgdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKHRoaXMubWF0RGF0ZVJhbmdlSW5wdXQudmFsdWU/LnN0YXJ0KVxuICAgICAgICApICtcbiAgICAgICAgJy0nICtcbiAgICAgICAgdGhpcy5mb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyhcbiAgICAgICAgICB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwodGhpcy5tYXREYXRlUmFuZ2VJbnB1dC52YWx1ZS5lbmQpXG4gICAgICAgICk7XG5cbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoe1xuICAgICAgICBzdGFydDogdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKHRoaXMubWF0RGF0ZVJhbmdlSW5wdXQudmFsdWUuc3RhcnQpLFxuICAgICAgICBlbmQ6IHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbCh0aGlzLm1hdERhdGVSYW5nZUlucHV0LnZhbHVlLmVuZCksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0U2luZ2xlVmFsdWUoXG4gICAgdmFsdWU6IEV4Y2x1ZGU8V2F0dFBpY2tlclZhbHVlLCBXYXR0RGF0ZVJhbmdlPixcbiAgICBpbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApIHtcbiAgICB0aGlzLnNldFZhbHVlVG9JbnB1dCh2YWx1ZSwgaW5wdXQsIHRoaXMubWF0RGF0ZXBpY2tlcklucHV0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0UmFuZ2VWYWx1ZShcbiAgICB2YWx1ZTogV2F0dERhdGVSYW5nZSB8IG51bGwsXG4gICAgc3RhcnRJbnB1dDogSFRNTElucHV0RWxlbWVudCxcbiAgICBlbmRJbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApIHtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHZhbHVlID8/IHt9O1xuXG4gICAgdGhpcy5zZXRWYWx1ZVRvSW5wdXQoc3RhcnQsIHN0YXJ0SW5wdXQsIHRoaXMubWF0U3RhcnREYXRlKTtcbiAgICB0aGlzLnNldFZhbHVlVG9JbnB1dChlbmQsIGVuZElucHV0LCB0aGlzLm1hdEVuZERhdGUpO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcmV2RGF5KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGF5KC0xKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmV4dERheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZURheSgxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoYW5nZURheSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSB0aGlzLm1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZTtcblxuICAgIGlmIChjdXJyZW50RGF0ZSkge1xuICAgICAgY29uc3QgbmV3RGF0ZSA9IGRheWpzKGN1cnJlbnREYXRlKS5hZGQodmFsdWUsICdkYXknKS50b0lTT1N0cmluZygpO1xuICAgICAgY29uc3QgbmV3RGF0ZUZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcobmV3RGF0ZSk7XG5cbiAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkKG5ld0RhdGVGb3JtYXR0ZWQpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgaXNQcmV2RGF5QmVmb3JlT3JFcXVhbFRvTWluRGF0ZSgpIHtcbiAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0Py52YWx1ZTtcblxuICAgIGlmICghbWluIHx8ICFzZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlzQmVmb3JlID0gZGF5anMoc2VsZWN0ZWREYXRlKS5pc0JlZm9yZShtaW4sICdkYXknKTtcbiAgICBjb25zdCBpc1NhbWUgPSBkYXlqcyhzZWxlY3RlZERhdGUpLmlzU2FtZShtaW4sICdkYXknKTtcblxuICAgIHJldHVybiBpc1NhbWUgfHwgaXNCZWZvcmU7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpc05leHREYXlBZnRlck9yRXF1YWxUb01heERhdGUoKSB7XG4gICAgY29uc3QgbWF4ID0gdGhpcy5tYXgoKTtcbiAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0aGlzLm1hdERhdGVwaWNrZXJJbnB1dD8udmFsdWU7XG5cbiAgICBpZiAoIW1heCB8fCAhc2VsZWN0ZWREYXRlKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBpc0FmdGVyID0gZGF5anMoc2VsZWN0ZWREYXRlKS5pc0FmdGVyKG1heCwgJ2RheScpO1xuICAgIGNvbnN0IGlzU2FtZSA9IGRheWpzKHNlbGVjdGVkRGF0ZSkuaXNTYW1lKG1heCwgJ2RheScpO1xuXG4gICAgcmV0dXJuIGlzU2FtZSB8fCBpc0FmdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZ2V0SW5wdXRGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhbGVEYXRlRm9ybWF0ID0gZ2V0TG9jYWxlRGF0ZUZvcm1hdCh0aGlzLmxvY2FsZSwgRm9ybWF0V2lkdGguU2hvcnQpO1xuXG4gICAgcmV0dXJuIGxvY2FsZURhdGVGb3JtYXRcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvZCsvLCAnZGQnKVxuICAgICAgLnJlcGxhY2UoL20rLywgJ21tJylcbiAgICAgIC5yZXBsYWNlKC95Ky8sICd5eXl5JylcbiAgICAgIC5yZXBsYWNlKC9cXC4vZywgJy0nKTsgLy8gc2VwZXJhdG9yXG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQbGFjZWhvbGRlcihpbnB1dEZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbGUgPT09IGRhbmlzaExvY2FsZUNvZGUgPyBpbnB1dEZvcm1hdC5zcGxpdCgneScpLmpvaW4oJ8OlJykgOiBpbnB1dEZvcm1hdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlRGF0ZVNob3J0Rm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUsIGRhdGVTaG9ydEZvcm1hdCkudG9EYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRWYWx1ZVRvSW5wdXQ8RCBleHRlbmRzIHsgdmFsdWU6IERhdGUgfCBudWxsIH0+KFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG5hdGl2ZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50LFxuICAgIG1hdERhdGVJbnB1dDogRFxuICApOiB2b2lkIHtcbiAgICBuYXRpdmVJbnB1dC52YWx1ZSA9IHZhbHVlID8gdGhpcy5mb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyh2YWx1ZSkgOiAnJztcbiAgICBtYXREYXRlSW5wdXQudmFsdWUgPSB2YWx1ZSA/IGRheWpzKHZhbHVlKS51dGMoKS50b0RhdGUoKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBGb3JtYXRzIERhdGUgdG8gZnVsbCBJU08gODYwMSBmb3JtYXQgKGUuZy4gYDIwMjItMDgtMzFUMjI6MDA6MDAuMDAwWmApXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwodmFsdWU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSkudXRjKCkudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSkudHooZGFuaXNoVGltZVpvbmVJZGVudGlmaWVyKS5mb3JtYXQoZGF0ZVNob3J0Rm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHRvRGFuaXNoVGltZVpvbmUodmFsdWU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUudG9JU09TdHJpbmcoKSkudHooZGFuaXNoVGltZVpvbmVJZGVudGlmaWVyKS50b0RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNldFRvRW5kT2ZEYXkodmFsdWU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gZGF5anModmFsdWUpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNldEVuZERhdGVUb0RhbmlzaFRpbWVab25lKHZhbHVlOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgY29uc3QgZGF0ZUJhc2VkT25TaG9ydEZvcm1hdCA9IHRoaXMucGFyc2VEYXRlU2hvcnRGb3JtYXQodmFsdWUpO1xuXG4gICAgbGV0IG1heWJlRGF0ZUluRGFuaXNoVGltZVpvbmU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICAgIGlmIChkYXlqcyhkYXRlQmFzZWRPblNob3J0Rm9ybWF0KS5pc1ZhbGlkKCkpIHtcbiAgICAgIG1heWJlRGF0ZUluRGFuaXNoVGltZVpvbmUgPSB0aGlzLnRvRGFuaXNoVGltZVpvbmUoZGF0ZUJhc2VkT25TaG9ydEZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heWJlRGF0ZUluRGFuaXNoVGltZVpvbmU7XG4gIH1cbn1cbiIsIjwhLS1cbkBsaWNlbnNlXG5Db3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuLS0+XG48d2F0dC1maWVsZCBbY29udHJvbF09XCJjb250cm9sXCIgW2xhYmVsXT1cImxhYmVsKClcIj5cbiAgQGlmIChyYW5nZSkge1xuICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dFxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtyYW5nZVBpY2tlcl09XCJyYW5nZURhdGVwaWNrZXJcIlxuICAgICAgW21pbl09XCJtaW4oKSA/PyBudWxsXCJcbiAgICAgIFttYXhdPVwibWF4KCkgPz8gbnVsbFwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgaW5lcnRcbiAgICAgICAgYXJpYS1sYWJlbD1cInN0YXJ0LWRhdGUtaW5wdXRcIlxuICAgICAgICBtYXRTdGFydERhdGVcbiAgICAgICAgI3N0YXJ0RGF0ZUlucHV0XG4gICAgICAgIFtyZWFkT25seV09XCJyYW5nZU1vbnRoT25seU1vZGUoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgIFtoaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAvPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgaW5lcnRcbiAgICAgICAgYXJpYS1sYWJlbD1cImVuZC1kYXRlLWlucHV0XCJcbiAgICAgICAgbWF0RW5kRGF0ZVxuICAgICAgICAjZW5kRGF0ZUlucHV0XG4gICAgICAgIFtyZWFkT25seV09XCJyYW5nZU1vbnRoT25seU1vZGUoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgIFtoaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAvPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgPGlucHV0ICNhY3R1YWxJbnB1dCBjbGFzcz1cIm1hc2staW5wdXRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAvPlxuICAgIDx3YXR0LXBsYWNlaG9sZGVyLW1hc2tcbiAgICAgIFtwcmltYXJ5SW5wdXRFbGVtZW50XT1cImFjdHVhbElucHV0XCJcbiAgICAgIFttYXNrXT1cInJhbmdlSW5wdXRNYXNrKClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInJhbmdlUGxhY2Vob2xkZXJcIlxuICAgICAgKG1hc2tBcHBsaWVkKT1cInJhbmdlSW5wdXRDaGFuZ2VkKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8d2F0dC1idXR0b25cbiAgICAgIHZhcmlhbnQ9XCJpY29uXCJcbiAgICAgIGljb249XCJkYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cInJhbmdlRGF0ZXBpY2tlci5vcGVuKClcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgIFtwYW5lbENsYXNzXT1cInJhbmdlTW9udGhPbmx5TW9kZSgpID8gJ3dhdHQtZGF0ZXBpY2tlci1yYW5nZV9fcGFuZWwtLW1vbnRoLW9ubHknIDogJydcIlxuICAgICAgW3N0YXJ0Vmlld109XCJyYW5nZU1vbnRoT25seU1vZGUoKSA/ICdtdWx0aS15ZWFyJyA6ICdtb250aCdcIlxuICAgICAgW3N0YXJ0QXRdPVwic3RhcnRBdCgpXCJcbiAgICAgIChtb250aFNlbGVjdGVkKT1cIm9uTW9udGhTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIChjbG9zZWQpPVwicmFuZ2VQaWNrZXJDbG9zZWQoKVwiXG4gICAgICAjcmFuZ2VEYXRlcGlja2VyXG4gICAgLz5cbiAgfSBAZWxzZSB7XG4gICAgPGlucHV0XG4gICAgICBpbmVydFxuICAgICAgbWF0SW5wdXRcbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgYXJpYS1sYWJlbD1cImRhdGUtaW5wdXRcIlxuICAgICAgI2RhdGVJbnB1dFxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW21pbl09XCJtaW4oKVwiXG4gICAgICBbbWF4XT1cIm1heCgpXCJcbiAgICAgIFttYXREYXRlcGlja2VyXT1cInNpbmdsZURhdGVwaWNrZXJcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8aW5wdXQgI2FjdHVhbElucHV0IGNsYXNzPVwibWFzay1pbnB1dFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XG4gICAgPHdhdHQtcGxhY2Vob2xkZXItbWFza1xuICAgICAgW3ByaW1hcnlJbnB1dEVsZW1lbnRdPVwiYWN0dWFsSW5wdXRcIlxuICAgICAgW21hc2tdPVwiaW5wdXRNYXNrKClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGVQbGFjZWhvbGRlclwiXG4gICAgICAobWFza0FwcGxpZWQpPVwiaW5wdXRDaGFuZ2VkKCRldmVudClcIlxuICAgIC8+XG5cbiAgICA8d2F0dC1idXR0b25cbiAgICAgIHdhdHRTdWZmaXhcbiAgICAgIHZhcmlhbnQ9XCJpY29uXCJcbiAgICAgIGljb249XCJkYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwic2luZ2xlRGF0ZXBpY2tlci5vcGVuKClcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgI3NpbmdsZURhdGVwaWNrZXJcbiAgICAgIHBhbmVsQ2xhc3M9XCJ3YXR0LWRhdGVwaWNrZXItc2luZ2xlX19wYW5lbFwiXG4gICAgICBbZGF0ZUNsYXNzXT1cImRhdGVDbGFzcygpXCJcbiAgICAgIFtzdGFydEF0XT1cInN0YXJ0QXQoKVwiXG4gICAgICAoY2xvc2VkKT1cImRhdGVwaWNrZXJDbG9zZWQoKVwiXG4gICAgLz5cbiAgfVxuXG4gIDxuZy1jb250ZW50IC8+XG4gIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1oaW50XCIgc2VsZWN0PVwid2F0dC1maWVsZC1oaW50XCIgLz5cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJ3YXR0LWZpZWxkLWVycm9yXCIgc2VsZWN0PVwid2F0dC1maWVsZC1lcnJvclwiIC8+XG48L3dhdHQtZmllbGQ+XG5cbkBpZiAoIXJhbmdlICYmIGNhblN0ZXBUaHJvdWdoRGF5cygpKSB7XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJ3YXR0LWRhdGVwaWNrZXItc2luZ2xlX19zdGVwLXRocm91Z2hcIlxuICAgIFtjbGFzcy53YXR0LWRhdGVwaWNrZXItc2luZ2xlX19oYXMtbGFiZWxdPVwiISFsYWJlbCgpXCJcbiAgPlxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cImxlZnRcIlxuICAgICAgKGNsaWNrKT1cInByZXZEYXkoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNQcmV2RGF5QnV0dG9uRGlzYWJsZWQoKVwiXG4gICAgLz5cbiAgICA8d2F0dC1idXR0b25cbiAgICAgIHZhcmlhbnQ9XCJpY29uXCJcbiAgICAgIGljb249XCJyaWdodFwiXG4gICAgICAoY2xpY2spPVwibmV4dERheSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBpc05leHREYXlCdXR0b25EaXNhYmxlZCgpXCJcbiAgICAvPlxuICA8L3NwYW4+XG59XG4iXX0=
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1kYXRlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9kYXRlcGlja2VyL3dhdHQtZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS9waWNrZXIvZGF0ZXBpY2tlci93YXR0LWRhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsU0FBUyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUNMLCtDQUErQyxFQUUvQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFlBQVksR0FDYixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdGLE9BQU8sRUFBRSxrQkFBa0Is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QUFpQjtnQkFPNUIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLFlBQVk7Z0JBT3ZCLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxVQUFVO2dCQU9yQixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFPeEIsS0FBSztzQkFESixTQUFTO3VCQUFDLFdBQVc7Z0JBT3RCLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBTzNCLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHsgRm9ybWF0V2lkdGgsIGdldExvY2FsZURhdGVGb3JtYXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgTE9DQUxFX0lELFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgZWZmZWN0LFxuICBsaW5rZWRTaWduYWwsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1BVF9EQVRFUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSLFxuICBNYXRDYWxlbmRhckNlbGxDbGFzc0Z1bmN0aW9uLFxuICBNYXREYXRlUmFuZ2VJbnB1dCxcbiAgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICBNYXREYXRlcGlja2VySW5wdXQsXG4gIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gIE1hdEVuZERhdGUsXG4gIE1hdFN0YXJ0RGF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hc2tpdG9Nb2R1bGUgfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvciwgbWFza2l0b0RhdGVSYW5nZU9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tICdAbWFza2l0by9raXQnO1xuXG5pbXBvcnQgeyBXYXR0RmllbGRDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvZmllbGQnO1xuaW1wb3J0IHtcbiAgV2F0dERhdGVSYW5nZSxcbiAgV2F0dExvY2FsZVNlcnZpY2UsXG4gIFdhdHRSYW5nZSxcbiAgV2F0dFN1cHBvcnRlZExvY2FsZXMsXG4gIGRheWpzLFxufSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvY29yZS9kYXRlJztcbmltcG9ydCB7IFdhdHRCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvYnV0dG9uJztcblxuaW1wb3J0IHtcbiAgV2F0dFBpY2tlckJhc2UsXG4gIFdhdHRQaWNrZXJWYWx1ZSxcbiAgV2F0dFBsYWNlaG9sZGVyTWFza0NvbXBvbmVudCxcbn0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3BpY2tlci9fX3NoYXJlZCc7XG5cbmNvbnN0IGRhdGVTaG9ydEZvcm1hdCA9ICdERC1NTS1ZWVlZJztcbmNvbnN0IGRhbmlzaExvY2FsZUNvZGUgPSAnZGEnO1xuZXhwb3J0IGNvbnN0IGRhbmlzaFRpbWVab25lSWRlbnRpZmllciA9ICdFdXJvcGUvQ29wZW5oYWdlbic7XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgaW1wb3J0IHsgV2F0dERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0LWRhdGFodWIvd2F0dC9kYXRlcGlja2VyJztgXG4gKlxuICogSU1QT1JUQU5UOlxuICogVGhlIHN0eWxpbmcgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBvdXIgbW9ub3NwYWNlZCBmb250LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YXR0LWRhdGVwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFdhdHREYXRlcGlja2VyQ29tcG9uZW50IH0sXG4gICAgTUFUX0RBVEVQSUNLRVJfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUllfUFJPVklERVIsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIFdhdHRCdXR0b25Db21wb25lbnQsXG4gICAgV2F0dEZpZWxkQ29tcG9uZW50LFxuICAgIE1hc2tpdG9Nb2R1bGUsXG4gICAgV2F0dFBsYWNlaG9sZGVyTWFza0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dERhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBXYXR0UGlja2VyQmFzZSBpbXBsZW1lbnRzIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNoYW5nZURldGVjdGlvblJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICBwcml2YXRlIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoV2F0dExvY2FsZVNlcnZpY2UpO1xuICBwcml2YXRlIGxvY2FsZSA9IGluamVjdDxXYXR0U3VwcG9ydGVkTG9jYWxlcz4oTE9DQUxFX0lEKTtcblxuICBtYXggPSBpbnB1dDxEYXRlPigpO1xuICBtaW4gPSBpbnB1dDxEYXRlPigpO1xuICByYW5nZU1vbnRoT25seU1vZGUgPSBpbnB1dChmYWxzZSk7XG4gIHN0YXJ0QXQgPSBpbnB1dDxEYXRlIHwgbnVsbD4obnVsbCk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGRhdGVDbGFzcyA9IGlucHV0PE1hdENhbGVuZGFyQ2VsbENsYXNzRnVuY3Rpb248RGF0ZT4+KCgpID0+ICcnKTtcbiAgY2FuU3RlcFRocm91Z2hEYXlzID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKE1hdERhdGVwaWNrZXJJbnB1dClcbiAgbWF0RGF0ZXBpY2tlcklucHV0ITogTWF0RGF0ZXBpY2tlcklucHV0PERhdGUgfCBudWxsPjtcblxuICBAVmlld0NoaWxkKE1hdERhdGVSYW5nZVBpY2tlcilcbiAgbWF0RGF0ZVJhbmdlUGlja2VyITogTWF0RGF0ZVJhbmdlUGlja2VyPERhdGUgfCBudWxsPjtcblxuICBAVmlld0NoaWxkKE1hdERhdGVSYW5nZUlucHV0KVxuICBtYXREYXRlUmFuZ2VJbnB1dCE6IE1hdERhdGVSYW5nZUlucHV0PERhdGUgfCBudWxsPjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZChNYXRTdGFydERhdGUpXG4gIG1hdFN0YXJ0RGF0ZSE6IE1hdFN0YXJ0RGF0ZTxEYXRlIHwgbnVsbD47XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBWaWV3Q2hpbGQoTWF0RW5kRGF0ZSlcbiAgbWF0RW5kRGF0ZSE6IE1hdEVuZERhdGU8RGF0ZSB8IG51bGw+O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdhY3R1YWxJbnB1dCcpXG4gIGFjdHVhbElucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnZGF0ZUlucHV0JylcbiAgaW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdzdGFydERhdGVJbnB1dCcpXG4gIHN0YXJ0SW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAVmlld0NoaWxkKCdlbmREYXRlSW5wdXQnKVxuICBlbmRJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgX3BsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlcih0aGlzLmdldElucHV0Rm9ybWF0KCkpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBkYXRlUGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyQnlMb2NhbGUodGhpcy5sb2NhbGUpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByYW5nZVNlcGFyYXRvciA9ICcgLSAnO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByYW5nZVBsYWNlaG9sZGVyID0gdGhpcy5kYXRlUGxhY2Vob2xkZXIgKyB0aGlzLnJhbmdlU2VwYXJhdG9yICsgdGhpcy5kYXRlUGxhY2Vob2xkZXI7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlucHV0TWFzayA9IGNvbXB1dGVkKCgpID0+XG4gICAgbWFza2l0b0RhdGVPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgIG1vZGU6ICdkZC9tbS95eXl5JyxcbiAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgbWF4OiB0aGlzLm1heCgpLFxuICAgICAgbWluOiB0aGlzLm1pbigpLFxuICAgIH0pXG4gICk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJhbmdlSW5wdXRNYXNrID0gY29tcHV0ZWQoKCkgPT5cbiAgICBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICBtb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICBkYXRlU2VwYXJhdG9yOiAnLScsXG4gICAgICBtYXg6IHRoaXMubWF4KCksXG4gICAgICBtaW46IHRoaXMubWluKCksXG4gICAgfSlcbiAgKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0UGxhY2Vob2xkZXJCeUxvY2FsZShsb2NhbGU6IFdhdHRTdXBwb3J0ZWRMb2NhbGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbG9jYWxlID09PSAnZGEnID8gJ2RkLW1tLcOlw6XDpcOlJyA6ICdkZC1tbS15eXl5JztcbiAgfVxuICBnZXRSYW5nZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBsYWNlaG9sZGVyICsgdGhpcy5yYW5nZVNlcGFyYXRvciArIHRoaXMuZGF0ZVBsYWNlaG9sZGVyO1xuICB9XG5cbiAgaXNQcmV2RGF5QnV0dG9uRGlzYWJsZWQgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5pc1ByZXZEYXlCZWZvcmVPckVxdWFsVG9NaW5EYXRlKCkpO1xuICBpc05leHREYXlCdXR0b25EaXNhYmxlZCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLmlzTmV4dERheUFmdGVyT3JFcXVhbFRvTWF4RGF0ZSgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgd2F0dC1kYXRlcGlja2VyLSR7V2F0dERhdGVwaWNrZXJDb21wb25lbnQubmV4dElkKyt9YCk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmxvY2FsZSgpO1xuICAgICAgdGhpcy5kYXRlUGxhY2Vob2xkZXIgPSB0aGlzLmdldFBsYWNlaG9sZGVyQnlMb2NhbGUobG9jYWxlKTtcbiAgICAgIHRoaXMucmFuZ2VQbGFjZWhvbGRlciA9IHRoaXMuZ2V0UmFuZ2VQbGFjZWhvbGRlcigpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMucmFuZ2VNb250aE9ubHlNb2RlKCk7XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmFkZFZhbGlkYXRvcnModGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHZhbGlkYXRlKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sPFdhdHRSYW5nZTxzdHJpbmc+Pikge1xuICAgIGlmICghdmFsdWU/LmVuZCB8fCAhdmFsdWU/LnN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIXRoaXMucmFuZ2VNb250aE9ubHlNb2RlKCkpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHN0YXJ0ID0gZGF5anModmFsdWUuc3RhcnQpO1xuICAgIGNvbnN0IGVuZCA9IGRheWpzKHZhbHVlLmVuZCk7XG4gICAgcmV0dXJuIHN0YXJ0LmlzU2FtZShzdGFydC5zdGFydE9mKCdtb250aCcpKSAmJiBlbmQuaXNTYW1lKHN0YXJ0LmVuZE9mKCdtb250aCcpKVxuICAgICAgPyBudWxsXG4gICAgICA6IHsgbW9udGhPbmx5OiB0cnVlIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdFNpbmdsZUlucHV0KCkge1xuICAgIGlmICh0aGlzLmluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5tYXREYXRlcGlja2VySW5wdXQudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0Q2hhbmdlZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0ZVN0cmluZyA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuZGF0ZVBsYWNlaG9sZGVyLmxlbmd0aCk7XG5cbiAgICBpZiAoZGF0ZVN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGRhdGVTdHJpbmcubGVuZ3RoICE9PSB0aGlzLmRhdGVQbGFjZWhvbGRlci5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZURhdGVTaG9ydEZvcm1hdChkYXRlU3RyaW5nKTtcbiAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbChkYXRlKSk7XG4gIH1cblxuICBkYXRlcGlja2VyQ2xvc2VkKCkge1xuICAgIGlmICh0aGlzLm1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZSkge1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLm1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZSk7XG5cbiAgICAgIHRoaXMuYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcoXG4gICAgICAgIHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbCh0aGlzLm1hdERhdGVwaWNrZXJJbnB1dC52YWx1ZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzUHJldkRheUJ1dHRvbkRpc2FibGVkLnNldCh0aGlzLmlzUHJldkRheUJlZm9yZU9yRXF1YWxUb01pbkRhdGUoKSk7XG4gICAgdGhpcy5pc05leHREYXlCdXR0b25EaXNhYmxlZC5zZXQodGhpcy5pc05leHREYXlBZnRlck9yRXF1YWxUb01heERhdGUoKSk7XG5cbiAgICB0aGlzLmFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnKSk7XG4gIH1cblxuICBvbk1vbnRoU2VsZWN0ZWQoZGF0ZTogRGF0ZSkge1xuICAgIGlmICh0aGlzLnJhbmdlTW9udGhPbmx5TW9kZSgpICYmIGRhdGUpIHtcbiAgICAgIHRoaXMubWF0RGF0ZVJhbmdlUGlja2VyLnNlbGVjdChkYXlqcyhkYXRlKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpKTtcbiAgICAgIHRoaXMubWF0RGF0ZVJhbmdlUGlja2VyLnNlbGVjdChkYXlqcyhkYXRlKS5lbmRPZignbW9udGgnKS50b0RhdGUoKSk7XG4gICAgICB0aGlzLm1hdERhdGVSYW5nZVBpY2tlci5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdFJhbmdlSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbFZhbHVlKSB7XG4gICAgICB0aGlzLm1hdFN0YXJ0RGF0ZS52YWx1ZSA9ICh0aGlzLmluaXRpYWxWYWx1ZSBhcyBXYXR0RGF0ZVJhbmdlKS5zdGFydDtcbiAgICAgIHRoaXMubWF0RW5kRGF0ZS52YWx1ZSA9ICh0aGlzLmluaXRpYWxWYWx1ZSBhcyBXYXR0RGF0ZVJhbmdlKS5lbmQ7XG4gICAgICB0aGlzLnJhbmdlUGlja2VyQ2xvc2VkKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJSYW5nZVBpY2tlcigpIHtcbiAgICB0aGlzLmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuYWN0dWFsSW5wdXQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcpKTtcbiAgfVxuXG4gIHJhbmdlSW5wdXRDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFydERhdGVTdHJpbmcgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLmRhdGVQbGFjZWhvbGRlci5sZW5ndGgpO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZVN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0RGF0ZVN0cmluZy5sZW5ndGggIT09IHRoaXMuZGF0ZVBsYWNlaG9sZGVyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wYXJzZURhdGVTaG9ydEZvcm1hdChzdGFydERhdGVTdHJpbmcpO1xuICAgIGNvbnN0IGVuZERhdGVTdHJpbmcgPSB2YWx1ZS5zbGljZSh0aGlzLmRhdGVQbGFjZWhvbGRlci5sZW5ndGggKyB0aGlzLnJhbmdlU2VwYXJhdG9yLmxlbmd0aCk7XG4gICAgbGV0IGVuZCA9IHRoaXMuc2V0RW5kRGF0ZVRvRGFuaXNoVGltZVpvbmUoZW5kRGF0ZVN0cmluZyk7XG5cbiAgICBpZiAoZW5kICE9PSBudWxsKSB7XG4gICAgICBlbmQgPSB0aGlzLnNldFRvRW5kT2ZEYXkoZW5kKTtcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUoeyBzdGFydCwgZW5kIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJhbmdlUGlja2VyQ2xvc2VkKCkge1xuICAgIGlmICh0aGlzLm1hdERhdGVSYW5nZUlucHV0LnZhbHVlPy5zdGFydCAmJiB0aGlzLm1hdERhdGVSYW5nZUlucHV0LnZhbHVlLmVuZCkge1xuICAgICAgdGhpcy5hY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID1cbiAgICAgICAgdGhpcy5mb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyhcbiAgICAgICAgICB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwodGhpcy5tYXREYXRlUmFuZ2VJbnB1dC52YWx1ZT8uc3RhcnQpXG4gICAgICAgICkgK1xuICAgICAgICAnLScgK1xuICAgICAgICB0aGlzLmZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KFxuICAgICAgICAgIHRoaXMuZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbCh0aGlzLm1hdERhdGVSYW5nZUlucHV0LnZhbHVlLmVuZClcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5jb250cm9sPy5zZXRWYWx1ZSh7XG4gICAgICAgIHN0YXJ0OiB0aGlzLmZvcm1hdERhdGVGcm9tVmlld1RvTW9kZWwodGhpcy5tYXREYXRlUmFuZ2VJbnB1dC52YWx1ZS5zdGFydCksXG4gICAgICAgIGVuZDogdGhpcy5mb3JtYXREYXRlRnJvbVZpZXdUb01vZGVsKHRoaXMubWF0RGF0ZVJhbmdlSW5wdXQudmFsdWUuZW5kKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdHVhbElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3R1YWxJbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IElucHV0RXZlbnQoJ2lucHV0JykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzZXRTaW5nbGVWYWx1ZShcbiAgICB2YWx1ZTogRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICkge1xuICAgIHRoaXMuc2V0VmFsdWVUb0lucHV0KHZhbHVlLCBpbnB1dCwgdGhpcy5tYXREYXRlcGlja2VySW5wdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBzZXRSYW5nZVZhbHVlKFxuICAgIHZhbHVlOiBXYXR0RGF0ZVJhbmdlIHwgbnVsbCxcbiAgICBzdGFydElucHV0OiBIVE1MSW5wdXRFbGVtZW50LFxuICAgIGVuZElucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICkge1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gdmFsdWUgPz8ge307XG5cbiAgICB0aGlzLnNldFZhbHVlVG9JbnB1dChzdGFydCwgc3RhcnRJbnB1dCwgdGhpcy5tYXRTdGFydERhdGUpO1xuICAgIHRoaXMuc2V0VmFsdWVUb0lucHV0KGVuZCwgZW5kSW5wdXQsIHRoaXMubWF0RW5kRGF0ZSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByZXZEYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VEYXkoLTEpO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBuZXh0RGF5KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRGF5KDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hhbmdlRGF5KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0LnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnREYXRlKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gZGF5anMoY3VycmVudERhdGUpLmFkZCh2YWx1ZSwgJ2RheScpLnRvSVNPU3RyaW5nKCk7XG4gICAgICBjb25zdCBuZXdEYXRlRm9ybWF0dGVkID0gdGhpcy5mb3JtYXREYXRlVGltZUZyb21Nb2RlbFRvVmlldyhuZXdEYXRlKTtcblxuICAgICAgdGhpcy5pbnB1dENoYW5nZWQobmV3RGF0ZUZvcm1hdHRlZCk7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1ByZXZEYXlCZWZvcmVPckVxdWFsVG9NaW5EYXRlKCkge1xuICAgIGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gdGhpcy5tYXREYXRlcGlja2VySW5wdXQ/LnZhbHVlO1xuXG4gICAgaWYgKCFtaW4gfHwgIXNlbGVjdGVkRGF0ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgaXNCZWZvcmUgPSBkYXlqcyhzZWxlY3RlZERhdGUpLmlzQmVmb3JlKG1pbiwgJ2RheScpO1xuICAgIGNvbnN0IGlzU2FtZSA9IGRheWpzKHNlbGVjdGVkRGF0ZSkuaXNTYW1lKG1pbiwgJ2RheScpO1xuXG4gICAgcmV0dXJuIGlzU2FtZSB8fCBpc0JlZm9yZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGlzTmV4dERheUFmdGVyT3JFcXVhbFRvTWF4RGF0ZSgpIHtcbiAgICBjb25zdCBtYXggPSB0aGlzLm1heCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IHRoaXMubWF0RGF0ZXBpY2tlcklucHV0Py52YWx1ZTtcblxuICAgIGlmICghbWF4IHx8ICFzZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGlzQWZ0ZXIgPSBkYXlqcyhzZWxlY3RlZERhdGUpLmlzQWZ0ZXIobWF4LCAnZGF5Jyk7XG4gICAgY29uc3QgaXNTYW1lID0gZGF5anMoc2VsZWN0ZWREYXRlKS5pc1NhbWUobWF4LCAnZGF5Jyk7XG5cbiAgICByZXR1cm4gaXNTYW1lIHx8IGlzQWZ0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRJbnB1dEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvY2FsZURhdGVGb3JtYXQgPSBnZXRMb2NhbGVEYXRlRm9ybWF0KHRoaXMubG9jYWxlLCBGb3JtYXRXaWR0aC5TaG9ydCk7XG5cbiAgICByZXR1cm4gbG9jYWxlRGF0ZUZvcm1hdFxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9kKy8sICdkZCcpXG4gICAgICAucmVwbGFjZSgvbSsvLCAnbW0nKVxuICAgICAgLnJlcGxhY2UoL3krLywgJ3l5eXknKVxuICAgICAgLnJlcGxhY2UoL1xcLi9nLCAnLScpOyAvLyBzZXBlcmF0b3JcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGdldFBsYWNlaG9sZGVyKGlucHV0Rm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxvY2FsZSA9PT0gZGFuaXNoTG9jYWxlQ29kZSA/IGlucHV0Rm9ybWF0LnNwbGl0KCd5Jykuam9pbignw6UnKSA6IGlucHV0Rm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcGFyc2VEYXRlU2hvcnRGb3JtYXQodmFsdWU6IHN0cmluZyk6IERhdGUge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSwgZGF0ZVNob3J0Rm9ybWF0KS50b0RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIHNldFZhbHVlVG9JbnB1dDxEIGV4dGVuZHMgeyB2YWx1ZTogRGF0ZSB8IG51bGwgfT4oXG4gICAgdmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgbmF0aXZlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgbWF0RGF0ZUlucHV0OiBEXG4gICk6IHZvaWQge1xuICAgIG5hdGl2ZUlucHV0LnZhbHVlID0gdmFsdWUgPyB0aGlzLmZvcm1hdERhdGVUaW1lRnJvbU1vZGVsVG9WaWV3KHZhbHVlKSA6ICcnO1xuICAgIG1hdERhdGVJbnB1dC52YWx1ZSA9IHZhbHVlID8gZGF5anModmFsdWUpLnV0YygpLnRvRGF0ZSgpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIEZvcm1hdHMgRGF0ZSB0byBmdWxsIElTTyA4NjAxIGZvcm1hdCAoZS5nLiBgMjAyMi0wOC0zMVQyMjowMDowMC4wMDBaYClcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0RGF0ZUZyb21WaWV3VG9Nb2RlbCh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzKHZhbHVlKS51dGMoKS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0RGF0ZVRpbWVGcm9tTW9kZWxUb1ZpZXcodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRheWpzKHZhbHVlKS50eihkYW5pc2hUaW1lWm9uZUlkZW50aWZpZXIpLmZvcm1hdChkYXRlU2hvcnRGb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgdG9EYW5pc2hUaW1lWm9uZSh2YWx1ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZS50b0lTT1N0cmluZygpKS50eihkYW5pc2hUaW1lWm9uZUlkZW50aWZpZXIpLnRvRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgc2V0VG9FbmRPZkRheSh2YWx1ZTogRGF0ZSk6IERhdGUge1xuICAgIHJldHVybiBkYXlqcyh2YWx1ZSkuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgc2V0RW5kRGF0ZVRvRGFuaXNoVGltZVpvbmUodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcbiAgICBjb25zdCBkYXRlQmFzZWRPblNob3J0Rm9ybWF0ID0gdGhpcy5wYXJzZURhdGVTaG9ydEZvcm1hdCh2YWx1ZSk7XG5cbiAgICBsZXQgbWF5YmVEYXRlSW5EYW5pc2hUaW1lWm9uZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGRheWpzKGRhdGVCYXNlZE9uU2hvcnRGb3JtYXQpLmlzVmFsaWQoKSkge1xuICAgICAgbWF5YmVEYXRlSW5EYW5pc2hUaW1lWm9uZSA9IHRoaXMudG9EYW5pc2hUaW1lWm9uZShkYXRlQmFzZWRPblNob3J0Rm9ybWF0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF5YmVEYXRlSW5EYW5pc2hUaW1lWm9uZTtcbiAgfVxufVxuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx3YXR0LWZpZWxkIFtjb250cm9sXT1cImNvbnRyb2xcIiBbbGFiZWxdPVwibGFiZWwoKVwiPlxuICBAaWYgKHJhbmdlKSB7XG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0XG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3JhbmdlUGlja2VyXT1cInJhbmdlRGF0ZXBpY2tlclwiXG4gICAgICBbbWluXT1cIm1pbigpID8/IG51bGxcIlxuICAgICAgW21heF09XCJtYXgoKSA/PyBudWxsXCJcbiAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpbmVydFxuICAgICAgICBhcmlhLWxhYmVsPVwic3RhcnQtZGF0ZS1pbnB1dFwiXG4gICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAjc3RhcnREYXRlSW5wdXRcbiAgICAgICAgW3JlYWRPbmx5XT1cInJhbmdlTW9udGhPbmx5TW9kZSgpXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJ0cnVlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBpbmVydFxuICAgICAgICBhcmlhLWxhYmVsPVwiZW5kLWRhdGUtaW5wdXRcIlxuICAgICAgICBtYXRFbmREYXRlXG4gICAgICAgICNlbmREYXRlSW5wdXRcbiAgICAgICAgW3JlYWRPbmx5XT1cInJhbmdlTW9udGhPbmx5TW9kZSgpXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJ0cnVlXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICA8aW5wdXQgI2FjdHVhbElucHV0IGNsYXNzPVwibWFzay1pbnB1dFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XG4gICAgPHdhdHQtcGxhY2Vob2xkZXItbWFza1xuICAgICAgW3ByaW1hcnlJbnB1dEVsZW1lbnRdPVwiYWN0dWFsSW5wdXRcIlxuICAgICAgW21hc2tdPVwicmFuZ2VJbnB1dE1hc2soKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmFuZ2VQbGFjZWhvbGRlclwiXG4gICAgICAobWFza0FwcGxpZWQpPVwicmFuZ2VJbnB1dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cImRhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJmYWxzZVwiXG4gICAgICAoY2xpY2spPVwicmFuZ2VEYXRlcGlja2VyLm9wZW4oKVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlclxuICAgICAgW3BhbmVsQ2xhc3NdPVwicmFuZ2VNb250aE9ubHlNb2RlKCkgPyAnd2F0dC1kYXRlcGlja2VyLXJhbmdlX19wYW5lbC0tbW9udGgtb25seScgOiAnJ1wiXG4gICAgICBbc3RhcnRWaWV3XT1cInJhbmdlTW9udGhPbmx5TW9kZSgpID8gJ211bHRpLXllYXInIDogJ21vbnRoJ1wiXG4gICAgICBbc3RhcnRBdF09XCJzdGFydEF0KClcIlxuICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwib25Nb250aFNlbGVjdGVkKCRldmVudClcIlxuICAgICAgKGNsb3NlZCk9XCJyYW5nZVBpY2tlckNsb3NlZCgpXCJcbiAgICAgICNyYW5nZURhdGVwaWNrZXJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8aW5wdXRcbiAgICAgIGluZXJ0XG4gICAgICBtYXRJbnB1dFxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICBhcmlhLWxhYmVsPVwiZGF0ZS1pbnB1dFwiXG4gICAgICAjZGF0ZUlucHV0XG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbbWluXT1cIm1pbigpXCJcbiAgICAgIFttYXhdPVwibWF4KClcIlxuICAgICAgW21hdERhdGVwaWNrZXJdPVwic2luZ2xlRGF0ZXBpY2tlclwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxpbnB1dCAjYWN0dWFsSW5wdXQgY2xhc3M9XCJtYXNrLWlucHV0XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgLz5cbiAgICA8d2F0dC1wbGFjZWhvbGRlci1tYXNrXG4gICAgICBbcHJpbWFyeUlucHV0RWxlbWVudF09XCJhY3R1YWxJbnB1dFwiXG4gICAgICBbbWFza109XCJpbnB1dE1hc2soKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgIChtYXNrQXBwbGllZCk9XCJpbnB1dENoYW5nZWQoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgd2F0dFN1ZmZpeFxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cImRhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChjbGljayk9XCJzaW5nbGVEYXRlcGlja2VyLm9wZW4oKVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgkZXZlbnQpXCJcbiAgICAvPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAjc2luZ2xlRGF0ZXBpY2tlclxuICAgICAgcGFuZWxDbGFzcz1cIndhdHQtZGF0ZXBpY2tlci1zaW5nbGVfX3BhbmVsXCJcbiAgICAgIFtkYXRlQ2xhc3NdPVwiZGF0ZUNsYXNzKClcIlxuICAgICAgW3N0YXJ0QXRdPVwic3RhcnRBdCgpXCJcbiAgICAgIChjbG9zZWQpPVwiZGF0ZXBpY2tlckNsb3NlZCgpXCJcbiAgICAvPlxuICB9XG5cbiAgPG5nLWNvbnRlbnQgLz5cbiAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJ3YXR0LWZpZWxkLWhpbnRcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWhpbnRcIiAvPlxuICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZXJyb3JcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWVycm9yXCIgLz5cbjwvd2F0dC1maWVsZD5cblxuQGlmICghcmFuZ2UgJiYgY2FuU3RlcFRocm91Z2hEYXlzKCkpIHtcbiAgPHNwYW5cbiAgICBjbGFzcz1cIndhdHQtZGF0ZXBpY2tlci1zaW5nbGVfX3N0ZXAtdGhyb3VnaFwiXG4gICAgW2NsYXNzLndhdHQtZGF0ZXBpY2tlci1zaW5nbGVfX2hhcy1sYWJlbF09XCIhIWxhYmVsKClcIlxuICA+XG4gICAgPHdhdHQtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiaWNvblwiXG4gICAgICBpY29uPVwibGVmdFwiXG4gICAgICAoY2xpY2spPVwicHJldkRheSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBpc1ByZXZEYXlCdXR0b25EaXNhYmxlZCgpXCJcbiAgICAvPlxuICAgIDx3YXR0LWJ1dHRvblxuICAgICAgdmFyaWFudD1cImljb25cIlxuICAgICAgaWNvbj1cInJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJuZXh0RGF5KClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzTmV4dERheUJ1dHRvbkRpc2FibGVkKClcIlxuICAgIC8+XG4gIDwvc3Bhbj5cbn1cbiJdfQ==
@@ -254,10 +254,10 @@ export class WattTimepickerComponent extends WattPickerBase {
254
254
  endInput.value = end;
255
255
  }
256
256
  }
257
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTimepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
258
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: WattTimepickerComponent, isStandalone: true, selector: "watt-timepicker", inputs: { label: "label", sliderLabel: "sliderLabel" }, host: { properties: { "attr.aria-owns": "this.ariaOwns" } }, providers: [{ provide: MatFormFieldControl, useExisting: WattTimepickerComponent }], viewQueries: [{ propertyName: "input", first: true, predicate: ["timeInput"], descendants: true }, { propertyName: "startInput", first: true, predicate: ["startTimeInput"], descendants: true }, { propertyName: "endInput", first: true, predicate: ["endTimeInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [id]=\"id\" [control]=\"control\" [label]=\"label\">\n @if (!range) {\n <input\n inert\n matInput\n aria-label=\"time-input\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #timeInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"timeInput\"\n [mask]=\"inputMask\"\n [placeholder]=\"hoursMinutesPlaceholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n } @else {\n <mat-date-range-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"disabled\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-time-input\"\n matStartDate\n #startTimeInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n <input\n inert\n aria-label=\"end-time-input\"\n matEndDate\n #endTimeInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n </mat-date-range-input>\n <input #timeInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"timeInput\"\n [mask]=\"rangeInputMask\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"time\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"sliderOpen\"\n (click)=\"toggleSlider()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"sliderOpen\"\n [cdkConnectedOverlayOffsetY]=\"12\"\n >\n <div\n [id]=\"sliderId\"\n role=\"dialog\"\n class=\"watt-timepicker-slider\"\n tabindex=\"-1\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <span class=\"watt-label\">{{ sliderLabel }}</span>\n <watt-slider\n [min]=\"sliderSteps[0]\"\n [max]=\"sliderSteps[sliderSteps.length - 1]\"\n [step]=\"1\"\n [value]=\"sliderValue\"\n (valueChange)=\"sliderChange$.next($event)\"\n />\n </div>\n </ng-template>\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n", styles: ["watt-timepicker{display:flex;align-items:center;width:100%}watt-timepicker watt-button[variant=icon]{margin-left:auto}watt-timepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-timepicker mat-datepicker,watt-timepicker mat-date-range-picker{display:none}watt-timepicker input.mat-date-range-input-inner,watt-timepicker input.mat-mdc-input-element,watt-timepicker .mat-date-range-input-mirror,watt-timepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-timepicker input.mat-date-range-input-inner,watt-timepicker input.mat-mdc-input-element,watt-timepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-timepicker input.mask-input{color:#000}watt-timepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-timepicker input.mask-input:focus-visible{outline:none}watt-timepicker .mat-date-range-input-container{align-items:initial}watt-timepicker .mat-date-range-input-start-wrapper,watt-timepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-timepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-timepicker .mat-date-range-input-separator-hidden,watt-timepicker .mat-date-range-input-separator{opacity:0!important}watt-timepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}.watt-timepicker-slider{width:340px;padding:var(--watt-space-s) 12px var(--watt-space-m);background:var(--watt-color-neutral-white);box-shadow:0 1px 6px #0b3c5d1f,0 4px 18px 3px #2e323414;border-radius:3px}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattSliderComponent, selector: "watt-slider", inputs: ["min", "max", "step", "value"], outputs: ["valueChange"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
257
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTimepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
258
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTimepickerComponent, isStandalone: true, selector: "watt-timepicker", inputs: { label: "label", sliderLabel: "sliderLabel" }, host: { properties: { "attr.aria-owns": "this.ariaOwns" } }, providers: [{ provide: MatFormFieldControl, useExisting: WattTimepickerComponent }], viewQueries: [{ propertyName: "input", first: true, predicate: ["timeInput"], descendants: true }, { propertyName: "startInput", first: true, predicate: ["startTimeInput"], descendants: true }, { propertyName: "endInput", first: true, predicate: ["endTimeInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<watt-field [id]=\"id\" [control]=\"control\" [label]=\"label\">\n @if (!range) {\n <input\n inert\n matInput\n aria-label=\"time-input\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [disabled]=\"disabled\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n <input #timeInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"timeInput\"\n [mask]=\"inputMask\"\n [placeholder]=\"hoursMinutesPlaceholder\"\n (maskApplied)=\"inputChanged($event)\"\n />\n } @else {\n <mat-date-range-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [disabled]=\"disabled\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <input\n inert\n aria-label=\"start-time-input\"\n matStartDate\n #startTimeInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n <input\n inert\n aria-label=\"end-time-input\"\n matEndDate\n #endTimeInput\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n </mat-date-range-input>\n <input #timeInput class=\"mask-input\" [disabled]=\"disabled\" />\n <watt-placeholder-mask\n [primaryInputElement]=\"timeInput\"\n [mask]=\"rangeInputMask\"\n [placeholder]=\"rangePlaceholder\"\n (maskApplied)=\"rangeInputChanged($event)\"\n />\n\n <watt-button\n variant=\"icon\"\n icon=\"time\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"sliderOpen\"\n (click)=\"toggleSlider()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n />\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"sliderOpen\"\n [cdkConnectedOverlayOffsetY]=\"12\"\n >\n <div\n [id]=\"sliderId\"\n role=\"dialog\"\n class=\"watt-timepicker-slider\"\n tabindex=\"-1\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n >\n <span class=\"watt-label\">{{ sliderLabel }}</span>\n <watt-slider\n [min]=\"sliderSteps[0]\"\n [max]=\"sliderSteps[sliderSteps.length - 1]\"\n [step]=\"1\"\n [value]=\"sliderValue\"\n (valueChange)=\"sliderChange$.next($event)\"\n />\n </div>\n </ng-template>\n }\n\n <ng-content />\n <ng-content ngProjectAs=\"watt-field-hint\" select=\"watt-field-hint\" />\n <ng-content ngProjectAs=\"watt-field-error\" select=\"watt-field-error\" />\n</watt-field>\n", styles: ["watt-timepicker{display:flex;align-items:center;width:100%}watt-timepicker watt-button[variant=icon]{margin-left:auto}watt-timepicker watt-button[variant=icon] .watt-button--icon{height:42px}watt-timepicker mat-datepicker,watt-timepicker mat-date-range-picker{display:none}watt-timepicker input.mat-date-range-input-inner,watt-timepicker input.mat-mdc-input-element,watt-timepicker .mat-date-range-input-mirror,watt-timepicker input.mask-input{font-family:Droid Sans Mono,monospace}watt-timepicker input.mat-date-range-input-inner,watt-timepicker input.mat-mdc-input-element,watt-timepicker input.mask-input{border:none;caret-color:var(--watt-color-neutral-black);letter-spacing:-.03em;-webkit-background-clip:text;-moz-background-clip:text;background-clip:text;color:transparent}watt-timepicker input.mask-input{color:#000}watt-timepicker input.mask-input{position:absolute;min-width:100%;padding:2px 1px}watt-timepicker input.mask-input:focus-visible{outline:none}watt-timepicker .mat-date-range-input-container{align-items:initial}watt-timepicker .mat-date-range-input-start-wrapper,watt-timepicker .mat-date-range-input-end-wrapper{max-width:calc(50% - var(--watt-space-s));overflow:visible;position:relative}watt-timepicker .mat-date-range-input-separator{display:flex;align-items:center}watt-timepicker .mat-date-range-input-separator-hidden,watt-timepicker .mat-date-range-input-separator{opacity:0!important}watt-timepicker .mat-date-range-input-inner::-webkit-input-placeholder{color:var(--watt-color-neutral-grey-500)!important;-webkit-text-fill-color:var(--watt-color-neutral-grey-500)}.watt-timepicker-slider{width:340px;padding:var(--watt-space-s) 12px var(--watt-space-m);background:var(--watt-color-neutral-white);box-shadow:0 1px 6px #0b3c5d1f,0 4px 18px 3px #2e323414;border-radius:3px}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: WattButtonComponent, selector: "watt-button", inputs: ["icon", "variant", "size", "type", "formId", "disabled", "loading"] }, { kind: "component", type: WattSliderComponent, selector: "watt-slider", inputs: ["min", "max", "step", "value"], outputs: ["valueChange"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattPlaceholderMaskComponent, selector: "watt-placeholder-mask", inputs: ["primaryInputElement", "secondaryInputElement", "mask", "placeholder"], outputs: ["maskApplied"] }], encapsulation: i0.ViewEncapsulation.None });
259
259
  }
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattTimepickerComponent, decorators: [{
260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTimepickerComponent, decorators: [{
261
261
  type: Component,
262
262
  args: [{ selector: 'watt-timepicker', providers: [{ provide: MatFormFieldControl, useExisting: WattTimepickerComponent }], encapsulation: ViewEncapsulation.None, imports: [
263
263
  MatDatepickerModule,
@@ -21,13 +21,13 @@ import { WattIconComponent } from '@energinet/watt/icon';
21
21
  import { WattSpinnerComponent } from '@energinet/watt/spinner';
22
22
  import * as i0 from "@angular/core";
23
23
  export class WattProgressTrackerStepComponent {
24
- status = input.required();
25
- label = input();
26
- current = input(false);
27
- ariaCurrent = computed(() => (this.current() ? 'step' : false));
28
- class = computed(() => `watt-progress-tracker-step-${this.status()}`);
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattProgressTrackerStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.3", type: WattProgressTrackerStepComponent, isStandalone: true, selector: "watt-progress-tracker-step", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "current() ? \"status\" : \"presentation\"", "attr.class": "class()", "attr.aria-current": "ariaCurrent()", "attr.aria-label": "label()" } }, ngImport: i0, template: `
24
+ status = input.required(...(ngDevMode ? [{ debugName: "status" }] : []));
25
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
26
+ current = input(false, ...(ngDevMode ? [{ debugName: "current" }] : []));
27
+ ariaCurrent = computed(() => (this.current() ? 'step' : false), ...(ngDevMode ? [{ debugName: "ariaCurrent" }] : []));
28
+ class = computed(() => `watt-progress-tracker-step-${this.status()}`, ...(ngDevMode ? [{ debugName: "class" }] : []));
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattProgressTrackerStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattProgressTrackerStepComponent, isStandalone: true, selector: "watt-progress-tracker-step", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "current() ? \"status\" : \"presentation\"", "attr.class": "class()", "attr.aria-current": "ariaCurrent()", "attr.aria-label": "label()" } }, ngImport: i0, template: `
31
31
  <div class="watt-progress-tracker-step-icon">
32
32
  @switch (status()) {
33
33
  @case ('running') {
@@ -50,7 +50,7 @@ export class WattProgressTrackerStepComponent {
50
50
  <div class="watt-progress-tracker-step-text"><ng-content /></div>
51
51
  `, isInline: true, styles: [".watt-progress-tracker-step-pending{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-bridge-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-fill-color: transparent}.watt-progress-tracker-step-running{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-900);--watt-progress-tracker-step-bridge-color: var(--watt-color-primary);--watt-progress-tracker-step-fill-color: transparent}.watt-progress-tracker-step-skipped{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-400);--watt-progress-tracker-step-bridge-color: var(--watt-color-neutral-grey-400);--watt-progress-tracker-step-fill-color: transparent}.watt-progress-tracker-step-canceled{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-icon-color: var(--watt-color-neutral-white);--watt-progress-tracker-step-bridge-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-fill-color: var(--watt-color-neutral-grey-600)}.watt-progress-tracker-step-failed{--watt-progress-tracker-step-text-color: var(--watt-color-state-danger);--watt-progress-tracker-step-icon-color: var(--watt-color-neutral-white);--watt-progress-tracker-step-bridge-color: var(--watt-color-state-danger);--watt-progress-tracker-step-fill-color: var(--watt-color-state-danger)}.watt-progress-tracker-step-succeeded{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-900);--watt-progress-tracker-step-icon-color: var(--watt-color-neutral-white);--watt-progress-tracker-step-bridge-color: var(--watt-color-primary);--watt-progress-tracker-step-fill-color: var(--watt-color-primary)}watt-progress-tracker-step{display:contents;--watt-progress-tracker-step-icon-color: var(--watt-progress-tracker-step-text-color)}watt-progress-tracker-step:not(:first-child):before{content:\"\";display:block;width:100%;min-width:var(--watt-space-m);height:1px;margin:0 var(--watt-space-s);background-color:var(--watt-progress-tracker-step-bridge-color)}.watt-progress-tracker-step-icon{display:flex;align-items:center;justify-content:center;width:var(--watt-space-ml);height:var(--watt-space-ml);min-width:var(--watt-space-ml);min-height:var(--watt-space-ml);border-radius:50%;border:1px solid var(--watt-progress-tracker-step-bridge-color);background-color:var(--watt-progress-tracker-step-fill-color)}.watt-progress-tracker-step-icon watt-icon{color:var(--watt-progress-tracker-step-icon-color)}.watt-progress-tracker-step-running .watt-progress-tracker-step-icon{border:none}.watt-progress-tracker-step-text{color:var(--watt-typography-headline-color);font-size:1rem;line-height:1.5rem;font-weight:600;text-transform:none;letter-spacing:0;margin-left:var(--watt-space-s);color:var(--watt-progress-tracker-step-text-color);white-space:nowrap}\n"], dependencies: [{ kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }, { kind: "component", type: WattSpinnerComponent, selector: "watt-spinner", inputs: ["diameter", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattProgressTrackerStepComponent, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattProgressTrackerStepComponent, decorators: [{
54
54
  type: Component,
55
55
  args: [{ imports: [WattIconComponent, WattSpinnerComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'watt-progress-tracker-step', host: {
56
56
  '[attr.role]': 'current() ? "status" : "presentation"',
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImpor
80
80
  <div class="watt-progress-tracker-step-text"><ng-content /></div>
81
81
  `, styles: [".watt-progress-tracker-step-pending{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-bridge-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-fill-color: transparent}.watt-progress-tracker-step-running{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-900);--watt-progress-tracker-step-bridge-color: var(--watt-color-primary);--watt-progress-tracker-step-fill-color: transparent}.watt-progress-tracker-step-skipped{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-400);--watt-progress-tracker-step-bridge-color: var(--watt-color-neutral-grey-400);--watt-progress-tracker-step-fill-color: transparent}.watt-progress-tracker-step-canceled{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-icon-color: var(--watt-color-neutral-white);--watt-progress-tracker-step-bridge-color: var(--watt-color-neutral-grey-600);--watt-progress-tracker-step-fill-color: var(--watt-color-neutral-grey-600)}.watt-progress-tracker-step-failed{--watt-progress-tracker-step-text-color: var(--watt-color-state-danger);--watt-progress-tracker-step-icon-color: var(--watt-color-neutral-white);--watt-progress-tracker-step-bridge-color: var(--watt-color-state-danger);--watt-progress-tracker-step-fill-color: var(--watt-color-state-danger)}.watt-progress-tracker-step-succeeded{--watt-progress-tracker-step-text-color: var(--watt-color-neutral-grey-900);--watt-progress-tracker-step-icon-color: var(--watt-color-neutral-white);--watt-progress-tracker-step-bridge-color: var(--watt-color-primary);--watt-progress-tracker-step-fill-color: var(--watt-color-primary)}watt-progress-tracker-step{display:contents;--watt-progress-tracker-step-icon-color: var(--watt-progress-tracker-step-text-color)}watt-progress-tracker-step:not(:first-child):before{content:\"\";display:block;width:100%;min-width:var(--watt-space-m);height:1px;margin:0 var(--watt-space-s);background-color:var(--watt-progress-tracker-step-bridge-color)}.watt-progress-tracker-step-icon{display:flex;align-items:center;justify-content:center;width:var(--watt-space-ml);height:var(--watt-space-ml);min-width:var(--watt-space-ml);min-height:var(--watt-space-ml);border-radius:50%;border:1px solid var(--watt-progress-tracker-step-bridge-color);background-color:var(--watt-progress-tracker-step-fill-color)}.watt-progress-tracker-step-icon watt-icon{color:var(--watt-progress-tracker-step-icon-color)}.watt-progress-tracker-step-running .watt-progress-tracker-step-icon{border:none}.watt-progress-tracker-step-text{color:var(--watt-typography-headline-color);font-size:1rem;line-height:1.5rem;font-weight:600;text-transform:none;letter-spacing:0;margin-left:var(--watt-space-s);color:var(--watt-progress-tracker-step-text-color);white-space:nowrap}\n"] }]
82
82
  }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1wcm9ncmVzcy10cmFja2VyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy93YXR0L3BhY2thZ2UvcHJvZ3Jlc3MtdHJhY2tlci93YXR0LXByb2dyZXNzLXRyYWNrZXItc3RlcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFxQy9ELE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0MsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBRXBCLENBQUM7SUFDSixLQUFLLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDeEIsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQzt1R0FQM0QsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0MsbW9CQXZCakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVCxrM0ZBaENTLGlCQUFpQixrR0FBRSxvQkFBb0I7OzJGQWtDdEMsZ0NBQWdDO2tCQW5DNUMsU0FBUzs4QkFDQyxDQUFDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLG1CQUNqQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCLDRCQUE0QixRQUNoQzt3QkFDSixhQUFhLEVBQUUsdUNBQXVDO3dCQUN0RCxjQUFjLEVBQUUsU0FBUzt3QkFDekIscUJBQXFCLEVBQUUsZUFBZTt3QkFDdEMsbUJBQW1CLEVBQUUsU0FBUztxQkFDL0IsWUFFUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IFdhdHRTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L3NwaW5uZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW1dhdHRJY29uQ29tcG9uZW50LCBXYXR0U3Bpbm5lckNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzZWxlY3RvcjogJ3dhdHQtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwJyxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5yb2xlXSc6ICdjdXJyZW50KCkgPyBcInN0YXR1c1wiIDogXCJwcmVzZW50YXRpb25cIicsXG4gICAgJ1thdHRyLmNsYXNzXSc6ICdjbGFzcygpJyxcbiAgICAnW2F0dHIuYXJpYS1jdXJyZW50XSc6ICdhcmlhQ3VycmVudCgpJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnbGFiZWwoKScsXG4gIH0sXG4gIHN0eWxlVXJsOiAnLi93YXR0LXByb2dyZXNzLXRyYWNrZXItc3RlcC5jb21wb25lbnQuc2NzcycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIndhdHQtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwLWljb25cIj5cbiAgICAgIEBzd2l0Y2ggKHN0YXR1cygpKSB7XG4gICAgICAgIEBjYXNlICgncnVubmluZycpIHtcbiAgICAgICAgICA8d2F0dC1zcGlubmVyIFtkaWFtZXRlcl09XCIyNlwiIFtzdHJva2VXaWR0aF09XCIyXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3NraXBwZWQnKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwiaG9yaXpvbnRhbFJ1bGVcIiBzaXplPVwieHNcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY2FuY2VsZWQnKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwiY2xvc2VcIiBzaXplPVwieHNcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZmFpbGVkJykge1xuICAgICAgICAgIDx3YXR0LWljb24gbmFtZT1cInByaW9yaXR5SGlnaFwiIHNpemU9XCJ4c1wiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzdWNjZWVkZWQnKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwiY2hlY2ttYXJrXCIgc2l6ZT1cInhzXCIgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3YXR0LXByb2dyZXNzLXRyYWNrZXItc3RlcC10ZXh0XCI+PG5nLWNvbnRlbnQgLz48L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dFByb2dyZXNzVHJhY2tlclN0ZXBDb21wb25lbnQge1xuICBzdGF0dXMgPSBpbnB1dC5yZXF1aXJlZDxcbiAgICAncGVuZGluZycgfCAncnVubmluZycgfCAnc2tpcHBlZCcgfCAnY2FuY2VsZWQnIHwgJ2ZhaWxlZCcgfCAnc3VjY2VlZGVkJ1xuICA+KCk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBjdXJyZW50ID0gaW5wdXQoZmFsc2UpO1xuICBhcmlhQ3VycmVudCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmN1cnJlbnQoKSA/ICdzdGVwJyA6IGZhbHNlKSk7XG4gIGNsYXNzID0gY29tcHV0ZWQoKCkgPT4gYHdhdHQtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwLSR7dGhpcy5zdGF0dXMoKX1gKTtcbn1cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1wcm9ncmVzcy10cmFja2VyLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy93YXR0L3BhY2thZ2UvcHJvZ3Jlc3MtdHJhY2tlci93YXR0LXByb2dyZXNzLXRyYWNrZXItc3RlcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFxQy9ELE1BQU0sT0FBTyxnQ0FBZ0M7SUFDM0MsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLGlEQUVwQixDQUFDO0lBQ0osS0FBSyxHQUFHLEtBQUssMkRBQVUsQ0FBQztJQUN4QixPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssbURBQUMsQ0FBQztJQUN2QixXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1REFBQyxDQUFDO0lBQ2hFLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsOEJBQThCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxpREFBQyxDQUFDO3VHQVAzRCxnQ0FBZ0M7MkZBQWhDLGdDQUFnQyxtb0JBdkJqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJULGszRkFoQ1MsaUJBQWlCLGtHQUFFLG9CQUFvQjs7MkZBa0N0QyxnQ0FBZ0M7a0JBbkM1QyxTQUFTOzhCQUNDLENBQUMsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsbUJBQ2pDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFDM0IsNEJBQTRCLFFBQ2hDO3dCQUNKLGFBQWEsRUFBRSx1Q0FBdUM7d0JBQ3RELGNBQWMsRUFBRSxTQUFTO3dCQUN6QixxQkFBcUIsRUFBRSxlQUFlO3dCQUN0QyxtQkFBbUIsRUFBRSxTQUFTO3FCQUMvQixZQUVTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdhdHRJY29uQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ljb24nO1xuaW1wb3J0IHsgV2F0dFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvc3Bpbm5lcic7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbV2F0dEljb25Db21wb25lbnQsIFdhdHRTcGlubmVyQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHNlbGVjdG9yOiAnd2F0dC1wcm9ncmVzcy10cmFja2VyLXN0ZXAnLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLnJvbGVdJzogJ2N1cnJlbnQoKSA/IFwic3RhdHVzXCIgOiBcInByZXNlbnRhdGlvblwiJyxcbiAgICAnW2F0dHIuY2xhc3NdJzogJ2NsYXNzKCknLFxuICAgICdbYXR0ci5hcmlhLWN1cnJlbnRdJzogJ2FyaWFDdXJyZW50KCknLFxuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdsYWJlbCgpJyxcbiAgfSxcbiAgc3R5bGVVcmw6ICcuL3dhdHQtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwid2F0dC1wcm9ncmVzcy10cmFja2VyLXN0ZXAtaWNvblwiPlxuICAgICAgQHN3aXRjaCAoc3RhdHVzKCkpIHtcbiAgICAgICAgQGNhc2UgKCdydW5uaW5nJykge1xuICAgICAgICAgIDx3YXR0LXNwaW5uZXIgW2RpYW1ldGVyXT1cIjI2XCIgW3N0cm9rZVdpZHRoXT1cIjJcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc2tpcHBlZCcpIHtcbiAgICAgICAgICA8d2F0dC1pY29uIG5hbWU9XCJob3Jpem9udGFsUnVsZVwiIHNpemU9XCJ4c1wiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdjYW5jZWxlZCcpIHtcbiAgICAgICAgICA8d2F0dC1pY29uIG5hbWU9XCJjbG9zZVwiIHNpemU9XCJ4c1wiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdmYWlsZWQnKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwicHJpb3JpdHlIaWdoXCIgc2l6ZT1cInhzXCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3N1Y2NlZWRlZCcpIHtcbiAgICAgICAgICA8d2F0dC1pY29uIG5hbWU9XCJjaGVja21hcmtcIiBzaXplPVwieHNcIiAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIndhdHQtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwLXRleHRcIj48bmctY29udGVudCAvPjwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0UHJvZ3Jlc3NUcmFja2VyU3RlcENvbXBvbmVudCB7XG4gIHN0YXR1cyA9IGlucHV0LnJlcXVpcmVkPFxuICAgICdwZW5kaW5nJyB8ICdydW5uaW5nJyB8ICdza2lwcGVkJyB8ICdjYW5jZWxlZCcgfCAnZmFpbGVkJyB8ICdzdWNjZWVkZWQnXG4gID4oKTtcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGN1cnJlbnQgPSBpbnB1dChmYWxzZSk7XG4gIGFyaWFDdXJyZW50ID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY3VycmVudCgpID8gJ3N0ZXAnIDogZmFsc2UpKTtcbiAgY2xhc3MgPSBjb21wdXRlZCgoKSA9PiBgd2F0dC1wcm9ncmVzcy10cmFja2VyLXN0ZXAtJHt0aGlzLnN0YXR1cygpfWApO1xufVxuIl19
@@ -20,10 +20,10 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/
20
20
  import { VaterStackComponent } from '@energinet/watt/vater';
21
21
  import * as i0 from "@angular/core";
22
22
  export class WattProgressTrackerComponent {
23
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattProgressTrackerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.3", type: WattProgressTrackerComponent, isStandalone: true, selector: "watt-progress-tracker", ngImport: i0, template: `<vater-stack direction="row"><ng-content /></vater-stack>`, isInline: true, styles: ["watt-progress-tracker{display:block}\n"], dependencies: [{ kind: "component", type: VaterStackComponent, selector: "vater-stack, [vater-stack]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattProgressTrackerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.3", type: WattProgressTrackerComponent, isStandalone: true, selector: "watt-progress-tracker", ngImport: i0, template: `<vater-stack direction="row"><ng-content /></vater-stack>`, isInline: true, styles: ["watt-progress-tracker{display:block}\n"], dependencies: [{ kind: "component", type: VaterStackComponent, selector: "vater-stack, [vater-stack]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattProgressTrackerComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattProgressTrackerComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ imports: [VaterStackComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'watt-progress-tracker', template: `<vater-stack direction="row"><ng-content /></vater-stack>`, styles: ["watt-progress-tracker{display:block}\n"] }]
29
29
  }] });
@@ -79,10 +79,10 @@ export class WattQueryParamsDirective {
79
79
  this.formGroup.control.patchValue(value);
80
80
  }
81
81
  }
82
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattQueryParamsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.3", type: WattQueryParamsDirective, isStandalone: true, selector: "[formGroup][wattQueryParams]", ngImport: i0 });
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattQueryParamsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: WattQueryParamsDirective, isStandalone: true, selector: "[formGroup][wattQueryParams]", ngImport: i0 });
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.3", ngImport: i0, type: WattQueryParamsDirective, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattQueryParamsDirective, decorators: [{
86
86
  type: Directive,
87
87
  args: [{
88
88
  selector: '[formGroup][wattQueryParams]',