@unipin/angular-applet 18.2.2 → 18.3.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.
@@ -14,6 +14,7 @@ export class FormCurrencyInputComponent {
14
14
  this.numberPlaceholder = numberPlaceholder;
15
15
  this.ch = ch;
16
16
  this.currencyService = currencyService;
17
+ this.label = 'Currency';
17
18
  this.clearable = true;
18
19
  this.isInputNumber = false;
19
20
  this.numberValue = null;
@@ -48,6 +49,16 @@ export class FormCurrencyInputComponent {
48
49
  registerOnTouched(fn) { this.onTouched = fn; }
49
50
  writeValue(val) {
50
51
  this.value = val;
52
+ if (!val)
53
+ this.change(null);
54
+ else {
55
+ const d = this.items.find(({ value }) => value === val);
56
+ if (!d)
57
+ this.change(null);
58
+ else {
59
+ this.change({ value: val, data: d });
60
+ }
61
+ }
51
62
  this.ch.markForCheck();
52
63
  }
53
64
  setDisabledState(d) {
@@ -59,8 +70,6 @@ export class FormCurrencyInputComponent {
59
70
  return null;
60
71
  }
61
72
  change(e) {
62
- if (this.isInputNumber)
63
- this.numberValue = null;
64
73
  if (!this.isTouched) {
65
74
  this.onTouched();
66
75
  this.isTouched = true;
@@ -70,12 +79,13 @@ export class FormCurrencyInputComponent {
70
79
  this.selectedItem = e?.data;
71
80
  this.changed(this.value);
72
81
  this.onChange.emit({ selectedItem: e, number: this.numberValue });
73
- this.errorMsg = getFormErrorMessage(this.formControl.errors, 'Currency');
82
+ this.errorMsg = getFormErrorMessage(this.formControl?.errors, this.label);
74
83
  }
75
84
  if (e?.magnifyValue === 1)
76
85
  this.decimalLimiter = 0;
77
- else
78
- this.decimalLimiter = Math.floor(Math.log10(e?.magnifyValue));
86
+ else {
87
+ this.decimalLimiter = Math.floor(Math.log10(e?.data.magnifyValue));
88
+ }
79
89
  }
80
90
  numberInput({ value }) {
81
91
  this.numberValue = value;
@@ -91,7 +101,7 @@ export class FormCurrencyInputComponent {
91
101
  this.ch.markForCheck();
92
102
  }
93
103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: FormCurrencyInputComponent, deps: [{ token: 'placeholder', attribute: true }, { token: 'numberPlaceholder', attribute: true }, { token: i0.ChangeDetectorRef }, { token: i1.CurrencyService }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: FormCurrencyInputComponent, isStandalone: true, selector: "up-currency-input", inputs: { clearable: "clearable", isInputNumber: "isInputNumber", numberValue: "numberValue", isNumberDisabled: "isNumberDisabled", required: "required", disabled: "disabled" }, outputs: { onChange: "onChange" }, host: { classAttribute: "d-block" }, providers: [
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: FormCurrencyInputComponent, isStandalone: true, selector: "up-currency-input", inputs: { label: "label", clearable: "clearable", isInputNumber: "isInputNumber", numberValue: "numberValue", isNumberDisabled: "isNumberDisabled", required: "required", disabled: "disabled" }, outputs: { onChange: "onChange" }, host: { classAttribute: "d-block" }, providers: [
95
105
  {
96
106
  multi: true,
97
107
  provide: NG_VALUE_ACCESSOR,
@@ -102,7 +112,7 @@ export class FormCurrencyInputComponent {
102
112
  provide: NG_VALIDATORS,
103
113
  useExisting: FormCurrencyInputComponent
104
114
  }
105
- ], ngImport: i0, template: "<label class=\"form-label\" [class.required]=\"required\">Currency</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
+ ], ngImport: i0, template: "<label class=\"form-label\" [class.required]=\"required\">{{ label }}</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
106
116
  }
107
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: FormCurrencyInputComponent, decorators: [{
108
118
  type: Component,
@@ -123,14 +133,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
123
133
  provide: NG_VALIDATORS,
124
134
  useExisting: FormCurrencyInputComponent
125
135
  }
126
- ], template: "<label class=\"form-label\" [class.required]=\"required\">Currency</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"] }]
136
+ ], template: "<label class=\"form-label\" [class.required]=\"required\">{{ label }}</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"] }]
127
137
  }], ctorParameters: () => [{ type: undefined, decorators: [{
128
138
  type: Attribute,
129
139
  args: ['placeholder']
130
140
  }] }, { type: undefined, decorators: [{
131
141
  type: Attribute,
132
142
  args: ['numberPlaceholder']
133
- }] }, { type: i0.ChangeDetectorRef }, { type: i1.CurrencyService }], propDecorators: { clearable: [{
143
+ }] }, { type: i0.ChangeDetectorRef }, { type: i1.CurrencyService }], propDecorators: { label: [{
144
+ type: Input
145
+ }], clearable: [{
134
146
  type: Input
135
147
  }], isInputNumber: [{
136
148
  type: Input
@@ -145,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
145
157
  }], onChange: [{
146
158
  type: Output
147
159
  }] } });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY3VycmVuY3ktaW5wdXQvZm9ybS1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY3VycmVuY3ktaW5wdXQvZm9ybS1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXlDLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQStCLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUE4QnJELE1BQU0sT0FBTywwQkFBMEI7SUFnSHJDLFlBQ21DLFdBQW1CLEVBQ2IsaUJBQXlCLEVBQzdDLEVBQXFCLEVBQ3JCLGVBQWdDO1FBSGxCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ2Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQzdDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQTdHckMsY0FBUyxHQUFZLElBQUksQ0FBQztRQU8xQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQU8vQixnQkFB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XG5pbXBvcnQgeyBDdXJyZW5jeSB9IGZyb20gJy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcbmltcG9ydCB7IGdldEZvcm1FcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWN1cnJlbmN5LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY3VycmVuY3ktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWN1cnJlbmN5LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IFxuICAgIGNsYXNzOiAnZC1ibG9jaycgXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBGb3JtQ3VycmVuY3lJbnB1dENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZvcm1DdXJyZW5jeUlucHV0Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1DdXJyZW5jeUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBcbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBzZWxlY3QgaW5wdXQgaXMgY2xlYXJhYmxlLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgY2xlYXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogSW5wdXQgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG51bWJlciBpbnB1dCBmb3JtIGlzIGhpZGUgb3Igc2hvdy5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0lucHV0TnVtYmVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIHRvIHNldCB0aGUgdmFsdWUgb2YgaW5wdXQgbnVtYmVyIGZpZWxkLlxuICAgKiBAdHlwZSB7bnVtYmVyIHwgbnVsbH1cbiAgICogQGRlZmF1bHQge251bGx9XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbnVtYmVyVmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBJbnB1dCB2YXJpYWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbnVtYmVyIGlucHV0IGlzIGRpc2FibGVkLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGlzTnVtYmVyRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5wdXQgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNlbGVjdCBpbnB1dCBpcyByZXF1aXJlZC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbnB1dCB2YXJpYWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgc2VsZWN0IGlucHV0IGlzIGRpc2FibGVkLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE91dHB1dCB2YXJpYWJsZSB0byBlbWl0IGNoYW5nZXMgd2hlbiB0aGUgc2VsZWN0IGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqIEB0eXBlIHtFdmVudEVtaXR0ZXI8YW55Pn1cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IHNlbGVjdGVkSXRlbT86IEN1cnJlbmN5LCBudW1iZXI6IG51bWJlciB8IG51bGwgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgZm9yIGRpc3BsYXlpbmcgaXRlbXMgaW4gdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHR5cGUge09ic2VydmFibGU8YW55W10+fVxuICAgKi9cbiAgcHVibGljIGl0ZW1zOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGRhdGE6IEN1cnJlbmN5IH1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBCb29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBzZWxlY3QgaW5wdXQgaXMgbG9hZGluZy5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBCb29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBzZWxlY3QgaW5wdXQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIHB1YmxpYyBpc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEB0eXBlIHthbnkgfCBudWxsfVxuICAgKiBAZGVmYXVsdCB7bnVsbH1cbiAgICovXG4gIHB1YmxpYyB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0IHt1bmRlZmluZWR9XG4gICAqL1xuICBwdWJsaWMgZXJyb3JNc2chOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb3JtIGNvbnRyb2wgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEB0eXBlIHtBYnN0cmFjdENvbnRyb2x9XG4gICAqL1xuICBwcm90ZWN0ZWQgZm9ybUNvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgbWF4aW11bSBkaWdpdHMgYWxsb3dlZCBiZWhpbmQgdGhlIGNvbW1hLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAZGVmYXVsdCB7MH1cbiAgICovXG4gIHByb3RlY3RlZCBkZWNpbWFsTGltaXRlcjogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHZhbHVlIGNoYW5nZXMgaW4gdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHR5cGUgeyhfdmFsOiBhbnkpID0+IHZvaWR9XG4gICAqL1xuICBwcm90ZWN0ZWQgY2hhbmdlZDogKF92YWw6IGFueSkgPT4gdm9pZCA9IChfdmFsOiBhbnkpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgdG91Y2ggZXZlbnRzIGluIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEB0eXBlIHsoKSA9PiB2b2lkfVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHByb3RlY3RlZCBzdWI/OiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBzZWxlY3RlZEl0ZW0/OiBDdXJyZW5jeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAQXR0cmlidXRlKCdwbGFjZWhvbGRlcicpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nLFxuICAgIEBBdHRyaWJ1dGUoJ251bWJlclBsYWNlaG9sZGVyJykgcHVibGljIG51bWJlclBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVuY3lTZXJ2aWNlOiBDdXJyZW5jeVNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZHtcbiAgICB0aGlzLnN1YiA9IHRoaXMuY3VycmVuY3lTZXJ2aWNlLnF1ZXJ5KCkuc3Vic2NyaWJlKHtcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIG5leHQ6ICh7IGRhdGE6IHsgd2ViQ29uZmlnTXNDdXJyZW5jeTogeyBkYXRhIH19fSkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5tYXAoKGQpID0+ICh7IGxhYmVsOiBgWyR7IGQuY29kZSB9XSAkeyBkLm5hbWUgfWAsIHZhbHVlOiBkLmNvZGUhLCBkYXRhOiBkIH0pKTtcbiAgICAgICAgdGhpcy5zZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWR7XG4gICAgdGhpcy5zdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2VsZWN0IGlucHV0IHZhbHVlIGNoYW5nZXMuXG4gICAqIEBwYXJhbSB7KF92YWw6IGFueSkgPT4gdm9pZH0gZm4gLSBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkeyB0aGlzLmNoYW5nZWQgPSBmbjsgfVxuICBcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzZWxlY3QgaW5wdXQgaXMgdG91Y2hlZC5cbiAgICogQHBhcmFtIHsoKSA9PiB2b2lkfSBmbiAtIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0b3VjaCBldmVudHMuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWR7IHRoaXMub25Ub3VjaGVkID0gZm47IH0gXG4gIFxuICAvKipcbiAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEBwYXJhbSB7Kn0gdmFsIC0gVGhlIG5ldyB2YWx1ZSB0byBiZSBzZXQuXG4gICAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWR7XG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLmNoLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIFxuICAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZCAtIFRoZSBuZXcgZGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oZDogYm9vbGVhbik6IHZvaWR7IFxuICAgIHRoaXMuZGlzYWJsZWQgPSBkOyBcbiAgICB0aGlzLmNoLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgc2VsZWN0IGlucHV0LlxuICAgKiBAcGFyYW0ge0Fic3RyYWN0Q29udHJvbH0gY29udHJvbCAtIFRoZSBhYnN0cmFjdCBjb250cm9sIHJlcHJlc2VudGluZyB0aGUgc2VsZWN0IGlucHV0LlxuICAgKiBAcmV0dXJucyB7KFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKX0gLSBWYWxpZGF0aW9uIGVycm9ycyBpZiBhbnksIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxseyAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sID0gY29udHJvbDtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIGNoYW5nZXMgaW4gdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogU2V0IHRoZSBudW1iZXIgYXMgbnVsbCBpZiBjdXJyZW5jeSBjaGFuZ2VkIHRvIHByZXZlbnQgbWlzbWF0Y2ggYmV0d2VlbiBzZWxlY3RlZCBjdXJyZW5jeSBhbmQgdGhlIG51bWJlciBjb21tYSBhbGxvd2VkIGxpbWl0LlxuICAgKiBFbWl0cyB0aGUgb25DaGFuZ2UgZXZlbnQsIHVwZGF0ZXMgdGhlIGluaXRpYWxJdGVtcywgYW5kIGhhbmRsZXMgdmFsaWRhdGlvbiBiYXNlZCBvbiBmb3JtIGNvbnRyb2wgZXJyb3JzIGFuZCBsYWJlbC5cbiAgICogU2V0IHRoZSBkZWNpbWFsTGltaXRlciBiYXNlZCBvbiBzZWxlY3RlZCBtYWduaWZ5VmFsdWVcbiAgICogQHBhcmFtIHthbnl9IGUgLSBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgbmV3IHNlbGVjdCBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2UoZT86IGFueSk6IHZvaWR7XG4gICAgaWYgKHRoaXMuaXNJbnB1dE51bWJlcikgdGhpcy5udW1iZXJWYWx1ZSA9IG51bGw7XG5cbiAgICBpZiAoIXRoaXMuaXNUb3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5pc1RvdWNoZWQgPSB0cnVlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBlPy52YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZT8uZGF0YTtcblxuICAgICAgdGhpcy5jaGFuZ2VkKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgc2VsZWN0ZWRJdGVtOiBlLCBudW1iZXI6IHRoaXMubnVtYmVyVmFsdWUgfSk7XG4gICAgICB0aGlzLmVycm9yTXNnID0gZ2V0Rm9ybUVycm9yTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sLmVycm9ycywgJ0N1cnJlbmN5Jyk7XG4gICAgfVxuICAgIFxuICAgIGlmIChlPy5tYWduaWZ5VmFsdWUgPT09IDEpIHRoaXMuZGVjaW1hbExpbWl0ZXIgPSAwO1xuICAgIGVsc2UgdGhpcy5kZWNpbWFsTGltaXRlciA9IE1hdGguZmxvb3IoTWF0aC5sb2cxMChlPy5tYWduaWZ5VmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgb24gZm9ybSBudW1iZXIgaW5wdXQuXG4gICAqIFNldCB0aGUgbnVtYmVyVmFsdWUgd2l0aCBjdXJyZW50IHZhbHVlLlxuICAgKiBFbWl0IHRoZSBzZWxlY3RlZCBjdXJyZW5jeSBhbmQgdGhlIG51bWJlciB2YWx1ZSB0byB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHthbnl9IC0gQ29udGFpbiBgdmFsdWVgIHRoZSB2YWx1ZSBvZiBpbnB1dGVkIG51bWJlci5cbiAgICovXG4gIHB1YmxpYyBudW1iZXJJbnB1dCh7IHZhbHVlIH06IGFueSk6IHZvaWR7XG4gICAgdGhpcy5udW1iZXJWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHNlbGVjdGVkSXRlbTogdGhpcy5zZWxlY3RlZEl0ZW0sIG51bWJlcjogdmFsdWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIG9uIGZvcm0gbnVtYmVyIGtleXByZXNzLlxuICAgKiBDb250cm9sbGluZyBpbnB1dCBpbiBhIG51bWJlciBmaWVsZCwgcmVzdHJpY3RpbmcgdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBhbGxvd2VkLlxuICAgKiBAcGFyYW0ge2FueX0gLSBDb250YWluXG4gICAqIGNoYXJDb2RlIC0gdGhlIGNoYXJhY3RlciBjb2RlIG9mIHRoZSBrZXkgcHJlc3NlZC5cbiAgICogcHJldmVudERlZmF1bHQgLSB0aGUgZnVuY3Rpb24gdG8gcHJldmVudCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGhlIGV2ZW50LlxuICAgKiB0YXJnZXQudmFsdWUgLSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQuXG4gICAqL1xuICBwdWJsaWMgbGltaXREZWNpbWFsKHsgY2hhckNvZGUsIHByZXZlbnREZWZhdWx0LCB0YXJnZXQ6IHsgdmFsdWUgfX06IGFueSk6IHZvaWR7XG4gICAgY29uc3QgcmVnID0gdGhpcy5kZWNpbWFsTGltaXRlciA+IDA/IG5ldyBSZWdFeHAoYF5cXFxcZCooXFxcXC5cXFxcZHswLCR7IHRoaXMuZGVjaW1hbExpbWl0ZXIgfX0pPyRgKSA6IC9eXFxkKyQvO1xuICAgIGlmICghcmVnLnRlc3QodmFsdWUgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKSkpIHByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0SXNMb2FkaW5nKGI6IGJvb2xlYW4pOiB2b2lke1xuICAgIHRoaXMuaXNMb2FkaW5nID0gYjtcbiAgICB0aGlzLmNoLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2NsYXNzLnJlcXVpcmVkXT1cInJlcXVpcmVkXCI+Q3VycmVuY3k8L2xhYmVsPlxuXG48bmctdGVtcGxhdGUgI3NlbGVjdEZvcm0+XG4gICAgPG5nLXNlbGVjdCBcbiAgICAgICAgY2xhc3M9XCJmbGV4LXNocmluay0wXCJcbiAgICAgICAgW2NsYXNzLm51bWJlcl09XCJpc0lucHV0TnVtYmVyXCJcbiAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidHJ1ZVwiXG4gICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCIgXG4gICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KTtcIlxuICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWk9XCJpdGVtXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBpc0lucHV0TnVtYmVyPyBpLnZhbHVlIDogaS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgbmctbGFiZWwtdG1wIGxldC1pPVwiaXRlbVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgaXNJbnB1dE51bWJlcj8gaS52YWx1ZSA6IGkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1zZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0TnVtYmVyPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RGb3JtXCIgLz5cblxuICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtwbGFjZWhvbGRlcl09XCJudW1iZXJQbGFjZWhvbGRlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGZsZXgtZ3Jvdy0xXCIgW2Rpc2FibGVkXT1cImlzTnVtYmVyRGlzYWJsZWRcIiBbdmFsdWVdPVwibnVtYmVyVmFsdWVcIiAoa2V5cHJlc3MpPVwibGltaXREZWNpbWFsKCRldmVudClcIiAoaW5wdXQpPVwibnVtYmVySW5wdXQoJGV2ZW50LnRhcmdldClcIj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNJbnB1dE51bWJlciBlbHNlIGlucHV0TnVtYmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdEZvcm1cIiAvPlxuPC9uZy1jb250YWluZXI+XG5cbjxsYWJlbCAqbmdJZj1cImVycm9yTXNnXCIgY2xhc3M9XCJpcy1pbnZhbGlkXCI+e3sgZXJyb3JNc2cgfX08L2xhYmVsPlxuIl19
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY3VycmVuY3ktaW5wdXQvZm9ybS1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmlwaW4tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY3VycmVuY3ktaW5wdXQvZm9ybS1jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2pKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXlDLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQStCLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUE4QnJELE1BQU0sT0FBTywwQkFBMEI7SUF1SHJDLFlBQ21DLFdBQW1CLEVBQ2IsaUJBQXlCLEVBQzdDLEVBQXFCLEVBQ3JCLGVBQWdDO1FBSGxCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ2Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQzdDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXBIckMsVUFBSyxHQUFXLFVBQVUsQ0FBQztRQU8zQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBTzFCLGtCQUFh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LEtBQUssRUFBRSxJQUFJOzRCQUNYLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsNEJBQTRCO3lCQUN4Qzt3QkFDRDs0QkFDRSxLQUFLLEVBQUUsSUFBSTs0QkFDWCxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyw0QkFBNEI7eUJBQ3hDO3FCQUNGOzswQkEwSEUsU0FBUzsyQkFBQyxhQUFhOzswQkFDdkIsU0FBUzsyQkFBQyxtQkFBbUI7dUdBbEhoQixLQUFLO3NCQUFwQixLQUFLO2dCQU9VLFNBQVM7c0JBQXhCLEtBQUs7Z0JBT1UsYUFBYTtzQkFBNUIsS0FBSztnQkFPVSxXQUFXO3NCQUExQixLQUFLO2dCQU9VLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFPVSxRQUFRO3NCQUF2QixLQUFLO2dCQU9VLFFBQVE7c0JBQXZCLEtBQUs7Z0JBTVcsUUFBUTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XG5pbXBvcnQgeyBDdXJyZW5jeSB9IGZyb20gJy4uLy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcbmltcG9ydCB7IGdldEZvcm1FcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDdXJyZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3VwLWN1cnJlbmN5LWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY3VycmVuY3ktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWN1cnJlbmN5LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IFxuICAgIGNsYXNzOiAnZC1ibG9jaycgXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTmdTZWxlY3RNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBGb3JtQ3VycmVuY3lJbnB1dENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IEZvcm1DdXJyZW5jeUlucHV0Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1DdXJyZW5jeUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBcbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIGZvciB0aGUgbGFiZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnB1dC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJ0N1cnJlbmN5JztcblxuICAvKipcbiAgICogSW5wdXQgdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHNlbGVjdCBpbnB1dCBpcyBjbGVhcmFibGUuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBJbnB1dCB2YXJpYWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgbnVtYmVyIGlucHV0IGZvcm0gaXMgaGlkZSBvciBzaG93LlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGlzSW5wdXROdW1iZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5wdXQgdmFyaWFibGUgdG8gc2V0IHRoZSB2YWx1ZSBvZiBpbnB1dCBudW1iZXIgZmllbGQuXG4gICAqIEB0eXBlIHtudW1iZXIgfCBudWxsfVxuICAgKiBAZGVmYXVsdCB7bnVsbH1cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBudW1iZXJWYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBudW1iZXIgaW5wdXQgaXMgZGlzYWJsZWQuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgaXNOdW1iZXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbnB1dCB2YXJpYWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgc2VsZWN0IGlucHV0IGlzIHJlcXVpcmVkLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElucHV0IHZhcmlhYmxlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBzZWxlY3QgaW5wdXQgaXMgZGlzYWJsZWQuXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogT3V0cHV0IHZhcmlhYmxlIHRvIGVtaXQgY2hhbmdlcyB3aGVuIHRoZSBzZWxlY3QgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICogQHR5cGUge0V2ZW50RW1pdHRlcjxhbnk+fVxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPHsgc2VsZWN0ZWRJdGVtPzogQ3VycmVuY3ksIG51bWJlcjogbnVtYmVyIHwgbnVsbCB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBmb3IgZGlzcGxheWluZyBpdGVtcyBpbiB0aGUgc2VsZWN0IGlucHV0LlxuICAgKiBAdHlwZSB7T2JzZXJ2YWJsZTxhbnlbXT59XG4gICAqL1xuICBwdWJsaWMgaXRlbXM6IHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZywgZGF0YTogQ3VycmVuY3kgfVtdID0gW107XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHNlbGVjdCBpbnB1dCBpcyBsb2FkaW5nLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEJvb2xlYW4gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHNlbGVjdCBpbnB1dCBoYXMgYmVlbiB0b3VjaGVkLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgcHVibGljIGlzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHR5cGUge2FueSB8IG51bGx9XG4gICAqIEBkZWZhdWx0IHtudWxsfVxuICAgKi9cbiAgcHVibGljIHZhbHVlOiBhbnkgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQge3VuZGVmaW5lZH1cbiAgICovXG4gIHB1YmxpYyBlcnJvck1zZyE6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gY29udHJvbCBhc3NvY2lhdGVkIHdpdGggdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHR5cGUge0Fic3RyYWN0Q29udHJvbH1cbiAgICovXG4gIHByb3RlY3RlZCBmb3JtQ29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtYXhpbXVtIGRpZ2l0cyBhbGxvd2VkIGJlaGluZCB0aGUgY29tbWEuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBkZWZhdWx0IHswfVxuICAgKi9cbiAgcHJvdGVjdGVkIGRlY2ltYWxMaW1pdGVyOiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgdmFsdWUgY2hhbmdlcyBpbiB0aGUgc2VsZWN0IGlucHV0LlxuICAgKiBAdHlwZSB7KF92YWw6IGFueSkgPT4gdm9pZH1cbiAgICovXG4gIHByb3RlY3RlZCBjaGFuZ2VkOiAoX3ZhbDogYW55KSA9PiB2b2lkID0gKF92YWw6IGFueSkgPT4ge307XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGhhbmRsZSB0b3VjaCBldmVudHMgaW4gdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHR5cGUgeygpID0+IHZvaWR9XG4gICAqL1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcHJvdGVjdGVkIHN1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbT86IEN1cnJlbmN5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcsXG4gICAgQEF0dHJpYnV0ZSgnbnVtYmVyUGxhY2Vob2xkZXInKSBwdWJsaWMgbnVtYmVyUGxhY2Vob2xkZXI6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2g6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjdXJyZW5jeVNlcnZpY2U6IEN1cnJlbmN5U2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lke1xuICAgIHRoaXMuc3ViID0gdGhpcy5jdXJyZW5jeVNlcnZpY2UucXVlcnkoKS5zdWJzY3JpYmUoe1xuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICB9LFxuICAgICAgbmV4dDogKHsgZGF0YTogeyB3ZWJDb25maWdNc0N1cnJlbmN5OiB7IGRhdGEgfX19KSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBkYXRhLm1hcCgoZCkgPT4gKHsgbGFiZWw6IGBbJHsgZC5jb2RlIH1dICR7IGQubmFtZSB9YCwgdmFsdWU6IGQuY29kZSEsIGRhdGE6IGQgfSkpO1xuICAgICAgICB0aGlzLnNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZHtcbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBzZWxlY3QgaW5wdXQgdmFsdWUgY2hhbmdlcy5cbiAgICogQHBhcmFtIHsoX3ZhbDogYW55KSA9PiB2b2lkfSBmbiAtIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWR7IHRoaXMuY2hhbmdlZCA9IGZuOyB9XG4gIFxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNlbGVjdCBpbnB1dCBpcyB0b3VjaGVkLlxuICAgKiBAcGFyYW0geygpID0+IHZvaWR9IGZuIC0gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRvdWNoIGV2ZW50cy5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfSBcbiAgXG4gIC8qKlxuICAgKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQHBhcmFtIHsqfSB2YWwgLSBUaGUgbmV3IHZhbHVlIHRvIGJlIHNldC5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbDogYW55KTogdm9pZHtcbiAgICB0aGlzLnZhbHVlID0gdmFsO1xuXG4gICAgaWYgKCF2YWwpIHRoaXMuY2hhbmdlKG51bGwpO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZCA9IHRoaXMuaXRlbXMuZmluZCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gdmFsKTtcbiAgICAgIFxuICAgICAgLy8gY29uc29sZS5sb2coJ3Rlc3QnLCBkKTtcbiAgICAgIGlmICghZCkgdGhpcy5jaGFuZ2UobnVsbCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGFuZ2UoeyB2YWx1ZTogdmFsLCBkYXRhOiBkIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIFxuICAgLyoqXG4gICAqIFNldHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBzZWxlY3QgaW5wdXQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZCAtIFRoZSBuZXcgZGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oZDogYm9vbGVhbik6IHZvaWR7IFxuICAgIHRoaXMuZGlzYWJsZWQgPSBkOyBcbiAgICB0aGlzLmNoLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgc2VsZWN0IGlucHV0LlxuICAgKiBAcGFyYW0ge0Fic3RyYWN0Q29udHJvbH0gY29udHJvbCAtIFRoZSBhYnN0cmFjdCBjb250cm9sIHJlcHJlc2VudGluZyB0aGUgc2VsZWN0IGlucHV0LlxuICAgKiBAcmV0dXJucyB7KFZhbGlkYXRpb25FcnJvcnMgfCBudWxsKX0gLSBWYWxpZGF0aW9uIGVycm9ycyBpZiBhbnksIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxseyAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sID0gY29udHJvbDtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIGNoYW5nZXMgaW4gdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogU2V0IHRoZSBudW1iZXIgYXMgbnVsbCBpZiBjdXJyZW5jeSBjaGFuZ2VkIHRvIHByZXZlbnQgbWlzbWF0Y2ggYmV0d2VlbiBzZWxlY3RlZCBjdXJyZW5jeSBhbmQgdGhlIG51bWJlciBjb21tYSBhbGxvd2VkIGxpbWl0LlxuICAgKiBFbWl0cyB0aGUgb25DaGFuZ2UgZXZlbnQsIHVwZGF0ZXMgdGhlIGluaXRpYWxJdGVtcywgYW5kIGhhbmRsZXMgdmFsaWRhdGlvbiBiYXNlZCBvbiBmb3JtIGNvbnRyb2wgZXJyb3JzIGFuZCBsYWJlbC5cbiAgICogU2V0IHRoZSBkZWNpbWFsTGltaXRlciBiYXNlZCBvbiBzZWxlY3RlZCBtYWduaWZ5VmFsdWVcbiAgICogQHBhcmFtIHthbnl9IGUgLSBUaGUgZXZlbnQgY29udGFpbmluZyB0aGUgbmV3IHNlbGVjdCBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2UoZT86IGFueSk6IHZvaWR7XG4gICAgaWYgKCF0aGlzLmlzVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuaXNUb3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZT8udmFsdWU7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGU/LmRhdGE7XG5cbiAgICAgIHRoaXMuY2hhbmdlZCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHNlbGVjdGVkSXRlbTogZSwgbnVtYmVyOiB0aGlzLm51bWJlclZhbHVlIH0pO1xuICAgICAgdGhpcy5lcnJvck1zZyA9IGdldEZvcm1FcnJvck1lc3NhZ2UodGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzLCB0aGlzLmxhYmVsKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGU/Lm1hZ25pZnlWYWx1ZSA9PT0gMSkgdGhpcy5kZWNpbWFsTGltaXRlciA9IDA7XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRlY2ltYWxMaW1pdGVyID0gTWF0aC5mbG9vcihNYXRoLmxvZzEwKGU/LmRhdGEubWFnbmlmeVZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBvbiBmb3JtIG51bWJlciBpbnB1dC5cbiAgICogU2V0IHRoZSBudW1iZXJWYWx1ZSB3aXRoIGN1cnJlbnQgdmFsdWUuXG4gICAqIEVtaXQgdGhlIHNlbGVjdGVkIGN1cnJlbmN5IGFuZCB0aGUgbnVtYmVyIHZhbHVlIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge2FueX0gLSBDb250YWluIGB2YWx1ZWAgdGhlIHZhbHVlIG9mIGlucHV0ZWQgbnVtYmVyLlxuICAgKi9cbiAgcHVibGljIG51bWJlcklucHV0KHsgdmFsdWUgfTogYW55KTogdm9pZHtcbiAgICB0aGlzLm51bWJlclZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgc2VsZWN0ZWRJdGVtOiB0aGlzLnNlbGVjdGVkSXRlbSwgbnVtYmVyOiB2YWx1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgb24gZm9ybSBudW1iZXIga2V5cHJlc3MuXG4gICAqIENvbnRyb2xsaW5nIGlucHV0IGluIGEgbnVtYmVyIGZpZWxkLCByZXN0cmljdGluZyB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGFsbG93ZWQuXG4gICAqIEBwYXJhbSB7YW55fSAtIENvbnRhaW5cbiAgICogY2hhckNvZGUgLSB0aGUgY2hhcmFjdGVyIGNvZGUgb2YgdGhlIGtleSBwcmVzc2VkLlxuICAgKiBwcmV2ZW50RGVmYXVsdCAtIHRoZSBmdW5jdGlvbiB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiB0aGUgZXZlbnQuXG4gICAqIHRhcmdldC52YWx1ZSAtIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBmaWVsZC5cbiAgICovXG4gIHB1YmxpYyBsaW1pdERlY2ltYWwoeyBjaGFyQ29kZSwgcHJldmVudERlZmF1bHQsIHRhcmdldDogeyB2YWx1ZSB9fTogYW55KTogdm9pZHtcbiAgICBjb25zdCByZWcgPSB0aGlzLmRlY2ltYWxMaW1pdGVyID4gMD8gbmV3IFJlZ0V4cChgXlxcXFxkKihcXFxcLlxcXFxkezAsJHsgdGhpcy5kZWNpbWFsTGltaXRlciB9fSk/JGApIDogL15cXGQrJC87XG4gICAgaWYgKCFyZWcudGVzdCh2YWx1ZSArIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpKSkgcHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRJc0xvYWRpbmcoYjogYm9vbGVhbik6IHZvaWR7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBiO1xuICAgIHRoaXMuY2gubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBbY2xhc3MucmVxdWlyZWRdPVwicmVxdWlyZWRcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0Rm9ybT5cbiAgICA8bmctc2VsZWN0IFxuICAgICAgICBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIlxuICAgICAgICBbY2xhc3MubnVtYmVyXT1cImlzSW5wdXROdW1iZXJcIlxuICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJ0cnVlXCJcbiAgICAgICAgW2l0ZW1zXT1cIml0ZW1zXCJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICBbcmVhZG9ubHldPVwiZGlzYWJsZWRcIiBcbiAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpO1wiXG4gICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmctb3B0aW9uLXRtcCBsZXQtaT1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGlzSW5wdXROdW1iZXI/IGkudmFsdWUgOiBpLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1sYWJlbC10bXAgbGV0LWk9XCJpdGVtXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBpc0lucHV0TnVtYmVyPyBpLnZhbHVlIDogaS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXROdW1iZXI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdEZvcm1cIiAvPlxuXG4gICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cIm51bWJlclBsYWNlaG9sZGVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZmxleC1ncm93LTFcIiBbZGlzYWJsZWRdPVwiaXNOdW1iZXJEaXNhYmxlZFwiIFt2YWx1ZV09XCJudW1iZXJWYWx1ZVwiIChrZXlwcmVzcyk9XCJsaW1pdERlY2ltYWwoJGV2ZW50KVwiIChpbnB1dCk9XCJudW1iZXJJbnB1dCgkZXZlbnQudGFyZ2V0KVwiPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0lucHV0TnVtYmVyIGVsc2UgaW5wdXROdW1iZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VsZWN0Rm9ybVwiIC8+XG48L25nLWNvbnRhaW5lcj5cblxuPGxhYmVsICpuZ0lmPVwiZXJyb3JNc2dcIiBjbGFzcz1cImlzLWludmFsaWRcIj57eyBlcnJvck1zZyB9fTwvbGFiZWw+XG4iXX0=
@@ -31,12 +31,19 @@ export class AuthService {
31
31
  name
32
32
  status
33
33
  }
34
+ roles {
35
+ guid
36
+ code
37
+ name
38
+ isInternal
39
+ status
40
+ }
34
41
  }
35
42
  }
36
43
  `
37
44
  }).pipe(tap(({ data }) => {
38
45
  if (data?.authMsLogin) {
39
- const { accessToken, user, refreshToken, suggestedAction } = data.authMsLogin;
46
+ const { accessToken, user, refreshToken, suggestedAction, roles } = data.authMsLogin;
40
47
  this.user = user;
41
48
  this.user.photo = '/assets/imgs/profile.svg';
42
49
  AuthService.authToken = accessToken ?? '';
@@ -45,6 +52,7 @@ export class AuthService {
45
52
  localStorage.setItem('authToken', AuthService.authToken);
46
53
  }
47
54
  localStorage.setItem('userGuid', this.user.guid);
55
+ localStorage.setItem('roles', JSON.stringify(roles));
48
56
  localStorage.setItem('refreshToken', AuthService.refreshToken);
49
57
  }
50
58
  }));
@@ -134,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
134
142
  providedIn: 'root'
135
143
  }]
136
144
  }], ctorParameters: () => [{ type: i1.Apollo }, { type: i2.ProfileService }] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUEwQixHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQXNGLGNBQWMsRUFBRSxlQUFlLEVBQVMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU94SyxNQUFNLE9BQU8sV0FBVzthQVFSLGNBQVMsR0FBVyxFQUFFLEFBQWIsQ0FBYzthQUN2QixpQkFBWSxHQUFXLEVBQUUsQUFBYixDQUFjO0lBU3hDLFlBQ3FCLE1BQWMsRUFDZCxjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQy9DLENBQUM7SUFVRSxLQUFLLENBQUMsS0FBa0U7UUFDN0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBaUM7WUFDeEQsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCWjtTQUNGLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUU5RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQVksQ0FBQztnQkFDekIsSUFB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QUN4QixRQUFRLEVBQUUsR0FBRyxDQUFBOzs7O09BSVo7WUFDRCxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUU7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E1TFUsV0FBVztrSEFBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwb2xsbywgTXV0YXRpb25SZXN1bHQsIGdxbCB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBBcHBMb2dpblN1YmplY3QsIENoYW5nZVBhc3NScSwgTG9naW5SZXNwb25zZSwgTXV0YXRpb25BdXRoTXNSZWZyZXNoQWNjZXNzVG9rZW5BcmdzLCBTb3VyY2VQbGF0Zm9ybSwgU3VnZ2VzdGVkQWN0aW9uLCBUb2tlbiB9IGZyb20gJy4uLy4uLy4uL2dyYXBocWwvZ2VuZXJhdGVkJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIEJvdGggYGF1dGhUb2tlbmAgYW5kIGByZWZyZXNoVG9rZW5gIGFyZSBwdWJsaWMgc3RhdGljIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBhdXRoIHRva2VuIGFuZCByZWZyZXNoIHRva2VuIG9idGFpbmVkIGZvcm0gdGhlIGxvZ2luIEFQSS5cbiAgICogVGhleSB3aWxsIGJlIHNldCBhcyBoZWFkZXIgcGFyYW0gaW5zaWRlIEFQSSBjYWxscy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXV0aFRva2VuOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIHN0YXRpYyByZWZyZXNoVG9rZW46IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBBIHB1YmxpYyB2YXJpYWJsZSB0byBzdG9yZSB0aGUgbG9naW5lZCB1c2VyIGluZm9ybWF0aW9uLlxuICAgKiBAdHlwZSB7VXNlcn0gQW4gaW50ZXJmYWNlIGNvbnRhaW4gdXNlciBpbmZvcm1hdGlvbi5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBwdWJsaWMgdXNlcj86IFVzZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwb2xsbzogQXBvbGxvLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyIHRvIGdldCB0aGUgc2Vzc2lvbiBmb3IgYXBwbGV0IG9yIHBsYXRmb3JtLlxuICAgKiBXaGVuIHN1Y2Nlc3NmdWwgaXQgd2lsbCBzZXQgdGhlIHVzZXIgaW5mb3JtYXRpb24gdG8gdGhlIGB1c2VyYCB2YXJpYWJsZSwgYGF1dGhUb2tlbmAgYW5kIGByZWZyZXNoVG9rZW5gLlxuICAgKiBJdCB3aWxsIHNldCB0aGUgYGF1dGhUb2tlbmAsIGByZWZyZXNoVG9rZW5gIGFuZCBgdXNlckd1aWRgIHRvIHRoZSBsb2NhbFN0b3JhZ2UgYWxzbyBmb3IgQVBJIGNhbGxzLlxuICAgKiBAcGFyYW0ge3sgZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc291cmNlUGxhdGZvcm06IHN0cmluZyB9fSBpbnB1dCAtIENvbnRhaW4gYGVtYWlsYCB3aGljaCBpcyByZWdpc3RlcmVkIHVzZXIgZW1haWwsIGBwYXNzd29yZGAgd2hpY2ggaXMgcmVnaXN0ZXJlZCB1c2VyIHBhc3N3b3JkXG4gICAqIGFuZCBgc291cmNlUGxhdGZvcm1gIGl0J3MgdmFsdWUgY2FuIGJlIGBBRE1JTmAgdG8gZ2V0IHRoZSBhcHBsZXQgc2Vzc2lvbiBvciBgQ1BfQ09NTUVSQ0VgIHRvIGdldCB0aGUgcGxhdGZvcm0gc2Vzc2lvbi5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNMb2dpbjogTG9naW5SZXNwb25zZSB9Pj59IENvbnRhaW4gbG9naW5lZCB1c2VyIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcHVibGljIGxvZ2luKGlucHV0OiB7IGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8eyBhdXRoTXNMb2dpbjogTG9naW5SZXNwb25zZSB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZTx7IGF1dGhNc0xvZ2luOiBMb2dpblJlc3BvbnNlIH0+KHtcbiAgICAgIHZhcmlhYmxlczogeyBpbnB1dCB9LFxuICAgICAgbXV0YXRpb246IGdxbGBcbiAgICAgICAgbXV0YXRpb24gTG9naW4oJGlucHV0OiBMb2dpblJxISkge1xuICAgICAgICAgIGF1dGhNc0xvZ2luKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuXG4gICAgICAgICAgICByZWZyZXNoVG9rZW5cbiAgICAgICAgICAgIHN1Z2dlc3RlZEFjdGlvblxuICAgICAgICAgICAgdXNlciB7XG4gICAgICAgICAgICAgIGJpcnRoZGF5XG4gICAgICAgICAgICAgIGNhdGVnb3J5XG4gICAgICAgICAgICAgIGVtYWlsXG4gICAgICAgICAgICAgIGdlbmRlclxuICAgICAgICAgICAgICBndWlkXG4gICAgICAgICAgICAgIG1vYmlsZU51bWJlclxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pLnBpcGUoXG4gICAgICB0YXAoKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGlmIChkYXRhPy5hdXRoTXNMb2dpbikge1xuICAgICAgICAgIGNvbnN0IHsgYWNjZXNzVG9rZW4sIHVzZXIsIHJlZnJlc2hUb2tlbiwgc3VnZ2VzdGVkQWN0aW9uIH0gPSBkYXRhLmF1dGhNc0xvZ2luO1xuXG4gICAgICAgICAgdGhpcy51c2VyID0gdXNlciBhcyBVc2VyO1xuICAgICAgICAgIHRoaXMudXNlciEucGhvdG8gPSAnL2Fzc2V0cy9pbWdzL3Byb2ZpbGUuc3ZnJztcbiAgICAgICAgICBBdXRoU2VydmljZS5hdXRoVG9rZW4gPSBhY2Nlc3NUb2tlbiA/PyAnJztcbiAgICAgICAgICBBdXRoU2VydmljZS5yZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW4gPz8gJyc7XG5cbiAgICAgICAgICBpZiAoc3VnZ2VzdGVkQWN0aW9uICE9PSBTdWdnZXN0ZWRBY3Rpb24uQ2hhbmdlUGFzc3dvcmQgKSB7IFxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2F1dGhUb2tlbicsIEF1dGhTZXJ2aWNlLmF1dGhUb2tlbik7IFxuICAgICAgICAgIH1cbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndXNlckd1aWQnLCB0aGlzLnVzZXIhLmd1aWQpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCBBdXRoU2VydmljZS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYFJlZnJlc2hUb2tlbkludGVyY2VwdG9yYCwgdG8gZ2V0IHRoZSBuZXcgdG9rZW4gc2hvcnRseSBiZWZvcmUgdGhlIGF1dGggdG9rZW4gaXMgZXhwaXJlZC5cbiAgICogQHBhcmFtIHtNdXRhdGlvbkF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbkFyZ3N9IHZhcmlhYmxlcyAtIENvbnRhaW4gYHJlZnJlc2hUb2tlbmAgYXR0cmlidXRlIHdoaWNoIGlzIHRoZSBjdXJyZW50IHJlZnJlc2ggdG9rZW4uXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuOiBUb2tlbiB9Pj59IENvbnRhaW4gbmV3IGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYC5cbiAgICovXG4gIHB1YmxpYyByZWZyZXNoVG9rZW4odmFyaWFibGVzOiBNdXRhdGlvbkF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbkFyZ3MpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuOiBUb2tlbiB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnb3BlcmF0aW9uLXR5cGUnOiAnTXV0YXRpb24nLFxuICAgICAgICAgICdvcGVyYXRpb24tbmFtZSc6ICdSZWZyZXNoVG9rZW4nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBtdXRhdGlvbjogZ3FsYFxuICAgICAgICBtdXRhdGlvbiBSZWZyZXNoVG9rZW4oJHJlZnJlc2hUb2tlbjogU3RyaW5nISkge1xuICAgICAgICAgIGF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbihyZWZyZXNoVG9rZW46ICRyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuXG4gICAgICAgICAgICByZWZyZXNoVG9rZW5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byBzZXQgdGhlIHVzZXIgaW5mb3JtYXRpb24gdG8gdGhlIGB1c2VyYCB2YXJpYWJsZSB3aGVuIHRoZSB1c2VyIHJlZnJlc2ggdGhlIHBhZ2UuXG4gICAqIEJlY2F1c2Ugb2YgdGhlIHVzZXIgaW5mb3JtYXRpb24gb25seSBzdG9yZWQgaW4gdGhlIHZhcmlhYmxlIHNvIGl0IHdpbGwgZ29uZSB3aGlsZSB0aGUgcGFnZSByZWZyZXNoZWQgYW5kIG5lZWQgdG8gcmVzZXQgYWdhaW4uXG4gICAqIEBwYXJhbSB7RmV0Y2hQb2xpY3kgfCB1bmRlZmluZWR9IGZldGNoUG9saWN5IC0gU3BlY2lmaWVzIGhvdyBBcG9sbG8gQ2xpZW50IHNob3VsZCBoYW5kbGUgZGF0YSByZXRyaWV2YWwsXG4gICAqIGRldGVybWluaW5nIHdoZXRoZXIgaXQgc2hvdWxkIG1ha2UgYSBuZXR3b3JrIHJlcXVlc3QgdG8gZmV0Y2ggZnJlc2ggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgb3IgdXNlIGRhdGEgZnJvbSB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEFwcExvZ2luU3ViamVjdCB8IG51bGw+fVxuICAgKi9cbiAgcHVibGljIGdldFByb2ZpbGUoZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSk6IE9ic2VydmFibGU8QXBwTG9naW5TdWJqZWN0IHwgbnVsbD57XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0TXlQcm9maWxlKGZldGNoUG9saWN5KS5waXBlKFxuICAgICAgdGFwKCh1c2VyOiBBcHBMb2dpblN1YmplY3QgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuO1xuICAgICAgICB0aGlzLnVzZXIgPSB7IC4uLnVzZXIsIHBob3RvOiAnL2Fzc2V0cy9pbWdzL3Byb2ZpbGUuc3ZnJyB9IGFzIFVzZXI7XG5cbiAgICAgICAgdXNlci5hcHBMb2dpbkV4dD8uZm9yRWFjaCgoeyBwYXJhbUNvZGUsIGZpbGU6IHsgcHVibGljVXJsIH19OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocGFyYW1Db2RlID09PSAnVVNFUl9QUk9GSUxFX1BIT1RPJykgdGhpcy51c2VyIS5waG90byA9IHB1YmxpY1VybDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdXNlci5hcHBMb2dpblByaW5jaXBhbD8uZm9yRWFjaCgoeyBwcmluY2lwYWxJZCwgcHJpbmNpcGFsVHlwZSB9OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocHJpbmNpcGFsVHlwZSA9PT0gJ0VNQUlMX1VTRVJOQU1FJykgdGhpcy51c2VyIS5lbWFpbCA9IHByaW5jaXBhbElkO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byBnZXQgdGhlIG90cCAvIHZlcmlmaWNhdGlvbiBjb2RlIGZvciByZXNldCBwYXNzd29yZCBwdXJwb3NlLlxuICAgKiBObyBuZWVkIGF1dGhvcml6YXRpb24gaGVhZGVyIHRvIGNhbGwgdGhpcyBBUEkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbCAtIENvbnRhaW4gcmVnaXN0ZXJlZCB1c2VyIGVtYWlsLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDxhbnk+Pn0gQ29udGFpbiBtZXNzYWdlIHN0YXRpbmcgdGhhdCB2ZXJpZmljYXRpb24gY29kZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBlbWFpbC5cbiAgICovXG4gIHB1YmxpYyBpbml0Rm9yZ290UGFzc3dvcmQoZW1haWw6IHN0cmluZyk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8YW55Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICBzb3VyY2VQbGF0Zm9ybTogU291cmNlUGxhdGZvcm0uQWRtaW5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG11dGF0aW9uOiAgZ3FsYFxuICAgICAgICBtdXRhdGlvbiBJbml0Rm9yZ290UGFzc3dvcmQoJGlucHV0OiBGb3Jnb3RQYXNzT3RwUnEhKSB7XG4gICAgICAgICAgYXV0aE1zRm9yZ290UGFzc3dvcmRPdHAoaW5wdXQ6ICRpbnB1dClcbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGdlbmVyYXRlIG5ldyBwYXNzd29yZCB3aGVuIHRoZSB1c2VyIGZvcmdldHMgdGhlIHBhc3N3b3JkLlxuICAgKiBObyBuZWVkIGF1dGhvcml6YXRpb24gaGVhZGVyIGZvciB0aGlzIEFQSS5cbiAgICogQHBhcmFtIHt7IGNvbmZpcm06IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgdmVyaWZDb2RlOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfX0gLSBDb250YWluIDpcbiAgICogbmV3UGFzc3dvcmQgLSB0aGUgbmV3IHBhc3N3b3JkLlxuICAgKiBjb25maXJtIC0gdGhlIGV4YWN0bHkgc2FtZSB3aXRoIHRoZSBuZXcgcGFzc3dvcmQuXG4gICAqIHByaW5jaXBhbElkIC0gcmVnaXN0ZXJlZCBlbWFpbCBvciBwaG9uZSBudW1iZXIgYXR0YWNoZWQgdG8gdXNlci5cbiAgICogdmVyaWZDb2RlIC0gb3RwIC8gdmVyaWZpY2F0aW9uIGNvZGUgdGhhdCBoYXMgYmVlbiBzZW50IHRvIGVtYWlsLlxuICAgKiBzb3VyY2VQbGF0Zm9ybSAtIGBBRE1JTmAgZm9yIGFwcGxldCBvciBgQ1BfQ09NTUVSQ0VgIGZvciBwbGF0Zm9ybS5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8YW55Pj59IENvbnRhaW4gbWVzc2FnZSBzdGF0aW5nIHRoYXQgdXNlciBzdWNjZXNzZnVsbHkgLyBmYWlsZWQgdG8gcmVzZXQgdGhlIHBhc3N3b3JkLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZU5ld1Bhc3N3b3JkKHsgbmV3UGFzc3dvcmQsIHByaW5jaXBhbElkLCBzb3VyY2VQbGF0Zm9ybSwgdmVyaWZDb2RlIH06IHsgY29uZmlybTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCB2ZXJpZkNvZGU6IHN0cmluZywgc291cmNlUGxhdGZvcm06IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDxhbnk+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uIDogZ3FsYFxuICAgICAgICBtdXRhdGlvbiBTdWJtaXRGb3Jnb3RQYXNzd29yZCgkaW5wdXQ6IEZvcmdvdFBhc3NScSEpIHtcbiAgICAgICAgICBhdXRoTXNGb3Jnb3RQYXNzd29yZChpbnB1dDogJGlucHV0KVxuICAgICAgICB9XG4gICAgICBgLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgbmV3UGFzc3dvcmQsXG4gICAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgICAgc291cmNlUGxhdGZvcm0sXG4gICAgICAgICAgdmVyaWZDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byB1cGRhdGUgdXNlcidzIHBhc3N3b3JkLlxuICAgKiBOZWVkIGF1dGhvcml6YXRpb24gaGVhZGVyIGZvciB0aGlzIEFQSS5cbiAgICogQHBhcmFtIHt7IG9sZFBhc3N3b3JkOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcgfX0gaW5wdXQgLSBDb250YWluIG9sZFBhc3N3b3JkIHdoaWNoIGlzIG9sZCAvIGN1cnJlbnQgcGFzc3dvcmQgYW5kIG5ld1Bhc3N3b3JkIHdoaWNoIGlzIHRoZSBuZXcgcGFzc3dvcmQuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zQ2hhbmdlUGFzc3dvcmQ6IENoYW5nZVBhc3NScSB9Pj59IENvbnRhaW4gbWVzc2FnZSBzdGF0aW5nIHRoZSBwYXNzd29yZCB1cGRhdGVkIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVQYXNzd29yZChpbnB1dDogeyBvbGRQYXNzd29yZDogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zQ2hhbmdlUGFzc3dvcmQ6IENoYW5nZVBhc3NScSB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogZ3FsYFxuICAgICAgICBtdXRhdGlvbiBDaGFuZ2VQYXNzd29yZCgkaW5wdXQ6IENoYW5nZVBhc3NScSEpIHtcbiAgICAgICAgICBhdXRoTXNDaGFuZ2VQYXNzd29yZChpbnB1dDogJGlucHV0KVxuICAgICAgICB9XG4gICAgICBgLFxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0IH1cbiAgICB9KTtcbiAgfVxufVxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUEwQixHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQXNGLGNBQWMsRUFBRSxlQUFlLEVBQVMsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQU94SyxNQUFNLE9BQU8sV0FBVzthQVFSLGNBQVMsR0FBVyxFQUFFLEFBQWIsQ0FBYzthQUN2QixpQkFBWSxHQUFXLEVBQUUsQUFBYixDQUFjO0lBU3hDLFlBQ3FCLE1BQWMsRUFDZCxjQUE4QjtRQUQ5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQy9DLENBQUM7SUFVRSxLQUFLLENBQUMsS0FBa0U7UUFDN0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBaUM7WUFDeEQsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F5Qlo7U0FDRixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNmLElBQUksSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBRXJGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFB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O2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sY0FBYyxDQUFDLEtBQW1EO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDeEIsUUFBUSxFQUFFLEdBQUcsQ0FBQTs7OztPQUlaO1lBQ0QsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBck1VLFdBQVc7a0hBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcG9sbG8sIE11dGF0aW9uUmVzdWx0LCBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBGZXRjaFBvbGljeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQXBwTG9naW5TdWJqZWN0LCBDaGFuZ2VQYXNzUnEsIExvZ2luUmVzcG9uc2UsIE11dGF0aW9uQXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuQXJncywgU291cmNlUGxhdGZvcm0sIFN1Z2dlc3RlZEFjdGlvbiwgVG9rZW4gfSBmcm9tICcuLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIC8qKlxuICAgKiBCb3RoIGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYCBhcmUgcHVibGljIHN0YXRpYyB2YXJpYWJsZSB0byBzdG9yZSB0aGUgYXV0aCB0b2tlbiBhbmQgcmVmcmVzaCB0b2tlbiBvYnRhaW5lZCBmb3JtIHRoZSBsb2dpbiBBUEkuXG4gICAqIFRoZXkgd2lsbCBiZSBzZXQgYXMgaGVhZGVyIHBhcmFtIGluc2lkZSBBUEkgY2FsbHMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGF1dGhUb2tlbjogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVmcmVzaFRva2VuOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQSBwdWJsaWMgdmFyaWFibGUgdG8gc3RvcmUgdGhlIGxvZ2luZWQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICogQHR5cGUge1VzZXJ9IEFuIGludGVyZmFjZSBjb250YWluIHVzZXIgaW5mb3JtYXRpb24uXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcHVibGljIHVzZXI/OiBVc2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcG9sbG86IEFwb2xsbyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB0byBnZXQgdGhlIHNlc3Npb24gZm9yIGFwcGxldCBvciBwbGF0Zm9ybS5cbiAgICogV2hlbiBzdWNjZXNzZnVsIGl0IHdpbGwgc2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIHRvIHRoZSBgdXNlcmAgdmFyaWFibGUsIGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYC5cbiAgICogSXQgd2lsbCBzZXQgdGhlIGBhdXRoVG9rZW5gLCBgcmVmcmVzaFRva2VuYCwgYHVzZXJHdWlkYCBhbmQgYHJvbGVzYCB0byB0aGUgbG9jYWxTdG9yYWdlIGFsc28gZm9yIEFQSSBjYWxscy5cbiAgICogQHBhcmFtIHt7IGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfX0gaW5wdXQgLSBDb250YWluIGBlbWFpbGAgd2hpY2ggaXMgcmVnaXN0ZXJlZCB1c2VyIGVtYWlsLCBgcGFzc3dvcmRgIHdoaWNoIGlzIHJlZ2lzdGVyZWQgdXNlciBwYXNzd29yZFxuICAgKiBhbmQgYHNvdXJjZVBsYXRmb3JtYCBpdCdzIHZhbHVlIGNhbiBiZSBgQURNSU5gIHRvIGdldCB0aGUgYXBwbGV0IHNlc3Npb24gb3IgYENQX0NPTU1FUkNFYCB0byBnZXQgdGhlIHBsYXRmb3JtIHNlc3Npb24uXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zTG9naW46IExvZ2luUmVzcG9uc2UgfT4+fSBDb250YWluIGxvZ2luZWQgdXNlciBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHB1YmxpYyBsb2dpbihpbnB1dDogeyBlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzb3VyY2VQbGF0Zm9ybTogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zTG9naW46IExvZ2luUmVzcG9uc2UgfT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5tdXRhdGU8eyBhdXRoTXNMb2dpbjogTG9naW5SZXNwb25zZSB9Pih7XG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQgfSxcbiAgICAgIG11dGF0aW9uOiBncWxgXG4gICAgICAgIG11dGF0aW9uIExvZ2luKCRpbnB1dDogTG9naW5ScSEpIHtcbiAgICAgICAgICBhdXRoTXNMb2dpbihpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBhY2Nlc3NUb2tlblxuICAgICAgICAgICAgcmVmcmVzaFRva2VuXG4gICAgICAgICAgICBzdWdnZXN0ZWRBY3Rpb25cbiAgICAgICAgICAgIHVzZXIge1xuICAgICAgICAgICAgICBiaXJ0aGRheVxuICAgICAgICAgICAgICBjYXRlZ29yeVxuICAgICAgICAgICAgICBlbWFpbFxuICAgICAgICAgICAgICBnZW5kZXJcbiAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICBtb2JpbGVOdW1iZXJcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvbGVzIHtcbiAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgaXNJbnRlcm5hbFxuICAgICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KS5waXBlKFxuICAgICAgdGFwKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICBpZiAoZGF0YT8uYXV0aE1zTG9naW4pIHtcbiAgICAgICAgICBjb25zdCB7IGFjY2Vzc1Rva2VuLCB1c2VyLCByZWZyZXNoVG9rZW4sIHN1Z2dlc3RlZEFjdGlvbiwgcm9sZXMgfSA9IGRhdGEuYXV0aE1zTG9naW47XG5cbiAgICAgICAgICB0aGlzLnVzZXIgPSB1c2VyIGFzIFVzZXI7XG4gICAgICAgICAgdGhpcy51c2VyIS5waG90byA9ICcvYXNzZXRzL2ltZ3MvcHJvZmlsZS5zdmcnO1xuICAgICAgICAgIEF1dGhTZXJ2aWNlLmF1dGhUb2tlbiA9IGFjY2Vzc1Rva2VuID8/ICcnO1xuICAgICAgICAgIEF1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbiA/PyAnJztcblxuICAgICAgICAgIGlmIChzdWdnZXN0ZWRBY3Rpb24gIT09IFN1Z2dlc3RlZEFjdGlvbi5DaGFuZ2VQYXNzd29yZCApIHsgXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXV0aFRva2VuJywgQXV0aFNlcnZpY2UuYXV0aFRva2VuKTsgXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VzZXJHdWlkJywgdGhpcy51c2VyIS5ndWlkKTtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncm9sZXMnLCBKU09OLnN0cmluZ2lmeShyb2xlcykpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCBBdXRoU2VydmljZS5yZWZyZXNoVG9rZW4pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgYFJlZnJlc2hUb2tlbkludGVyY2VwdG9yYCwgdG8gZ2V0IHRoZSBuZXcgdG9rZW4gc2hvcnRseSBiZWZvcmUgdGhlIGF1dGggdG9rZW4gaXMgZXhwaXJlZC5cbiAgICogQHBhcmFtIHtNdXRhdGlvbkF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbkFyZ3N9IHZhcmlhYmxlcyAtIENvbnRhaW4gYHJlZnJlc2hUb2tlbmAgYXR0cmlidXRlIHdoaWNoIGlzIHRoZSBjdXJyZW50IHJlZnJlc2ggdG9rZW4uXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuOiBUb2tlbiB9Pj59IENvbnRhaW4gbmV3IGBhdXRoVG9rZW5gIGFuZCBgcmVmcmVzaFRva2VuYC5cbiAgICovXG4gIHB1YmxpYyByZWZyZXNoVG9rZW4odmFyaWFibGVzOiBNdXRhdGlvbkF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbkFyZ3MpOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zUmVmcmVzaEFjY2Vzc1Rva2VuOiBUb2tlbiB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnb3BlcmF0aW9uLXR5cGUnOiAnTXV0YXRpb24nLFxuICAgICAgICAgICdvcGVyYXRpb24tbmFtZSc6ICdSZWZyZXNoVG9rZW4nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBtdXRhdGlvbjogZ3FsYFxuICAgICAgICBtdXRhdGlvbiBSZWZyZXNoVG9rZW4oJHJlZnJlc2hUb2tlbjogU3RyaW5nISkge1xuICAgICAgICAgIGF1dGhNc1JlZnJlc2hBY2Nlc3NUb2tlbihyZWZyZXNoVG9rZW46ICRyZWZyZXNoVG9rZW4pIHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuXG4gICAgICAgICAgICByZWZyZXNoVG9rZW5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byBzZXQgdGhlIHVzZXIgaW5mb3JtYXRpb24gdG8gdGhlIGB1c2VyYCB2YXJpYWJsZSB3aGVuIHRoZSB1c2VyIHJlZnJlc2ggdGhlIHBhZ2UuXG4gICAqIEJlY2F1c2Ugb2YgdGhlIHVzZXIgaW5mb3JtYXRpb24gb25seSBzdG9yZWQgaW4gdGhlIHZhcmlhYmxlIHNvIGl0IHdpbGwgZ29uZSB3aGlsZSB0aGUgcGFnZSByZWZyZXNoZWQgYW5kIG5lZWQgdG8gcmVzZXQgYWdhaW4uXG4gICAqIEBwYXJhbSB7RmV0Y2hQb2xpY3kgfCB1bmRlZmluZWR9IGZldGNoUG9saWN5IC0gU3BlY2lmaWVzIGhvdyBBcG9sbG8gQ2xpZW50IHNob3VsZCBoYW5kbGUgZGF0YSByZXRyaWV2YWwsXG4gICAqIGRldGVybWluaW5nIHdoZXRoZXIgaXQgc2hvdWxkIG1ha2UgYSBuZXR3b3JrIHJlcXVlc3QgdG8gZmV0Y2ggZnJlc2ggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgb3IgdXNlIGRhdGEgZnJvbSB0aGUgbG9jYWwgY2FjaGUuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEFwcExvZ2luU3ViamVjdCB8IG51bGw+fVxuICAgKi9cbiAgcHVibGljIGdldFByb2ZpbGUoZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSk6IE9ic2VydmFibGU8QXBwTG9naW5TdWJqZWN0IHwgbnVsbD57XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0TXlQcm9maWxlKGZldGNoUG9saWN5KS5waXBlKFxuICAgICAgdGFwKCh1c2VyOiBBcHBMb2dpblN1YmplY3QgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuO1xuICAgICAgICB0aGlzLnVzZXIgPSB7IC4uLnVzZXIsIHBob3RvOiAnL2Fzc2V0cy9pbWdzL3Byb2ZpbGUuc3ZnJyB9IGFzIFVzZXI7XG5cbiAgICAgICAgdXNlci5hcHBMb2dpbkV4dD8uZm9yRWFjaCgoeyBwYXJhbUNvZGUsIGZpbGU6IHsgcHVibGljVXJsIH19OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocGFyYW1Db2RlID09PSAnVVNFUl9QUk9GSUxFX1BIT1RPJykgdGhpcy51c2VyIS5waG90byA9IHB1YmxpY1VybDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdXNlci5hcHBMb2dpblByaW5jaXBhbD8uZm9yRWFjaCgoeyBwcmluY2lwYWxJZCwgcHJpbmNpcGFsVHlwZSB9OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocHJpbmNpcGFsVHlwZSA9PT0gJ0VNQUlMX1VTRVJOQU1FJykgdGhpcy51c2VyIS5lbWFpbCA9IHByaW5jaXBhbElkO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byBnZXQgdGhlIG90cCAvIHZlcmlmaWNhdGlvbiBjb2RlIGZvciByZXNldCBwYXNzd29yZCBwdXJwb3NlLlxuICAgKiBObyBuZWVkIGF1dGhvcml6YXRpb24gaGVhZGVyIHRvIGNhbGwgdGhpcyBBUEkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbCAtIENvbnRhaW4gcmVnaXN0ZXJlZCB1c2VyIGVtYWlsLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDxhbnk+Pn0gQ29udGFpbiBtZXNzYWdlIHN0YXRpbmcgdGhhdCB2ZXJpZmljYXRpb24gY29kZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBlbWFpbC5cbiAgICovXG4gIHB1YmxpYyBpbml0Rm9yZ290UGFzc3dvcmQoZW1haWw6IHN0cmluZyk6IE9ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8YW55Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICBzb3VyY2VQbGF0Zm9ybTogU291cmNlUGxhdGZvcm0uQWRtaW5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG11dGF0aW9uOiAgZ3FsYFxuICAgICAgICBtdXRhdGlvbiBJbml0Rm9yZ290UGFzc3dvcmQoJGlucHV0OiBGb3Jnb3RQYXNzT3RwUnEhKSB7XG4gICAgICAgICAgYXV0aE1zRm9yZ290UGFzc3dvcmRPdHAoaW5wdXQ6ICRpbnB1dClcbiAgICAgICAgfVxuICAgICAgYFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGdlbmVyYXRlIG5ldyBwYXNzd29yZCB3aGVuIHRoZSB1c2VyIGZvcmdldHMgdGhlIHBhc3N3b3JkLlxuICAgKiBObyBuZWVkIGF1dGhvcml6YXRpb24gaGVhZGVyIGZvciB0aGlzIEFQSS5cbiAgICogQHBhcmFtIHt7IGNvbmZpcm06IHN0cmluZywgbmV3UGFzc3dvcmQ6IHN0cmluZywgcHJpbmNpcGFsSWQ6IHN0cmluZywgdmVyaWZDb2RlOiBzdHJpbmcsIHNvdXJjZVBsYXRmb3JtOiBzdHJpbmcgfX0gLSBDb250YWluIDpcbiAgICogbmV3UGFzc3dvcmQgLSB0aGUgbmV3IHBhc3N3b3JkLlxuICAgKiBjb25maXJtIC0gdGhlIGV4YWN0bHkgc2FtZSB3aXRoIHRoZSBuZXcgcGFzc3dvcmQuXG4gICAqIHByaW5jaXBhbElkIC0gcmVnaXN0ZXJlZCBlbWFpbCBvciBwaG9uZSBudW1iZXIgYXR0YWNoZWQgdG8gdXNlci5cbiAgICogdmVyaWZDb2RlIC0gb3RwIC8gdmVyaWZpY2F0aW9uIGNvZGUgdGhhdCBoYXMgYmVlbiBzZW50IHRvIGVtYWlsLlxuICAgKiBzb3VyY2VQbGF0Zm9ybSAtIGBBRE1JTmAgZm9yIGFwcGxldCBvciBgQ1BfQ09NTUVSQ0VgIGZvciBwbGF0Zm9ybS5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TXV0YXRpb25SZXN1bHQ8YW55Pj59IENvbnRhaW4gbWVzc2FnZSBzdGF0aW5nIHRoYXQgdXNlciBzdWNjZXNzZnVsbHkgLyBmYWlsZWQgdG8gcmVzZXQgdGhlIHBhc3N3b3JkLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZU5ld1Bhc3N3b3JkKHsgbmV3UGFzc3dvcmQsIHByaW5jaXBhbElkLCBzb3VyY2VQbGF0Zm9ybSwgdmVyaWZDb2RlIH06IHsgY29uZmlybTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nLCBwcmluY2lwYWxJZDogc3RyaW5nLCB2ZXJpZkNvZGU6IHN0cmluZywgc291cmNlUGxhdGZvcm06IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxNdXRhdGlvblJlc3VsdDxhbnk+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uIDogZ3FsYFxuICAgICAgICBtdXRhdGlvbiBTdWJtaXRGb3Jnb3RQYXNzd29yZCgkaW5wdXQ6IEZvcmdvdFBhc3NScSEpIHtcbiAgICAgICAgICBhdXRoTXNGb3Jnb3RQYXNzd29yZChpbnB1dDogJGlucHV0KVxuICAgICAgICB9XG4gICAgICBgLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgbmV3UGFzc3dvcmQsXG4gICAgICAgICAgcHJpbmNpcGFsSWQsXG4gICAgICAgICAgc291cmNlUGxhdGZvcm0sXG4gICAgICAgICAgdmVyaWZDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1ldGhvZCB0byB1cGRhdGUgdXNlcidzIHBhc3N3b3JkLlxuICAgKiBOZWVkIGF1dGhvcml6YXRpb24gaGVhZGVyIGZvciB0aGlzIEFQSS5cbiAgICogQHBhcmFtIHt7IG9sZFBhc3N3b3JkOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcgfX0gaW5wdXQgLSBDb250YWluIG9sZFBhc3N3b3JkIHdoaWNoIGlzIG9sZCAvIGN1cnJlbnQgcGFzc3dvcmQgYW5kIG5ld1Bhc3N3b3JkIHdoaWNoIGlzIHRoZSBuZXcgcGFzc3dvcmQuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zQ2hhbmdlUGFzc3dvcmQ6IENoYW5nZVBhc3NScSB9Pj59IENvbnRhaW4gbWVzc2FnZSBzdGF0aW5nIHRoZSBwYXNzd29yZCB1cGRhdGVkIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVQYXNzd29yZChpbnB1dDogeyBvbGRQYXNzd29yZDogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nIH0pOiBPYnNlcnZhYmxlPE11dGF0aW9uUmVzdWx0PHsgYXV0aE1zQ2hhbmdlUGFzc3dvcmQ6IENoYW5nZVBhc3NScSB9Pj57XG4gICAgcmV0dXJuIHRoaXMuYXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogZ3FsYFxuICAgICAgICBtdXRhdGlvbiBDaGFuZ2VQYXNzd29yZCgkaW5wdXQ6IENoYW5nZVBhc3NScSEpIHtcbiAgICAgICAgICBhdXRoTXNDaGFuZ2VQYXNzd29yZChpbnB1dDogJGlucHV0KVxuICAgICAgICB9XG4gICAgICBgLFxuICAgICAgdmFyaWFibGVzOiB7IGlucHV0IH1cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -6,17 +6,10 @@ export class CountryService {
6
6
  constructor(apollo) {
7
7
  this.apollo = apollo;
8
8
  }
9
- query() {
9
+ query(input = { page: 0, pageSize: 300, sortBy: 'name', sortDirection: 'asc' }) {
10
10
  return this.apollo.query({
11
11
  errorPolicy: 'all',
12
- variables: {
13
- input: {
14
- page: 0,
15
- pageSize: 300,
16
- sortBy: 'name',
17
- sortDirection: 'asc'
18
- }
19
- },
12
+ variables: { input },
20
13
  query: gql `
21
14
  query QueryCountry($input: CountryQueryCriteria!) {
22
15
  webConfigMsCountry(input: $input) {
@@ -47,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
47
40
  providedIn: 'root'
48
41
  }]
49
42
  }], ctorParameters: () => [{ type: i1.Apollo }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jb3VudHJ5L2NvdW50cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBVSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTTdDLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQ3FCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQy9CLENBQUM7SUFPRSxLQUFLO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN2QixXQUFXLEVBQUUsS0FBSztZQUNsQixTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxDQUFDO29CQUNQLFFBQVEsRUFBRSxHQUFHO29CQUNiLE1BQU0sRUFBRSxNQUFNO29CQUNkLGFBQWEsRUFBRSxLQUFLO2lCQUNyQjthQUNGO1lBQ0QsS0FBSyxFQUFFLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JUO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0ExQ1UsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgQXBvbGxvLCBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSAnLi4vLi4vLi4vZ3JhcGhxbC9nZW5lcmF0ZWQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb3VudHJ5U2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwb2xsbzogQXBvbGxvXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEEgbWV0aG9kIHRvIGdldCBsaXN0IG9mIGNvdW50cnkgYW5kIGl0J3MgaW5mb3JtYXRpb24uXG4gICAqIFRoZSBpbmZvcm1hdGlvbiBzdWNoIGFzIG5hbWUsIHBob25lIGNvZGUsIGxhbmd1YWdlIGNvZGUsIGNvdW50cnkgY29kZSBhbmQgZGVmYXVsdCBsYW5ndWFnZSBjb2RlLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxBcG9sbG9RdWVyeVJlc3VsdDx7IHdlYkNvbmZpZ01zQ291bnRyeTogeyBkYXRhOiBDb3VudHJ5W10gfX0+Pn0gQ29udGFpbiBsaXN0IG9mIGNvdW50cnkgYW5kIGl0J3MgaW5mb3JtYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcXVlcnkoKTogT2JzZXJ2YWJsZTxBcG9sbG9RdWVyeVJlc3VsdDx7IHdlYkNvbmZpZ01zQ291bnRyeTogeyBkYXRhOiBDb3VudHJ5W10gfX0+PntcbiAgICByZXR1cm4gdGhpcy5hcG9sbG8ucXVlcnkoe1xuICAgICAgZXJyb3JQb2xpY3k6ICdhbGwnLFxuICAgICAgdmFyaWFibGVzOiB7IFxuICAgICAgICBpbnB1dDogeyBcbiAgICAgICAgICBwYWdlOiAwLFxuICAgICAgICAgIHBhZ2VTaXplOiAzMDAsXG4gICAgICAgICAgc29ydEJ5OiAnbmFtZScsXG4gICAgICAgICAgc29ydERpcmVjdGlvbjogJ2FzYydcbiAgICAgICAgfSBcbiAgICAgIH0sXG4gICAgICBxdWVyeTogZ3FsYFxuICAgICAgICBxdWVyeSBRdWVyeUNvdW50cnkoJGlucHV0OiBDb3VudHJ5UXVlcnlDcml0ZXJpYSEpIHtcbiAgICAgICAgICB3ZWJDb25maWdNc0NvdW50cnkoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgICAgICAgZGF0YSB7XG4gICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgICAgZGVmYXVsdExhbmdDb2RlXG4gICAgICAgICAgICAgIGd1aWRcbiAgICAgICAgICAgICAgbGFuZ0NvZGVzIHtcbiAgICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgcGhvbmVDb2RlcyB7XG4gICAgICAgICAgICAgICAgY29kZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBgLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pcGluLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9jb3VudHJ5L2NvdW50cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBVSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTTdDLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQ3FCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQy9CLENBQUM7SUFRRSxLQUFLLENBQUMsUUFBOEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFO1FBQ3pHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDdkIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLEtBQUssRUFBRSxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCVDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcENVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBvbGxvUXVlcnlSZXN1bHQgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IEFwb2xsbywgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ291bnRyeSwgQ291bnRyeVF1ZXJ5Q3JpdGVyaWEgfSBmcm9tICcuLi8uLi8uLi9ncmFwaHFsL2dlbmVyYXRlZCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvdW50cnlTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBvbGxvOiBBcG9sbG9cbiAgKSB7IH1cblxuICAvKipcbiAgICogQSBtZXRob2QgdG8gZ2V0IGxpc3Qgb2YgY291bnRyeSBhbmQgaXQncyBpbmZvcm1hdGlvbi5cbiAgICogVGhlIGluZm9ybWF0aW9uIHN1Y2ggYXMgbmFtZSwgcGhvbmUgY29kZSwgbGFuZ3VhZ2UgY29kZSwgY291bnRyeSBjb2RlIGFuZCBkZWZhdWx0IGxhbmd1YWdlIGNvZGUuXG4gICAqIEBwYXJhbSB7Q291bnRyeVF1ZXJ5Q3JpdGVyaWF9IGlucHV0IC0gQ29udGFpbiBjb3VudHJ5IGRhdGEgcGFnaW5hdGlvbiBjcml0ZXJpYSwgaXQncyBvcHRpb25hbC5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8eyB3ZWJDb25maWdNc0NvdW50cnk6IHsgZGF0YTogQ291bnRyeVtdIH19Pj59IENvbnRhaW4gbGlzdCBvZiBjb3VudHJ5IGFuZCBpdCdzIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcHVibGljIHF1ZXJ5KGlucHV0OiBDb3VudHJ5UXVlcnlDcml0ZXJpYSA9IHsgcGFnZTogMCwgcGFnZVNpemU6IDMwMCwgc29ydEJ5OiAnbmFtZScsIHNvcnREaXJlY3Rpb246ICdhc2MnIH0pOiBPYnNlcnZhYmxlPEFwb2xsb1F1ZXJ5UmVzdWx0PHsgd2ViQ29uZmlnTXNDb3VudHJ5OiB7IGRhdGE6IENvdW50cnlbXSB9fT4+e1xuICAgIHJldHVybiB0aGlzLmFwb2xsby5xdWVyeSh7XG4gICAgICBlcnJvclBvbGljeTogJ2FsbCcsXG4gICAgICB2YXJpYWJsZXM6IHsgaW5wdXQgfSxcbiAgICAgIHF1ZXJ5OiBncWxgXG4gICAgICAgIHF1ZXJ5IFF1ZXJ5Q291bnRyeSgkaW5wdXQ6IENvdW50cnlRdWVyeUNyaXRlcmlhISkge1xuICAgICAgICAgIHdlYkNvbmZpZ01zQ291bnRyeShpbnB1dDogJGlucHV0KSB7XG4gICAgICAgICAgICBkYXRhIHtcbiAgICAgICAgICAgICAgY29kZVxuICAgICAgICAgICAgICBkZWZhdWx0TGFuZ0NvZGVcbiAgICAgICAgICAgICAgZ3VpZFxuICAgICAgICAgICAgICBsYW5nQ29kZXMge1xuICAgICAgICAgICAgICAgIGNvZGVcbiAgICAgICAgICAgICAgICBndWlkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICBwaG9uZUNvZGVzIHtcbiAgICAgICAgICAgICAgICBjb2RlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1601,6 +1601,11 @@ var DocumentRequestStatus;
1601
1601
  DocumentRequestStatus["Pending"] = "PENDING";
1602
1602
  DocumentRequestStatus["Rejected"] = "REJECTED";
1603
1603
  })(DocumentRequestStatus || (DocumentRequestStatus = {}));
1604
+ var DocumentTemplateStatus;
1605
+ (function (DocumentTemplateStatus) {
1606
+ DocumentTemplateStatus["Active"] = "ACTIVE";
1607
+ DocumentTemplateStatus["Deleted"] = "DELETED";
1608
+ })(DocumentTemplateStatus || (DocumentTemplateStatus = {}));
1604
1609
  var ErrorDetail;
1605
1610
  (function (ErrorDetail) {
1606
1611
  ErrorDetail["DeadlineExceeded"] = "DEADLINE_EXCEEDED";
@@ -1662,6 +1667,42 @@ var Gender;
1662
1667
  Gender["Female"] = "FEMALE";
1663
1668
  Gender["Male"] = "MALE";
1664
1669
  })(Gender || (Gender = {}));
1670
+ var GithubEventTypeEnum;
1671
+ (function (GithubEventTypeEnum) {
1672
+ GithubEventTypeEnum["CommitComment"] = "COMMIT_COMMENT";
1673
+ GithubEventTypeEnum["Create"] = "CREATE";
1674
+ GithubEventTypeEnum["Delete"] = "DELETE";
1675
+ GithubEventTypeEnum["Deployment"] = "DEPLOYMENT";
1676
+ GithubEventTypeEnum["DeploymentStatus"] = "DEPLOYMENT_STATUS";
1677
+ GithubEventTypeEnum["Fork"] = "FORK";
1678
+ GithubEventTypeEnum["Gollum"] = "GOLLUM";
1679
+ GithubEventTypeEnum["Issues"] = "ISSUES";
1680
+ GithubEventTypeEnum["IssueComment"] = "ISSUE_COMMENT";
1681
+ GithubEventTypeEnum["Label"] = "LABEL";
1682
+ GithubEventTypeEnum["Member"] = "MEMBER";
1683
+ GithubEventTypeEnum["Membership"] = "MEMBERSHIP";
1684
+ GithubEventTypeEnum["Milestone"] = "MILESTONE";
1685
+ GithubEventTypeEnum["Organization"] = "ORGANIZATION";
1686
+ GithubEventTypeEnum["OrgBlock"] = "ORG_BLOCK";
1687
+ GithubEventTypeEnum["PageBuild"] = "PAGE_BUILD";
1688
+ GithubEventTypeEnum["Ping"] = "PING";
1689
+ GithubEventTypeEnum["Project"] = "PROJECT";
1690
+ GithubEventTypeEnum["ProjectCard"] = "PROJECT_CARD";
1691
+ GithubEventTypeEnum["ProjectColumn"] = "PROJECT_COLUMN";
1692
+ GithubEventTypeEnum["Public"] = "PUBLIC";
1693
+ GithubEventTypeEnum["PullRequest"] = "PULL_REQUEST";
1694
+ GithubEventTypeEnum["PullRequestReview"] = "PULL_REQUEST_REVIEW";
1695
+ GithubEventTypeEnum["PullRequestReviewComment"] = "PULL_REQUEST_REVIEW_COMMENT";
1696
+ GithubEventTypeEnum["PullRequestReviewThread"] = "PULL_REQUEST_REVIEW_THREAD";
1697
+ GithubEventTypeEnum["Push"] = "PUSH";
1698
+ GithubEventTypeEnum["Release"] = "RELEASE";
1699
+ GithubEventTypeEnum["Repository"] = "REPOSITORY";
1700
+ GithubEventTypeEnum["RepositoryDispatch"] = "REPOSITORY_DISPATCH";
1701
+ GithubEventTypeEnum["Status"] = "STATUS";
1702
+ GithubEventTypeEnum["Team"] = "TEAM";
1703
+ GithubEventTypeEnum["TeamAdd"] = "TEAM_ADD";
1704
+ GithubEventTypeEnum["Watch"] = "WATCH";
1705
+ })(GithubEventTypeEnum || (GithubEventTypeEnum = {}));
1665
1706
  var InternalRefundStatusEnum;
1666
1707
  (function (InternalRefundStatusEnum) {
1667
1708
  InternalRefundStatusEnum["Done"] = "DONE";
@@ -1871,7 +1912,6 @@ var Status;
1871
1912
  Status["Expired"] = "EXPIRED";
1872
1913
  Status["Inactive"] = "INACTIVE";
1873
1914
  Status["Pending"] = "PENDING";
1874
- Status["VerseData"] = "VERSE_DATA";
1875
1915
  })(Status || (Status = {}));
1876
1916
  var SuggestedAction;
1877
1917
  (function (SuggestedAction) {
@@ -2061,12 +2101,19 @@ class AuthService {
2061
2101
  name
2062
2102
  status
2063
2103
  }
2104
+ roles {
2105
+ guid
2106
+ code
2107
+ name
2108
+ isInternal
2109
+ status
2110
+ }
2064
2111
  }
2065
2112
  }
2066
2113
  `
2067
2114
  }).pipe(tap(({ data }) => {
2068
2115
  if (data?.authMsLogin) {
2069
- const { accessToken, user, refreshToken, suggestedAction } = data.authMsLogin;
2116
+ const { accessToken, user, refreshToken, suggestedAction, roles } = data.authMsLogin;
2070
2117
  this.user = user;
2071
2118
  this.user.photo = '/assets/imgs/profile.svg';
2072
2119
  AuthService.authToken = accessToken ?? '';
@@ -2075,6 +2122,7 @@ class AuthService {
2075
2122
  localStorage.setItem('authToken', AuthService.authToken);
2076
2123
  }
2077
2124
  localStorage.setItem('userGuid', this.user.guid);
2125
+ localStorage.setItem('roles', JSON.stringify(roles));
2078
2126
  localStorage.setItem('refreshToken', AuthService.refreshToken);
2079
2127
  }
2080
2128
  }));
@@ -2205,17 +2253,10 @@ class CountryService {
2205
2253
  constructor(apollo) {
2206
2254
  this.apollo = apollo;
2207
2255
  }
2208
- query() {
2256
+ query(input = { page: 0, pageSize: 300, sortBy: 'name', sortDirection: 'asc' }) {
2209
2257
  return this.apollo.query({
2210
2258
  errorPolicy: 'all',
2211
- variables: {
2212
- input: {
2213
- page: 0,
2214
- pageSize: 300,
2215
- sortBy: 'name',
2216
- sortDirection: 'asc'
2217
- }
2218
- },
2259
+ variables: { input },
2219
2260
  query: gql `
2220
2261
  query QueryCountry($input: CountryQueryCriteria!) {
2221
2262
  webConfigMsCountry(input: $input) {
@@ -2253,6 +2294,7 @@ class FormCurrencyInputComponent {
2253
2294
  this.numberPlaceholder = numberPlaceholder;
2254
2295
  this.ch = ch;
2255
2296
  this.currencyService = currencyService;
2297
+ this.label = 'Currency';
2256
2298
  this.clearable = true;
2257
2299
  this.isInputNumber = false;
2258
2300
  this.numberValue = null;
@@ -2287,6 +2329,16 @@ class FormCurrencyInputComponent {
2287
2329
  registerOnTouched(fn) { this.onTouched = fn; }
2288
2330
  writeValue(val) {
2289
2331
  this.value = val;
2332
+ if (!val)
2333
+ this.change(null);
2334
+ else {
2335
+ const d = this.items.find(({ value }) => value === val);
2336
+ if (!d)
2337
+ this.change(null);
2338
+ else {
2339
+ this.change({ value: val, data: d });
2340
+ }
2341
+ }
2290
2342
  this.ch.markForCheck();
2291
2343
  }
2292
2344
  setDisabledState(d) {
@@ -2298,8 +2350,6 @@ class FormCurrencyInputComponent {
2298
2350
  return null;
2299
2351
  }
2300
2352
  change(e) {
2301
- if (this.isInputNumber)
2302
- this.numberValue = null;
2303
2353
  if (!this.isTouched) {
2304
2354
  this.onTouched();
2305
2355
  this.isTouched = true;
@@ -2309,12 +2359,13 @@ class FormCurrencyInputComponent {
2309
2359
  this.selectedItem = e?.data;
2310
2360
  this.changed(this.value);
2311
2361
  this.onChange.emit({ selectedItem: e, number: this.numberValue });
2312
- this.errorMsg = getFormErrorMessage(this.formControl.errors, 'Currency');
2362
+ this.errorMsg = getFormErrorMessage(this.formControl?.errors, this.label);
2313
2363
  }
2314
2364
  if (e?.magnifyValue === 1)
2315
2365
  this.decimalLimiter = 0;
2316
- else
2317
- this.decimalLimiter = Math.floor(Math.log10(e?.magnifyValue));
2366
+ else {
2367
+ this.decimalLimiter = Math.floor(Math.log10(e?.data.magnifyValue));
2368
+ }
2318
2369
  }
2319
2370
  numberInput({ value }) {
2320
2371
  this.numberValue = value;
@@ -2330,7 +2381,7 @@ class FormCurrencyInputComponent {
2330
2381
  this.ch.markForCheck();
2331
2382
  }
2332
2383
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: FormCurrencyInputComponent, deps: [{ token: 'placeholder', attribute: true }, { token: 'numberPlaceholder', attribute: true }, { token: i0.ChangeDetectorRef }, { token: CurrencyService }], target: i0.ɵɵFactoryTarget.Component }); }
2333
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: FormCurrencyInputComponent, isStandalone: true, selector: "up-currency-input", inputs: { clearable: "clearable", isInputNumber: "isInputNumber", numberValue: "numberValue", isNumberDisabled: "isNumberDisabled", required: "required", disabled: "disabled" }, outputs: { onChange: "onChange" }, host: { classAttribute: "d-block" }, providers: [
2384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: FormCurrencyInputComponent, isStandalone: true, selector: "up-currency-input", inputs: { label: "label", clearable: "clearable", isInputNumber: "isInputNumber", numberValue: "numberValue", isNumberDisabled: "isNumberDisabled", required: "required", disabled: "disabled" }, outputs: { onChange: "onChange" }, host: { classAttribute: "d-block" }, providers: [
2334
2385
  {
2335
2386
  multi: true,
2336
2387
  provide: NG_VALUE_ACCESSOR,
@@ -2341,7 +2392,7 @@ class FormCurrencyInputComponent {
2341
2392
  provide: NG_VALIDATORS,
2342
2393
  useExisting: FormCurrencyInputComponent
2343
2394
  }
2344
- ], ngImport: i0, template: "<label class=\"form-label\" [class.required]=\"required\">Currency</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2395
+ ], ngImport: i0, template: "<label class=\"form-label\" [class.required]=\"required\">{{ label }}</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i4.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2345
2396
  }
2346
2397
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: FormCurrencyInputComponent, decorators: [{
2347
2398
  type: Component,
@@ -2362,14 +2413,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
2362
2413
  provide: NG_VALIDATORS,
2363
2414
  useExisting: FormCurrencyInputComponent
2364
2415
  }
2365
- ], template: "<label class=\"form-label\" [class.required]=\"required\">Currency</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"] }]
2416
+ ], template: "<label class=\"form-label\" [class.required]=\"required\">{{ label }}</label>\n\n<ng-template #selectForm>\n <ng-select \n class=\"flex-shrink-0\"\n [class.number]=\"isInputNumber\"\n appendTo=\"body\"\n bindValue=\"value\"\n placeholder=\"{{ placeholder }}\"\n [virtualScroll]=\"true\"\n [items]=\"items\"\n [ngModel]=\"value\"\n [readonly]=\"disabled\" \n [loading]=\"isLoading\"\n [clearable]=\"clearable\"\n (change)=\"change($event);\"\n >\n <ng-template ng-option-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n\n <ng-template ng-label-tmp let-i=\"item\">\n <span>{{ isInputNumber? i.value : i.label }}</span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template #inputNumber>\n <div class=\"d-flex justify-content-between gap-1 align-items-center\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n\n <input type=\"number\" [placeholder]=\"numberPlaceholder\" class=\"form-control flex-grow-1\" [disabled]=\"isNumberDisabled\" [value]=\"numberValue\" (keypress)=\"limitDecimal($event)\" (input)=\"numberInput($event.target)\">\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!isInputNumber else inputNumber\">\n <ng-container *ngTemplateOutlet=\"selectForm\" />\n</ng-container>\n\n<label *ngIf=\"errorMsg\" class=\"is-invalid\">{{ errorMsg }}</label>\n", styles: ["ng-select.number{min-width:105px;max-width:105px}\n"] }]
2366
2417
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2367
2418
  type: Attribute,
2368
2419
  args: ['placeholder']
2369
2420
  }] }, { type: undefined, decorators: [{
2370
2421
  type: Attribute,
2371
2422
  args: ['numberPlaceholder']
2372
- }] }, { type: i0.ChangeDetectorRef }, { type: CurrencyService }], propDecorators: { clearable: [{
2423
+ }] }, { type: i0.ChangeDetectorRef }, { type: CurrencyService }], propDecorators: { label: [{
2424
+ type: Input
2425
+ }], clearable: [{
2373
2426
  type: Input
2374
2427
  }], isInputNumber: [{
2375
2428
  type: Input