iss-ctrl 0.0.2-beta → 0.0.2-beta-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +17 -15
  2. package/components/autocomplete/autocomplete.component.d.ts +3 -3
  3. package/components/base-ctrl.d.ts +1 -3
  4. package/components/checkbox/checkbox.component.d.ts +3 -3
  5. package/components/chips/chips.component.d.ts +11 -3
  6. package/components/ctrl-array/ctrl-array.component.d.ts +3 -3
  7. package/components/date-picker/date-picker.component.d.ts +3 -3
  8. package/components/date-range-picker/date-range-picker.component.d.ts +3 -3
  9. package/components/datetime-picker/datetime-picker.component.d.ts +3 -3
  10. package/components/datetime-range-picker/datetime-range-picker.component.d.ts +3 -3
  11. package/components/file-picker/file-picker.component.d.ts +3 -3
  12. package/components/input/input.component.d.ts +15 -4
  13. package/components/mobile/mobile.component.d.ts +3 -3
  14. package/components/note/note.component.d.ts +3 -3
  15. package/components/plate/PLATE_LETTERS.d.ts +8 -0
  16. package/components/{plate-number/plate-number.component.d.ts → plate/plate.component.d.ts} +4 -5
  17. package/components/radio/radio.component.d.ts +3 -3
  18. package/components/select/select.component.d.ts +8 -6
  19. package/components/slide-toggle/slide-toggle.component.d.ts +3 -3
  20. package/components/textarea/textarea.component.d.ts +3 -3
  21. package/components/time-picker/time-picker.component.d.ts +3 -3
  22. package/components/toggle-button/toggle-button.component.d.ts +3 -3
  23. package/esm2022/components/autocomplete/autocomplete.component.mjs +7 -7
  24. package/esm2022/components/base-ctrl.mjs +7 -7
  25. package/esm2022/components/checkbox/checkbox.component.mjs +7 -7
  26. package/esm2022/components/chips/chips.component.mjs +72 -12
  27. package/esm2022/components/ctrl-array/ctrl-array.component.mjs +7 -7
  28. package/esm2022/components/date-picker/date-picker.component.mjs +9 -9
  29. package/esm2022/components/date-range-picker/date-range-picker.component.mjs +7 -7
  30. package/esm2022/components/datetime-picker/datetime-picker.component.mjs +12 -12
  31. package/esm2022/components/datetime-range-picker/datetime-range-picker.component.mjs +7 -7
  32. package/esm2022/components/file-picker/file-picker.component.mjs +7 -7
  33. package/esm2022/components/hints/hints.component.mjs +3 -3
  34. package/esm2022/components/input/input.component.mjs +43 -18
  35. package/esm2022/components/mobile/mobile.component.mjs +9 -9
  36. package/esm2022/components/note/note.component.mjs +7 -7
  37. package/esm2022/components/plate/PLATE_LETTERS.mjs +20 -0
  38. package/esm2022/components/plate/plate.component.mjs +101 -0
  39. package/esm2022/components/radio/radio.component.mjs +7 -7
  40. package/esm2022/components/select/select.component.mjs +63 -32
  41. package/esm2022/components/slide-toggle/slide-toggle.component.mjs +7 -7
  42. package/esm2022/components/textarea/textarea.component.mjs +23 -11
  43. package/esm2022/components/time-picker/time-picker.component.mjs +9 -9
  44. package/esm2022/components/toggle-button/toggle-button.component.mjs +7 -7
  45. package/esm2022/interfaces/hint-alignment.type.mjs +2 -0
  46. package/esm2022/interfaces/hint.interface.mjs +1 -1
  47. package/esm2022/interfaces/option.interface.mjs +1 -1
  48. package/esm2022/pipes/arabic-number.pipe.mjs +23 -0
  49. package/esm2022/pipes/plate-letter.pipe.mjs +22 -0
  50. package/esm2022/public-api.mjs +2 -2
  51. package/fesm2022/iss-ctrl.mjs +359 -195
  52. package/fesm2022/iss-ctrl.mjs.map +1 -1
  53. package/interfaces/hint-alignment.type.d.ts +1 -0
  54. package/interfaces/hint.interface.d.ts +2 -0
  55. package/interfaces/option.interface.d.ts +1 -0
  56. package/package.json +1 -1
  57. package/pipes/arabic-number.pipe.d.ts +7 -0
  58. package/pipes/plate-letter.pipe.d.ts +7 -0
  59. package/public-api.d.ts +1 -1
  60. package/esm2022/components/plate-number/plate-number.component.mjs +0 -114
@@ -12,7 +12,7 @@ export class HintsComponent {
12
12
  <div class="d-flex align-items-center flex-wrap gap-2 mb-3">
13
13
  @for (hint of hints(); track $index) {
14
14
  @if (hint) {
15
- <mat-hint class="d-flex align-items-center gap-1 fs-12">
15
+ <mat-hint [align]="hint.align" class="d-flex align-items-center gap-1 fs-12">
16
16
  @if (hint.valid === undefined) {
17
17
  <ds-icon icon="info" class="fs-24 fc-dark-gray"></ds-icon>
18
18
  <span class="fc-dark-gray text-break">{{ hint.label }}</span>
@@ -42,7 +42,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
42
42
  <div class="d-flex align-items-center flex-wrap gap-2 mb-3">
43
43
  @for (hint of hints(); track $index) {
44
44
  @if (hint) {
45
- <mat-hint class="d-flex align-items-center gap-1 fs-12">
45
+ <mat-hint [align]="hint.align" class="d-flex align-items-center gap-1 fs-12">
46
46
  @if (hint.valid === undefined) {
47
47
  <ds-icon icon="info" class="fs-24 fc-dark-gray"></ds-icon>
48
48
  <span class="fc-dark-gray text-break">{{ hint.label }}</span>
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
63
63
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
64
64
  }]
65
65
  }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaGludHMvaGludHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUErQnJELE1BQU0sT0FBTyxjQUFjO0lBN0IzQjtRQThCRSxVQUFLLEdBQXdCLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQyxZQUFPLEdBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM5Qzs4R0FIWSxjQUFjO2tHQUFkLGNBQWMsNFVBekJmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULDREQXZCUyxPQUFPOzsyRkEwQk4sY0FBYztrQkE3QjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbnB1dCwgSW5wdXRTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SGludH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaGludC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtNYXRIaW50fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtaGludHNcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtNYXRIaW50LF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIEBpZiAoaGludHMoKS5sZW5ndGgpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICBAZm9yIChoaW50IG9mIGhpbnRzKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgQGlmIChoaW50KSB7XHJcbiAgICAgICAgICAgIDxtYXQtaGludCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTEgZnMtMTJcIj5cclxuICAgICAgICAgICAgICBAaWYgKGhpbnQudmFsaWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTI0IGZjLWRhcmstZ3JheVwiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtZGFyay1ncmF5IHRleHQtYnJlYWtcIj57eyBoaW50LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgPGRzLWljb25cclxuICAgICAgICAgICAgICAgICAgaWNvbj1cInt7IHRvdWNoZWQoKSA/IChoaW50LnZhbGlkID8gJ2NoZWNrLWNpcmNsZS1mJyA6ICdjbG9zZS1jaXJjbGUnKSA6ICdjaGVjay1jaXJjbGUtbycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZzLTI0IHt7IHRvdWNoZWQoKSA/IChoaW50LnZhbGlkID8gJ2ZjLWdyZWVuJyA6ICdmYy1yZWQnKSA6ICdmYy1kYXJrLWdyYXknIH19XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgdG91Y2hlZCgpID8gKGhpbnQudmFsaWQgPyAnZmMtZ3JlZW4nIDogJ2ZjLXJlZCcpIDogJ2ZjLWRhcmstZ3JheScgfX0gdGV4dC1icmVha1wiPnt7IGhpbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1oaW50PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgYCxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaW50c0NvbXBvbmVudCB7XHJcbiAgaGludHM6IElucHV0U2lnbmFsPEhpbnRbXT4gPSBpbnB1dDxIaW50W10+KFtdKTtcclxuICB0b3VjaGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcclxufVxyXG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaGludHMvaGludHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQzs7QUErQnJELE1BQU0sT0FBTyxjQUFjO0lBN0IzQjtRQThCRSxVQUFLLEdBQXdCLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQyxZQUFPLEdBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM5Qzs4R0FIWSxjQUFjO2tHQUFkLGNBQWMsNFVBekJmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULDREQXZCUyxPQUFPOzsyRkEwQk4sY0FBYztrQkE3QjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRTtvQkFDbkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBpbnB1dCwgSW5wdXRTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SGludH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaGludC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtNYXRIaW50fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtaGludHNcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtNYXRIaW50LF0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIEBpZiAoaGludHMoKS5sZW5ndGgpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIGdhcC0yIG1iLTNcIj5cclxuICAgICAgICBAZm9yIChoaW50IG9mIGhpbnRzKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgQGlmIChoaW50KSB7XHJcbiAgICAgICAgICAgIDxtYXQtaGludCBbYWxpZ25dPVwiaGludC5hbGlnblwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBmcy0xMlwiPlxyXG4gICAgICAgICAgICAgIEBpZiAoaGludC52YWxpZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiaW5mb1wiIGNsYXNzPVwiZnMtMjQgZmMtZGFyay1ncmF5XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYy1kYXJrLWdyYXkgdGV4dC1icmVha1wiPnt7IGhpbnQubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgICAgICAgICBpY29uPVwie3sgdG91Y2hlZCgpID8gKGhpbnQudmFsaWQgPyAnY2hlY2stY2lyY2xlLWYnIDogJ2Nsb3NlLWNpcmNsZScpIDogJ2NoZWNrLWNpcmNsZS1vJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtMjQge3sgdG91Y2hlZCgpID8gKGhpbnQudmFsaWQgPyAnZmMtZ3JlZW4nIDogJ2ZjLXJlZCcpIDogJ2ZjLWRhcmstZ3JheScgfX1cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyB0b3VjaGVkKCkgPyAoaGludC52YWxpZCA/ICdmYy1ncmVlbicgOiAnZmMtcmVkJykgOiAnZmMtZGFyay1ncmF5JyB9fSB0ZXh0LWJyZWFrXCI+e3sgaGludC5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICBgLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpbnRzQ29tcG9uZW50IHtcclxuICBoaW50czogSW5wdXRTaWduYWw8SGludFtdPiA9IGlucHV0PEhpbnRbXT4oW10pO1xyXG4gIHRvdWNoZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xyXG59XHJcbiJdfQ==
@@ -1,32 +1,57 @@
1
- import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from "@angular/core";
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from "@angular/core";
2
2
  import { MatFormFieldModule } from "@angular/material/form-field";
3
- import { MatInputModule } from "@angular/material/input";
3
+ import { MatInput } from "@angular/material/input";
4
4
  import { BaseCtrl } from "../base-ctrl";
5
- import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
5
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
6
6
  import { HintsComponent } from "../hints/hints.component";
7
+ import { toSignal } from "@angular/core/rxjs-interop";
7
8
  import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/form-field";
9
- import * as i2 from "@angular/material/input";
10
- import * as i3 from "@angular/forms";
11
- export class InputComponent extends BaseCtrl {
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/material/form-field";
11
+ export class InputControl extends BaseCtrl {
12
12
  constructor() {
13
13
  super(...arguments);
14
14
  this.type = input("text");
15
+ this.prefixIcon = input("");
16
+ this.prefixText = input("");
17
+ this.suffixIcon = input("");
18
+ this.suffixText = input("");
19
+ this.onPrefixClick = output();
20
+ this.onSuffixClick = output();
21
+ this.#ctrlChanges = toSignal(this.ctrl.valueChanges);
22
+ this.#effect = effect(() => {
23
+ if (this.#ctrlChanges()) {
24
+ this.emitValue(this.#ctrlChanges());
25
+ }
26
+ });
15
27
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: InputComponent, isStandalone: true, selector: "iss-ctrl-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
18
- { provide: NG_VALUE_ACCESSOR, useExisting: InputComponent, multi: true }
19
- ], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\r\n <input\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n matInput\r\n />\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { 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"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
+ #ctrlChanges;
29
+ #effect;
30
+ emitSuffixClick() {
31
+ this.onSuffixClick.emit(this.ctrl.getRawValue());
32
+ }
33
+ emitPrefixClick() {
34
+ this.onPrefixClick.emit(this.ctrl.getRawValue());
35
+ }
36
+ ngOnDestroy() {
37
+ this.#effect.destroy();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InputControl, isStandalone: true, selector: "iss-ctrl-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, prefixIcon: { classPropertyName: "prefixIcon", publicName: "prefixIcon", isSignal: true, isRequired: false, transformFunction: null }, prefixText: { classPropertyName: "prefixText", publicName: "prefixText", isSignal: true, isRequired: false, transformFunction: null }, suffixIcon: { classPropertyName: "suffixIcon", publicName: "suffixIcon", isSignal: true, isRequired: false, transformFunction: null }, suffixText: { classPropertyName: "suffixText", publicName: "suffixText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPrefixClick: "onPrefixClick", onSuffixClick: "onSuffixClick" }, providers: [
41
+ { provide: NG_VALUE_ACCESSOR, useExisting: InputControl, multi: true },
42
+ { provide: NG_VALIDATORS, useExisting: InputControl, multi: true }
43
+ ], usesInheritance: true, ngImport: i0, template: "<mat-form-field appearance=\"outline\">\r\n <ng-content select=\"[issPrefix]\"></ng-content>\r\n <div (click)=\"emitPrefixClick()\" class=\"cursor-pointer\">\r\n @if (prefixText()) {\r\n <span matTextPrefix>{{ prefixText() }}</span>\r\n }\r\n @if (prefixIcon()) {\r\n <ds-icon matPrefix icon=\"{{prefixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <input\r\n matInput\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n <ng-content select=\"[issSuffix]\"></ng-content>\r\n <div (click)=\"emitSuffixClick()\" class=\"cursor-pointer\">\r\n @if (suffixText()) {\r\n <span matTextSuffix>{{ suffixText() }}</span>\r\n }\r\n @if (suffixIcon()) {\r\n <ds-icon matSuffix icon=\"{{suffixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: HintsComponent, selector: "iss-ctrl-hints", inputs: ["hints", "touched"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
44
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputComponent, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InputControl, decorators: [{
22
46
  type: Component,
23
47
  args: [{ selector: "iss-ctrl-input", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
24
- MatFormFieldModule,
25
- MatInputModule,
26
48
  ReactiveFormsModule,
27
- HintsComponent
49
+ MatFormFieldModule,
50
+ HintsComponent,
51
+ MatInput
28
52
  ], providers: [
29
- { provide: NG_VALUE_ACCESSOR, useExisting: InputComponent, multi: true }
30
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field appearance=\"outline\">\r\n <input\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n matInput\r\n />\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n" }]
53
+ { provide: NG_VALUE_ACCESSOR, useExisting: InputControl, multi: true },
54
+ { provide: NG_VALIDATORS, useExisting: InputControl, multi: true }
55
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field appearance=\"outline\">\r\n <ng-content select=\"[issPrefix]\"></ng-content>\r\n <div (click)=\"emitPrefixClick()\" class=\"cursor-pointer\">\r\n @if (prefixText()) {\r\n <span matTextPrefix>{{ prefixText() }}</span>\r\n }\r\n @if (prefixIcon()) {\r\n <ds-icon matPrefix icon=\"{{prefixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <input\r\n matInput\r\n (blur)=\"markAsTouched()\"\r\n (input)=\"emitOnChangeEvent()\"\r\n [formControl]=\"ctrl\"\r\n [maxlength]=\"max()\"\r\n [minlength]=\"min()\"\r\n [placeholder]=\"placeholder()\"\r\n [type]=\"type()\"\r\n [disabled]=\"disabled()\"\r\n />\r\n <ng-content select=\"[issSuffix]\"></ng-content>\r\n <div (click)=\"emitSuffixClick()\" class=\"cursor-pointer\">\r\n @if (suffixText()) {\r\n <span matTextSuffix>{{ suffixText() }}</span>\r\n }\r\n @if (suffixIcon()) {\r\n <ds-icon matSuffix icon=\"{{suffixIcon()}}\"></ds-icon>\r\n }\r\n </div>\r\n <iss-ctrl-hints [hints]=\"hints()\"/>\r\n</mat-form-field>\r\n" }]
31
56
  }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7OztBQW9CeEQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBbEI1Qzs7UUFtQkUsU0FBSSxHQUF3QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0M7OEdBRlksY0FBYztrR0FBZCxjQUFjLDhMQU5kO1lBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1NBQ3ZFLGlEQ3JCSCxrWEFhQSx5RERESSxrQkFBa0IseU9BQ2xCLGNBQWMsMFdBQ2QsbUJBQW1CLGc1QkFDbkIsY0FBYzs7MkZBVUwsY0FBYztrQkFsQjFCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLGNBQWM7cUJBQ2YsYUFHVTt3QkFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ3ZFLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5wdXQsIElucHV0U2lnbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7SGludHNDb21wb25lbnR9IGZyb20gXCIuLi9oaW50cy9oaW50cy5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWlucHV0XCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBIaW50c0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbnB1dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vaW5wdXQuY29tcG9uZW50LnNjc3NcIixcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElucHV0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZX1cclxuICBdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUN0cmwge1xyXG4gIHR5cGU6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dChcInRleHRcIik7XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgPGlucHV0XHJcbiAgICAoYmx1cik9XCJtYXJrQXNUb3VjaGVkKClcIlxyXG4gICAgKGlucHV0KT1cImVtaXRPbkNoYW5nZUV2ZW50KClcIlxyXG4gICAgW2Zvcm1Db250cm9sXT1cImN0cmxcIlxyXG4gICAgW21heGxlbmd0aF09XCJtYXgoKVwiXHJcbiAgICBbbWlubGVuZ3RoXT1cIm1pbigpXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgIFt0eXBlXT1cInR5cGUoKVwiXHJcbiAgICBtYXRJbnB1dFxyXG4gIC8+XHJcbiAgPGlzcy1jdHJsLWhpbnRzIFtoaW50c109XCJoaW50cygpXCIvPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7O0FBcUJwRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFFBQVE7SUFuQjFDOztRQW9CRSxTQUFJLEdBQXdCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxlQUFVLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUE2QixNQUFNLEVBQUUsQ0FBQztRQUNuRCxrQkFBYSxHQUE2QixNQUFNLEVBQUUsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELFlBQU8sR0FBYyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBYUo7SUFsQkMsWUFBWSxDQUFvQztJQUNoRCxPQUFPLENBSUo7SUFFSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDOzhHQXpCVSxZQUFZO2tHQUFaLFlBQVksdXlCQVBaO1lBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO1lBQ3BFLEVBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDakUsaURDbENILCtoQ0FnQ0EseURETkksbUJBQW1CLCs0QkFDbkIsa0JBQWtCLDRlQUNsQixjQUFjLHlGQUNkLFFBQVE7OzJGQVNDLFlBQVk7a0JBbkJ4QixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxRQUFRO3FCQUNULGFBQ1U7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQzt3QkFDcEUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ2pFLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXHJcbiAgZWZmZWN0LFxyXG4gIEVmZmVjdFJlZixcclxuICBpbnB1dCxcclxuICBJbnB1dFNpZ25hbCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgb3V0cHV0LFxyXG4gIE91dHB1dEVtaXR0ZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtNYXRJbnB1dH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtIaW50c0NvbXBvbmVudH0gZnJvbSBcIi4uL2hpbnRzL2hpbnRzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLWlucHV0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbnB1dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vaW5wdXQuY29tcG9uZW50LnNjc3NcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBIaW50c0NvbXBvbmVudCxcclxuICAgIE1hdElucHV0XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElucHV0Q29udHJvbCwgbXVsdGk6IHRydWV9LFxyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBJbnB1dENvbnRyb2wsIG11bHRpOiB0cnVlfVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRDb250cm9sIGV4dGVuZHMgQmFzZUN0cmwgaW1wbGVtZW50cyBWYWxpZGF0b3IsIE9uRGVzdHJveSB7XHJcbiAgdHlwZTogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0KFwidGV4dFwiKTtcclxuICBwcmVmaXhJY29uOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoXCJcIik7XHJcbiAgcHJlZml4VGV4dDogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0KFwiXCIpO1xyXG4gIHN1ZmZpeEljb246IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dChcIlwiKTtcclxuICBzdWZmaXhUZXh0OiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoXCJcIik7XHJcbiAgb25QcmVmaXhDbGljazogT3V0cHV0RW1pdHRlclJlZjxzdHJpbmc+ID0gb3V0cHV0KCk7XHJcbiAgb25TdWZmaXhDbGljazogT3V0cHV0RW1pdHRlclJlZjxzdHJpbmc+ID0gb3V0cHV0KCk7XHJcbiAgI2N0cmxDaGFuZ2VzID0gdG9TaWduYWwodGhpcy5jdHJsLnZhbHVlQ2hhbmdlcyk7XHJcbiAgI2VmZmVjdDogRWZmZWN0UmVmID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLiNjdHJsQ2hhbmdlcygpKSB7XHJcbiAgICAgIHRoaXMuZW1pdFZhbHVlKHRoaXMuI2N0cmxDaGFuZ2VzKCkpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBlbWl0U3VmZml4Q2xpY2soKSB7XHJcbiAgICB0aGlzLm9uU3VmZml4Q2xpY2suZW1pdCh0aGlzLmN0cmwuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgfVxyXG5cclxuICBlbWl0UHJlZml4Q2xpY2soKSB7XHJcbiAgICB0aGlzLm9uUHJlZml4Q2xpY2suZW1pdCh0aGlzLmN0cmwuZ2V0UmF3VmFsdWUoKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI2VmZmVjdC5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltpc3NQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxyXG4gIDxkaXYgKGNsaWNrKT1cImVtaXRQcmVmaXhDbGljaygpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgQGlmIChwcmVmaXhUZXh0KCkpIHtcclxuICAgICAgPHNwYW4gbWF0VGV4dFByZWZpeD57eyBwcmVmaXhUZXh0KCkgfX08L3NwYW4+XHJcbiAgICB9XHJcbiAgICBAaWYgKHByZWZpeEljb24oKSkge1xyXG4gICAgICA8ZHMtaWNvbiBtYXRQcmVmaXggaWNvbj1cInt7cHJlZml4SWNvbigpfX1cIj48L2RzLWljb24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0XHJcbiAgICBtYXRJbnB1dFxyXG4gICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCJcclxuICAgIChpbnB1dCk9XCJlbWl0T25DaGFuZ2VFdmVudCgpXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJjdHJsXCJcclxuICAgIFttYXhsZW5ndGhdPVwibWF4KClcIlxyXG4gICAgW21pbmxlbmd0aF09XCJtaW4oKVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcbiAgICBbdHlwZV09XCJ0eXBlKClcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gIC8+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lzc1N1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPGRpdiAoY2xpY2spPVwiZW1pdFN1ZmZpeENsaWNrKClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XHJcbiAgICBAaWYgKHN1ZmZpeFRleHQoKSkge1xyXG4gICAgICA8c3BhbiBtYXRUZXh0U3VmZml4Pnt7IHN1ZmZpeFRleHQoKSB9fTwvc3Bhbj5cclxuICAgIH1cclxuICAgIEBpZiAoc3VmZml4SWNvbigpKSB7XHJcbiAgICAgIDxkcy1pY29uIG1hdFN1ZmZpeCBpY29uPVwie3tzdWZmaXhJY29uKCl9fVwiPjwvZHMtaWNvbj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8aXNzLWN0cmwtaGludHMgW2hpbnRzXT1cImhpbnRzKClcIi8+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcbiJdfQ==
@@ -18,7 +18,7 @@ export const DEFAULT_COUNTRY = {
18
18
  order: 1000,
19
19
  placeholder: "512345678"
20
20
  };
21
- export class MobileComponent extends BaseCtrl {
21
+ export class MobileControl extends BaseCtrl {
22
22
  constructor() {
23
23
  super(...arguments);
24
24
  this.phoneService = inject(PhoneService);
@@ -116,13 +116,13 @@ export class MobileComponent extends BaseCtrl {
116
116
  }
117
117
  return this.#sortCountries();
118
118
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: MobileComponent, isStandalone: true, selector: "iss-ctrl-mobile", inputs: { preferredCountries: { classPropertyName: "preferredCountries", publicName: "preferredCountries", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
121
- { provide: NG_VALUE_ACCESSOR, useExisting: MobileComponent, multi: true },
122
- { provide: NG_VALIDATORS, useExisting: MobileComponent, multi: true }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: MobileControl, isStandalone: true, selector: "iss-ctrl-mobile", inputs: { preferredCountries: { classPropertyName: "preferredCountries", publicName: "preferredCountries", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
121
+ { provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true },
122
+ { provide: NG_VALIDATORS, useExisting: MobileControl, multi: true }
123
123
  ], usesInheritance: true, ngImport: i0, template: "<mat-form-field cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img ngSrc=\"./flags/{{selectedCountry().code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\" [priority]=\"true\">\r\n <!--@if (separateDialCode()) {\r\n <div class=\"selected-dial-code\">+{{ selectedCountry.dialCode }}</div>\r\n }-->\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n</mat-form-field>\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n <span class=\"fs-12 fc-dark-gray\">+{{ country.dailCode }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</ng-template>\r\n", styles: [".country-flag{border-inline-end:var(--input-border);padding-inline-end:.5rem;margin-inline-end:.5rem;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: 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: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], deferBlockDependencies: [() => [NgOptimizedImage]] }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MobileControl, decorators: [{
126
126
  type: Component,
127
127
  args: [{ selector: "iss-ctrl-mobile", standalone: true, imports: [
128
128
  ReactiveFormsModule,
@@ -134,8 +134,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
134
134
  MatPrefix,
135
135
  NgOptimizedImage
136
136
  ], providers: [
137
- { provide: NG_VALUE_ACCESSOR, useExisting: MobileComponent, multi: true },
138
- { provide: NG_VALIDATORS, useExisting: MobileComponent, multi: true }
137
+ { provide: NG_VALUE_ACCESSOR, useExisting: MobileControl, multi: true },
138
+ { provide: NG_VALIDATORS, useExisting: MobileControl, multi: true }
139
139
  ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<mat-form-field cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\r\n <div class=\"d-inline-flex align-items-center gap-1 country-flag\" matPrefix (click)=\"toggleCountryCodeMenu()\">\r\n <img ngSrc=\"./flags/{{selectedCountry().code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\" [priority]=\"true\">\r\n <!--@if (separateDialCode()) {\r\n <div class=\"selected-dial-code\">+{{ selectedCountry.dialCode }}</div>\r\n }-->\r\n <ds-icon icon=\"arrow-down\" class=\"fs-12 fc-dark-gray\"></ds-icon>\r\n </div>\r\n <input\r\n matInput\r\n type=\"tel\"\r\n autocomplete=\"off\"\r\n (blur)=\"markAsTouched()\"\r\n (keydown)=\"onInput($event)\"\r\n (input)=\"emit()\"\r\n [formControl]=\"ctrl\"\r\n [disabled]=\"disabled()\"\r\n [placeholder]=\"selectedCountry().placeholder\"\r\n />\r\n</mat-form-field>\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n (backdropClick)=\"closeCountryCodeMenu()\"\r\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\r\n [cdkConnectedOverlayOrigin]=\"trigger\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n>\r\n <div class=\"country-dropdown bc-white box-shadow p-2\">\r\n <div class=\"search-container\">\r\n <mat-form-field>\r\n <input matInput id=\"country-search-box\" [formControl]=\"searchInput\" (click)=\"$event.stopPropagation()\"/>\r\n </mat-form-field>\r\n </div>\r\n <ul class=\"country-list\">\r\n @for (country of filteredCountries(); track $index) {\r\n <li\r\n #countryEl\r\n [ngClass]=\"country.order > 1 ? 'preferredCounty' : ''\"\r\n class=\"d-flex align-items-center gap-2 cursor-pointer p-2\"\r\n (click)=\"onSelectCountry(country)\"\r\n >\r\n @defer (on viewport(countryEl)) {\r\n <img ngSrc=\"./flags/{{country.code}}.svg\" width=\"20\" height=\"20\" alt=\"\" class=\"country-flag--image\">\r\n }\r\n <span class=\"fs-12 fc-black\">{{ country.name }}</span>\r\n <span class=\"fs-12 fc-dark-gray\">+{{ country.dailCode }}</span>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n</ng-template>\r\n", styles: [".country-flag{border-inline-end:var(--input-border);padding-inline-end:.5rem;margin-inline-end:.5rem;cursor:pointer}\n"] }]
140
140
  }] });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL21vYmlsZS9tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvbW9iaWxlL21vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUF1QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFrQixXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUE4QixNQUFNLGdCQUFnQixDQUFDO0FBQ2hKLE9BQU8sRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7OztBQUd0QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVk7SUFDdEMsSUFBSSxFQUFFLHlDQUF5QztJQUMvQyxJQUFJLEVBQUUsSUFBSTtJQUNWLFFBQVEsRUFBRSxLQUFLO0lBQ2Ys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X0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0LCBpbnB1dCwgSW5wdXRTaWduYWwsIFNpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3J9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nT3B0aW1pemVkSW1hZ2V9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XHJcbmltcG9ydCB7Q2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkLCBNYXRQcmVmaXh9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge0NvdW50cnl9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2NvdW50cnkuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7UGhvbmVTZXJ2aWNlfSBmcm9tIFwiLi9waG9uZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SVNPMn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvaXNvMi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtDT1VOVFJJRVN9IGZyb20gXCIuL0NPVU5UUklFU1wiO1xyXG5pbXBvcnQge01vYmlsZX0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvbW9iaWxlLmludGVyZmFjZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09VTlRSWTogQ291bnRyeSA9IHtcclxuICBuYW1lOiBcIlNhdWRpIEFyYWJpYSAo2KfZhNmF2YXZhNmD2Kkg2KfZhNi52LHYqNmK2Kkg2KfZhNiz2LnZiNiv2YrYqSlcIixcclxuICBjb2RlOiBcInNhXCIsXHJcbiAgZGFpbENvZGU6IFwiOTY2XCIsXHJcbiAgcHJpb3JpdHk6IDAsXHJcbiAgb3JkZXI6IDEwMDAsXHJcbiAgcGxhY2Vob2xkZXI6IFwiNTEyMzQ1Njc4XCJcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLW1vYmlsZVwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxyXG4gICAgQ2RrT3ZlcmxheU9yaWdpbixcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE1hdElucHV0LFxyXG4gICAgTWF0UHJlZml4LFxyXG4gICAgTmdPcHRpbWl6ZWRJbWFnZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9tb2JpbGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL21vYmlsZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTW9iaWxlQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX0sXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IE1vYmlsZUNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2JpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3RybCBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcbiAgcGhvbmVTZXJ2aWNlOiBQaG9uZVNlcnZpY2UgPSBpbmplY3QoUGhvbmVTZXJ2aWNlKTtcclxuICBpc09wZW46IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcclxuICBzZWxlY3RlZENvdW50cnk6IFdyaXRhYmxlU2lnbmFsPENvdW50cnk+ID0gc2lnbmFsPENvdW50cnk+KERFRkFVTFRfQ09VTlRSWSk7XHJcbiAgcHJlZmVycmVkQ291bnRyaWVzOiBJbnB1dFNpZ25hbDxJU08yW10+ID0gaW5wdXQ8SVNPMltdPihbXCJzYVwiXSk7XHJcbiAgc2VhcmNoSW5wdXQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiXCIpO1xyXG4gIGZpbHRlcmVkQ291bnRyaWVzOiBTaWduYWw8Q291bnRyeVtdPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuI3NlYXJjaEluQ291bnRyaWVzKCkpO1xyXG4gICNjdHJsQ2hhbmdlczogU2lnbmFsPHN0cmluZz4gPSB0b1NpZ25hbCh0aGlzLmN0cmwudmFsdWVDaGFuZ2VzKTtcclxuICAjc2VhcmNoUXVlcnk6IFNpZ25hbDxzdHJpbmc+ID0gdG9TaWduYWwodGhpcy5zZWFyY2hJbnB1dC52YWx1ZUNoYW5nZXMpO1xyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBtb2JpbGVPYmplY3QgPSB0aGlzLnBob25lU2VydmljZS5nZXRQaG9uZU51bWJlck9iamVjdCh2YWx1ZSk7XHJcbiAgICAgIGlmIChtb2JpbGVPYmplY3QpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5zZXQobW9iaWxlT2JqZWN0KTtcclxuICAgICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3RybC5zZXRWYWx1ZShtb2JpbGVPYmplY3Q/Lm5hdGlvbmFsTnVtYmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtaXQoKSB7XHJcbiAgICBpZiAodGhpcy4jY3RybENoYW5nZXMoKSkge1xyXG4gICAgICBjb25zdCBudW1iZXJPYmplY3Q6IE1vYmlsZSB8IHVuZGVmaW5lZCA9IHRoaXMucGhvbmVTZXJ2aWNlLmdldFBob25lTnVtYmVyT2JqZWN0KGArJHt0aGlzLnNlbGVjdGVkQ291bnRyeSgpLmRhaWxDb2RlfSR7dGhpcy4jY3RybENoYW5nZXMoKX1gKTtcclxuICAgICAgaWYgKG51bWJlck9iamVjdCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnNldChudW1iZXJPYmplY3QpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWUoYCske251bWJlck9iamVjdC5kYWlsQ29kZX0ke251bWJlck9iamVjdC5uYXRpb25hbE51bWJlcn1gKTtcclxuICAgICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KCkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCFjb250cm9sLmdldFJhd1ZhbHVlKCkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGVycm9yOiBhbnkgPSB7aW52YWxpZFBob25lTnVtYmVyOiB7YWNjZXB0ZWQ6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5KCkucGxhY2Vob2xkZXIsIGlucHV0OiBjb250cm9sLmdldFJhd1ZhbHVlKCl9fTtcclxuICAgIGxldCBpc1ZhbGlkOiBib29sZWFuID0gdGhpcy5waG9uZVNlcnZpY2UudmFsaWRhdGUoY29udHJvbC5nZXRSYXdWYWx1ZSgpKTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25JbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgYWxsb3dlZENoYXJzID0gL1swLTkrXFwtKCldLztcclxuICAgIGNvbnN0IGFsbG93ZWRDdHJsQ2hhcnMgPSAvW2F4Y3ZdLzsgLy8gQWxsb3dzIGNvcHktcGFzdGluZ1xyXG4gICAgY29uc3QgYWxsb3dlZE90aGVyS2V5cyA9IFtcclxuICAgICAgXCJBcnJvd0xlZnRcIixcclxuICAgICAgXCJBcnJvd1VwXCIsXHJcbiAgICAgIFwiQXJyb3dSaWdodFwiLFxyXG4gICAgICBcIkFycm93RG93blwiLFxyXG4gICAgICBcIkhvbWVcIixcclxuICAgICAgXCJFbmRcIixcclxuICAgICAgXCJJbnNlcnRcIixcclxuICAgICAgXCJEZWxldGVcIixcclxuICAgICAgXCJCYWNrc3BhY2VcIixcclxuICAgIF07XHJcblxyXG4gICAgaWYgKCFhbGxvd2VkQ2hhcnMudGVzdChldmVudC5rZXkpICYmICEoZXZlbnQuY3RybEtleSAmJiBhbGxvd2VkQ3RybENoYXJzLnRlc3QoZXZlbnQua2V5KSkgJiYgIWFsbG93ZWRPdGhlcktleXMuaW5jbHVkZXMoZXZlbnQua2V5KSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uU2VsZWN0Q291bnRyeShjb3VudHJ5OiBDb3VudHJ5KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5zZXQoY291bnRyeSk7XHJcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldFZhbHVlKFwiXCIpO1xyXG4gICAgdGhpcy5jbG9zZUNvdW50cnlDb2RlTWVudSgpO1xyXG4gICAgdGhpcy5wcm9wYWdhdGVWYWx1ZShgKyR7dGhpcy5zZWxlY3RlZENvdW50cnkoKS5kYWlsQ29kZX0ke3RoaXMuI2N0cmxDaGFuZ2VzKCl9YCk7XHJcbiAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KGArJHt0aGlzLnNlbGVjdGVkQ291bnRyeSgpLmRhaWxDb2RlfSR7dGhpcy4jY3RybENoYW5nZXMoKX1gKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjbG9zZUNvdW50cnlDb2RlTWVudSgpIHtcclxuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdG9nZ2xlQ291bnRyeUNvZGVNZW51KCkge1xyXG4gICAgdGhpcy5pc09wZW4udXBkYXRlKChpc09wZW46IGJvb2xlYW4pID0+ICFpc09wZW4pO1xyXG4gIH1cclxuXHJcbiAgI3NvcnRDb3VudHJpZXMoKSB7XHJcbiAgICByZXR1cm4gQ09VTlRSSUVTLm1hcCgoY291bnRyeTogQ291bnRyeSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMoKS5pbmNsdWRlcyhjb3VudHJ5LmNvZGUpKSB7XHJcbiAgICAgICAgY291bnRyeS5vcmRlciA9IGNvdW50cnkucHJpb3JpdHkgKyAoLTEgKiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMoKS5pbmRleE9mKGNvdW50cnkuY29kZSkgLSB0aGlzLnByZWZlcnJlZENvdW50cmllcygpLmxlbmd0aCkpICogMTAwO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb3VudHJ5O1xyXG4gICAgfSkuc29ydCgoYSwgYikgPT4gYi5vcmRlciAtIGEub3JkZXIpO1xyXG4gIH1cclxuXHJcbiAgI3NlYXJjaEluQ291bnRyaWVzKCk6IENvdW50cnlbXSB7XHJcbiAgICBpZiAodGhpcy4jc2VhcmNoUXVlcnkoKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jc29ydENvdW50cmllcygpLmZpbHRlcigoY291bnRyeTogQ291bnRyeSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICBjb3VudHJ5LmNvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLiNzZWFyY2hRdWVyeSgpKVxyXG4gICAgICAgICAgfHwgY291bnRyeS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy4jc2VhcmNoUXVlcnkoKSlcclxuICAgICAgICAgIHx8IGNvdW50cnkuZGFpbENvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLiNzZWFyY2hRdWVyeSgpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI3NvcnRDb3VudHJpZXMoKTtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIGNka092ZXJsYXlPcmlnaW4gI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xIGNvdW50cnktZmxhZ1wiIG1hdFByZWZpeCAoY2xpY2spPVwidG9nZ2xlQ291bnRyeUNvZGVNZW51KClcIj5cclxuICAgIDxpbWcgbmdTcmM9XCIuL2ZsYWdzL3t7c2VsZWN0ZWRDb3VudHJ5KCkuY29kZX19LnN2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGFsdD1cIlwiIGNsYXNzPVwiY291bnRyeS1mbGFnLS1pbWFnZVwiIFtwcmlvcml0eV09XCJ0cnVlXCI+XHJcbiAgICA8IS0tQGlmIChzZXBhcmF0ZURpYWxDb2RlKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWRpYWwtY29kZVwiPit7eyBzZWxlY3RlZENvdW50cnkuZGlhbENvZGUgfX08L2Rpdj5cclxuICAgIH0tLT5cclxuICAgIDxkcy1pY29uIGljb249XCJhcnJvdy1kb3duXCIgY2xhc3M9XCJmcy0xMiBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgPC9kaXY+XHJcbiAgPGlucHV0XHJcbiAgICBtYXRJbnB1dFxyXG4gICAgdHlwZT1cInRlbFwiXHJcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgKGJsdXIpPVwibWFya0FzVG91Y2hlZCgpXCJcclxuICAgIChrZXlkb3duKT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAoaW5wdXQpPVwiZW1pdCgpXCJcclxuICAgIFtmb3JtQ29udHJvbF09XCJjdHJsXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZENvdW50cnkoKS5wbGFjZWhvbGRlclwiXHJcbiAgLz5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG48bmctdGVtcGxhdGVcclxuICBjZGtDb25uZWN0ZWRPdmVybGF5XHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcclxuICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZUNvdW50cnlDb2RlTWVudSgpXCJcclxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW5dPVwidHJ1ZVwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cImlzT3BlbigpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJjb3VudHJ5LWRyb3Bkb3duIGJjLXdoaXRlIGJveC1zaGFkb3cgcC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IGlkPVwiY291bnRyeS1zZWFyY2gtYm94XCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPHVsIGNsYXNzPVwiY291bnRyeS1saXN0XCI+XHJcbiAgICAgIEBmb3IgKGNvdW50cnkgb2YgZmlsdGVyZWRDb3VudHJpZXMoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPGxpXHJcbiAgICAgICAgICAjY291bnRyeUVsXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJjb3VudHJ5Lm9yZGVyID4gMSA/ICdwcmVmZXJyZWRDb3VudHknICA6ICcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBjdXJzb3ItcG9pbnRlciBwLTJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q291bnRyeShjb3VudHJ5KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQGRlZmVyIChvbiB2aWV3cG9ydChjb3VudHJ5RWwpKSB7XHJcbiAgICAgICAgICAgIDxpbWcgbmdTcmM9XCIuL2ZsYWdzL3t7Y291bnRyeS5jb2RlfX0uc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgYWx0PVwiXCIgY2xhc3M9XCJjb3VudHJ5LWZsYWctLWltYWdlXCI+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLWJsYWNrXCI+e3sgY291bnRyeS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1kYXJrLWdyYXlcIj4re3sgY291bnRyeS5kYWlsQ29kZSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICB9XHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL21vYmlsZS9tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvbW9iaWxlL21vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUF1QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFrQixXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUE4QixNQUFNLGdCQUFnQixDQUFDO0FBQ2hKLE9BQU8sRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7OztBQUd0QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQVk7SUFDdEMsSUFBSSxFQUFFLHlDQUF5QztJQUMvQyxJQUFJLEVBQUUsSUFBSTtJQUNWLFFBQVEsRUFBRSxLQUFLO0lBQ2Ys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RU5UU19TQ0hFTUEsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBTaWduYWwsIHNpZ25hbCwgV3JpdGFibGVTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ09wdGltaXplZEltYWdlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xyXG5pbXBvcnQge0Nka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW59IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZCwgTWF0UHJlZml4fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge01hdElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHtDb3VudHJ5fSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9jb3VudHJ5LmludGVyZmFjZVwiO1xyXG5pbXBvcnQge1Bob25lU2VydmljZX0gZnJvbSBcIi4vcGhvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQge0lTTzJ9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2lzbzIuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7Q09VTlRSSUVTfSBmcm9tIFwiLi9DT1VOVFJJRVNcIjtcclxuaW1wb3J0IHtNb2JpbGV9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL21vYmlsZS5pbnRlcmZhY2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPVU5UUlk6IENvdW50cnkgPSB7XHJcbiAgbmFtZTogXCJTYXVkaSBBcmFiaWEgKNin2YTZhdmF2YTZg9ipINin2YTYudix2KjZitipINin2YTYs9i52YjYr9mK2KkpXCIsXHJcbiAgY29kZTogXCJzYVwiLFxyXG4gIGRhaWxDb2RlOiBcIjk2NlwiLFxyXG4gIHByaW9yaXR5OiAwLFxyXG4gIG9yZGVyOiAxMDAwLFxyXG4gIHBsYWNlaG9sZGVyOiBcIjUxMjM0NTY3OFwiXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJpc3MtY3RybC1tb2JpbGVcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcclxuICAgIENka092ZXJsYXlPcmlnaW4sXHJcbiAgICBNYXRGb3JtRmllbGQsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE1hdFByZWZpeCxcclxuICAgIE5nT3B0aW1pemVkSW1hZ2VcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbW9iaWxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tb2JpbGUuY29tcG9uZW50LnNjc3NcIixcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IE1vYmlsZUNvbnRyb2wsIG11bHRpOiB0cnVlfSxcclxuICAgIHtwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogTW9iaWxlQ29udHJvbCwgbXVsdGk6IHRydWV9XHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2JpbGVDb250cm9sIGV4dGVuZHMgQmFzZUN0cmwgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xyXG4gIHBob25lU2VydmljZTogUGhvbmVTZXJ2aWNlID0gaW5qZWN0KFBob25lU2VydmljZSk7XHJcbiAgaXNPcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcbiAgc2VsZWN0ZWRDb3VudHJ5OiBXcml0YWJsZVNpZ25hbDxDb3VudHJ5PiA9IHNpZ25hbDxDb3VudHJ5PihERUZBVUxUX0NPVU5UUlkpO1xyXG4gIHByZWZlcnJlZENvdW50cmllczogSW5wdXRTaWduYWw8SVNPMltdPiA9IGlucHV0PElTTzJbXT4oW1wic2FcIl0pO1xyXG4gIHNlYXJjaElucHV0OiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcclxuICBmaWx0ZXJlZENvdW50cmllczogU2lnbmFsPENvdW50cnlbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNzZWFyY2hJbkNvdW50cmllcygpKTtcclxuICAjY3RybENoYW5nZXM6IFNpZ25hbDxzdHJpbmc+ID0gdG9TaWduYWwodGhpcy5jdHJsLnZhbHVlQ2hhbmdlcyk7XHJcbiAgI3NlYXJjaFF1ZXJ5OiBTaWduYWw8c3RyaW5nPiA9IHRvU2lnbmFsKHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgY29uc3QgbW9iaWxlT2JqZWN0ID0gdGhpcy5waG9uZVNlcnZpY2UuZ2V0UGhvbmVOdW1iZXJPYmplY3QodmFsdWUpO1xyXG4gICAgICBpZiAobW9iaWxlT2JqZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KG1vYmlsZU9iamVjdCk7XHJcbiAgICAgICAgdGhpcy5lbWl0T25DaGFuZ2VFdmVudCh0aGlzLnNlbGVjdGVkQ291bnRyeSgpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN0cmwuc2V0VmFsdWUobW9iaWxlT2JqZWN0Py5uYXRpb25hbE51bWJlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0KCkge1xyXG4gICAgaWYgKHRoaXMuI2N0cmxDaGFuZ2VzKCkpIHtcclxuICAgICAgY29uc3QgbnVtYmVyT2JqZWN0OiBNb2JpbGUgfCB1bmRlZmluZWQgPSB0aGlzLnBob25lU2VydmljZS5nZXRQaG9uZU51bWJlck9iamVjdChgKyR7dGhpcy5zZWxlY3RlZENvdW50cnkoKS5kYWlsQ29kZX0ke3RoaXMuI2N0cmxDaGFuZ2VzKCl9YCk7XHJcbiAgICAgIGlmIChudW1iZXJPYmplY3QpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5zZXQobnVtYmVyT2JqZWN0KTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKGArJHtudW1iZXJPYmplY3QuZGFpbENvZGV9JHtudW1iZXJPYmplY3QubmF0aW9uYWxOdW1iZXJ9YCk7XHJcbiAgICAgICAgdGhpcy5lbWl0T25DaGFuZ2VFdmVudCh0aGlzLnNlbGVjdGVkQ291bnRyeSgpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZShudWxsKTtcclxuICAgICAgdGhpcy5lbWl0T25DaGFuZ2VFdmVudChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmICghY29udHJvbC5nZXRSYXdWYWx1ZSgpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBlcnJvcjogYW55ID0ge2ludmFsaWRQaG9uZU51bWJlcjoge2FjY2VwdGVkOiB0aGlzLnNlbGVjdGVkQ291bnRyeSgpLnBsYWNlaG9sZGVyLCBpbnB1dDogY29udHJvbC5nZXRSYXdWYWx1ZSgpfX07XHJcbiAgICBsZXQgaXNWYWxpZDogYm9vbGVhbiA9IHRoaXMucGhvbmVTZXJ2aWNlLnZhbGlkYXRlKGNvbnRyb2wuZ2V0UmF3VmFsdWUoKSk7XHJcblxyXG4gICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uSW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGFsbG93ZWRDaGFycyA9IC9bMC05K1xcLSgpXS87XHJcbiAgICBjb25zdCBhbGxvd2VkQ3RybENoYXJzID0gL1theGN2XS87IC8vIEFsbG93cyBjb3B5LXBhc3RpbmdcclxuICAgIGNvbnN0IGFsbG93ZWRPdGhlcktleXMgPSBbXHJcbiAgICAgIFwiQXJyb3dMZWZ0XCIsXHJcbiAgICAgIFwiQXJyb3dVcFwiLFxyXG4gICAgICBcIkFycm93UmlnaHRcIixcclxuICAgICAgXCJBcnJvd0Rvd25cIixcclxuICAgICAgXCJIb21lXCIsXHJcbiAgICAgIFwiRW5kXCIsXHJcbiAgICAgIFwiSW5zZXJ0XCIsXHJcbiAgICAgIFwiRGVsZXRlXCIsXHJcbiAgICAgIFwiQmFja3NwYWNlXCIsXHJcbiAgICBdO1xyXG5cclxuICAgIGlmICghYWxsb3dlZENoYXJzLnRlc3QoZXZlbnQua2V5KSAmJiAhKGV2ZW50LmN0cmxLZXkgJiYgYWxsb3dlZEN0cmxDaGFycy50ZXN0KGV2ZW50LmtleSkpICYmICFhbGxvd2VkT3RoZXJLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvblNlbGVjdENvdW50cnkoY291bnRyeTogQ291bnRyeSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KGNvdW50cnkpO1xyXG4gICAgdGhpcy5zZWFyY2hJbnB1dC5zZXRWYWx1ZShcIlwiKTtcclxuICAgIHRoaXMuY2xvc2VDb3VudHJ5Q29kZU1lbnUoKTtcclxuICAgIHRoaXMucHJvcGFnYXRlVmFsdWUoYCske3RoaXMuc2VsZWN0ZWRDb3VudHJ5KCkuZGFpbENvZGV9JHt0aGlzLiNjdHJsQ2hhbmdlcygpfWApO1xyXG4gICAgdGhpcy5lbWl0T25DaGFuZ2VFdmVudChgKyR7dGhpcy5zZWxlY3RlZENvdW50cnkoKS5kYWlsQ29kZX0ke3RoaXMuI2N0cmxDaGFuZ2VzKCl9YCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2xvc2VDb3VudHJ5Q29kZU1lbnUoKSB7XHJcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZUNvdW50cnlDb2RlTWVudSgpIHtcclxuICAgIHRoaXMuaXNPcGVuLnVwZGF0ZSgoaXNPcGVuOiBib29sZWFuKSA9PiAhaXNPcGVuKTtcclxuICB9XHJcblxyXG4gICNzb3J0Q291bnRyaWVzKCkge1xyXG4gICAgcmV0dXJuIENPVU5UUklFUy5tYXAoKGNvdW50cnk6IENvdW50cnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMucHJlZmVycmVkQ291bnRyaWVzKCkuaW5jbHVkZXMoY291bnRyeS5jb2RlKSkge1xyXG4gICAgICAgIGNvdW50cnkub3JkZXIgPSBjb3VudHJ5LnByaW9yaXR5ICsgKC0xICogKHRoaXMucHJlZmVycmVkQ291bnRyaWVzKCkuaW5kZXhPZihjb3VudHJ5LmNvZGUpIC0gdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMoKS5sZW5ndGgpKSAqIDEwMDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY291bnRyeTtcclxuICAgIH0pLnNvcnQoKGEsIGIpID0+IGIub3JkZXIgLSBhLm9yZGVyKTtcclxuICB9XHJcblxyXG4gICNzZWFyY2hJbkNvdW50cmllcygpOiBDb3VudHJ5W10ge1xyXG4gICAgaWYgKHRoaXMuI3NlYXJjaFF1ZXJ5KCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI3NvcnRDb3VudHJpZXMoKS5maWx0ZXIoKGNvdW50cnk6IENvdW50cnkpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgY291bnRyeS5jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy4jc2VhcmNoUXVlcnkoKSlcclxuICAgICAgICAgIHx8IGNvdW50cnkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuI3NlYXJjaFF1ZXJ5KCkpXHJcbiAgICAgICAgICB8fCBjb3VudHJ5LmRhaWxDb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy4jc2VhcmNoUXVlcnkoKSlcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNzb3J0Q291bnRyaWVzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtZm9ybS1maWVsZCBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBjb3VudHJ5LWZsYWdcIiBtYXRQcmVmaXggKGNsaWNrKT1cInRvZ2dsZUNvdW50cnlDb2RlTWVudSgpXCI+XHJcbiAgICA8aW1nIG5nU3JjPVwiLi9mbGFncy97e3NlbGVjdGVkQ291bnRyeSgpLmNvZGV9fS5zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBhbHQ9XCJcIiBjbGFzcz1cImNvdW50cnktZmxhZy0taW1hZ2VcIiBbcHJpb3JpdHldPVwidHJ1ZVwiPlxyXG4gICAgPCEtLUBpZiAoc2VwYXJhdGVEaWFsQ29kZSgpKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1kaWFsLWNvZGVcIj4re3sgc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlIH19PC9kaXY+XHJcbiAgICB9LS0+XHJcbiAgICA8ZHMtaWNvbiBpY29uPVwiYXJyb3ctZG93blwiIGNsYXNzPVwiZnMtMTIgZmMtZGFyay1ncmF5XCI+PC9kcy1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIDxpbnB1dFxyXG4gICAgbWF0SW5wdXRcclxuICAgIHR5cGU9XCJ0ZWxcIlxyXG4gICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiXHJcbiAgICAoa2V5ZG93bik9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgKGlucHV0KT1cImVtaXQoKVwiXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY3RybFwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwic2VsZWN0ZWRDb3VudHJ5KCkucGxhY2Vob2xkZXJcIlxyXG4gIC8+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidHJ1ZVwiXHJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VDb3VudHJ5Q29kZU1lbnUoKVwiXHJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuXT1cInRydWVcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxyXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc09wZW4oKVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiY291bnRyeS1kcm9wZG93biBiYy13aGl0ZSBib3gtc2hhZG93IHAtMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBpZD1cImNvdW50cnktc2VhcmNoLWJveFwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIi8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx1bCBjbGFzcz1cImNvdW50cnktbGlzdFwiPlxyXG4gICAgICBAZm9yIChjb3VudHJ5IG9mIGZpbHRlcmVkQ291bnRyaWVzKCk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgIDxsaVxyXG4gICAgICAgICAgI2NvdW50cnlFbFxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY291bnRyeS5vcmRlciA+IDEgPyAncHJlZmVycmVkQ291bnR5JyAgOiAnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgY3Vyc29yLXBvaW50ZXIgcC0yXCJcclxuICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdENvdW50cnkoY291bnRyeSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBkZWZlciAob24gdmlld3BvcnQoY291bnRyeUVsKSkge1xyXG4gICAgICAgICAgICA8aW1nIG5nU3JjPVwiLi9mbGFncy97e2NvdW50cnkuY29kZX19LnN2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGFsdD1cIlwiIGNsYXNzPVwiY291bnRyeS1mbGFnLS1pbWFnZVwiPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1ibGFja1wiPnt7IGNvdW50cnkubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTIgZmMtZGFyay1ncmF5XCI+K3t7IGNvdW50cnkuZGFpbENvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgfVxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -2,16 +2,16 @@ import { Component } from "@angular/core";
2
2
  import { BaseCtrl } from "../base-ctrl";
3
3
  import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
4
  import * as i0 from "@angular/core";
5
- export class NoteComponent extends BaseCtrl {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NoteComponent, isStandalone: true, selector: "iss-ctrl-note", providers: [
8
- { provide: NG_VALUE_ACCESSOR, useExisting: NoteComponent, multi: true }
5
+ export class NoteControl extends BaseCtrl {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NoteControl, isStandalone: true, selector: "iss-ctrl-note", providers: [
8
+ { provide: NG_VALUE_ACCESSOR, useExisting: NoteControl, multi: true }
9
9
  ], usesInheritance: true, ngImport: i0, template: "<p>note works!</p>\r\n", styles: [""] }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteComponent, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NoteControl, decorators: [{
12
12
  type: Component,
13
13
  args: [{ selector: "iss-ctrl-note", standalone: true, imports: [], providers: [
14
- { provide: NG_VALUE_ACCESSOR, useExisting: NoteComponent, multi: true }
14
+ { provide: NG_VALUE_ACCESSOR, useExisting: NoteControl, multi: true }
15
15
  ], template: "<p>note works!</p>\r\n" }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pc3MtY3RybC9zcmMvY29tcG9uZW50cy9ub3RlL25vdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvbm90ZS9ub3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFZakQsTUFBTSxPQUFPLGFBQWMsU0FBUSxRQUFROzhHQUE5QixhQUFhO2tHQUFiLGFBQWEsNERBSmI7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDdEUsaURDWkgsd0JBQ0E7OzJGRGFhLGFBQWE7a0JBVnpCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxFQUFFLGFBR0E7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDdEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLW5vdGVcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbm90ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vbm90ZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTm90ZUNvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTm90ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VDdHJsIHtcclxuXHJcbn1cclxuIiwiPHA+bm90ZSB3b3JrcyE8L3A+XHJcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pc3MtY3RybC9zcmMvY29tcG9uZW50cy9ub3RlL25vdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvbm90ZS9ub3RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFZakQsTUFBTSxPQUFPLFdBQVksU0FBUSxRQUFROzhHQUE1QixXQUFXO2tHQUFYLFdBQVcsNERBSlg7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDcEUsaURDWkgsd0JBQ0E7OzJGRGFhLFdBQVc7a0JBVnZCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxFQUFFLGFBR0E7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDcEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLW5vdGVcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbm90ZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vbm90ZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogTm90ZUNvbnRyb2wsIG11bHRpOiB0cnVlfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGVDb250cm9sIGV4dGVuZHMgQmFzZUN0cmwgeyB9XHJcbiIsIjxwPm5vdGUgd29ya3MhPC9wPlxyXG4iXX0=
@@ -0,0 +1,20 @@
1
+ export const PLATE_LETTERS = [
2
+ { label: { ar: "أ", en: "A" }, value: "A" },
3
+ { label: { ar: "ب", en: "B" }, value: "B" },
4
+ { label: { ar: "ح", en: "J" }, value: "J" },
5
+ { label: { ar: "د", en: "D" }, value: "D" },
6
+ { label: { ar: "ر", en: "R" }, value: "R" },
7
+ { label: { ar: "س", en: "S" }, value: "S" },
8
+ { label: { ar: "ص", en: "X" }, value: "X" },
9
+ { label: { ar: "ط", en: "T" }, value: "T" },
10
+ { label: { ar: "ع", en: "E" }, value: "E" },
11
+ { label: { ar: "ق", en: "G" }, value: "G" },
12
+ { label: { ar: "ك", en: "K" }, value: "K" },
13
+ { label: { ar: "ل", en: "L" }, value: "L" },
14
+ { label: { ar: "م", en: "Z" }, value: "Z" },
15
+ { label: { ar: "ن", en: "N" }, value: "N" },
16
+ { label: { ar: "هـ", en: "H" }, value: "H" },
17
+ { label: { ar: "و", en: "U" }, value: "U" },
18
+ { label: { ar: "ي", en: "V" }, value: "V" }
19
+ ];
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUExBVEVfTEVUVEVSUy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lzcy1jdHJsL3NyYy9jb21wb25lbnRzL3BsYXRlL1BMQVRFX0xFVFRFUlMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUF3QjtJQUNoRCxFQUFDLEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUM7SUFDdkMsRUFBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDO0lBQ3ZDLEVBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQztJQUN2QyxFQUFDLEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUM7SUFDdkMsRUFBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDO0lBQ3ZDLEVBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQztJQUN2QyxFQUFDLEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUM7SUFDdkMsRUFBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDO0lBQ3ZDLEVBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQztJQUN2QyxFQUFDLEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUM7SUFDdkMsRUFBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDO0lBQ3ZDLEVBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQztJQUN2QyxFQUFDLEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUM7SUFDdkMsRUFBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDO0lBQ3ZDLEVBQUMsS0FBSyxFQUFFLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQztJQUN4QyxFQUFDLEtBQUssRUFBRSxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUM7SUFDdkMsRUFBQyxLQUFLLEVBQUUsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDO0NBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUExBVEVfTEVUVEVSUzogUGxhdGVMZXR0ZXJPcHRpb25bXSA9IFtcclxuICB7bGFiZWw6IHthcjogXCLYo1wiLCBlbjogXCJBXCJ9LCB2YWx1ZTogXCJBXCJ9LFxyXG4gIHtsYWJlbDoge2FyOiBcItioXCIsIGVuOiBcIkJcIn0sIHZhbHVlOiBcIkJcIn0sXHJcbiAge2xhYmVsOiB7YXI6IFwi2K1cIiwgZW46IFwiSlwifSwgdmFsdWU6IFwiSlwifSxcclxuICB7bGFiZWw6IHthcjogXCLYr1wiLCBlbjogXCJEXCJ9LCB2YWx1ZTogXCJEXCJ9LFxyXG4gIHtsYWJlbDoge2FyOiBcItixXCIsIGVuOiBcIlJcIn0sIHZhbHVlOiBcIlJcIn0sXHJcbiAge2xhYmVsOiB7YXI6IFwi2LNcIiwgZW46IFwiU1wifSwgdmFsdWU6IFwiU1wifSxcclxuICB7bGFiZWw6IHthcjogXCLYtVwiLCBlbjogXCJYXCJ9LCB2YWx1ZTogXCJYXCJ9LFxyXG4gIHtsYWJlbDoge2FyOiBcIti3XCIsIGVuOiBcIlRcIn0sIHZhbHVlOiBcIlRcIn0sXHJcbiAge2xhYmVsOiB7YXI6IFwi2LlcIiwgZW46IFwiRVwifSwgdmFsdWU6IFwiRVwifSxcclxuICB7bGFiZWw6IHthcjogXCLZglwiLCBlbjogXCJHXCJ9LCB2YWx1ZTogXCJHXCJ9LFxyXG4gIHtsYWJlbDoge2FyOiBcItmDXCIsIGVuOiBcIktcIn0sIHZhbHVlOiBcIktcIn0sXHJcbiAge2xhYmVsOiB7YXI6IFwi2YRcIiwgZW46IFwiTFwifSwgdmFsdWU6IFwiTFwifSxcclxuICB7bGFiZWw6IHthcjogXCLZhVwiLCBlbjogXCJaXCJ9LCB2YWx1ZTogXCJaXCJ9LFxyXG4gIHtsYWJlbDoge2FyOiBcItmGXCIsIGVuOiBcIk5cIn0sIHZhbHVlOiBcIk5cIn0sXHJcbiAge2xhYmVsOiB7YXI6IFwi2YfZgFwiLCBlbjogXCJIXCJ9LCB2YWx1ZTogXCJIXCJ9LFxyXG4gIHtsYWJlbDoge2FyOiBcItmIXCIsIGVuOiBcIlVcIn0sIHZhbHVlOiBcIlVcIn0sXHJcbiAge2xhYmVsOiB7YXI6IFwi2YpcIiwgZW46IFwiVlwifSwgdmFsdWU6IFwiVlwifVxyXG5dO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQbGF0ZUxldHRlck9wdGlvbiB7XHJcbiAgbGFiZWw6IHtcclxuICAgIGFyOiBzdHJpbmc7XHJcbiAgICBlbjogc3RyaW5nO1xyXG4gIH0sXHJcbiAgdmFsdWU6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,101 @@
1
+ import { Component, computed, effect } from "@angular/core";
2
+ import { FormArray, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule } from "@angular/forms";
3
+ import { BaseCtrl } from "../base-ctrl";
4
+ import { MatFormField } from "@angular/material/form-field";
5
+ import { MatInput } from "@angular/material/input";
6
+ import { MatOption, MatSelect } from "@angular/material/select";
7
+ import { NgTemplateOutlet } from "@angular/common";
8
+ import { toSignal } from "@angular/core/rxjs-interop";
9
+ import { ArabicNumberPipe } from "../../pipes/arabic-number.pipe";
10
+ import { PLATE_LETTERS } from "./PLATE_LETTERS";
11
+ import { PlateLetterPipe } from "../../pipes/plate-letter.pipe";
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/forms";
14
+ export class PlateControl extends BaseCtrl {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.plate = new FormGroup({
18
+ numbers: new FormArray([
19
+ new FormControl(null),
20
+ new FormControl(null),
21
+ new FormControl(null),
22
+ new FormControl(null),
23
+ ]),
24
+ letters: new FormArray([
25
+ new FormControl(null),
26
+ new FormControl(null),
27
+ new FormControl(null),
28
+ ]),
29
+ });
30
+ this.#plateChanges = toSignal(this.plate.valueChanges);
31
+ this.#lettersArr = computed(() => this.#plateChanges()["letters"].filter((l) => l));
32
+ this.#letters = computed(() => this.#lettersArr().join(""));
33
+ this.#numbersArr = computed(() => this.#plateChanges()["numbers"].filter((l) => l));
34
+ this.#numbers = computed(() => this.#numbersArr().join(""));
35
+ this.#plateHasValue = computed(() => !!(this.#letters().length && this.#numbers().length));
36
+ this.#effectRef = effect(() => {
37
+ if (this.#plateChanges()) {
38
+ this.propagateValue(this.#getEmissionValue());
39
+ this.emitOnChangeEvent({ letters: this.#lettersArr(), numbers: this.#numbersArr() });
40
+ }
41
+ });
42
+ this.PLATE_LETTERS = PLATE_LETTERS;
43
+ }
44
+ #plateChanges;
45
+ #lettersArr;
46
+ #letters;
47
+ #numbersArr;
48
+ #numbers;
49
+ #plateHasValue;
50
+ #effectRef;
51
+ get letterControls() {
52
+ return this.plate.controls["letters"].controls;
53
+ }
54
+ get numberControls() {
55
+ return this.plate.controls["numbers"].controls;
56
+ }
57
+ writeValue(value) {
58
+ let processedValue = this.#splitPlateValues(value);
59
+ if (processedValue) {
60
+ this.plate.patchValue(processedValue);
61
+ }
62
+ }
63
+ ngOnDestroy() {
64
+ this.#effectRef.destroy();
65
+ }
66
+ #getEmissionValue() {
67
+ if (this.#plateHasValue()) {
68
+ return `${this.#letters()}-${this.#numbers()}`;
69
+ }
70
+ return null;
71
+ }
72
+ #splitPlateValues(value) {
73
+ if (value) {
74
+ let lettersAndNumbers = value.split("-");
75
+ let letters = lettersAndNumbers[0].split("");
76
+ let numbers = lettersAndNumbers[1].split("");
77
+ return { letters, numbers };
78
+ }
79
+ return null;
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PlateControl, isStandalone: true, selector: "iss-ctrl-plate-number", providers: [
83
+ { provide: NG_VALUE_ACCESSOR, useExisting: PlateControl, multi: true }
84
+ ], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"plate\">\r\n @if (!disabled()) {\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"numbers\">\r\n @for (item of numberControls; track $index) {\r\n <div class=\"col-sm-3\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <input\r\n type=\"number\"\r\n matInput\r\n [formControlName]=\"$index\"\r\n maxlength=\"1\"\r\n placeholder=\"\"\r\n oninput=\"if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"letters\">\r\n @for (el of letterControls; track $index) {\r\n <div class=\"col-sm-4\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <mat-select disableOptionCentering [formControlName]=\"$index\">\r\n @for (option of PLATE_LETTERS; track option.value) {\r\n <mat-option [value]=\"option.value\">{{ option.label.en }} / {{ option.label.ar }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n }\r\n <div class=\"row mb-4\">\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"plateElement\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #plateElement>\r\n <div class=\"plate d-inline-flex align-items-stretch justify-content-between fs-18\">\r\n <div class=\"d-flex flex-column border-right w-100\">\r\n <div class=\"ARPlate border-bottom d-flex h-50 w-100\">\r\n <div class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value | arabicNumber }}</span>\r\n }\r\n </div>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value | plateLetter }}</span>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"ENPlate d-flex h-50 w-100\">\r\n <span class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value }}</span>\r\n }\r\n </span>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value }}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 justify-content-center px-2 align-items-center\">\r\n <svg width=\"17\" height=\"19\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n <span class=\"fw-medium fs-12 line-height-1-2\">K<br/>S<br/>A</span>\r\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4.49162\" cy=\"4.06193\" r=\"3.99162\" fill=\"#1D252D\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".plate{background:#f8f8f8;width:240px;height:110px;border:1px solid #8e9aa0;border-radius:3px;direction:ltr}.plate .border-right{border-right:1px solid #d6d6d4}.plate .border-bottom{border-bottom:1px solid #d6d6d4!important}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: ArabicNumberPipe, name: "arabicNumber" }, { kind: "pipe", type: PlateLetterPipe, name: "plateLetter" }] }); }
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PlateControl, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: "iss-ctrl-plate-number", standalone: true, imports: [
89
+ MatFormField,
90
+ ReactiveFormsModule,
91
+ MatInput,
92
+ MatSelect,
93
+ MatOption,
94
+ NgTemplateOutlet,
95
+ ArabicNumberPipe,
96
+ PlateLetterPipe
97
+ ], providers: [
98
+ { provide: NG_VALUE_ACCESSOR, useExisting: PlateControl, multi: true }
99
+ ], template: "<div [formGroup]=\"plate\">\r\n @if (!disabled()) {\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"numbers\">\r\n @for (item of numberControls; track $index) {\r\n <div class=\"col-sm-3\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <input\r\n type=\"number\"\r\n matInput\r\n [formControlName]=\"$index\"\r\n maxlength=\"1\"\r\n placeholder=\"\"\r\n oninput=\"if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n <div class=\"row mb-4\">\r\n <ng-container formArrayName=\"letters\">\r\n @for (el of letterControls; track $index) {\r\n <div class=\"col-sm-4\">\r\n <mat-form-field class=\"mat-form-field-number\">\r\n <mat-select disableOptionCentering [formControlName]=\"$index\">\r\n @for (option of PLATE_LETTERS; track option.value) {\r\n <mat-option [value]=\"option.value\">{{ option.label.en }} / {{ option.label.ar }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n }\r\n </ng-container>\r\n </div>\r\n }\r\n <div class=\"row mb-4\">\r\n <div class=\"col-12\">\r\n <ng-container *ngTemplateOutlet=\"plateElement\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #plateElement>\r\n <div class=\"plate d-inline-flex align-items-stretch justify-content-between fs-18\">\r\n <div class=\"d-flex flex-column border-right w-100\">\r\n <div class=\"ARPlate border-bottom d-flex h-50 w-100\">\r\n <div class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value | arabicNumber }}</span>\r\n }\r\n </div>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value | plateLetter }}</span>\r\n }\r\n </span>\r\n </div>\r\n <div class=\"ENPlate d-flex h-50 w-100\">\r\n <span class=\"fc-black border-right w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (numberCtrl of numberControls; track $index) {\r\n <span>{{ numberCtrl.value }}</span>\r\n }\r\n </span>\r\n <span class=\"fw-medium fc-black w-50 d-flex align-items-center justify-content-center gap-2\">\r\n @for (letterCtrl of letterControls; track $index) {\r\n <span>{{ letterCtrl.value }}</span>\r\n }\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column gap-2 justify-content-center px-2 align-items-center\">\r\n <svg width=\"17\" height=\"19\" viewBox=\"0 0 17 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M10.8072 16.8744C11.4633 16.178 11.3244 15.3914 10.7996 15.3825C10.9872 15.9606 10.5562 16.3344 10.3922 16.5266C9.97894 16.1712 9.55086 15.7761 9.10778 15.3694C11.2695 13.5812 13.6354 11.995 16.7263 11.9452C13.3983 10.7499 10.7417 12.7815 8.4925 14.8084C6.24308 12.7815 3.58672 10.7499 0.257812 11.9452C3.34944 11.995 5.71507 13.581 7.87722 15.3694C7.43329 15.7761 7.00564 16.1712 6.59172 16.5266C6.42902 16.3344 5.99777 15.9606 6.18435 15.3825C5.65992 15.3914 5.52089 16.178 6.17758 16.8744C5.91495 17.0931 5.48962 17.4631 5.15113 17.5518C4.89082 17.6199 4.68185 17.4846 4.63473 17.2026C4.53542 16.6069 3.61271 16.6959 3.72554 17.5372C3.82907 18.3044 4.76066 18.6391 5.55892 18.2837C5.87565 18.1424 6.3107 17.7413 6.66778 17.45C6.83111 17.641 7.26215 18.0145 7.07494 18.5935C7.59979 18.5838 7.7384 17.798 7.08234 17.1005C7.54845 16.7028 8.01625 16.2927 8.4925 15.887C8.96833 16.2925 9.43634 16.7028 9.90288 17.1005C9.24639 17.798 9.385 18.5838 9.91006 18.5935C9.72285 18.0145 10.1539 17.6414 10.3168 17.45C10.6745 17.7413 11.1091 18.1424 11.4263 18.2837C12.2246 18.6391 13.1555 18.3044 13.259 17.5372C13.3719 16.6959 12.4496 16.6069 12.3494 17.2026C12.3023 17.4846 12.094 17.6196 11.8332 17.5518C11.4948 17.4631 11.0696 17.0931 10.8072 16.8744ZM6.72504 5.72093C6.22365 7.04637 6.19597 8.53894 6.9169 10.1805C6.80195 8.47576 7.17594 7.06771 7.8713 6.0066L8.01815 7.46832H7.84679L8.01815 9.17958H7.84679L8.01815 10.8904H7.84679L8.01794 12.5991L7.53366 13.0819H8.4925H9.45156L8.96685 12.5991L9.13842 10.8904H8.96685L9.13842 9.17958H8.96685L9.13842 7.46832H8.96685L9.11391 6.0066C9.80906 7.06771 10.1833 8.47682 10.0683 10.1805C10.7886 8.53894 10.7616 7.047 10.2602 5.72093C11.1115 6.72478 11.7701 7.89851 12.0661 9.36572C12.3733 7.50466 11.848 5.98568 10.8852 4.8071C11.8174 5.47943 12.6184 6.33157 13.1785 7.48396C13.048 5.72072 12.1559 4.57742 10.927 3.75824C11.989 4.1054 12.8561 4.68645 13.6343 5.71798C13.1139 3.8884 11.9801 3.15564 10.575 2.74362C11.5332 2.67368 12.4386 2.78165 13.3347 3.33988C12.3621 2.02839 11.0565 1.81055 9.73257 1.95634C10.2893 1.67279 10.9158 1.53101 11.5888 1.63137C10.8302 1.07187 9.81836 1.01651 8.95227 1.48812L8.4925 0.328125L8.0321 1.48749C7.1658 1.01651 6.15476 1.07166 5.39623 1.63137C6.06877 1.53122 6.69483 1.67279 7.25179 1.95634C5.92826 1.81055 4.62311 2.0286 3.6499 3.33988C4.54662 2.78165 5.45137 2.67368 6.41001 2.74362C5.00534 3.15564 3.87112 3.8884 3.35113 5.71798C4.12868 4.68666 4.99625 4.1054 6.05842 3.75824C4.8287 4.57721 3.93704 5.72072 3.80625 7.48396C4.36618 6.33157 5.16782 5.47943 6.09962 4.8071C5.13676 5.98568 4.61149 7.50466 4.91871 9.36572C5.21494 7.89851 5.87354 6.72478 6.72504 5.72093Z\"\r\n fill=\"#1D252D\"\r\n />\r\n </svg>\r\n <span class=\"fw-medium fs-12 line-height-1-2\">K<br/>S<br/>A</span>\r\n <svg width=\"9\" height=\"9\" viewBox=\"0 0 9 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <circle cx=\"4.49162\" cy=\"4.06193\" r=\"3.99162\" fill=\"#1D252D\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".plate{background:#f8f8f8;width:240px;height:110px;border:1px solid #8e9aa0;border-radius:3px;direction:ltr}.plate .border-right{border-right:1px solid #d6d6d4}.plate .border-bottom{border-bottom:1px solid #d6d6d4!important}\n"] }]
100
+ }] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcGxhdGUvcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcGxhdGUvcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFcEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBcUI5RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFFBQVE7SUFuQjFDOztRQW9CWSxVQUFLLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDekMsT0FBTyxFQUFFLElBQUksU0FBUyxDQUFDO2dCQUNy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QUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7cUJBQ3JFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEVmZmVjdFJlZiwgT25EZXN0cm95LCBTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Rm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7QmFzZUN0cmx9IGZyb20gXCIuLi9iYXNlLWN0cmxcIjtcclxuaW1wb3J0IHtNYXRGb3JtRmllbGR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge01hdE9wdGlvbiwgTWF0U2VsZWN0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7TmdUZW1wbGF0ZU91dGxldH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcclxuaW1wb3J0IHtPcHRpb259IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL29wdGlvbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtBcmFiaWNOdW1iZXJQaXBlfSBmcm9tIFwiLi4vLi4vcGlwZXMvYXJhYmljLW51bWJlci5waXBlXCI7XHJcbmltcG9ydCB7UExBVEVfTEVUVEVSU30gZnJvbSBcIi4vUExBVEVfTEVUVEVSU1wiO1xyXG5pbXBvcnQge1BsYXRlTGV0dGVyUGlwZX0gZnJvbSBcIi4uLy4uL3BpcGVzL3BsYXRlLWxldHRlci5waXBlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJpc3MtY3RybC1wbGF0ZS1udW1iZXJcIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE1hdFNlbGVjdCxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBBcmFiaWNOdW1iZXJQaXBlLFxyXG4gICAgUGxhdGVMZXR0ZXJQaXBlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL3BsYXRlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9wbGF0ZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogUGxhdGVDb250cm9sLCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQbGF0ZUNvbnRyb2wgZXh0ZW5kcyBCYXNlQ3RybCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJvdGVjdGVkIHBsYXRlOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIG51bWJlcnM6IG5ldyBGb3JtQXJyYXkoW1xyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgIG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICBdKSxcclxuICAgIGxldHRlcnM6IG5ldyBGb3JtQXJyYXkoW1xyXG4gICAgICBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcbiAgICAgIG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgICAgbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgXSksXHJcbiAgfSk7XHJcblxyXG4gICNwbGF0ZUNoYW5nZXMgPSB0b1NpZ25hbCh0aGlzLnBsYXRlLnZhbHVlQ2hhbmdlcyk7XHJcbiAgI2xldHRlcnNBcnI6IFNpZ25hbDxzdHJpbmdbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNwbGF0ZUNoYW5nZXMoKVtcImxldHRlcnNcIl0uZmlsdGVyKChsOiBzdHJpbmcpID0+IGwpKTtcclxuICAjbGV0dGVyczogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNsZXR0ZXJzQXJyKCkuam9pbihcIlwiKSk7XHJcbiAgI251bWJlcnNBcnI6IFNpZ25hbDxzdHJpbmdbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNwbGF0ZUNoYW5nZXMoKVtcIm51bWJlcnNcIl0uZmlsdGVyKChsOiBzdHJpbmcpID0+IGwpKTtcclxuICAjbnVtYmVyczogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLiNudW1iZXJzQXJyKCkuam9pbihcIlwiKSk7XHJcbiAgI3BsYXRlSGFzVmFsdWU6IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+ICEhKHRoaXMuI2xldHRlcnMoKS5sZW5ndGggJiYgdGhpcy4jbnVtYmVycygpLmxlbmd0aCkpO1xyXG4gICNlZmZlY3RSZWY6IEVmZmVjdFJlZiA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy4jcGxhdGVDaGFuZ2VzKCkpIHtcclxuICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZSh0aGlzLiNnZXRFbWlzc2lvblZhbHVlKCkpO1xyXG4gICAgICB0aGlzLmVtaXRPbkNoYW5nZUV2ZW50KHtsZXR0ZXJzOiB0aGlzLiNsZXR0ZXJzQXJyKCksIG51bWJlcnM6IHRoaXMuI251bWJlcnNBcnIoKX0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBnZXQgbGV0dGVyQ29udHJvbHMoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMucGxhdGUuY29udHJvbHNbXCJsZXR0ZXJzXCJdIGFzIEZvcm1BcnJheSkuY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBnZXQgbnVtYmVyQ29udHJvbHMoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMucGxhdGUuY29udHJvbHNbXCJudW1iZXJzXCJdIGFzIEZvcm1BcnJheSkuY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBsZXQgcHJvY2Vzc2VkVmFsdWUgPSB0aGlzLiNzcGxpdFBsYXRlVmFsdWVzKHZhbHVlKTtcclxuICAgIGlmIChwcm9jZXNzZWRWYWx1ZSkge1xyXG4gICAgICB0aGlzLnBsYXRlLnBhdGNoVmFsdWUocHJvY2Vzc2VkVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNlZmZlY3RSZWYuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgI2dldEVtaXNzaW9uVmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy4jcGxhdGVIYXNWYWx1ZSgpKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLiNsZXR0ZXJzKCl9LSR7dGhpcy4jbnVtYmVycygpfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gICNzcGxpdFBsYXRlVmFsdWVzKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgbGV0IGxldHRlcnNBbmROdW1iZXJzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KFwiLVwiKTtcclxuICAgICAgbGV0IGxldHRlcnM6IHN0cmluZ1tdID0gbGV0dGVyc0FuZE51bWJlcnNbMF0uc3BsaXQoXCJcIik7XHJcbiAgICAgIGxldCBudW1iZXJzOiBzdHJpbmdbXSA9IGxldHRlcnNBbmROdW1iZXJzWzFdLnNwbGl0KFwiXCIpO1xyXG4gICAgICByZXR1cm4ge2xldHRlcnMsIG51bWJlcnN9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUExBVEVfTEVUVEVSUyA9IFBMQVRFX0xFVFRFUlM7XHJcbn1cclxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cInBsYXRlXCI+XHJcbiAgQGlmICghZGlzYWJsZWQoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cIm51bWJlcnNcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIG51bWJlckNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1udW1iZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJGluZGV4XCJcclxuICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJcIlxyXG4gICAgICAgICAgICAgICAgb25pbnB1dD1cImlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLm1heExlbmd0aCk7XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImxldHRlcnNcIj5cclxuICAgICAgICBAZm9yIChlbCBvZiBsZXR0ZXJDb250cm9sczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtbnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZGlzYWJsZU9wdGlvbkNlbnRlcmluZyBbZm9ybUNvbnRyb2xOYW1lXT1cIiRpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIFBMQVRFX0xFVFRFUlM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+e3sgb3B0aW9uLmxhYmVsLmVuIH19IC8ge3sgb3B0aW9uLmxhYmVsLmFyIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwbGF0ZUVsZW1lbnRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3BsYXRlRWxlbWVudD5cclxuICA8ZGl2IGNsYXNzPVwicGxhdGUgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1zdHJldGNoIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZzLTE4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGJvcmRlci1yaWdodCB3LTEwMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiQVJQbGF0ZSBib3JkZXItYm90dG9tIGQtZmxleCBoLTUwIHctMTAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZjLWJsYWNrIGJvcmRlci1yaWdodCB3LTUwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgQGZvciAobnVtYmVyQ3RybCBvZiBudW1iZXJDb250cm9sczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IG51bWJlckN0cmwudmFsdWUgfCBhcmFiaWNOdW1iZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1tZWRpdW0gZmMtYmxhY2sgdy01MCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgIEBmb3IgKGxldHRlckN0cmwgb2YgbGV0dGVyQ29udHJvbHM7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8c3Bhbj57eyBsZXR0ZXJDdHJsLnZhbHVlIHwgcGxhdGVMZXR0ZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIkVOUGxhdGUgZC1mbGV4IGgtNTAgdy0xMDBcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZjLWJsYWNrIGJvcmRlci1yaWdodCB3LTUwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgQGZvciAobnVtYmVyQ3RybCBvZiBudW1iZXJDb250cm9sczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IG51bWJlckN0cmwudmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnctbWVkaXVtIGZjLWJsYWNrIHctNTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICBAZm9yIChsZXR0ZXJDdHJsIG9mIGxldHRlckNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPHNwYW4+e3sgbGV0dGVyQ3RybC52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHgtMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPHN2ZyB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTlcIiB2aWV3Qm94PVwiMCAwIDE3IDE5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTEwLjgwNzIgMTYuODc0NEMxMS40NjMzIDE2LjE3OCAxMS4zMjQ0IDE1LjM5MTQgMTAuNzk5NiAxNS4zODI1QzEwLjk4NzIgMTUuOTYwNiAxMC41NTYyIDE2LjMzNDQgMTAuMzkyMiAxNi41MjY2QzkuOTc4OTQgMTYuMTcxMiA5LjU1MDg2IDE1Ljc3NjEgOS4xMDc3OCAxNS4zNjk0QzExLjI2OTUgMTMuNTgxMiAxMy42MzU0IDExLjk5NSAxNi43MjYzIDExLjk0NTJDMTMuMzk4MyAxMC43NDk5IDEwLjc0MTcgMTIuNzgxNSA4LjQ5MjUgMTQuODA4NEM2LjI0MzA4IDEyLjc4MTUgMy41ODY3MiAxMC43NDk5IDAuMjU3ODEyIDExLjk0NTJDMy4zNDk0NCAxMS45OTUgNS43MTUwNyAxMy41ODEgNy44NzcyMiAxNS4zNjk0QzcuNDMzMjkgMTUuNzc2MSA3LjAwNTY0IDE2LjE3MTIgNi41OTE3MiAxNi41MjY2QzYuNDI5MDIgMTYuMzM0NCA1Ljk5Nzc3IDE1Ljk2MDYgNi4xODQzNSAxNS4zODI1QzUuNjU5OTIgMTUuMzkxNCA1LjUyMDg5IDE2LjE3OCA2LjE3NzU4IDE2Ljg3NDRDNS45MTQ5NSAxNy4wOTMxIDUuNDg5NjIgMTcuNDYzMSA1LjE1MTEzIDE3LjU1MThDNC44OTA4MiAxNy42MTk5IDQuNjgxODUgMTcuNDg0NiA0LjYzNDczIDE3LjIwMjZDNC41MzU0MiAxNi42MDY5IDMuNjEyNzEgMTYuNjk1OSAzLjcyNTU0IDE3LjUzNzJDMy44MjkwNyAxOC4zMDQ0IDQuNzYwNjYgMTguNjM5MSA1LjU1ODkyIDE4LjI4MzdDNS44NzU2NSAxOC4xNDI0IDYuMzEwNyAxNy43NDEzIDYuNjY3NzggMTcuNDVDNi44MzExMSAxNy42NDEgNy4yNjIxNSAxOC4wMTQ1IDcuMDc0OTQgMTguNTkzNUM3LjU5OTc5IDE4LjU4MzggNy43Mzg0IDE3Ljc5OCA3LjA4MjM0IDE3LjEwMDVDNy41NDg0NSAxNi43MDI4IDguMDE2MjUgMTYuMjkyNyA4LjQ5MjUgMTUuODg3QzguOTY4MzMgMTYuMjkyNSA5LjQzNjM0IDE2LjcwMjggOS45MDI4OCAxNy4xMDA1QzkuMjQ2MzkgMTcuNzk4IDkuMzg1IDE4LjU4MzggOS45MTAwNiAxOC41OTM1QzkuNzIyODUgMTguMDE0NSAxMC4xNTM5IDE3LjY0MTQgMTAuMzE2OCAxNy40NUMxMC42NzQ1IDE3Ljc0MTMgMTEuMTA5MSAxOC4xNDI0IDExLjQyNjMgMTguMjgzN0MxMi4yMjQ2IDE4LjYzOTEgMTMuMTU1NSAxOC4zMDQ0IDEzLjI1OSAxNy41MzcyQzEzLjM3MTkgMTYuNjk1OSAxMi40NDk2IDE2LjYwNjkgMTIuMzQ5NCAxNy4yMDI2QzEyLjMwMjMgMTcuNDg0NiAxMi4wOTQgMTcuNjE5NiAxMS44MzMyIDE3LjU1MThDMTEuNDk0OCAxNy40NjMxIDExLjA2OTYgMTcuMDkzMSAxMC44MDcyIDE2Ljg3NDRaTTYuNzI1MDQgNS43MjA5M0M2LjIyMzY1IDcuMDQ2MzcgNi4xOTU5NyA4LjUzODk0IDYuOTE2OSAxMC4xODA1QzYuODAxOTUgOC40NzU3NiA3LjE3NTk0IDcuMDY3NzEgNy44NzEzIDYuMDA2Nkw4LjAxODE1IDcuNDY4MzJINy44NDY3OUw4LjAxODE1IDkuMTc5NThINy44NDY3OUw4LjAxODE1IDEwLjg5MDRINy44NDY3OUw4LjAxNzk0IDEyLjU5OTFMNy41MzM2NiAxMy4wODE5SDguNDkyNUg5LjQ1MTU2TDguOTY2ODUgMTIuNTk5MUw5LjEzODQyIDEwLjg5MDRIOC45NjY4NUw5LjEzODQyIDkuMTc5NThIOC45NjY4NUw5LjEzODQyIDcuNDY4MzJIOC45NjY4NUw5LjExMzkxIDYuMDA2NkM5LjgwOTA2IDcuMDY3NzEgMTAuMTgzMyA4LjQ3NjgyIDEwLjA2ODMgMTAuMTgwNUMxMC43ODg2IDguNTM4OTQgMTAuNzYxNiA3LjA0NyAxMC4yNjAyIDUuNzIwOTNDMTEuMTExNSA2LjcyNDc4IDExLjc3MDEgNy44OTg1MSAxMi4wNjYxIDkuMzY1NzJDMTIuMzczMyA3LjUwNDY2IDExLjg0OCA1Ljk4NTY4IDEwLjg4NTIgNC44MDcxQzExLjgxNzQgNS40Nzk0MyAxMi42MTg0IDYuMzMxNTcgMTMuMTc4NSA3LjQ4Mzk2QzEzLjA0OCA1LjcyMDcyIDEyLjE1NTkgNC41Nzc0MiAxMC45MjcgMy43NTgyNEMxMS45ODkgNC4xMDU0IDEyLjg1NjEgNC42ODY0NSAxMy42MzQzIDUuNzE3OThDMTMuMTEzOSAzLjg4ODQgMTEuOTgwMSAzLjE1NTY0IDEwLjU3NSAyLjc0MzYyQzExLjUzMzIgMi42NzM2OCAxMi40Mzg2IDIuNzgxNjUgMTMuMzM0NyAzLjMzOTg4QzEyLjM2MjEgMi4wMjgzOSAxMS4wNTY1IDEuODEwNTUgOS43MzI1NyAxLjk1NjM0QzEwLjI4OTMgMS42NzI3OSAxMC45MTU4IDEuNTMxMDEgMTEuNTg4OCAxLjYzMTM3QzEwLjgzMDIgMS4wNzE4NyA5LjgxODM2IDEuMDE2NTEgOC45NTIyNyAxLjQ4ODEyTDguNDkyNSAwLjMyODEyNUw4LjAzMjEgMS40ODc0OUM3LjE2NTggMS4wMTY1MSA2LjE1NDc2IDEuMDcxNjYgNS4zOTYyMyAxLjYzMTM3QzYuMDY4NzcgMS41MzEyMiA2LjY5NDgzIDEuNjcyNzkgNy4yNTE3OSAxLjk1NjM0QzUuOTI4MjYgMS44MTA1NSA0LjYyMzExIDIuMDI4NiAzLjY0OTkgMy4zMzk4OEM0LjU0NjYyIDIuNzgxNjUgNS40NTEzNyAyLjY3MzY4IDYuNDEwMDEgMi43NDM2MkM1LjAwNTM0IDMuMTU1NjQgMy44NzExMiAzLjg4ODQgMy4zNTExMyA1LjcxNzk4QzQuMTI4NjggNC42ODY2NiA0Ljk5NjI1IDQuMTA1NCA2LjA1ODQyIDMuNzU4MjRDNC44Mjg3IDQuNTc3MjEgMy45MzcwNCA1LjcyMDcyIDMuODA2MjUgNy40ODM5NkM0LjM2NjE4IDYuMzMxNTcgNS4xNjc4MiA1LjQ3OTQzIDYuMDk5NjIgNC44MDcxQzUuMTM2NzYgNS45ODU2OCA0LjYxMTQ5IDcuNTA0NjYgNC45MTg3MSA5LjM2NTcyQzUuMjE0OTQgNy44OTg1MSA1Ljg3MzU0IDYuNzI0NzggNi43MjUwNCA1LjcyMDkzWlwiXHJcbiAgICAgICAgICBmaWxsPVwiIzFEMjUyRFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnctbWVkaXVtIGZzLTEyIGxpbmUtaGVpZ2h0LTEtMlwiPks8YnIvPlM8YnIvPkE8L3NwYW4+XHJcbiAgICAgIDxzdmcgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgPGNpcmNsZSBjeD1cIjQuNDkxNjJcIiBjeT1cIjQuMDYxOTNcIiByPVwiMy45OTE2MlwiIGZpbGw9XCIjMUQyNTJEXCIvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -4,7 +4,7 @@ import { BaseCtrl } from "../base-ctrl";
4
4
  import { MatRadioModule } from "@angular/material/radio";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/material/radio";
7
- export class RadioComponent extends BaseCtrl {
7
+ export class RadioControl extends BaseCtrl {
8
8
  constructor() {
9
9
  super(...arguments);
10
10
  this.options = input.required();
@@ -23,18 +23,18 @@ export class RadioComponent extends BaseCtrl {
23
23
  onRadioChange(value) {
24
24
  this.emitValue(value);
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: RadioComponent, isStandalone: true, selector: "iss-ctrl-radio", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
28
- { provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioControl, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: RadioControl, isStandalone: true, selector: "iss-ctrl-radio", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
28
+ { provide: NG_VALUE_ACCESSOR, useExisting: RadioControl, multi: true }
29
29
  ], usesInheritance: true, ngImport: i0, template: "<mat-radio-group aria-label=\"Select an option\">\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-radio-button>\r\n }\r\n</mat-radio-group>\r\n", styles: [".mat-mdc-radio-group{flex-direction:column!important}\n"], dependencies: [{ kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioComponent, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: RadioControl, decorators: [{
32
32
  type: Component,
33
33
  args: [{ selector: "iss-ctrl-radio", standalone: true, imports: [
34
34
  MatRadioModule,
35
35
  ReactiveFormsModule,
36
36
  ], providers: [
37
- { provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }
37
+ { provide: NG_VALUE_ACCESSOR, useExisting: RadioControl, multi: true }
38
38
  ], template: "<mat-radio-group aria-label=\"Select an option\">\r\n @for (option of options(); track option.value) {\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n [checked]=\"ctrl.value === option.value\"\r\n (change)=\"onRadioChange(option.value)\"\r\n >{{ option.label }}\r\n </mat-radio-button>\r\n }\r\n</mat-radio-group>\r\n", styles: [".mat-mdc-radio-group{flex-direction:column!important}\n"] }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7OztBQWdCdkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxRQUFRO0lBYjVDOztRQWNFLFlBQU8sR0FBMEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBbUJuRDtJQWpCVSxVQUFVLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakUsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQW5CVSxjQUFjO2tHQUFkLGNBQWMsc01BSmQ7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDdkUsaURDakJILGdXQVVBLGdIREFJLGNBQWMsc2lCQUNkLG1CQUFtQjs7MkZBUVYsY0FBYztrQkFiMUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3BCLGFBR1U7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO3FCQUN2RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBpbnB1dCwgSW5wdXRTaWduYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0Jhc2VDdHJsfSBmcm9tIFwiLi4vYmFzZS1jdHJsXCI7XHJcbmltcG9ydCB7TWF0UmFkaW9Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9yYWRpb1wiO1xyXG5pbXBvcnQge09wdGlvbn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvb3B0aW9uLmludGVyZmFjZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaXNzLWN0cmwtcmFkaW9cIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdFJhZGlvTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcmFkaW8uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL3JhZGlvLmNvbXBvbmVudC5zY3NzXCIsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBSYWRpb0NvbXBvbmVudCwgbXVsdGk6IHRydWV9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ3RybCB7XHJcbiAgb3B0aW9uczogSW5wdXRTaWduYWw8T3B0aW9uW10+ID0gaW5wdXQucmVxdWlyZWQoKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KFwiLFwiKS5tYXAodmFsID0+IHZhbC50cmltKCkpO1xyXG5cclxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmVtaXRWYWx1ZShudWxsKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBzZXQgbXVsdGlwbGUgdmFsdWVzIHdoaWxlIHRoZSBjb250cm9sIGlzIGluIHNpbmdsZSBzZWxlY3Rpb24gbW9kZSFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdHJsLnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uUmFkaW9DaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbWl0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJTZWxlY3QgYW4gb3B0aW9uXCI+XHJcbiAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XHJcbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgW2NoZWNrZWRdPVwiY3RybC52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKG9wdGlvbi52YWx1ZSlcIlxyXG4gICAgPnt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gIH1cclxuPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXNzLWN0cmwvc3JjL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7OztBQWdCdkQsTUFBTSxPQUFPLFlBQWEsU0FBUSxRQUFRO0lBYjFDOztRQWNFLFlBQU8sR0FBMEIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBbUJuRDtJQWpCVSxVQUFVLENBQUMsS0FBb0I7UUFDdEMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFakUsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQW5CVSxZQUFZO2tHQUFaLFlBQVksc01BSlo7WUFDVCxFQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7U0FDckUsaURDakJILGdXQVVBLGdIREFJLGNBQWMsc2lCQUNkLG1CQUFtQjs7MkZBUVYsWUFBWTtrQkFieEIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxtQkFBbUI7cUJBQ3BCLGFBR1U7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDckUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgaW5wdXQsIElucHV0U2lnbmFsfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtCYXNlQ3RybH0gZnJvbSBcIi4uL2Jhc2UtY3RybFwiO1xyXG5pbXBvcnQge01hdFJhZGlvTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW9cIjtcclxuaW1wb3J0IHtPcHRpb259IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL29wdGlvbi5pbnRlcmZhY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImlzcy1jdHJsLXJhZGlvXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRSYWRpb01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogXCIuL3JhZGlvLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9yYWRpby5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogUmFkaW9Db250cm9sLCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2wgZXh0ZW5kcyBCYXNlQ3RybCB7XHJcbiAgb3B0aW9uczogSW5wdXRTaWduYWw8T3B0aW9uW10+ID0gaW5wdXQucmVxdWlyZWQoKTtcclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsdWVzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KFwiLFwiKS5tYXAodmFsID0+IHZhbC50cmltKCkpO1xyXG5cclxuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmVtaXRWYWx1ZShudWxsKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBzZXQgbXVsdGlwbGUgdmFsdWVzIHdoaWxlIHRoZSBjb250cm9sIGlzIGluIHNpbmdsZSBzZWxlY3Rpb24gbW9kZSFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdHJsLnNldFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uUmFkaW9DaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5lbWl0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJTZWxlY3QgYW4gb3B0aW9uXCI+XHJcbiAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XHJcbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcclxuICAgICAgW2NoZWNrZWRdPVwiY3RybC52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKG9wdGlvbi52YWx1ZSlcIlxyXG4gICAgPnt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gIH1cclxuPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiJdfQ==