ngx-dynamic-entity 1.0.0 → 1.1.0

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 (47) hide show
  1. package/README.md +129 -139
  2. package/esm2022/lib/field-types/array-field.component.mjs +101 -101
  3. package/esm2022/lib/field-types/boolean-field.component.mjs +59 -59
  4. package/esm2022/lib/field-types/checkbox-field.component.mjs +45 -45
  5. package/esm2022/lib/field-types/currency-field.component.mjs +51 -51
  6. package/esm2022/lib/field-types/date-field.component.mjs +43 -43
  7. package/esm2022/lib/field-types/dropdown-field.component.mjs +81 -81
  8. package/esm2022/lib/field-types/email-field.component.mjs +61 -61
  9. package/esm2022/lib/field-types/entity-ref-field.component.mjs +67 -67
  10. package/esm2022/lib/field-types/file-field.component.mjs +85 -85
  11. package/esm2022/lib/field-types/group-field.component.mjs +47 -47
  12. package/esm2022/lib/field-types/image-field.component.mjs +89 -89
  13. package/esm2022/lib/field-types/month-year-field.component.mjs +77 -77
  14. package/esm2022/lib/field-types/multi-select-field.component.mjs +63 -63
  15. package/esm2022/lib/field-types/number-field.component.mjs +65 -65
  16. package/esm2022/lib/field-types/password-field.component.mjs +65 -65
  17. package/esm2022/lib/field-types/radio-field.component.mjs +63 -63
  18. package/esm2022/lib/field-types/text-field.component.mjs +59 -59
  19. package/esm2022/lib/field-types/textarea-field.component.mjs +45 -45
  20. package/esm2022/lib/form/dynamic-field/dynamic-field.component.mjs +1 -1
  21. package/esm2022/lib/form/dynamic-form.component.mjs +183 -10
  22. package/esm2022/lib/form/dynamic-record-form.component.mjs +36 -11
  23. package/esm2022/lib/providers/provide-field-types.mjs +1 -1
  24. package/esm2022/lib/providers/provide-ngx-dynamic-entity.mjs +3 -2
  25. package/esm2022/lib/services/cascade-data.service.mjs +1 -1
  26. package/esm2022/lib/services/entity-ref-cache.mjs +1 -1
  27. package/esm2022/lib/services/entity-ref-registry.service.mjs +1 -1
  28. package/esm2022/lib/services/entity-ref-selection.service.mjs +1 -1
  29. package/esm2022/lib/services/entity-reference.service.mjs +1 -1
  30. package/esm2022/lib/services/field-registry.service.mjs +1 -1
  31. package/esm2022/lib/services/file-upload.service.mjs +1 -1
  32. package/esm2022/lib/services/rbac.service.mjs +1 -1
  33. package/esm2022/lib/services/validator-registry.service.mjs +12 -1
  34. package/esm2022/lib/tokens/injection-tokens.mjs +17 -1
  35. package/esm2022/public-api.mjs +18 -2
  36. package/fesm2022/ngx-dynamic-entity.mjs +1392 -1166
  37. package/fesm2022/ngx-dynamic-entity.mjs.map +1 -1
  38. package/lib/field-types/dropdown-field.component.d.ts +1 -1
  39. package/lib/field-types/entity-ref-field.component.d.ts +1 -1
  40. package/lib/field-types/multi-select-field.component.d.ts +1 -1
  41. package/lib/field-types/radio-field.component.d.ts +1 -1
  42. package/lib/form/dynamic-form.component.d.ts +93 -6
  43. package/lib/form/dynamic-record-form.component.d.ts +13 -2
  44. package/lib/providers/provide-ngx-dynamic-entity.d.ts +8 -2
  45. package/lib/tokens/injection-tokens.d.ts +24 -2
  46. package/package.json +17 -18
  47. package/public-api.d.ts +10 -0
@@ -70,46 +70,46 @@ export class DropdownFieldComponent {
70
70
  return 'Invalid selection.';
71
71
  }
72
72
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DropdownFieldComponent, isStandalone: true, selector: "ngx-dropdown-field", inputs: { field: "field", language: "language", control: "control", readonly: "readonly", masked: "masked" }, ngImport: i0, template: `
74
- <div
75
- class="ngx-field ngx-field--dropdown"
76
- [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type"
77
- [class.ngx-field--readonly]="readonly"
78
- [class.ngx-field--masked]="masked"
79
- [class.ngx-field--invalid]="control && control.invalid && control.touched"
80
- >
81
- <label class="ngx-field__label" [attr.for]="field.id">
82
- {{ label }}
83
- @if (field.validators?.required) { <span class="ngx-field__req">*</span> }
84
- </label>
85
- @if (masked) {
86
- <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
87
- } @else if (readonly) {
88
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
89
- } @else {
90
- <select
91
- [id]="field.id"
92
- class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
93
- [formControl]="$any(control)"
94
- [compareWith]="compareFn"
95
- [attr.disabled]="field.disabled ? true : null"
96
- [attr.aria-invalid]="control.invalid && control.touched"
97
- [attr.aria-describedby]="errorMessage ? field.id + '-error' : null"
98
- >
99
- <option [value]="''">{{ placeholder || 'Select...' }}</option>
100
- @for (option of options(); track getOptLabel(option)) {
101
- @if (isObjectVal(option)) {
102
- <option [ngValue]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
103
- } @else {
104
- <option [value]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
105
- }
106
- }
107
- </select>
108
- @if (errorMessage) {
109
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'" [id]="field.id + '-error'" role="alert">{{ errorMessage }}</span>
110
- }
111
- }
112
- </div>
73
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DropdownFieldComponent, isStandalone: true, selector: "ngx-dropdown-field", inputs: { field: "field", language: "language", control: "control", readonly: "readonly", masked: "masked" }, ngImport: i0, template: `
74
+ <div
75
+ class="ngx-field ngx-field--dropdown"
76
+ [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type"
77
+ [class.ngx-field--readonly]="readonly"
78
+ [class.ngx-field--masked]="masked"
79
+ [class.ngx-field--invalid]="control && control.invalid && control.touched"
80
+ >
81
+ <label class="ngx-field__label" [attr.for]="field.id">
82
+ {{ label }}
83
+ @if (field.validators?.required) { <span class="ngx-field__req">*</span> }
84
+ </label>
85
+ @if (masked) {
86
+ <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
87
+ } @else if (readonly) {
88
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
89
+ } @else {
90
+ <select
91
+ [id]="field.id"
92
+ class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
93
+ [formControl]="$any(control)"
94
+ [compareWith]="compareFn"
95
+ [attr.disabled]="field.disabled ? true : null"
96
+ [attr.aria-invalid]="control.invalid && control.touched"
97
+ [attr.aria-describedby]="errorMessage ? field.id + '-error' : null"
98
+ >
99
+ <option [value]="''">{{ placeholder || 'Select...' }}</option>
100
+ @for (option of options(); track getOptLabel(option)) {
101
+ @if (isObjectVal(option)) {
102
+ <option [ngValue]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
103
+ } @else {
104
+ <option [value]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
105
+ }
106
+ }
107
+ </select>
108
+ @if (errorMessage) {
109
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'" [id]="field.id + '-error'" role="alert">{{ errorMessage }}</span>
110
+ }
111
+ }
112
+ </div>
113
113
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
114
114
  }
115
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownFieldComponent, decorators: [{
@@ -118,46 +118,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
118
118
  selector: 'ngx-dropdown-field',
119
119
  standalone: true,
120
120
  imports: [ReactiveFormsModule],
121
- template: `
122
- <div
123
- class="ngx-field ngx-field--dropdown"
124
- [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type"
125
- [class.ngx-field--readonly]="readonly"
126
- [class.ngx-field--masked]="masked"
127
- [class.ngx-field--invalid]="control && control.invalid && control.touched"
128
- >
129
- <label class="ngx-field__label" [attr.for]="field.id">
130
- {{ label }}
131
- @if (field.validators?.required) { <span class="ngx-field__req">*</span> }
132
- </label>
133
- @if (masked) {
134
- <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
135
- } @else if (readonly) {
136
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
137
- } @else {
138
- <select
139
- [id]="field.id"
140
- class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
141
- [formControl]="$any(control)"
142
- [compareWith]="compareFn"
143
- [attr.disabled]="field.disabled ? true : null"
144
- [attr.aria-invalid]="control.invalid && control.touched"
145
- [attr.aria-describedby]="errorMessage ? field.id + '-error' : null"
146
- >
147
- <option [value]="''">{{ placeholder || 'Select...' }}</option>
148
- @for (option of options(); track getOptLabel(option)) {
149
- @if (isObjectVal(option)) {
150
- <option [ngValue]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
151
- } @else {
152
- <option [value]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
153
- }
154
- }
155
- </select>
156
- @if (errorMessage) {
157
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'" [id]="field.id + '-error'" role="alert">{{ errorMessage }}</span>
158
- }
159
- }
160
- </div>
121
+ template: `
122
+ <div
123
+ class="ngx-field ngx-field--dropdown"
124
+ [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type"
125
+ [class.ngx-field--readonly]="readonly"
126
+ [class.ngx-field--masked]="masked"
127
+ [class.ngx-field--invalid]="control && control.invalid && control.touched"
128
+ >
129
+ <label class="ngx-field__label" [attr.for]="field.id">
130
+ {{ label }}
131
+ @if (field.validators?.required) { <span class="ngx-field__req">*</span> }
132
+ </label>
133
+ @if (masked) {
134
+ <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
135
+ } @else if (readonly) {
136
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
137
+ } @else {
138
+ <select
139
+ [id]="field.id"
140
+ class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
141
+ [formControl]="$any(control)"
142
+ [compareWith]="compareFn"
143
+ [attr.disabled]="field.disabled ? true : null"
144
+ [attr.aria-invalid]="control.invalid && control.touched"
145
+ [attr.aria-describedby]="errorMessage ? field.id + '-error' : null"
146
+ >
147
+ <option [value]="''">{{ placeholder || 'Select...' }}</option>
148
+ @for (option of options(); track getOptLabel(option)) {
149
+ @if (isObjectVal(option)) {
150
+ <option [ngValue]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
151
+ } @else {
152
+ <option [value]="getOptStoredVal(option)">{{ getOptLabel(option) }}</option>
153
+ }
154
+ }
155
+ </select>
156
+ @if (errorMessage) {
157
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'" [id]="field.id + '-error'" role="alert">{{ errorMessage }}</span>
158
+ }
159
+ }
160
+ </div>
161
161
  `,
162
162
  }]
163
163
  }], propDecorators: { field: [{
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
171
171
  }], masked: [{
172
172
  type: Input
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC10eXBlcy9kcm9wZG93bi1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFnRGxHLE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRWpELE1BQU0sQ0FBcUI7SUFDM0IsU0FBUyxHQUFHLElBQUksQ0FBQztJQUV6Qiw2RkFBNkY7SUFDN0YsSUFBYSxLQUFLLENBQUMsS0FBd0I7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztRQUMvQixvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENB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LE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUM5QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7aUJBQ0Y7OEJBUWMsS0FBSztzQkFBakIsS0FBSztnQkFRTyxRQUFRO3NCQUFwQixLQUFLO2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHR5cGUgeyBEcm9wZG93bk9wdGlvbiwgTmVzdGVkRmllbGRDb25maWcgfSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgZ2V0T3B0aW9uU3RvcmVkVmFsdWUsXHJcbiAgcmVzb2x2ZUxhYmVsLFxyXG4gIHJlc29sdmVPcHRpb25MYWJlbCxcclxuICB2YWx1ZXNNYXRjaCxcclxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcbmltcG9ydCB7IExvb2t1cFJlZ2lzdHJ5U2VydmljZSwgcmVmcmVzaENob2ljZU9wdGlvbnMgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb29rdXAtcmVnaXN0cnkuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1kcm9wZG93bi1maWVsZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJuZ3gtZmllbGQgbmd4LWZpZWxkLS1kcm9wZG93blwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWRcIiBbYXR0ci5kYXRhLWZpZWxkLXR5cGVdPVwiZmllbGQudHlwZVwiXHJcbiAgICAgIFtjbGFzcy5uZ3gtZmllbGQtLXJlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgW2NsYXNzLm5neC1maWVsZC0tbWFza2VkXT1cIm1hc2tlZFwiXHJcbiAgICAgIFtjbGFzcy5uZ3gtZmllbGQtLWludmFsaWRdPVwiY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkXCJcclxuICAgID5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibmd4LWZpZWxkX19sYWJlbFwiIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPlxyXG4gICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgICAgQGlmIChmaWVsZC52YWxpZGF0b3JzPy5yZXF1aXJlZCkgeyA8c3BhbiBjbGFzcz1cIm5neC1maWVsZF9fcmVxXCI+Kjwvc3Bhbj4gfVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICBAaWYgKG1hc2tlZCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZSBuZ3gtZmllbGRfX3ZhbHVlLS1tYXNrZWRcIiBbYXR0ci5kYXRhLXRlc3RpZF09XCInZmllbGQtJyArIGZpZWxkLmlkICsgJy1tYXNrZWQnXCI+WFhYWFhYWFhYPC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIGlmIChyZWFkb25seSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZVwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLXZhbHVlJ1wiPnt7IGdldExhYmVsKGNvbnRyb2wudmFsdWUpIH19PC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICBbaWRdPVwiZmllbGQuaWRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJuZ3gtZmllbGRfX2lucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctaW5wdXQnXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGNvbnRyb2wpXCJcclxuICAgICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm5cIlxyXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImVycm9yTWVzc2FnZSA/IGZpZWxkLmlkICsgJy1lcnJvcicgOiBudWxsXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCInJ1wiPnt7IHBsYWNlaG9sZGVyIHx8ICdTZWxlY3QuLi4nIH19PC9vcHRpb24+XHJcbiAgICAgICAgICBAZm9yIChvcHRpb24gb2Ygb3B0aW9ucygpOyB0cmFjayBnZXRPcHRMYWJlbChvcHRpb24pKSB7XHJcbiAgICAgICAgICAgIEBpZiAoaXNPYmplY3RWYWwob3B0aW9uKSkge1xyXG4gICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiZ2V0T3B0U3RvcmVkVmFsKG9wdGlvbilcIj57eyBnZXRPcHRMYWJlbChvcHRpb24pIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cImdldE9wdFN0b3JlZFZhbChvcHRpb24pXCI+e3sgZ2V0T3B0TGFiZWwob3B0aW9uKSB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgQGlmIChlcnJvck1lc3NhZ2UpIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX19lcnJvclwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLWVycm9yJ1wiIFtpZF09XCJmaWVsZC5pZCArICctZXJyb3InXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRmllbGRDb21wb25lbnQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwcyA9IGluamVjdChMb29rdXBSZWdpc3RyeVNlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIF9maWVsZCE6IE5lc3RlZEZpZWxkQ29uZmlnO1xyXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gJ2VuJztcclxuXHJcbiAgLyoqIFNldHRlci1iYXNlZCBzbyBvcHRpb25zIHJlc29sdmUgaG93ZXZlciB0aGUgaW5wdXQgaXMgc2V0IOKAlCBzZWUgYHJlZnJlc2hDaG9pY2VPcHRpb25zYC4gKi9cclxuICBASW5wdXQoKSBzZXQgZmllbGQodmFsdWU6IE5lc3RlZEZpZWxkQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xyXG4gICAgcmVmcmVzaENob2ljZU9wdGlvbnModGhpcywgdGhpcy5sb29rdXBzKTtcclxuICB9XHJcbiAgZ2V0IGZpZWxkKCk6IE5lc3RlZEZpZWxkQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IHZhbHVlIHx8ICdlbic7XHJcbiAgICByZWZyZXNoQ2hvaWNlT3B0aW9ucyh0aGlzLCB0aGlzLmxvb2t1cHMpO1xyXG4gIH1cclxuICBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIElubGluZSBgb3B0aW9uc2AsIG9yIHRoZSBmaWVsZCdzIG5hbWVkIGxpc3QgcmVzb2x2ZWQgdGhyb3VnaCB0aGUgcmVnaXN0cnkgKMKnNi4zKS4gKi9cclxuICByZWFkb25seSBvcHRpb25zID0gc2lnbmFsPERyb3Bkb3duT3B0aW9uW10+KFtdKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFyZUZuID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IHZhbHVlc01hdGNoKG8xLCBvMiwgdGhpcy5sYW5ndWFnZSk7XHJcblxyXG4gIGlzT2JqZWN0VmFsKG9wdGlvbjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWwgPSBnZXRPcHRpb25TdG9yZWRWYWx1ZShvcHRpb24pO1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHJlc29sdmVMYWJlbCh0aGlzLmZpZWxkPy5sYWJlbCwgdGhpcy5sYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiByZXNvbHZlTGFiZWwodGhpcy5maWVsZD8ucGxhY2Vob2xkZXIsIHRoaXMubGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0U3RvcmVkVmFsKG9wdGlvbjogYW55KTogYW55IHtcclxuICAgIHJldHVybiBnZXRPcHRpb25TdG9yZWRWYWx1ZShvcHRpb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3B0TGFiZWwob3B0aW9uOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHJlc29sdmVPcHRpb25MYWJlbChvcHRpb24sIHRoaXMubGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhZC1vbmx5IGRpc3BsYXkuIE5ldmVyIGF3YWl0cyAowqc2LjIpOiBhIHdhcm0gbGlzdCByZXNvbHZlcyB0aGUgbGFiZWwsIGEgY29sZCBvbmUgZmFsbHNcclxuICAgKiBiYWNrIHRvIHRoZSBzdG9yZWQgdGV4dCDigJQgd2hpY2ggdW5kZXIgdGhlIMKnMiBjb250cmFjdCAqaXMqIHRoZSBkaXNwbGF5IHZhbHVlLCBzbyBpdCBpc1xyXG4gICAqIG5ldmVyIHdyb25nLCBvbmx5IHVubG9jYWxpc2VkLlxyXG4gICAqL1xyXG4gIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gJ+KAlCc7XHJcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMoKS5maW5kKG8gPT4gdmFsdWVzTWF0Y2goZ2V0T3B0aW9uU3RvcmVkVmFsdWUobyksIHZhbHVlLCB0aGlzLmxhbmd1YWdlKSk7XHJcbiAgICBpZiAob3B0aW9uKSByZXR1cm4gdGhpcy5nZXRPcHRMYWJlbChvcHRpb24pO1xyXG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5sb29rdXBzLmxhYmVsRm9yKHRoaXMuZmllbGQ/Lmxpc3ROYW1lLCB2YWx1ZSwgdGhpcy5sYW5ndWFnZSk7XHJcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyByZXNvbHZlTGFiZWwodmFsdWUsIHRoaXMubGFuZ3VhZ2UpIDogKHZhbHVlID8/ICfigJQnKTtcclxuICB9XHJcblxyXG4gIGdldCBlcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5jb250cm9sIHx8ICF0aGlzLmNvbnRyb2wuZXJyb3JzIHx8ICF0aGlzLmNvbnRyb2wudG91Y2hlZCkgcmV0dXJuICcnO1xyXG4gICAgY29uc3QgZXJycyA9IHRoaXMuY29udHJvbC5lcnJvcnM7XHJcbiAgICBpZiAoZXJyc1sncmVxdWlyZWQnXSkgcmV0dXJuICdQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4nO1xyXG4gICAgcmV0dXJuICdJbnZhbGlkIHNlbGVjdGlvbi4nO1xyXG4gIH1cclxufVxyXG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC10eXBlcy9kcm9wZG93bi1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFnRGxHLE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRWpELE1BQU0sQ0FBcUI7SUFDM0IsU0FBUyxHQUFHLElBQUksQ0FBQztJQUV6Qiw2RkFBNkY7SUFDN0YsSUFBYSxLQUFLLENBQUMsS0FBd0I7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFhLFFBQVEsQ0FBQyxLQUFhO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztRQUMvQixvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENB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LE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUM5QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7aUJBQ0Y7OEJBUWMsS0FBSztzQkFBakIsS0FBSztnQkFRTyxRQUFRO3NCQUFwQixLQUFLO2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7IERyb3Bkb3duT3B0aW9uLCBOZXN0ZWRGaWVsZENvbmZpZyB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7XG4gIGdldE9wdGlvblN0b3JlZFZhbHVlLFxuICByZXNvbHZlTGFiZWwsXG4gIHJlc29sdmVPcHRpb25MYWJlbCxcbiAgdmFsdWVzTWF0Y2gsXG59IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7IExvb2t1cFJlZ2lzdHJ5U2VydmljZSwgcmVmcmVzaENob2ljZU9wdGlvbnMgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb29rdXAtcmVnaXN0cnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wZG93bi1maWVsZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm5neC1maWVsZCBuZ3gtZmllbGQtLWRyb3Bkb3duXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWRcIiBbYXR0ci5kYXRhLWZpZWxkLXR5cGVdPVwiZmllbGQudHlwZVwiXG4gICAgICBbY2xhc3Mubmd4LWZpZWxkLS1yZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICBbY2xhc3Mubmd4LWZpZWxkLS1tYXNrZWRdPVwibWFza2VkXCJcbiAgICAgIFtjbGFzcy5uZ3gtZmllbGQtLWludmFsaWRdPVwiY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJuZ3gtZmllbGRfX2xhYmVsXCIgW2F0dHIuZm9yXT1cImZpZWxkLmlkXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIEBpZiAoZmllbGQudmFsaWRhdG9ycz8ucmVxdWlyZWQpIHsgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX3JlcVwiPio8L3NwYW4+IH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICBAaWYgKG1hc2tlZCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cIm5neC1maWVsZF9fdmFsdWUgbmd4LWZpZWxkX192YWx1ZS0tbWFza2VkXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctbWFza2VkJ1wiPlhYWFhYWFhYWDwvc3Bhbj5cbiAgICAgIH0gQGVsc2UgaWYgKHJlYWRvbmx5KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZVwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLXZhbHVlJ1wiPnt7IGdldExhYmVsKGNvbnRyb2wudmFsdWUpIH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBbaWRdPVwiZmllbGQuaWRcIlxuICAgICAgICAgIGNsYXNzPVwibmd4LWZpZWxkX19pbnB1dFwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLWlucHV0J1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoY29udHJvbClcIlxuICAgICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRm5cIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJjb250cm9sLmludmFsaWQgJiYgY29udHJvbC50b3VjaGVkXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImVycm9yTWVzc2FnZSA/IGZpZWxkLmlkICsgJy1lcnJvcicgOiBudWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIicnXCI+e3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjdC4uLicgfX08L29wdGlvbj5cbiAgICAgICAgICBAZm9yIChvcHRpb24gb2Ygb3B0aW9ucygpOyB0cmFjayBnZXRPcHRMYWJlbChvcHRpb24pKSB7XG4gICAgICAgICAgICBAaWYgKGlzT2JqZWN0VmFsKG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJnZXRPcHRTdG9yZWRWYWwob3B0aW9uKVwiPnt7IGdldE9wdExhYmVsKG9wdGlvbikgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJnZXRPcHRTdG9yZWRWYWwob3B0aW9uKVwiPnt7IGdldE9wdExhYmVsKG9wdGlvbikgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICBAaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX19lcnJvclwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLWVycm9yJ1wiIFtpZF09XCJmaWVsZC5pZCArICctZXJyb3InXCIgcm9sZT1cImFsZXJ0XCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duRmllbGRDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvb2t1cHMgPSBpbmplY3QoTG9va3VwUmVnaXN0cnlTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9maWVsZCE6IE5lc3RlZEZpZWxkQ29uZmlnO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9ICdlbic7XG5cbiAgLyoqIFNldHRlci1iYXNlZCBzbyBvcHRpb25zIHJlc29sdmUgaG93ZXZlciB0aGUgaW5wdXQgaXMgc2V0IOKAlCBzZWUgYHJlZnJlc2hDaG9pY2VPcHRpb25zYC4gKi9cbiAgQElucHV0KCkgc2V0IGZpZWxkKHZhbHVlOiBOZXN0ZWRGaWVsZENvbmZpZykge1xuICAgIHRoaXMuX2ZpZWxkID0gdmFsdWU7XG4gICAgcmVmcmVzaENob2ljZU9wdGlvbnModGhpcywgdGhpcy5sb29rdXBzKTtcbiAgfVxuICBnZXQgZmllbGQoKTogTmVzdGVkRmllbGRDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbGFuZ3VhZ2UgPSB2YWx1ZSB8fCAnZW4nO1xuICAgIHJlZnJlc2hDaG9pY2VPcHRpb25zKHRoaXMsIHRoaXMubG9va3Vwcyk7XG4gIH1cbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlO1xuICB9XG5cbiAgQElucHV0KCkgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWFza2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIElubGluZSBgb3B0aW9uc2AsIG9yIHRoZSBmaWVsZCdzIG5hbWVkIGxpc3QgcmVzb2x2ZWQgdGhyb3VnaCB0aGUgcmVnaXN0cnkgKMKnNi4zKS4gKi9cbiAgcmVhZG9ubHkgb3B0aW9ucyA9IHNpZ25hbDxEcm9wZG93bk9wdGlvbltdPihbXSk7XG5cbiAgcmVhZG9ubHkgY29tcGFyZUZuID0gKG8xOiBhbnksIG8yOiBhbnkpOiBib29sZWFuID0+IHZhbHVlc01hdGNoKG8xLCBvMiwgdGhpcy5sYW5ndWFnZSk7XG5cbiAgaXNPYmplY3RWYWwob3B0aW9uOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWwgPSBnZXRPcHRpb25TdG9yZWRWYWx1ZShvcHRpb24pO1xuICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGw7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZUxhYmVsKHRoaXMuZmllbGQ/LmxhYmVsLCB0aGlzLmxhbmd1YWdlKTtcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiByZXNvbHZlTGFiZWwodGhpcy5maWVsZD8ucGxhY2Vob2xkZXIsIHRoaXMubGFuZ3VhZ2UpO1xuICB9XG5cbiAgZ2V0T3B0U3RvcmVkVmFsKG9wdGlvbjogYW55KTogYW55IHtcbiAgICByZXR1cm4gZ2V0T3B0aW9uU3RvcmVkVmFsdWUob3B0aW9uKTtcbiAgfVxuXG4gIGdldE9wdExhYmVsKG9wdGlvbjogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZU9wdGlvbkxhYmVsKG9wdGlvbiwgdGhpcy5sYW5ndWFnZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZC1vbmx5IGRpc3BsYXkuIE5ldmVyIGF3YWl0cyAowqc2LjIpOiBhIHdhcm0gbGlzdCByZXNvbHZlcyB0aGUgbGFiZWwsIGEgY29sZCBvbmUgZmFsbHNcbiAgICogYmFjayB0byB0aGUgc3RvcmVkIHRleHQg4oCUIHdoaWNoIHVuZGVyIHRoZSDCpzIgY29udHJhY3QgKmlzKiB0aGUgZGlzcGxheSB2YWx1ZSwgc28gaXQgaXNcbiAgICogbmV2ZXIgd3JvbmcsIG9ubHkgdW5sb2NhbGlzZWQuXG4gICAqL1xuICBnZXRMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiAn4oCUJztcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMoKS5maW5kKG8gPT4gdmFsdWVzTWF0Y2goZ2V0T3B0aW9uU3RvcmVkVmFsdWUobyksIHZhbHVlLCB0aGlzLmxhbmd1YWdlKSk7XG4gICAgaWYgKG9wdGlvbikgcmV0dXJuIHRoaXMuZ2V0T3B0TGFiZWwob3B0aW9uKTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmxvb2t1cHMubGFiZWxGb3IodGhpcy5maWVsZD8ubGlzdE5hbWUsIHZhbHVlLCB0aGlzLmxhbmd1YWdlKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gcmVzb2x2ZUxhYmVsKHZhbHVlLCB0aGlzLmxhbmd1YWdlKSA6ICh2YWx1ZSA/PyAn4oCUJyk7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wgfHwgIXRoaXMuY29udHJvbC5lcnJvcnMgfHwgIXRoaXMuY29udHJvbC50b3VjaGVkKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZXJycyA9IHRoaXMuY29udHJvbC5lcnJvcnM7XG4gICAgaWYgKGVycnNbJ3JlcXVpcmVkJ10pIHJldHVybiAnUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uJztcbiAgICByZXR1cm4gJ0ludmFsaWQgc2VsZWN0aW9uLic7XG4gIH1cbn1cbiJdfQ==
@@ -17,36 +17,36 @@ export class EmailFieldComponent {
17
17
  return resolveLabel(this.field?.placeholder, this.language);
18
18
  }
19
19
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EmailFieldComponent, isStandalone: true, selector: "ngx-email-field", inputs: { field: "field", control: "control", language: "language", readonly: "readonly", masked: "masked" }, ngImport: i0, template: `
21
- <div class="ngx-field ngx-field--email"
22
- [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
23
- <label class="ngx-field__label">{{ label }}</label>
24
- @if (masked) {
25
- <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
26
- } @else if (readonly) {
27
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">
28
- <a [href]="'mailto:' + control.value" class="ngx-field__email-link">{{ control.value || '—' }}</a>
29
- </span>
30
- } @else {
31
- <input
32
- class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
33
- type="email"
34
- autocomplete="email"
35
- [formControl]="$any(control)"
36
- [placeholder]="placeholder || 'you@example.com'"
37
- [attr.disabled]="field.disabled ? true : null"
38
- />
39
- @if (control.invalid && control.touched) {
40
- @if (control.errors?.['required']) {
41
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Email is required</span>
42
- } @else if (control.errors?.['email']) {
43
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Enter a valid email address</span>
44
- } @else {
45
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
46
- }
47
- }
48
- }
49
- </div>
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EmailFieldComponent, isStandalone: true, selector: "ngx-email-field", inputs: { field: "field", control: "control", language: "language", readonly: "readonly", masked: "masked" }, ngImport: i0, template: `
21
+ <div class="ngx-field ngx-field--email"
22
+ [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
23
+ <label class="ngx-field__label">{{ label }}</label>
24
+ @if (masked) {
25
+ <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
26
+ } @else if (readonly) {
27
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">
28
+ <a [href]="'mailto:' + control.value" class="ngx-field__email-link">{{ control.value || '—' }}</a>
29
+ </span>
30
+ } @else {
31
+ <input
32
+ class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
33
+ type="email"
34
+ autocomplete="email"
35
+ [formControl]="$any(control)"
36
+ [placeholder]="placeholder || 'you@example.com'"
37
+ [attr.disabled]="field.disabled ? true : null"
38
+ />
39
+ @if (control.invalid && control.touched) {
40
+ @if (control.errors?.['required']) {
41
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Email is required</span>
42
+ } @else if (control.errors?.['email']) {
43
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Enter a valid email address</span>
44
+ } @else {
45
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
46
+ }
47
+ }
48
+ }
49
+ </div>
50
50
  `, isInline: true, 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"] }] });
51
51
  }
52
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmailFieldComponent, decorators: [{
@@ -55,36 +55,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
55
55
  selector: 'ngx-email-field',
56
56
  standalone: true,
57
57
  imports: [ReactiveFormsModule],
58
- template: `
59
- <div class="ngx-field ngx-field--email"
60
- [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
61
- <label class="ngx-field__label">{{ label }}</label>
62
- @if (masked) {
63
- <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
64
- } @else if (readonly) {
65
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">
66
- <a [href]="'mailto:' + control.value" class="ngx-field__email-link">{{ control.value || '—' }}</a>
67
- </span>
68
- } @else {
69
- <input
70
- class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
71
- type="email"
72
- autocomplete="email"
73
- [formControl]="$any(control)"
74
- [placeholder]="placeholder || 'you@example.com'"
75
- [attr.disabled]="field.disabled ? true : null"
76
- />
77
- @if (control.invalid && control.touched) {
78
- @if (control.errors?.['required']) {
79
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Email is required</span>
80
- } @else if (control.errors?.['email']) {
81
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Enter a valid email address</span>
82
- } @else {
83
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
84
- }
85
- }
86
- }
87
- </div>
58
+ template: `
59
+ <div class="ngx-field ngx-field--email"
60
+ [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
61
+ <label class="ngx-field__label">{{ label }}</label>
62
+ @if (masked) {
63
+ <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
64
+ } @else if (readonly) {
65
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">
66
+ <a [href]="'mailto:' + control.value" class="ngx-field__email-link">{{ control.value || '—' }}</a>
67
+ </span>
68
+ } @else {
69
+ <input
70
+ class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
71
+ type="email"
72
+ autocomplete="email"
73
+ [formControl]="$any(control)"
74
+ [placeholder]="placeholder || 'you@example.com'"
75
+ [attr.disabled]="field.disabled ? true : null"
76
+ />
77
+ @if (control.invalid && control.touched) {
78
+ @if (control.errors?.['required']) {
79
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Email is required</span>
80
+ } @else if (control.errors?.['email']) {
81
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">Enter a valid email address</span>
82
+ } @else {
83
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
84
+ }
85
+ }
86
+ }
87
+ </div>
88
88
  `,
89
89
  }]
90
90
  }], propDecorators: { field: [{
@@ -98,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
98
98
  }], masked: [{
99
99
  type: Input
100
100
  }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC10eXBlcy9lbWFpbC1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRXBELG1FQUFtRTtBQXFDbkUsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixLQUFLLENBQXFCO0lBQzFCLE9BQU8sQ0FBbUI7SUFDMUIsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFFakMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQzt3R0FiVSxtQkFBbUI7NEZBQW5CLG1CQUFtQix5TEFoQ3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQsMkRBL0JTLG1CQUFtQjs7NEZBaUNsQixtQkFBbUI7a0JBcEMvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQ7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB0eXBlIHsgTmVzdGVkRmllbGRDb25maWcgfSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XHJcbmltcG9ydCB7IHJlc29sdmVMYWJlbCB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuXHJcbi8qKiBFbWFpbCBmaWVsZDogdHlwZT1cImVtYWlsXCIgaW5wdXQgd2l0aCBpbmxpbmUgdmFsaWRhdGlvbiBoaW50LiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1lbWFpbC1maWVsZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJuZ3gtZmllbGQgbmd4LWZpZWxkLS1lbWFpbFwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWRcIiBbYXR0ci5kYXRhLWZpZWxkLXR5cGVdPVwiZmllbGQudHlwZVwiIFtjbGFzcy5uZ3gtZmllbGQtLXJlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2NsYXNzLm5neC1maWVsZC0tbWFza2VkXT1cIm1hc2tlZFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJuZ3gtZmllbGRfX2xhYmVsXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICBAaWYgKG1hc2tlZCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZSBuZ3gtZmllbGRfX3ZhbHVlLS1tYXNrZWRcIiBbYXR0ci5kYXRhLXRlc3RpZF09XCInZmllbGQtJyArIGZpZWxkLmlkICsgJy1tYXNrZWQnXCI+WFhYWFhYWFhYPC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIGlmIChyZWFkb25seSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZVwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLXZhbHVlJ1wiPlxyXG4gICAgICAgICAgPGEgW2hyZWZdPVwiJ21haWx0bzonICsgY29udHJvbC52YWx1ZVwiIGNsYXNzPVwibmd4LWZpZWxkX19lbWFpbC1saW5rXCI+e3sgY29udHJvbC52YWx1ZSB8fCAn4oCUJyB9fTwvYT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJuZ3gtZmllbGRfX2lucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctaW5wdXQnXCJcclxuICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShjb250cm9sKVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJ3lvdUBleGFtcGxlLmNvbSdcIlxyXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICBAaWYgKGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLnRvdWNoZWQpIHtcclxuICAgICAgICAgIEBpZiAoY29udHJvbC5lcnJvcnM/LlsncmVxdWlyZWQnXSkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5neC1maWVsZF9fZXJyb3JcIiBbYXR0ci5kYXRhLXRlc3RpZF09XCInZmllbGQtJyArIGZpZWxkLmlkICsgJy1lcnJvcidcIj5FbWFpbCBpcyByZXF1aXJlZDwvc3Bhbj5cclxuICAgICAgICAgIH0gQGVsc2UgaWYgKGNvbnRyb2wuZXJyb3JzPy5bJ2VtYWlsJ10pIHtcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX2Vycm9yXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctZXJyb3InXCI+RW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzPC9zcGFuPlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX19lcnJvclwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLWVycm9yJ1wiPlRoaXMgZmllbGQgaGFzIGFuIGVycm9yPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVtYWlsRmllbGRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGZpZWxkITogTmVzdGVkRmllbGRDb25maWc7XHJcbiAgQElucHV0KCkgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcclxuICBASW5wdXQoKSBsYW5ndWFnZTogc3RyaW5nID0gJ2VuJztcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiByZXNvbHZlTGFiZWwodGhpcy5maWVsZD8ubGFiZWwsIHRoaXMubGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZUxhYmVsKHRoaXMuZmllbGQ/LnBsYWNlaG9sZGVyLCB0aGlzLmxhbmd1YWdlKTtcclxuICB9XHJcbn1cclxuIl19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9maWVsZC10eXBlcy9lbWFpbC1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRXBELG1FQUFtRTtBQXFDbkUsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixLQUFLLENBQXFCO0lBQzFCLE9BQU8sQ0FBbUI7SUFDMUIsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFFakMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQzt3R0FiVSxtQkFBbUI7NEZBQW5CLG1CQUFtQix5TEFoQ3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQsMkRBL0JTLG1CQUFtQjs7NEZBaUNsQixtQkFBbUI7a0JBcEMvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQ7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHR5cGUgeyBOZXN0ZWRGaWVsZENvbmZpZyB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7IHJlc29sdmVMYWJlbCB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcblxuLyoqIEVtYWlsIGZpZWxkOiB0eXBlPVwiZW1haWxcIiBpbnB1dCB3aXRoIGlubGluZSB2YWxpZGF0aW9uIGhpbnQuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZW1haWwtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm5neC1maWVsZCBuZ3gtZmllbGQtLWVtYWlsXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWRcIiBbYXR0ci5kYXRhLWZpZWxkLXR5cGVdPVwiZmllbGQudHlwZVwiIFtjbGFzcy5uZ3gtZmllbGQtLXJlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2NsYXNzLm5neC1maWVsZC0tbWFza2VkXT1cIm1hc2tlZFwiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibmd4LWZpZWxkX19sYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICAgIEBpZiAobWFza2VkKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZSBuZ3gtZmllbGRfX3ZhbHVlLS1tYXNrZWRcIiBbYXR0ci5kYXRhLXRlc3RpZF09XCInZmllbGQtJyArIGZpZWxkLmlkICsgJy1tYXNrZWQnXCI+WFhYWFhYWFhYPC9zcGFuPlxuICAgICAgfSBAZWxzZSBpZiAocmVhZG9ubHkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX3ZhbHVlXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctdmFsdWUnXCI+XG4gICAgICAgICAgPGEgW2hyZWZdPVwiJ21haWx0bzonICsgY29udHJvbC52YWx1ZVwiIGNsYXNzPVwibmd4LWZpZWxkX19lbWFpbC1saW5rXCI+e3sgY29udHJvbC52YWx1ZSB8fCAn4oCUJyB9fTwvYT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwibmd4LWZpZWxkX19pbnB1dFwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLWlucHV0J1wiXG4gICAgICAgICAgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cIiRhbnkoY29udHJvbClcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8fCAneW91QGV4YW1wbGUuY29tJ1wiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZmllbGQuZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgICAgIEBpZiAoY29udHJvbC5lcnJvcnM/LlsncmVxdWlyZWQnXSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX2Vycm9yXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctZXJyb3InXCI+RW1haWwgaXMgcmVxdWlyZWQ8L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoY29udHJvbC5lcnJvcnM/LlsnZW1haWwnXSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX2Vycm9yXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctZXJyb3InXCI+RW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzPC9zcGFuPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX2Vycm9yXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctZXJyb3InXCI+VGhpcyBmaWVsZCBoYXMgYW4gZXJyb3I8L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEVtYWlsRmllbGRDb21wb25lbnQge1xuICBASW5wdXQoKSBmaWVsZCE6IE5lc3RlZEZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBjb250cm9sITogQWJzdHJhY3RDb250cm9sO1xuICBASW5wdXQoKSBsYW5ndWFnZTogc3RyaW5nID0gJ2VuJztcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWFza2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVMYWJlbCh0aGlzLmZpZWxkPy5sYWJlbCwgdGhpcy5sYW5ndWFnZSk7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZUxhYmVsKHRoaXMuZmllbGQ/LnBsYWNlaG9sZGVyLCB0aGlzLmxhbmd1YWdlKTtcbiAgfVxufVxuIl19
@@ -91,39 +91,39 @@ export class EntityRefFieldComponent {
91
91
  });
92
92
  }
93
93
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EntityRefFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EntityRefFieldComponent, isStandalone: true, selector: "ngx-entity-ref-field", inputs: { field: "field", control: "control", language: "language", readonly: "readonly", masked: "masked" }, ngImport: i0, template: `
95
- <div class="ngx-field ngx-field--entity-ref"
96
- [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
97
- <label class="ngx-field__label" [attr.for]="'field-' + field.id">{{ label }}</label>
98
- @if (masked) {
99
- <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
100
- } @else if (readonly) {
101
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
102
- } @else {
103
- @if (loading()) {
104
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-loading'" role="status">Loading…</span>
105
- } @else {
106
- <select
107
- class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
108
- [id]="'field-' + field.id"
109
- [formControl]="$any(control)"
110
- [attr.disabled]="field.disabled ? true : null"
111
- (change)="onSelectionChange()"
112
- >
113
- <option value="">{{ placeholder || 'Select...' }}</option>
114
- @for (option of options(); track option.value) {
115
- <option [value]="option.value">{{ option.label }}</option>
116
- }
117
- </select>
118
- @if (awaitingParent()) {
119
- <span class="ngx-field__hint" [attr.data-testid]="'field-' + field.id + '-hint'">Select {{ parentFieldId }} first.</span>
120
- }
121
- }
122
- @if (control.invalid && control.touched) {
123
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
124
- }
125
- }
126
- </div>
94
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EntityRefFieldComponent, isStandalone: true, selector: "ngx-entity-ref-field", inputs: { field: "field", control: "control", language: "language", readonly: "readonly", masked: "masked" }, ngImport: i0, template: `
95
+ <div class="ngx-field ngx-field--entity-ref"
96
+ [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
97
+ <label class="ngx-field__label" [attr.for]="'field-' + field.id">{{ label }}</label>
98
+ @if (masked) {
99
+ <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
100
+ } @else if (readonly) {
101
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
102
+ } @else {
103
+ @if (loading()) {
104
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-loading'" role="status">Loading…</span>
105
+ } @else {
106
+ <select
107
+ class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
108
+ [id]="'field-' + field.id"
109
+ [formControl]="$any(control)"
110
+ [attr.disabled]="field.disabled ? true : null"
111
+ (change)="onSelectionChange()"
112
+ >
113
+ <option value="">{{ placeholder || 'Select...' }}</option>
114
+ @for (option of options(); track option.value) {
115
+ <option [value]="option.value">{{ option.label }}</option>
116
+ }
117
+ </select>
118
+ @if (awaitingParent()) {
119
+ <span class="ngx-field__hint" [attr.data-testid]="'field-' + field.id + '-hint'">Select {{ parentFieldId }} first.</span>
120
+ }
121
+ }
122
+ @if (control.invalid && control.touched) {
123
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
124
+ }
125
+ }
126
+ </div>
127
127
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
128
128
  }
129
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EntityRefFieldComponent, decorators: [{
@@ -132,39 +132,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
132
132
  selector: 'ngx-entity-ref-field',
133
133
  standalone: true,
134
134
  imports: [ReactiveFormsModule],
135
- template: `
136
- <div class="ngx-field ngx-field--entity-ref"
137
- [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
138
- <label class="ngx-field__label" [attr.for]="'field-' + field.id">{{ label }}</label>
139
- @if (masked) {
140
- <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
141
- } @else if (readonly) {
142
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
143
- } @else {
144
- @if (loading()) {
145
- <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-loading'" role="status">Loading…</span>
146
- } @else {
147
- <select
148
- class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
149
- [id]="'field-' + field.id"
150
- [formControl]="$any(control)"
151
- [attr.disabled]="field.disabled ? true : null"
152
- (change)="onSelectionChange()"
153
- >
154
- <option value="">{{ placeholder || 'Select...' }}</option>
155
- @for (option of options(); track option.value) {
156
- <option [value]="option.value">{{ option.label }}</option>
157
- }
158
- </select>
159
- @if (awaitingParent()) {
160
- <span class="ngx-field__hint" [attr.data-testid]="'field-' + field.id + '-hint'">Select {{ parentFieldId }} first.</span>
161
- }
162
- }
163
- @if (control.invalid && control.touched) {
164
- <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
165
- }
166
- }
167
- </div>
135
+ template: `
136
+ <div class="ngx-field ngx-field--entity-ref"
137
+ [attr.data-testid]="'field-' + field.id" [attr.data-field-type]="field.type" [class.ngx-field--readonly]="readonly" [class.ngx-field--masked]="masked">
138
+ <label class="ngx-field__label" [attr.for]="'field-' + field.id">{{ label }}</label>
139
+ @if (masked) {
140
+ <span class="ngx-field__value ngx-field__value--masked" [attr.data-testid]="'field-' + field.id + '-masked'">XXXXXXXXX</span>
141
+ } @else if (readonly) {
142
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-value'">{{ getLabel(control.value) }}</span>
143
+ } @else {
144
+ @if (loading()) {
145
+ <span class="ngx-field__value" [attr.data-testid]="'field-' + field.id + '-loading'" role="status">Loading…</span>
146
+ } @else {
147
+ <select
148
+ class="ngx-field__input" [attr.data-testid]="'field-' + field.id + '-input'"
149
+ [id]="'field-' + field.id"
150
+ [formControl]="$any(control)"
151
+ [attr.disabled]="field.disabled ? true : null"
152
+ (change)="onSelectionChange()"
153
+ >
154
+ <option value="">{{ placeholder || 'Select...' }}</option>
155
+ @for (option of options(); track option.value) {
156
+ <option [value]="option.value">{{ option.label }}</option>
157
+ }
158
+ </select>
159
+ @if (awaitingParent()) {
160
+ <span class="ngx-field__hint" [attr.data-testid]="'field-' + field.id + '-hint'">Select {{ parentFieldId }} first.</span>
161
+ }
162
+ }
163
+ @if (control.invalid && control.touched) {
164
+ <span class="ngx-field__error" [attr.data-testid]="'field-' + field.id + '-error'">This field has an error</span>
165
+ }
166
+ }
167
+ </div>
168
168
  `,
169
169
  }]
170
170
  }], propDecorators: { field: [{
@@ -178,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
178
178
  }], masked: [{
179
179
  type: Input
180
180
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ZpZWxkLXR5cGVzL2VudGl0eS1yZWYtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQUVyRjs7Ozs7OztHQU9HO0FBd0NILE1BQU0sT0FBTyx1QkFBdUI7SUFDekIsS0FBSyxDQUFxQjtJQUMxQixPQUFPLENBQW1CO0lBQzFCLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixNQUFNLEdBQVksS0FBSyxDQUFDO0lBRWhCLE9BQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxZQUFZLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDakQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxPQUFPLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztJQUN4QyxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLHFFQUFxRTtJQUM1RCxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLElBQUks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LE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5wdXQsIE9uSW5pdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB0eXBlIHsgTmVzdGVkRmllbGRDb25maWcsIFJlZmVyZW5jZU9wdGlvbiB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcclxuaW1wb3J0IHsgcmVzb2x2ZUxhYmVsIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xyXG5pbXBvcnQgeyBDYXNjYWRlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jYXNjYWRlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eVJlZlNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnRpdHktcmVmLXNlbGVjdGlvbi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBFbnRpdHlSZWZGaWVsZENvbXBvbmVudCDigJQgYSBzZWxlY3QgcG9wdWxhdGVkIGZyb20gYSBjb25zdW1lci1yZWdpc3RlcmVkIGxvYWRlci5cclxuICpcclxuICogQ2FzY2FkZXM6IHdoZW4gYGVudGl0eVJlZmVyZW5jZS5wYXJlbnRGaWVsZGAgaXMgc2V0LCB0aGUgY29tcG9uZW50IHdhdGNoZXMgdGhhdCBzaWJsaW5nXHJcbiAqIGNvbnRyb2wgKHZpYSBgY29udHJvbC5wYXJlbnRgKSBhbmQgcmVsb2FkcyBpdHMgb3duIG9wdGlvbnMgb24gZXZlcnkgcGFyZW50IGNoYW5nZSxcclxuICogY2xlYXJpbmcgYSBub3ctaW52YWxpZCBzZWxlY3Rpb24uIEl0IHB1Ymxpc2hlcyB0aGUgcGlja2VkIHJlY29yZCBvblxyXG4gKiBgRW50aXR5UmVmU2VsZWN0aW9uU2VydmljZWAgc28gdGhlIG93bmluZyBmb3JtIGNhbiBydW4gYGF1dG9QYXRjaGAuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1lbnRpdHktcmVmLWZpZWxkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cIm5neC1maWVsZCBuZ3gtZmllbGQtLWVudGl0eS1yZWZcIlxyXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInZmllbGQtJyArIGZpZWxkLmlkXCIgW2F0dHIuZGF0YS1maWVsZC10eXBlXT1cImZpZWxkLnR5cGVcIiBbY2xhc3Mubmd4LWZpZWxkLS1yZWFkb25seV09XCJyZWFkb25seVwiIFtjbGFzcy5uZ3gtZmllbGQtLW1hc2tlZF09XCJtYXNrZWRcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibmd4LWZpZWxkX19sYWJlbFwiIFthdHRyLmZvcl09XCInZmllbGQtJyArIGZpZWxkLmlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gICAgICBAaWYgKG1hc2tlZCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZSBuZ3gtZmllbGRfX3ZhbHVlLS1tYXNrZWRcIiBbYXR0ci5kYXRhLXRlc3RpZF09XCInZmllbGQtJyArIGZpZWxkLmlkICsgJy1tYXNrZWQnXCI+WFhYWFhYWFhYPC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIGlmIChyZWFkb25seSkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZVwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLXZhbHVlJ1wiPnt7IGdldExhYmVsKGNvbnRyb2wudmFsdWUpIH19PC9zcGFuPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX3ZhbHVlXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctbG9hZGluZydcIiByb2xlPVwic3RhdHVzXCI+TG9hZGluZ+KApjwvc3Bhbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJuZ3gtZmllbGRfX2lucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctaW5wdXQnXCJcclxuICAgICAgICAgICAgW2lkXT1cIidmaWVsZC0nICsgZmllbGQuaWRcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiJGFueShjb250cm9sKVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjdC4uLicgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+e3sgb3B0aW9uLmxhYmVsIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgQGlmIChhd2FpdGluZ1BhcmVudCgpKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX19oaW50XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctaGludCdcIj5TZWxlY3Qge3sgcGFyZW50RmllbGRJZCB9fSBmaXJzdC48L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX2Vycm9yXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctZXJyb3InXCI+VGhpcyBmaWVsZCBoYXMgYW4gZXJyb3I8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW50aXR5UmVmRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZpZWxkITogTmVzdGVkRmllbGRDb25maWc7XHJcbiAgQElucHV0KCkgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcclxuICBASW5wdXQoKSBsYW5ndWFnZTogc3RyaW5nID0gJ2VuJztcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGNhc2NhZGUgPSBpbmplY3QoQ2FzY2FkZURhdGFTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkJ1cyA9IGluamVjdChFbnRpdHlSZWZTZWxlY3Rpb25TZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gIHJlYWRvbmx5IG9wdGlvbnMgPSBzaWduYWw8UmVmZXJlbmNlT3B0aW9uW10+KFtdKTtcclxuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICAvKiogVHJ1ZSB3aGVuIHRoaXMgZmllbGQgY2FzY2FkZXMgYnV0IGl0cyBwYXJlbnQgaGFzIG5vIHZhbHVlIHlldC4gKi9cclxuICByZWFkb25seSBhd2FpdGluZ1BhcmVudCA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHJlc29sdmVMYWJlbCh0aGlzLmZpZWxkPy5sYWJlbCwgdGhpcy5sYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiByZXNvbHZlTGFiZWwodGhpcy5maWVsZD8ucGxhY2Vob2xkZXIsIHRoaXMubGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcmVudEZpZWxkSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkPy5lbnRpdHlSZWZlcmVuY2U/LnBhcmVudEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tYXNrZWQpIHJldHVybjtcclxuICAgIHZvaWQgdGhpcy5yZWxvYWQoKTtcclxuICAgIHRoaXMud2F0Y2hQYXJlbnQoKTtcclxuICB9XHJcblxyXG4gIC8qKiBSZWxvYWQgb3B0aW9ucyBhZ2FpbnN0IHRoZSBwYXJlbnQncyBjdXJyZW50IHZhbHVlLiAqL1xyXG4gIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHBhcmVudFZhbHVlID0gdGhpcy5wYXJlbnRWYWx1ZSgpO1xyXG4gICAgdGhpcy5hd2FpdGluZ1BhcmVudC5zZXQoXHJcbiAgICAgICEhdGhpcy5wYXJlbnRGaWVsZElkICYmIChwYXJlbnRWYWx1ZSA9PT0gbnVsbCB8fCBwYXJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHBhcmVudFZhbHVlID09PSAnJyksXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdGhpcy5jYXNjYWRlLmNhbkxvYWQodGhpcy5maWVsZCkpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNldChbXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5vcHRpb25zLnNldChcclxuICAgICAgICBhd2FpdCB0aGlzLmNhc2NhZGUubG9hZCh0aGlzLmZpZWxkLCB7IHBhcmVudFZhbHVlLCBsYW5nOiB0aGlzLmxhbmd1YWdlIH0pLFxyXG4gICAgICApO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5vcHRpb25zKCkuZmluZChvID0+IFN0cmluZyhvLnZhbHVlKSA9PT0gU3RyaW5nKHRoaXMuY29udHJvbC52YWx1ZSkpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25CdXMuZW1pdCh0aGlzLmZpZWxkLmlkLCBzZWxlY3RlZCA/PyBudWxsKTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zKCkuZmluZChvID0+IFN0cmluZyhvLnZhbHVlKSA9PT0gU3RyaW5nKHZhbHVlKSk7XHJcbiAgICByZXR1cm4gb3B0aW9uPy5sYWJlbCA/PyAodmFsdWUgPz8gJ+KAlCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJlbnRWYWx1ZSgpOiB1bmtub3duIHtcclxuICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy5wYXJlbnRGaWVsZElkO1xyXG4gICAgaWYgKCFwYXJlbnRJZCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LnBhcmVudD8uZ2V0KHBhcmVudElkKT8udmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogUmVsb2FkIChhbmQgZHJvcCBhIHN0YWxlIHNlbGVjdGlvbikgd2hlbmV2ZXIgdGhlIHBhcmVudCBjb250cm9sIGNoYW5nZXMuICovXHJcbiAgcHJpdmF0ZSB3YXRjaFBhcmVudCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy5wYXJlbnRGaWVsZElkO1xyXG4gICAgaWYgKCFwYXJlbnRJZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgcGFyZW50Q29udHJvbCA9IHRoaXMuY29udHJvbD8ucGFyZW50Py5nZXQocGFyZW50SWQpO1xyXG4gICAgaWYgKCFwYXJlbnRDb250cm9sKSByZXR1cm47XHJcblxyXG4gICAgcGFyZW50Q29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25CdXMuZW1pdCh0aGlzLmZpZWxkLmlkLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdm9pZCB0aGlzLnJlbG9hZCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ZpZWxkLXR5cGVzL2VudGl0eS1yZWYtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBbUIsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQUVyRjs7Ozs7OztHQU9HO0FBd0NILE1BQU0sT0FBTyx1QkFBdUI7SUFDekIsS0FBSyxDQUFxQjtJQUMxQixPQUFPLENBQW1CO0lBQzFCLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixNQUFNLEdBQVksS0FBSyxDQUFDO0lBRWhCLE9BQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxZQUFZLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDakQsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxPQUFPLEdBQUcsTUFBTSxDQUFvQixFQUFFLENBQUMsQ0FBQztJQUN4QyxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLHFFQUFxRTtJQUM1RCxjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhDLElBQUks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LE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5wdXQsIE9uSW5pdCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgTmVzdGVkRmllbGRDb25maWcsIFJlZmVyZW5jZU9wdGlvbiB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7IHJlc29sdmVMYWJlbCB9IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7IENhc2NhZGVEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVJlZlNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnRpdHktcmVmLXNlbGVjdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBFbnRpdHlSZWZGaWVsZENvbXBvbmVudCDigJQgYSBzZWxlY3QgcG9wdWxhdGVkIGZyb20gYSBjb25zdW1lci1yZWdpc3RlcmVkIGxvYWRlci5cbiAqXG4gKiBDYXNjYWRlczogd2hlbiBgZW50aXR5UmVmZXJlbmNlLnBhcmVudEZpZWxkYCBpcyBzZXQsIHRoZSBjb21wb25lbnQgd2F0Y2hlcyB0aGF0IHNpYmxpbmdcbiAqIGNvbnRyb2wgKHZpYSBgY29udHJvbC5wYXJlbnRgKSBhbmQgcmVsb2FkcyBpdHMgb3duIG9wdGlvbnMgb24gZXZlcnkgcGFyZW50IGNoYW5nZSxcbiAqIGNsZWFyaW5nIGEgbm93LWludmFsaWQgc2VsZWN0aW9uLiBJdCBwdWJsaXNoZXMgdGhlIHBpY2tlZCByZWNvcmQgb25cbiAqIGBFbnRpdHlSZWZTZWxlY3Rpb25TZXJ2aWNlYCBzbyB0aGUgb3duaW5nIGZvcm0gY2FuIHJ1biBgYXV0b1BhdGNoYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWVudGl0eS1yZWYtZmllbGQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm5neC1maWVsZCBuZ3gtZmllbGQtLWVudGl0eS1yZWZcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZFwiIFthdHRyLmRhdGEtZmllbGQtdHlwZV09XCJmaWVsZC50eXBlXCIgW2NsYXNzLm5neC1maWVsZC0tcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbY2xhc3Mubmd4LWZpZWxkLS1tYXNrZWRdPVwibWFza2VkXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJuZ3gtZmllbGRfX2xhYmVsXCIgW2F0dHIuZm9yXT1cIidmaWVsZC0nICsgZmllbGQuaWRcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgICBAaWYgKG1hc2tlZCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cIm5neC1maWVsZF9fdmFsdWUgbmd4LWZpZWxkX192YWx1ZS0tbWFza2VkXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctbWFza2VkJ1wiPlhYWFhYWFhYWDwvc3Bhbj5cbiAgICAgIH0gQGVsc2UgaWYgKHJlYWRvbmx5KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX192YWx1ZVwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLXZhbHVlJ1wiPnt7IGdldExhYmVsKGNvbnRyb2wudmFsdWUpIH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3gtZmllbGRfX3ZhbHVlXCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctbG9hZGluZydcIiByb2xlPVwic3RhdHVzXCI+TG9hZGluZ+KApjwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3M9XCJuZ3gtZmllbGRfX2lucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctaW5wdXQnXCJcbiAgICAgICAgICAgIFtpZF09XCInZmllbGQtJyArIGZpZWxkLmlkXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCIkYW55KGNvbnRyb2wpXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImZpZWxkLmRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjdC4uLicgfX08L29wdGlvbj5cbiAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBvcHRpb25zKCk7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj57eyBvcHRpb24ubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICBAaWYgKGF3YWl0aW5nUGFyZW50KCkpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX19oaW50XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ZpZWxkLScgKyBmaWVsZC5pZCArICctaGludCdcIj5TZWxlY3Qge3sgcGFyZW50RmllbGRJZCB9fSBmaXJzdC48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmd4LWZpZWxkX19lcnJvclwiIFthdHRyLmRhdGEtdGVzdGlkXT1cIidmaWVsZC0nICsgZmllbGQuaWQgKyAnLWVycm9yJ1wiPlRoaXMgZmllbGQgaGFzIGFuIGVycm9yPC9zcGFuPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eVJlZkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZmllbGQhOiBOZXN0ZWRGaWVsZENvbmZpZztcbiAgQElucHV0KCkgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcbiAgQElucHV0KCkgbGFuZ3VhZ2U6IHN0cmluZyA9ICdlbic7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1hc2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzY2FkZSA9IGluamVjdChDYXNjYWRlRGF0YVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkJ1cyA9IGluamVjdChFbnRpdHlSZWZTZWxlY3Rpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHJlYWRvbmx5IG9wdGlvbnMgPSBzaWduYWw8UmVmZXJlbmNlT3B0aW9uW10+KFtdKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIC8qKiBUcnVlIHdoZW4gdGhpcyBmaWVsZCBjYXNjYWRlcyBidXQgaXRzIHBhcmVudCBoYXMgbm8gdmFsdWUgeWV0LiAqL1xuICByZWFkb25seSBhd2FpdGluZ1BhcmVudCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVMYWJlbCh0aGlzLmZpZWxkPy5sYWJlbCwgdGhpcy5sYW5ndWFnZSk7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZUxhYmVsKHRoaXMuZmllbGQ/LnBsYWNlaG9sZGVyLCB0aGlzLmxhbmd1YWdlKTtcbiAgfVxuXG4gIGdldCBwYXJlbnRGaWVsZElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQ/LmVudGl0eVJlZmVyZW5jZT8ucGFyZW50RmllbGQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXNrZWQpIHJldHVybjtcbiAgICB2b2lkIHRoaXMucmVsb2FkKCk7XG4gICAgdGhpcy53YXRjaFBhcmVudCgpO1xuICB9XG5cbiAgLyoqIFJlbG9hZCBvcHRpb25zIGFnYWluc3QgdGhlIHBhcmVudCdzIGN1cnJlbnQgdmFsdWUuICovXG4gIGFzeW5jIHJlbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYXJlbnRWYWx1ZSA9IHRoaXMucGFyZW50VmFsdWUoKTtcbiAgICB0aGlzLmF3YWl0aW5nUGFyZW50LnNldChcbiAgICAgICEhdGhpcy5wYXJlbnRGaWVsZElkICYmIChwYXJlbnRWYWx1ZSA9PT0gbnVsbCB8fCBwYXJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHBhcmVudFZhbHVlID09PSAnJyksXG4gICAgKTtcblxuICAgIGlmICghdGhpcy5jYXNjYWRlLmNhbkxvYWQodGhpcy5maWVsZCkpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub3B0aW9ucy5zZXQoXG4gICAgICAgIGF3YWl0IHRoaXMuY2FzY2FkZS5sb2FkKHRoaXMuZmllbGQsIHsgcGFyZW50VmFsdWUsIGxhbmc6IHRoaXMubGFuZ3VhZ2UgfSksXG4gICAgICApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdGlvbkNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMub3B0aW9ucygpLmZpbmQobyA9PiBTdHJpbmcoby52YWx1ZSkgPT09IFN0cmluZyh0aGlzLmNvbnRyb2wudmFsdWUpKTtcbiAgICB0aGlzLnNlbGVjdGlvbkJ1cy5lbWl0KHRoaXMuZmllbGQuaWQsIHNlbGVjdGVkID8/IG51bGwpO1xuICB9XG5cbiAgZ2V0TGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zKCkuZmluZChvID0+IFN0cmluZyhvLnZhbHVlKSA9PT0gU3RyaW5nKHZhbHVlKSk7XG4gICAgcmV0dXJuIG9wdGlvbj8ubGFiZWwgPz8gKHZhbHVlID8/ICfigJQnKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyZW50VmFsdWUoKTogdW5rbm93biB7XG4gICAgY29uc3QgcGFyZW50SWQgPSB0aGlzLnBhcmVudEZpZWxkSWQ7XG4gICAgaWYgKCFwYXJlbnRJZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sPy5wYXJlbnQ/LmdldChwYXJlbnRJZCk/LnZhbHVlO1xuICB9XG5cbiAgLyoqIFJlbG9hZCAoYW5kIGRyb3AgYSBzdGFsZSBzZWxlY3Rpb24pIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29udHJvbCBjaGFuZ2VzLiAqL1xuICBwcml2YXRlIHdhdGNoUGFyZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy5wYXJlbnRGaWVsZElkO1xuICAgIGlmICghcGFyZW50SWQpIHJldHVybjtcbiAgICBjb25zdCBwYXJlbnRDb250cm9sID0gdGhpcy5jb250cm9sPy5wYXJlbnQ/LmdldChwYXJlbnRJZCk7XG4gICAgaWYgKCFwYXJlbnRDb250cm9sKSByZXR1cm47XG5cbiAgICBwYXJlbnRDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQnVzLmVtaXQodGhpcy5maWVsZC5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==