@bnsights/bbsf-controls 1.0.111 → 1.0.112
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.
- package/README.md +4 -0
- package/esm2022/lib/Shared/Components/app-base-component.mjs +7 -7
- package/esm2022/lib/Shared/Enums/StartView.mjs +1 -1
- package/esm2022/lib/Shared/Enums/map-enums.mjs +7 -7
- package/esm2022/lib/Shared/Models/AutocompleteOptions.mjs +9 -9
- package/esm2022/lib/Shared/Models/CalendarOptions.mjs +7 -7
- package/esm2022/lib/Shared/Models/CheckBoxOptions.mjs +3 -3
- package/esm2022/lib/Shared/Models/ConfirmationModalOptions.mjs +16 -16
- package/esm2022/lib/Shared/Models/ControlOptionsBase.mjs +5 -5
- package/esm2022/lib/Shared/Models/DatePickerOptions.mjs +24 -0
- package/esm2022/lib/Shared/Models/DropdownOptions.mjs +6 -6
- package/esm2022/lib/Shared/Models/EnglishArabicDTO.mjs +3 -3
- package/esm2022/lib/Shared/Models/FileUploadModel.mjs +1 -1
- package/esm2022/lib/Shared/Models/FileUploadOptions.mjs +3 -3
- package/esm2022/lib/Shared/Models/FormOptions.mjs +13 -13
- package/esm2022/lib/Shared/Models/HtmlEditorOptions.mjs +3 -3
- package/esm2022/lib/Shared/Models/ImageUploadOptions.mjs +4 -4
- package/esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs +1 -3
- package/esm2022/lib/Shared/Models/MapAutocompleteDTO.mjs +2 -2
- package/esm2022/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs +2 -2
- package/esm2022/lib/Shared/Models/MultiLingualTextAreaOptions.mjs +2 -2
- package/esm2022/lib/Shared/Models/{MultilingualTextBoxOptions.mjs → MultiLingualTextBoxOptions.mjs} +5 -5
- package/esm2022/lib/Shared/Models/MultilingualControlOptionsBase.mjs +6 -6
- package/esm2022/lib/Shared/Models/MultipleFileUploadModel.mjs +5 -5
- package/esm2022/lib/Shared/Models/PagingOptions.mjs +22 -22
- package/esm2022/lib/Shared/Models/PhoneOptions.mjs +4 -4
- package/esm2022/lib/Shared/Models/ProfileImageUploadOptions.mjs +3 -3
- package/esm2022/lib/Shared/Models/ProfilePictureDTO.mjs +1 -1
- package/esm2022/lib/Shared/Models/RadioButtonItem.mjs +1 -1
- package/esm2022/lib/Shared/Models/RadioButtonOptions.mjs +1 -1
- package/esm2022/lib/Shared/Models/RangeNumber.mjs +1 -1
- package/esm2022/lib/Shared/Models/Recaptcha.mjs +2 -2
- package/esm2022/lib/Shared/Models/RecaptchaOptions.mjs +9 -9
- package/esm2022/lib/Shared/Models/RepeaterField.mjs +1 -1
- package/esm2022/lib/Shared/Models/RepeaterOptions.mjs +9 -9
- package/esm2022/lib/Shared/Models/TagsInputDTO.mjs +1 -1
- package/esm2022/lib/Shared/Models/TagsInputOptions.mjs +19 -19
- package/esm2022/lib/Shared/Models/TextAreaOptions.mjs +1 -1
- package/esm2022/lib/Shared/Models/TextBoxOptions.mjs +9 -9
- package/esm2022/lib/Shared/Models/{ToggleslideOptions.mjs → ToggleSlideOptions.mjs} +2 -2
- package/esm2022/lib/Shared/Models/filter-options.mjs +5 -5
- package/esm2022/lib/Shared/Models/page-header-options.mjs +32 -32
- package/esm2022/lib/Shared/services/ControlUtility.mjs +37 -37
- package/esm2022/lib/Shared/services/GlobalSettings.service.mjs +9 -9
- package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +81 -81
- package/esm2022/lib/controls/Calendar/Calendar.component.mjs +40 -40
- package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +35 -35
- package/esm2022/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +30 -30
- package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +90 -97
- package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +74 -74
- package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +155 -155
- package/esm2022/lib/controls/Form/Form.component.mjs +24 -24
- package/esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs +55 -55
- package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +113 -113
- package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +62 -66
- package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +163 -163
- package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +193 -193
- package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +210 -210
- package/esm2022/lib/controls/Paging/Paging.component.mjs +85 -85
- package/esm2022/lib/controls/Phone/Phone.component.mjs +42 -42
- package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +112 -112
- package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +38 -38
- package/esm2022/lib/controls/Recaptcha/Recaptcha.component.mjs +46 -46
- package/esm2022/lib/controls/Repeater/repeater/repeater.component.mjs +12 -12
- package/esm2022/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +556 -556
- package/esm2022/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +15 -15
- package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +100 -100
- package/esm2022/lib/controls/TextArea/TextArea.component.mjs +71 -71
- package/esm2022/lib/controls/TextBox/TextBox.component.mjs +116 -116
- package/esm2022/lib/controls/Toggleslide/Toggleslide.component.mjs +90 -0
- package/esm2022/lib/controls/bbsf-controls.module.mjs +2 -2
- package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +4 -4
- package/esm2022/public-api.mjs +7 -7
- package/fesm2022/bnsights-bbsf-controls.mjs +2801 -2813
- package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -1
- package/lib/Shared/Enums/map-enums.d.ts +1 -1
- package/lib/Shared/Models/AutocompleteOptions.d.ts +20 -20
- package/lib/Shared/Models/CalendarOptions.d.ts +10 -10
- package/lib/Shared/Models/CheckBoxOptions.d.ts +2 -2
- package/lib/Shared/Models/ConfirmationModalOptions.d.ts +14 -14
- package/lib/Shared/Models/ControlOptionsBase.d.ts +17 -17
- package/lib/Shared/Models/{datePickerOptions.d.ts → DatePickerOptions.d.ts} +12 -13
- package/lib/Shared/Models/DropdownOptions.d.ts +15 -15
- package/lib/Shared/Models/EnglishArabicDTO.d.ts +2 -2
- package/lib/Shared/Models/FileUploadModel.d.ts +1 -1
- package/lib/Shared/Models/FileUploadOptions.d.ts +8 -8
- package/lib/Shared/Models/FormOptions.d.ts +11 -11
- package/lib/Shared/Models/HtmlEditorOptions.d.ts +11 -11
- package/lib/Shared/Models/ImageUploadOptions.d.ts +9 -9
- package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +1 -2
- package/lib/Shared/Models/MapAutocompleteDTO.d.ts +5 -5
- package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +7 -7
- package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +5 -5
- package/lib/Shared/Models/{MultilingualTextBoxOptions.d.ts → MultiLingualTextBoxOptions.d.ts} +6 -6
- package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +34 -34
- package/lib/Shared/Models/MultipleFileUploadModel.d.ts +4 -4
- package/lib/Shared/Models/PagingOptions.d.ts +25 -25
- package/lib/Shared/Models/PhoneOptions.d.ts +9 -9
- package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +10 -10
- package/lib/Shared/Models/ProfilePictureDTO.d.ts +9 -9
- package/lib/Shared/Models/RadioButtonItem.d.ts +2 -2
- package/lib/Shared/Models/RadioButtonOptions.d.ts +2 -2
- package/lib/Shared/Models/RangeNumber.d.ts +2 -2
- package/lib/Shared/Models/Recaptcha.d.ts +4 -4
- package/lib/Shared/Models/RecaptchaOptions.d.ts +10 -10
- package/lib/Shared/Models/RepeaterField.d.ts +4 -4
- package/lib/Shared/Models/RepeaterOptions.d.ts +16 -16
- package/lib/Shared/Models/TagsInputDTO.d.ts +4 -4
- package/lib/Shared/Models/TagsInputOptions.d.ts +29 -29
- package/lib/Shared/Models/TextAreaOptions.d.ts +11 -11
- package/lib/Shared/Models/TextBoxOptions.d.ts +18 -18
- package/lib/Shared/Models/{ToggleslideOptions.d.ts → ToggleSlideOptions.d.ts} +3 -3
- package/lib/Shared/Models/filter-options.d.ts +4 -4
- package/lib/Shared/Models/page-header-options.d.ts +43 -43
- package/lib/Shared/services/ControlUtility.d.ts +8 -8
- package/lib/Shared/services/GlobalSettings.service.d.ts +8 -8
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +11 -11
- package/lib/controls/Calendar/Calendar.component.d.ts +7 -7
- package/lib/controls/CheckBox/CheckBox.component.d.ts +10 -10
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +20 -24
- package/lib/controls/DropdownList/DropdownList.component.d.ts +13 -13
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +11 -11
- package/lib/controls/Form/Form.component.d.ts +2 -2
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +12 -12
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +16 -16
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +6 -9
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +25 -25
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +24 -24
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +32 -32
- package/lib/controls/Paging/Paging.component.d.ts +9 -9
- package/lib/controls/Phone/Phone.component.d.ts +12 -12
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +18 -18
- package/lib/controls/RadioButton/RadioButton.component.d.ts +11 -11
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +10 -10
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +5 -5
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +1 -1
- package/lib/controls/TagsInput/TagsInput.component.d.ts +17 -17
- package/lib/controls/TextArea/TextArea.component.d.ts +14 -14
- package/lib/controls/TextBox/TextBox.component.d.ts +25 -25
- package/lib/controls/Toggleslide/{toggleslide.component.d.ts → Toggleslide.component.d.ts} +10 -10
- package/lib/controls/bbsf-controls.module.d.ts +1 -1
- package/package.json +3 -2
- package/public-api.d.ts +4 -4
- package/src/lib/assets/images/marker-pin.svg +4 -4
- package/esm2022/bnsights-test-test-controls.mjs +0 -5
- package/esm2022/lib/Shared/Models/datePickerOptions.mjs +0 -23
- package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +0 -90
- package/fesm2022/bnsights-test-test-controls.mjs +0 -9164
- package/fesm2022/bnsights-test-test-controls.mjs.map +0 -1
|
@@ -17,27 +17,27 @@ export class FormComponent {
|
|
|
17
17
|
this.ngbActiveModal = ngbActiveModal;
|
|
18
18
|
this.router = router;
|
|
19
19
|
this.isChange = null;
|
|
20
|
-
this.
|
|
20
|
+
this.onChange = new EventEmitter();
|
|
21
21
|
}
|
|
22
22
|
ngOnInit() {
|
|
23
23
|
this.fromName = this.randomString(5);
|
|
24
24
|
}
|
|
25
25
|
ngAfterViewInit() {
|
|
26
|
-
this.options.
|
|
27
|
-
this.
|
|
26
|
+
this.options.formGroup.valueChanges.subscribe((es) => {
|
|
27
|
+
this.onChange.emit(true);
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
submit() {
|
|
31
|
-
this.options.
|
|
32
|
-
if (this.options.
|
|
31
|
+
this.options.formGroup.markAllAsTouched();
|
|
32
|
+
if (this.options.formGroup.invalid) {
|
|
33
33
|
this.showGlobalError();
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
let submitModel = this.options.
|
|
38
|
-
let submittedService = this.options.
|
|
37
|
+
let submitModel = this.options.getModelFunction();
|
|
38
|
+
let submittedService = this.options.serviceSubmitFunction.apply(null, submitModel);
|
|
39
39
|
submittedService.subscribe((result) => {
|
|
40
|
-
if (!this.options.
|
|
40
|
+
if (!this.options.disableModalDismiss) {
|
|
41
41
|
//Dismiss closest modal of the form only
|
|
42
42
|
let modal = document.getElementById(this.fromName).closest('.modal.show');
|
|
43
43
|
if (modal) {
|
|
@@ -45,19 +45,19 @@ export class FormComponent {
|
|
|
45
45
|
closeButton.click();
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
if (!this.options.
|
|
48
|
+
if (!this.options.disableSuccessNotification)
|
|
49
49
|
this.utilityService.notifySuccessMessage();
|
|
50
|
-
if (this.options.
|
|
51
|
-
this.options.
|
|
52
|
-
if (!this.options.
|
|
50
|
+
if (this.options.onSuccessHandler)
|
|
51
|
+
this.options.onSuccessHandler(result);
|
|
52
|
+
if (!this.options.disableBlockUI)
|
|
53
53
|
this.utilityService.stopBlockUI();
|
|
54
|
-
if (this.options.
|
|
55
|
-
let paging = this.options.
|
|
56
|
-
this.options.
|
|
54
|
+
if (this.options.pagingReference) {
|
|
55
|
+
let paging = this.options.pagingReference;
|
|
56
|
+
this.options.pagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();
|
|
57
57
|
}
|
|
58
58
|
}, (error) => {
|
|
59
|
-
if (this.options.
|
|
60
|
-
this.options.
|
|
59
|
+
if (this.options.onErrorHandler)
|
|
60
|
+
this.options.onErrorHandler(error);
|
|
61
61
|
else
|
|
62
62
|
this.handleError(error);
|
|
63
63
|
});
|
|
@@ -67,13 +67,13 @@ export class FormComponent {
|
|
|
67
67
|
let errorMessage = '';
|
|
68
68
|
if (err.error instanceof ErrorEvent) {
|
|
69
69
|
errorMessage = `An error occurred: ${err.error.message}`;
|
|
70
|
-
if (!this.options.
|
|
70
|
+
if (!this.options.disableErrorNotification)
|
|
71
71
|
this.utilityService.notifyErrorMessage();
|
|
72
72
|
}
|
|
73
73
|
else {
|
|
74
|
-
this.controlValidationService.renderServerErrors(this.options.
|
|
74
|
+
this.controlValidationService.renderServerErrors(this.options.formGroup, err, new RequestOptionsModel(), this.fromName);
|
|
75
75
|
}
|
|
76
|
-
if (!this.options.
|
|
76
|
+
if (!this.options.disableBlockUI)
|
|
77
77
|
this.utilityService.stopBlockUI();
|
|
78
78
|
}
|
|
79
79
|
showGlobalError() {
|
|
@@ -88,14 +88,14 @@ export class FormComponent {
|
|
|
88
88
|
return result;
|
|
89
89
|
}
|
|
90
90
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: FormComponent, deps: [{ token: i1.ControlUtility }, { token: i2.UtilityService }, { token: i2.ControlValidationService }, { token: i3.NgbModal }, { token: i3.NgbActiveModal }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: FormComponent, selector: "BBSF-Form", inputs: { options: "options" }, outputs: {
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: FormComponent, selector: "BBSF-Form", inputs: { options: "options" }, outputs: { onChange: "onChange" }, ngImport: i0, template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.formGroup\" (ngSubmit)=\"submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>", dependencies: [{ kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
|
|
92
92
|
}
|
|
93
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: FormComponent, decorators: [{
|
|
94
94
|
type: Component,
|
|
95
|
-
args: [{ selector: 'BBSF-Form', template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.
|
|
96
|
-
}], ctorParameters: () => [{ type: i1.ControlUtility }, { type: i2.UtilityService }, { type: i2.ControlValidationService }, { type: i3.NgbModal }, { type: i3.NgbActiveModal }, { type: i4.Router }], propDecorators: {
|
|
95
|
+
args: [{ selector: 'BBSF-Form', template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.formGroup\" (ngSubmit)=\"submit()\">\r\n\r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>" }]
|
|
96
|
+
}], ctorParameters: () => [{ type: i1.ControlUtility }, { type: i2.UtilityService }, { type: i2.ControlValidationService }, { type: i3.NgbModal }, { type: i3.NgbActiveModal }, { type: i4.Router }], propDecorators: { onChange: [{
|
|
97
97
|
type: Output
|
|
98
98
|
}], options: [{
|
|
99
99
|
type: Input
|
|
100
100
|
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvRm9ybS9Gb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Gb3JtL0Zvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQTRCLG1CQUFtQixFQUFrQixNQUFNLDBCQUEwQixDQUFDO0FBRXpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQVd2RSxNQUFNLE9BQU8sYUFBYTtJQU14QixZQUFvQixjQUE4QixFQUFVLGNBQThCLEVBQVUsd0JBQWtELEVBQVUsWUFBc0IsRUFBVSxjQUE4QixFQUFVLE1BQWM7UUFBbE8sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUh0UCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJeEMsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxD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SSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ3hIO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFDRCxZQUFZLENBQUMsTUFBTTtRQUNqQixJQUFJLFdBQVcsR0FBRyxnRUFBZ0UsQ0FBQztRQUNuRixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUM5RTtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBdEZVLGFBQWE7a0dBQWIsYUFBYSxvSENqQjFCLGlQQU1BOzsyRkRXYSxhQUFhO2tCQUx6QixTQUFTOytCQUVFLFdBQVc7Z09BT1gsUUFBUTtzQkFBakIsTUFBTTtnQkFLRSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QYWdpbmdBY3Rpb25Nb2RlJztcclxuaW1wb3J0IHsgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0Zvcm1PcHRpb25zJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Gb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZnJvbU5hbWU6IHN0cmluZztcclxuICBpc0NoYW5nZTogYm9vbGVhbiA9IG51bGw7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBuZ2JBY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZnJvbU5hbWUgPSB0aGlzLnJhbmRvbVN0cmluZyg1KVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnMuRm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVzKSA9PiB7XHJcbiAgICAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5Gb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcblxyXG4gICAgICBsZXQgc3VibWl0TW9kZWwgPSB0aGlzLm9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbigpIGFzIGFueVtdXHJcbiAgICAgIGxldCBzdWJtaXR0ZWRTZXJ2aWNlID0gdGhpcy5vcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbi5hcHBseShudWxsLCBzdWJtaXRNb2RlbCkgYXMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICAgIHN1Ym1pdHRlZFNlcnZpY2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLkRpc2FibGVNb2RhbERpc21pc3MpIHtcclxuICAgICAgICAgICAgLy9EaXNtaXNzIGNsb3Nlc3QgbW9kYWwgb2YgdGhlIGZvcm0gb25seVxyXG4gICAgICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZyb21OYW1lKS5jbG9zZXN0KCcubW9kYWwuc2hvdycpO1xyXG4gICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICBsZXQgY2xvc2VCdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtZGlzbWlzcz0nbW9kYWwnXVwiKSBhcyBhbnlcclxuICAgICAgICAgICAgICBjbG9zZUJ1dHRvbi5jbGljaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbilcclxuICAgICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSgpXHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uU3VjY2Vzc0hhbmRsZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyKHJlc3VsdClcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLkRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gdGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZTtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPT0gUGFnaW5nQWN0aW9uTW9kZS5SZWluaXRpYWxpemUgPyBwYWdpbmcuUmVpbml0aWFsaXplUGFnaW5nKCkgOiBwYWdpbmcuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuT25FcnJvckhhbmRsZXIoZXJyb3IpXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICBpZiAoZXJyLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3Igb2NjdXJyZWQ6ICR7ZXJyLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUVycm9yTm90aWZpY2F0aW9uKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW5kZXJTZXJ2ZXJFcnJvcnModGhpcy5vcHRpb25zLkZvcm1Hcm91cCwgZXJyLCBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpLCB0aGlzLmZyb21OYW1lKVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKHRoaXMuZnJvbU5hbWUpXHJcbiAgfVxyXG4gIHJhbmRvbVN0cmluZyhsZW5ndGgpIHtcclxuICAgIHZhciByYW5kb21DaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICB2YXIgcmVzdWx0ID0gJyc7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHJlc3VsdCArPSByYW5kb21DaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZG9tQ2hhcnMubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCI8Zm9ybSBpZD1cInt7ZnJvbU5hbWV9fVwiIFtGb3JtR3JvdXBdPVwib3B0aW9ucy5Gb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG48L2Zvcm0+XHJcbiJdfQ==
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvRm9ybS9Gb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Gb3JtL0Zvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQTRCLG1CQUFtQixFQUFrQixNQUFNLDBCQUEwQixDQUFDO0FBRXpHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQVd2RSxNQUFNLE9BQU8sYUFBYTtJQU14QixZQUFvQixjQUE4QixFQUFVLGNBQThCLEVBQVUsd0JBQWtELEVBQVUsWUFBc0IsRUFBVSxjQUE4QixFQUFVLE1BQWM7UUFBbE8sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUh0UCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ2YsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJeEMsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxD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SSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ3hIO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFDRCxZQUFZLENBQUMsTUFBTTtRQUNqQixJQUFJLFdBQVcsR0FBRyxnRUFBZ0UsQ0FBQztRQUNuRixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUM5RTtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBdEZVLGFBQWE7a0dBQWIsYUFBYSxvSENqQjFCLDZPQUtPOzsyRkRZTSxhQUFhO2tCQUx6QixTQUFTOytCQUVFLFdBQVc7Z09BT1gsUUFBUTtzQkFBakIsTUFBTTtnQkFLRSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QYWdpbmdBY3Rpb25Nb2RlJztcclxuaW1wb3J0IHsgRm9ybU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0Zvcm1PcHRpb25zJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1Gb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZnJvbU5hbWU6IHN0cmluZztcclxuICBpc0NoYW5nZTogYm9vbGVhbiA9IG51bGw7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBuZ2JBY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZnJvbU5hbWUgPSB0aGlzLnJhbmRvbVN0cmluZyg1KVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wdGlvbnMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKGVzKSA9PiB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMub3B0aW9ucy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcblxyXG4gICAgICBsZXQgc3VibWl0TW9kZWwgPSB0aGlzLm9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbigpIGFzIGFueVtdXHJcbiAgICAgIGxldCBzdWJtaXR0ZWRTZXJ2aWNlID0gdGhpcy5vcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbi5hcHBseShudWxsLCBzdWJtaXRNb2RlbCkgYXMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICAgIHN1Ym1pdHRlZFNlcnZpY2Uuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVNb2RhbERpc21pc3MpIHtcclxuICAgICAgICAgICAgLy9EaXNtaXNzIGNsb3Nlc3QgbW9kYWwgb2YgdGhlIGZvcm0gb25seVxyXG4gICAgICAgICAgICBsZXQgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZyb21OYW1lKS5jbG9zZXN0KCcubW9kYWwuc2hvdycpO1xyXG4gICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICBsZXQgY2xvc2VCdXR0b24gPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtZGlzbWlzcz0nbW9kYWwnXVwiKSBhcyBhbnlcclxuICAgICAgICAgICAgICBjbG9zZUJ1dHRvbi5jbGljaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbilcclxuICAgICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSgpXHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uU3VjY2Vzc0hhbmRsZXIpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblN1Y2Nlc3NIYW5kbGVyKHJlc3VsdClcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gdGhpcy5vcHRpb25zLnBhZ2luZ1JlZmVyZW5jZTtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnBhZ2luZ0FjdGlvbk1vZGUgPT0gUGFnaW5nQWN0aW9uTW9kZS5SZWluaXRpYWxpemUgPyBwYWdpbmcuUmVpbml0aWFsaXplUGFnaW5nKCkgOiBwYWdpbmcuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9uRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMub25FcnJvckhhbmRsZXIoZXJyb3IpXHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBsZXQgZXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgICBpZiAoZXJyLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3Igb2NjdXJyZWQ6ICR7ZXJyLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZUVycm9yTm90aWZpY2F0aW9uKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW5kZXJTZXJ2ZXJFcnJvcnModGhpcy5vcHRpb25zLmZvcm1Hcm91cCwgZXJyLCBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpLCB0aGlzLmZyb21OYW1lKVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2hvd0dsb2JhbEVycm9yKHRoaXMuZnJvbU5hbWUpXHJcbiAgfVxyXG4gIHJhbmRvbVN0cmluZyhsZW5ndGgpIHtcclxuICAgIHZhciByYW5kb21DaGFycyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICB2YXIgcmVzdWx0ID0gJyc7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHJlc3VsdCArPSByYW5kb21DaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZG9tQ2hhcnMubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCI8Zm9ybSBpZD1cInt7ZnJvbU5hbWV9fVwiIFtGb3JtR3JvdXBdPVwib3B0aW9ucy5mb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNjb250ZW50PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG48L2Zvcm0+Il19
|
|
@@ -11,17 +11,17 @@ import * as i7 from "ngx-intl-tel-input";
|
|
|
11
11
|
import * as i8 from "@kolkov/angular-editor";
|
|
12
12
|
export class HtmlEditorComponent {
|
|
13
13
|
static { this.controlContainerstatic = null; }
|
|
14
|
-
constructor(zone, controlUtility, controlContainer,
|
|
14
|
+
constructor(zone, controlUtility, controlContainer, htmlEditorControlHost, utilityService, controlValidationService, globalSettings) {
|
|
15
15
|
this.zone = zone;
|
|
16
16
|
this.controlUtility = controlUtility;
|
|
17
17
|
this.controlContainer = controlContainer;
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
18
|
+
this.htmlEditorControlHost = htmlEditorControlHost;
|
|
19
|
+
this.utilityService = utilityService;
|
|
20
20
|
this.controlValidationService = controlValidationService;
|
|
21
21
|
this.globalSettings = globalSettings;
|
|
22
22
|
this.OnChange = new EventEmitter();
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
23
|
+
this.wordCount = 0;
|
|
24
|
+
this.wordCountArray = 0;
|
|
25
25
|
this.markAllAsTouched = false;
|
|
26
26
|
this.validationRules = [];
|
|
27
27
|
this.validationRulesasync = [];
|
|
@@ -29,44 +29,44 @@ export class HtmlEditorComponent {
|
|
|
29
29
|
this.controlValidationService.removeGlobalError();
|
|
30
30
|
};
|
|
31
31
|
//External Method
|
|
32
|
-
this.
|
|
33
|
-
this.controlUtility.
|
|
32
|
+
this.removeRequiredValidation = () => {
|
|
33
|
+
this.controlUtility.removeRequiredValidation(this.htmlEditorFormControl, this.validationRules, this.options);
|
|
34
34
|
};
|
|
35
35
|
//External Method
|
|
36
|
-
this.
|
|
37
|
-
this.controlUtility.
|
|
36
|
+
this.addRequiredValidation = () => {
|
|
37
|
+
this.controlUtility.addRequiredValidation(this.htmlEditorFormControl, this.validationRules, this.options);
|
|
38
38
|
};
|
|
39
39
|
//External Method
|
|
40
|
-
this.
|
|
41
|
-
this.controlUtility.
|
|
40
|
+
this.removeCustomValidation = (customValidation) => {
|
|
41
|
+
this.controlUtility.removeCustomValidation(this.htmlEditorFormControl, this.validationRules, customValidation);
|
|
42
42
|
};
|
|
43
43
|
//External Method
|
|
44
|
-
this.
|
|
45
|
-
this.controlUtility.
|
|
44
|
+
this.addCustomValidation = (customValidation) => {
|
|
45
|
+
this.controlUtility.addCustomValidation(this.htmlEditorFormControl, this.validationRules, customValidation);
|
|
46
46
|
};
|
|
47
47
|
//External Method
|
|
48
|
-
this.
|
|
49
|
-
this.controlUtility.
|
|
48
|
+
this.isValid = () => {
|
|
49
|
+
this.controlUtility.isValid(this.htmlEditorFormControl);
|
|
50
50
|
};
|
|
51
51
|
HtmlEditorComponent.controlContainerstatic = this.controlContainer;
|
|
52
52
|
}
|
|
53
53
|
ngOnInit() {
|
|
54
|
-
if (this.options.
|
|
55
|
-
this.textDir = this.options.
|
|
54
|
+
if (this.options.forceDirection)
|
|
55
|
+
this.textDir = this.options.forceDirection == 2 ? 'rtl' : 'ltr';
|
|
56
56
|
else
|
|
57
57
|
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
58
58
|
this.editorConfig = {
|
|
59
|
-
editable: !this.options.
|
|
59
|
+
editable: !this.options.isDisabled,
|
|
60
60
|
spellcheck: true,
|
|
61
|
-
height: `${this.options.
|
|
62
|
-
minHeight: `${this.options.
|
|
61
|
+
height: `${this.options.height}rem`,
|
|
62
|
+
minHeight: `${this.options.height}rem`,
|
|
63
63
|
maxHeight: 'auto',
|
|
64
64
|
width: 'auto',
|
|
65
65
|
minWidth: 'auto',
|
|
66
66
|
translate: 'yes',
|
|
67
67
|
enableToolbar: true,
|
|
68
68
|
showToolbar: true,
|
|
69
|
-
placeholder: this.options.
|
|
69
|
+
placeholder: this.options.placeholder,
|
|
70
70
|
defaultParagraphSeparator: '',
|
|
71
71
|
defaultFontName: '',
|
|
72
72
|
defaultFontSize: '',
|
|
@@ -144,47 +144,47 @@ export class HtmlEditorComponent {
|
|
|
144
144
|
// ],
|
|
145
145
|
// fontNames: ['Helvetica', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Roboto', 'Times']
|
|
146
146
|
// }
|
|
147
|
-
this.group.addControl(this.options.
|
|
148
|
-
this.
|
|
149
|
-
this.
|
|
150
|
-
if (!this.options.
|
|
151
|
-
this.options.
|
|
152
|
-
if (this.options.
|
|
153
|
-
let
|
|
154
|
-
for (let index = 0; index <
|
|
155
|
-
const Validation =
|
|
147
|
+
this.group.addControl(this.options.name, new FormControl(''));
|
|
148
|
+
this.htmlEditorFormControl = this.group.controls[this.options.name]; // new FormControl('',validationRules);
|
|
149
|
+
this.htmlEditorFormControl.setValue(this.options.value);
|
|
150
|
+
if (!this.options.viewType)
|
|
151
|
+
this.options.viewType = this.globalSettings.viewType;
|
|
152
|
+
if (this.options.customValidation.length > 0) {
|
|
153
|
+
let validations = this.options.customValidation;
|
|
154
|
+
for (let index = 0; index < validations.length; index++) {
|
|
155
|
+
const Validation = validations[index];
|
|
156
156
|
this.validationRules.push(Validation.functionBody);
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
if (this.options.
|
|
160
|
-
this.options.
|
|
161
|
-
if (this.options.
|
|
162
|
-
this.validationRules.push(Validators.minLength(this.options.
|
|
159
|
+
if (this.options.labelKey != null && this.options.labelKey != "")
|
|
160
|
+
this.options.labelValue = this.utilityService.getResourceValue(this.options.labelKey);
|
|
161
|
+
if (this.options.minLength > 0) {
|
|
162
|
+
this.validationRules.push(Validators.minLength(this.options.minLength));
|
|
163
163
|
}
|
|
164
|
-
if (this.options.
|
|
165
|
-
this.validationRules.push(Validators.maxLength(this.options.
|
|
164
|
+
if (this.options.maxLength > 0) {
|
|
165
|
+
this.validationRules.push(Validators.maxLength(this.options.maxLength));
|
|
166
166
|
}
|
|
167
|
-
if (this.options.
|
|
167
|
+
if (this.options.isRequired) {
|
|
168
168
|
this.validationRules.push(Validators.required);
|
|
169
169
|
}
|
|
170
|
-
this.
|
|
171
|
-
this.
|
|
172
|
-
if (this.options.
|
|
173
|
-
this.
|
|
170
|
+
this.htmlEditorFormControl.setValidators(this.validationRules);
|
|
171
|
+
this.htmlEditorFormControl.setAsyncValidators(this.validationRulesasync);
|
|
172
|
+
if (this.options.isDisabled) {
|
|
173
|
+
this.htmlEditorFormControl.disable();
|
|
174
174
|
}
|
|
175
|
-
this.
|
|
175
|
+
this.htmlEditorControlHost.ngSubmit.subscribe((value) => {
|
|
176
176
|
this.group.markAllAsTouched();
|
|
177
177
|
this.markAllAsTouched = true;
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
180
|
ngAfterViewChecked() {
|
|
181
|
-
if (this.options.
|
|
182
|
-
var element = document.getElementById(this.options.
|
|
183
|
-
for (let index = 0; index < this.options.
|
|
184
|
-
element.setAttribute(this.options.
|
|
181
|
+
if (this.options.attributeList != null) {
|
|
182
|
+
var element = document.getElementById(this.options.name);
|
|
183
|
+
for (let index = 0; index < this.options.attributeList.length; index++) {
|
|
184
|
+
element.setAttribute(this.options.attributeList[index].Key, this.options.attributeList[index].value);
|
|
185
185
|
}
|
|
186
186
|
let angularEditor = document.getElementsByClassName("angular-editor-toolbar ng-star-inserted")[0];
|
|
187
|
-
let dir = this.
|
|
187
|
+
let dir = this.utilityService.getCurrentLanguage() == "en" ? "ltr" : "rtl";
|
|
188
188
|
angularEditor.setAttribute("dir", dir);
|
|
189
189
|
}
|
|
190
190
|
}
|
|
@@ -199,21 +199,21 @@ export class HtmlEditorComponent {
|
|
|
199
199
|
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
200
200
|
}
|
|
201
201
|
onValueChanged() {
|
|
202
|
-
this.
|
|
203
|
-
let originalValue = this.controlUtility.trimControlValue(this.
|
|
204
|
-
if (this.options.
|
|
205
|
-
this.controlUtility.patchControlValue(originalValue, this.options.
|
|
202
|
+
this.htmlEditorFormControl.setValue(this.htmlEditorFormControl.value.trim());
|
|
203
|
+
let originalValue = this.controlUtility.trimControlValue(this.htmlEditorFormControl.value);
|
|
204
|
+
if (this.options.patchFunction && this.options.patchPath && this.htmlEditorFormControl.valid) {
|
|
205
|
+
this.controlUtility.patchControlValue(originalValue, this.options.patchFunction, this.options.patchPath);
|
|
206
206
|
}
|
|
207
207
|
//Use this line to enable two way binding.
|
|
208
|
-
this.options.
|
|
208
|
+
this.options.value = originalValue;
|
|
209
209
|
this.OnChange.emit(originalValue);
|
|
210
210
|
}
|
|
211
211
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: HtmlEditorComponent, deps: [{ token: i0.NgZone }, { token: i1.ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: i4.GlobalSettings }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
212
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: HtmlEditorComponent, selector: "BBSF-HtmlEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "
|
|
212
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: HtmlEditorComponent, selector: "BBSF-HtmlEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.isReadonly\" class=\"bbsf-input-container\">\r\n <angular-editor (change)=\"onValueChanged()\" id=\"{{options.name}}\"\r\n [class.is-invalid]=\"htmlEditorFormControl.invalid && htmlEditorFormControl.touched\"\r\n class=\"{{options.extraClasses}}\" [dir]=\"textDir\" formControlName=\"{{options.name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n\r\n <div *ngIf=\"options.isReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.value\"></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(htmlEditorFormControl.invalid && htmlEditorFormControl.touched)\">\r\n {{getErrorValidation(htmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["html", "viewMode", "blur", "focus"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }] }); }
|
|
213
213
|
}
|
|
214
214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: HtmlEditorComponent, decorators: [{
|
|
215
215
|
type: Component,
|
|
216
|
-
args: [{ selector: 'BBSF-HtmlEditor', template: "
|
|
216
|
+
args: [{ selector: 'BBSF-HtmlEditor', template: "<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.isReadonly\" class=\"bbsf-input-container\">\r\n <angular-editor (change)=\"onValueChanged()\" id=\"{{options.name}}\"\r\n [class.is-invalid]=\"htmlEditorFormControl.invalid && htmlEditorFormControl.touched\"\r\n class=\"{{options.extraClasses}}\" [dir]=\"textDir\" formControlName=\"{{options.name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n\r\n <div *ngIf=\"options.isReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.value\"></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(htmlEditorFormControl.invalid && htmlEditorFormControl.touched)\">\r\n {{getErrorValidation(htmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>" }]
|
|
217
217
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.ControlUtility }, { type: i2.ControlContainer, decorators: [{
|
|
218
218
|
type: Optional
|
|
219
219
|
}] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: i4.GlobalSettings }], propDecorators: { group: [{
|
|
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
|
|
|
223
223
|
}], OnChange: [{
|
|
224
224
|
type: Output
|
|
225
225
|
}] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9IdG1sRWRpdG9yL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFZM0gsTUFBTSxPQUFPLG1CQUFtQjthQUd2QiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyxZQUFvQixJQUFZLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQ3ZILHFCQUF5QyxFQUFVLGNBQThCLEVBQ2hGLHdCQUFrRCxFQUFVLGNBQThCO1FBRmhGLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN2SCwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2hGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFLMUYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFP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QUF5QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRTtZQUM1RixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3hHO1FBQ0QsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFDLGFBQWEsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNuQyxDQUFDOzhHQWxOVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwwSUNiaEMseXNEQWdDQTs7MkZEbkJhLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQU9nRCxRQUFROzJLQUsxRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtSHRtbEVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdG1sRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIEh0bWxFZGl0b3JDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzKSB7XHJcbiAgICBIdG1sRWRpdG9yQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogSHRtbEVkaXRvck9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEh0bWxFZGl0b3JGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIFdvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICBXb3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQ29uZmlnOiBhbnlcclxuICBtaXNjTGlzdDogYW55XHJcbiAgc3R5bGVMaXN0OiBhbnlcclxuICBmb250c2l6ZUxpc3Q6IGFueVxyXG4gIHBhcmFMaXN0OiBhbnlcclxuICBpbnNlcnRMaXN0OiBhbnlcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHRleHREaXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uKVxyXG4gICAgdGhpcy50ZXh0RGlyPXRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbj09Mj8ncnRsJzonbHRyJztcclxuICAgIGVsc2VcclxuICAgIHRoaXMudGV4dERpcj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKT09J2FyJz8ncnRsJzonbHRyJztcclxuICAgIHRoaXMuZWRpdG9yQ29uZmlnID0ge1xyXG4gICAgICAgIGVkaXRhYmxlOiAhdGhpcy5vcHRpb25zLklzRGlzYWJsZWQsXHJcbiAgICAgICAgc3BlbGxjaGVjazogdHJ1ZSxcclxuICAgICAgICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cmVtYCxcclxuICAgICAgICBtaW5IZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5IZWlnaHR9cmVtYCxcclxuICAgICAgICBtYXhIZWlnaHQ6ICAnYXV0bycsXHJcbiAgICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgICBtaW5XaWR0aDogJ2F1dG8nLFxyXG4gICAgICAgIHRyYW5zbGF0ZTogJ3llcycsXHJcbiAgICAgICAgZW5hYmxlVG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5vcHRpb25zLlBsYWNlaG9sZGVyLFxyXG4gICAgICAgIGRlZmF1bHRQYXJhZ3JhcGhTZXBhcmF0b3I6ICcnLFxyXG4gICAgICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICAgICAgZGVmYXVsdEZvbnRTaXplOiAnJyxcclxuICAgICAgICBmb250czogW1xyXG4gICAgICAgICAge2NsYXNzOiAnYXJpYWwnLCBuYW1lOiAnQXJpYWwnfSxcclxuICAgICAgICAgIHtjbGFzczogJ3RpbWVzLW5ldy1yb21hbicsIG5hbWU6ICdUaW1lcyBOZXcgUm9tYW4nfSxcclxuICAgICAgICAgIHtjbGFzczogJ2NhbGlicmknLCBuYW1lOiAnQ2FsaWJyaSd9LFxyXG4gICAgICAgICAge2NsYXNzOiAnY29taWMtc2Fucy1tcycsIG5hbWU6ICdDb21pYyBTYW5zIE1TJ31cclxuICAgICAgICBdLFxyXG4gICAgICAgIGN1c3RvbUNsYXNzZXM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAncXVvdGUnLFxyXG4gICAgICAgICAgY2xhc3M6ICdxdW90ZScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAncmVkVGV4dCcsXHJcbiAgICAgICAgICBjbGFzczogJ3JlZFRleHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAndGl0bGVUZXh0JyxcclxuICAgICAgICAgIGNsYXNzOiAndGl0bGVUZXh0JyxcclxuICAgICAgICAgIHRhZzogJ2gxJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICB1cGxvYWRVcmw6ICd2MS9pbWFnZScsXHJcbiAgICAgIHVwbG9hZFdpdGhDcmVkZW50aWFsczogZmFsc2UsXHJcbiAgICAgIHNhbml0aXplOiBmYWxzZSxcclxuICAgICAgdG9vbGJhclBvc2l0aW9uOiAndG9wJyxcclxuICAgICAgdG9vbGJhckhpZGRlbkJ1dHRvbnM6IFtcclxuICAgICAgICBbXHJcbiAgICAgICAgICAnbGluaycsXHJcbiAgICAgICAgICAndW5saW5rJyxcclxuICAgICAgICAgICdpbnNlcnRJbWFnZScsXHJcbiAgICAgICAgICAnaW5zZXJ0VmlkZW8nLFxyXG4gICAgICAgICAgJ2luc2VydEhvcml6b250YWxSdWxlJyxcclxuICAgICAgICBdXHJcbiAgICAgIF1cclxuICB9O1xyXG4gIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIC8vIHRoaXMubWlzY0xpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X01pc2MgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfTWlzYyA6IFsnY29kZXZpZXcnLCAndW5kbycsICdyZWRvJ107XHJcbiAgICAvLyB0aGlzLnN0eWxlTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfU3R5bGUgOiBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdjbGVhciddXHJcbiAgICAvLyB0aGlzLmZvbnRzaXplTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfRm9udFNpemUgOiBbJ2ZvbnRuYW1lJywgJ2ZvbnRzaXplJywgJ2NvbG9yJ11cclxuICAgIC8vIHRoaXMucGFyYUxpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X1BhcmEgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfUGFyYSA6IFsnc3R5bGUnLCAndWwnLCAnb2wnLCAncGFyYWdyYXBoJywgJ2hlaWdodCddXHJcbiAgICAvLyB0aGlzLmluc2VydExpc3QgPSB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0luc2VydCAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9JbnNlcnQgOiBbJ3RhYmxlJywgJ3BpY3R1cmUnLCAnbGluaycsICd2aWRlbycsICdociddXHJcblxyXG4gICAgLy8gdGhpcy5Db25maWcgPSB7XHJcbiAgICAvLyAgIGNhbGxiYWNrczoge1xyXG4gICAgLy8gICAgIC8vIG9uQ2hhbmdlOiAoZSkgPT4ge1xyXG5cclxuICAgIC8vICAgICAvLyAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB0aGlzLm9uVGV4dENoYW5nZSgpO1xyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9LFxyXG4gICAgLy8gICAgIC8vIG9uS2V5dXA6IChlKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgIDtcclxuICAgIC8vICAgICAvLyAgICAgICAgIHRoaXMub25UZXh0Q2hhbmdlKCk7XHJcbiAgICAvLyAgICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIC8vIH0sXHJcbiAgICAvLyAgICAgLy8gb25LZXlkb3duOiAoZSkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICA7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICBpZiAodGhpcy5Xb3JkQ291bnRBcnJheSA+IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQgJiYgZS5rZXlDb2RlICE9IDgpIHtcclxuICAgIC8vICAgICAvLyAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9XHJcbiAgICAvLyAgIH0sXHJcbiAgICAvLyAgIHBsYWNlaG9sZGVyOiB0aGlzLm9wdGlvbnMuUGxhY2Vob2xkZXIsXHJcbiAgICAvLyAgIGhlaWdodDogYCR7dGhpcy5vcHRpb25zLkhlaWdodH1weGAsXHJcbiAgICAvLyAgIHRvb2xiYXI6IFtcclxuICAgIC8vICAgICBbJ21pc2MnLCB0aGlzLm1pc2NMaXN0XSxcclxuICAgIC8vICAgICBbJ3N0eWxlJywgdGhpcy5zdHlsZUxpc3RdLFxyXG4gICAgLy8gICAgIFsnZm9udHNpemUnLCB0aGlzLmZvbnRzaXplTGlzdF0sXHJcbiAgICAvLyAgICAgWydwYXJhJywgdGhpcy5wYXJhTGlzdF0sXHJcbiAgICAvLyAgICAgWydpbnNlcnQnLCB0aGlzLmluc2VydExpc3RdXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyAgIGZvbnROYW1lczogWydIZWx2ZXRpY2EnLCAnQXJpYWwnLCAnQXJpYWwgQmxhY2snLCAnQ29taWMgU2FucyBNUycsICdDb3VyaWVyIE5ldycsICdSb2JvdG8nLCAnVGltZXMnXVxyXG5cclxuICAgIC8vIH1cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLlZpZXdUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuVmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLlZpZXdUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWluTGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMub3B0aW9ucy5NaW5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWF4TGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMub3B0aW9ucy5NYXhMZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuSHRtbEVkaXRvckNvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm9wdGlvbnMuTmFtZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSh0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCB0aGlzLm9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0udmFsdWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYW5ndWxhckVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhbmd1bGFyLWVkaXRvci10b29sYmFyIG5nLXN0YXItaW5zZXJ0ZWRcIilbMF1cclxuICAgICAgbGV0IGRpciA9dGhpcy5VdGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKT09XCJlblwiP1wibHRyXCI6XCJydGxcIlxyXG4gICAgICBhbmd1bGFyRWRpdG9yLnNldEF0dHJpYnV0ZShcImRpclwiLGRpcik7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLnJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wudmFsdWUudHJpbSgpKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gdGhpcy5jb250cm9sVXRpbGl0eS50cmltQ29udHJvbFZhbHVlKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAmJiB0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoICYmIHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLlZhbHVlPW9yaWdpbmFsVmFsdWU7XHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQob3JpZ2luYWxWYWx1ZSlcclxuICB9XHJcblxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG5cclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkh0bWxFZGl0b3JGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZEN1c3RvbVZhbGlkYXRpb24odGhpcy5IdG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuSHRtbEVkaXRvckZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCJcclxuPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtaHRtbGVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLlZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuSGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5MYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5MYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLlNob3dBc3RlcmlzayYmb3B0aW9ucy5Jc1JlcXVpcmVkKXx8KG9wdGlvbnMuSXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5Jc1JlYWRvbmx5XCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cImJic2YtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxhbmd1bGFyLWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJIdG1sRWRpdG9yRm9ybUNvbnRyb2wuaW52YWxpZCAmJiBIdG1sRWRpdG9yRm9ybUNvbnRyb2wudG91Y2hlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7b3B0aW9ucy5FeHRyYUNsYXNzZXN9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlyXT1cInRleHREaXJcIiBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMuTmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZWRpdG9yQ29uZmlnXCI+PC9hbmd1bGFyLWVkaXRvcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgICpuZ0lmPVwib3B0aW9ucy5Jc1JlYWRvbmx5XCI+PHNwYW4gY2xhc3M9XCJyZWFkb25seS12aWV3XCIgW2lubmVySFRNTF09XCJvcHRpb25zLlZhbHVlXCI+PC9zcGFuPlxyXG5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic3VidGV4dC1jb250YWluZXJcIj5cclxuICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLkxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICA8IS0tIHJlcXVpcmVkVGV4dC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKEh0bWxFZGl0b3JGb3JtQ29udHJvbC5pbnZhbGlkICYmIEh0bWxFZGl0b3JGb3JtQ29udHJvbC50b3VjaGVkKVwiPlxyXG4gICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihIdG1sRWRpdG9yRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+e3tyZXNldEVycm9yKCl9fTwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHRtbEVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9IdG1sRWRpdG9yL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQW9FLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFZM0gsTUFBTSxPQUFPLG1CQUFtQjthQUd2QiwyQkFBc0IsR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQUNyQyxZQUFvQixJQUFZLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQ3ZILHFCQUF5QyxFQUFVLGNBQThCLEVBQ2hGLHdCQUFrRCxFQUFVLGNBQThCO1FBRmhGLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN2SCwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2hGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFLMUYsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFeEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFP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QUF5QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRTtZQUM1RixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ3pHO1FBQ0QsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNuQyxDQUFDOzhHQWxOVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwwSUNiaEMsc25EQTZCUTs7MkZEaEJLLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDRSxpQkFBaUI7OzBCQU9nRCxRQUFROzJLQUsxRSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBOZ1pvbmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JDb25maWcgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0dsb2JhbFNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtSHRtbEVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0h0bWxFZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdG1sRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZWRpdG9yQ29uZmlnOiBBbmd1bGFyRWRpdG9yQ29uZmlnXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHVibGljIGh0bWxFZGl0b3JDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZ2xvYmFsU2V0dGluZ3M6IEdsb2JhbFNldHRpbmdzKSB7XHJcbiAgICBIdG1sRWRpdG9yQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogSHRtbEVkaXRvck9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGh0bWxFZGl0b3JGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIHdvcmRDb3VudDogbnVtYmVyID0gMDtcclxuICB3b3JkQ291bnRBcnJheTogbnVtYmVyID0gMDtcclxuICBtYXJrQWxsQXNUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uZmlnOiBhbnlcclxuICBtaXNjTGlzdDogYW55XHJcbiAgc3R5bGVMaXN0OiBhbnlcclxuICBmb250c2l6ZUxpc3Q6IGFueVxyXG4gIHBhcmFMaXN0OiBhbnlcclxuICBpbnNlcnRMaXN0OiBhbnlcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHRleHREaXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5mb3JjZURpcmVjdGlvbilcclxuICAgICAgdGhpcy50ZXh0RGlyID0gdGhpcy5vcHRpb25zLmZvcmNlRGlyZWN0aW9uID09IDIgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnRleHREaXIgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSAnYXInID8gJ3J0bCcgOiAnbHRyJztcclxuICAgIHRoaXMuZWRpdG9yQ29uZmlnID0ge1xyXG4gICAgICBlZGl0YWJsZTogIXRoaXMub3B0aW9ucy5pc0Rpc2FibGVkLFxyXG4gICAgICBzcGVsbGNoZWNrOiB0cnVlLFxyXG4gICAgICBoZWlnaHQ6IGAke3RoaXMub3B0aW9ucy5oZWlnaHR9cmVtYCxcclxuICAgICAgbWluSGVpZ2h0OiBgJHt0aGlzLm9wdGlvbnMuaGVpZ2h0fXJlbWAsXHJcbiAgICAgIG1heEhlaWdodDogJ2F1dG8nLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBtaW5XaWR0aDogJ2F1dG8nLFxyXG4gICAgICB0cmFuc2xhdGU6ICd5ZXMnLFxyXG4gICAgICBlbmFibGVUb29sYmFyOiB0cnVlLFxyXG4gICAgICBzaG93VG9vbGJhcjogdHJ1ZSxcclxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlcixcclxuICAgICAgZGVmYXVsdFBhcmFncmFwaFNlcGFyYXRvcjogJycsXHJcbiAgICAgIGRlZmF1bHRGb250TmFtZTogJycsXHJcbiAgICAgIGRlZmF1bHRGb250U2l6ZTogJycsXHJcbiAgICAgIGZvbnRzOiBbXHJcbiAgICAgICAgeyBjbGFzczogJ2FyaWFsJywgbmFtZTogJ0FyaWFsJyB9LFxyXG4gICAgICAgIHsgY2xhc3M6ICd0aW1lcy1uZXctcm9tYW4nLCBuYW1lOiAnVGltZXMgTmV3IFJvbWFuJyB9LFxyXG4gICAgICAgIHsgY2xhc3M6ICdjYWxpYnJpJywgbmFtZTogJ0NhbGlicmknIH0sXHJcbiAgICAgICAgeyBjbGFzczogJ2NvbWljLXNhbnMtbXMnLCBuYW1lOiAnQ29taWMgU2FucyBNUycgfVxyXG4gICAgICBdLFxyXG4gICAgICBjdXN0b21DbGFzc2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3F1b3RlJyxcclxuICAgICAgICAgIGNsYXNzOiAncXVvdGUnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3JlZFRleHQnLFxyXG4gICAgICAgICAgY2xhc3M6ICdyZWRUZXh0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3RpdGxlVGV4dCcsXHJcbiAgICAgICAgICBjbGFzczogJ3RpdGxlVGV4dCcsXHJcbiAgICAgICAgICB0YWc6ICdoMScsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgdXBsb2FkVXJsOiAndjEvaW1hZ2UnLFxyXG4gICAgICB1cGxvYWRXaXRoQ3JlZGVudGlhbHM6IGZhbHNlLFxyXG4gICAgICBzYW5pdGl6ZTogZmFsc2UsXHJcbiAgICAgIHRvb2xiYXJQb3NpdGlvbjogJ3RvcCcsXHJcbiAgICAgIHRvb2xiYXJIaWRkZW5CdXR0b25zOiBbXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgJ2xpbmsnLFxyXG4gICAgICAgICAgJ3VubGluaycsXHJcbiAgICAgICAgICAnaW5zZXJ0SW1hZ2UnLFxyXG4gICAgICAgICAgJ2luc2VydFZpZGVvJyxcclxuICAgICAgICAgICdpbnNlcnRIb3Jpem9udGFsUnVsZScsXHJcbiAgICAgICAgXVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgLy8gdGhpcy5taXNjTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfTWlzYyAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9NaXNjIDogWydjb2RldmlldycsICd1bmRvJywgJ3JlZG8nXTtcclxuICAgIC8vIHRoaXMuc3R5bGVMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9TdHlsZSAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9TdHlsZSA6IFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ2NsZWFyJ11cclxuICAgIC8vIHRoaXMuZm9udHNpemVMaXN0ID0gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9Gb250U2l6ZSAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9Gb250U2l6ZSA6IFsnZm9udG5hbWUnLCAnZm9udHNpemUnLCAnY29sb3InXVxyXG4gICAgLy8gdGhpcy5wYXJhTGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfUGFyYSAhPSBudWxsID8gdGhpcy5vcHRpb25zLlRvb2xzTGlzdF9QYXJhIDogWydzdHlsZScsICd1bCcsICdvbCcsICdwYXJhZ3JhcGgnLCAnaGVpZ2h0J11cclxuICAgIC8vIHRoaXMuaW5zZXJ0TGlzdCA9IHRoaXMub3B0aW9ucy5Ub29sc0xpc3RfSW5zZXJ0ICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuVG9vbHNMaXN0X0luc2VydCA6IFsndGFibGUnLCAncGljdHVyZScsICdsaW5rJywgJ3ZpZGVvJywgJ2hyJ11cclxuXHJcbiAgICAvLyB0aGlzLkNvbmZpZyA9IHtcclxuICAgIC8vICAgY2FsbGJhY2tzOiB7XHJcbiAgICAvLyAgICAgLy8gb25DaGFuZ2U6IChlKSA9PiB7XHJcblxyXG4gICAgLy8gICAgIC8vICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgICAgIHRoaXMub25UZXh0Q2hhbmdlKCk7XHJcbiAgICAvLyAgICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIC8vIH0sXHJcbiAgICAvLyAgICAgLy8gb25LZXl1cDogKGUpID0+IHtcclxuICAgIC8vICAgICAvLyAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgICAgICAgO1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgdGhpcy5vblRleHRDaGFuZ2UoKTtcclxuICAgIC8vICAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgICAgLy8gfSxcclxuICAgIC8vICAgICAvLyBvbktleWRvd246IChlKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgIDtcclxuICAgIC8vICAgICAvLyAgICAgICAgIGlmICh0aGlzLldvcmRDb3VudEFycmF5ID4gdGhpcy5vcHRpb25zLk1heFdvcmRDb3VudCAmJiBlLmtleUNvZGUgIT0gOCkge1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vICAgICAvLyAgICAgICAgIH1cclxuXHJcbiAgICAvLyAgICAgLy8gICAgIH0pO1xyXG4gICAgLy8gICAgIC8vIH1cclxuICAgIC8vICAgfSxcclxuICAgIC8vICAgcGxhY2Vob2xkZXI6IHRoaXMub3B0aW9ucy5QbGFjZWhvbGRlcixcclxuICAgIC8vICAgaGVpZ2h0OiBgJHt0aGlzLm9wdGlvbnMuSGVpZ2h0fXB4YCxcclxuICAgIC8vICAgdG9vbGJhcjogW1xyXG4gICAgLy8gICAgIFsnbWlzYycsIHRoaXMubWlzY0xpc3RdLFxyXG4gICAgLy8gICAgIFsnc3R5bGUnLCB0aGlzLnN0eWxlTGlzdF0sXHJcbiAgICAvLyAgICAgWydmb250c2l6ZScsIHRoaXMuZm9udHNpemVMaXN0XSxcclxuICAgIC8vICAgICBbJ3BhcmEnLCB0aGlzLnBhcmFMaXN0XSxcclxuICAgIC8vICAgICBbJ2luc2VydCcsIHRoaXMuaW5zZXJ0TGlzdF1cclxuICAgIC8vICAgXSxcclxuICAgIC8vICAgZm9udE5hbWVzOiBbJ0hlbHZldGljYScsICdBcmlhbCcsICdBcmlhbCBCbGFjaycsICdDb21pYyBTYW5zIE1TJywgJ0NvdXJpZXIgTmV3JywgJ1JvYm90bycsICdUaW1lcyddXHJcblxyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5uYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMubmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy52aWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3Mudmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IHZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLmN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSB2YWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5sYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMubGFiZWxWYWx1ZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMubGFiZWxLZXkpO1xyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5taW5MZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5vcHRpb25zLm1pbkxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLm1heExlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmh0bWxFZGl0b3JGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmh0bWxFZGl0b3JGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5odG1sRWRpdG9yQ29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmF0dHJpYnV0ZUxpc3QgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0aW9ucy5uYW1lKTtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0W2luZGV4XS5LZXksIHRoaXMub3B0aW9ucy5hdHRyaWJ1dGVMaXN0W2luZGV4XS52YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBhbmd1bGFyRWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFuZ3VsYXItZWRpdG9yLXRvb2xiYXIgbmctc3Rhci1pbnNlcnRlZFwiKVswXVxyXG4gICAgICBsZXQgZGlyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKSA9PSBcImVuXCIgPyBcImx0clwiIDogXCJydGxcIlxyXG4gICAgICBhbmd1bGFyRWRpdG9yLnNldEF0dHJpYnV0ZShcImRpclwiLCBkaXIpO1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuICBvblZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sLnZhbHVlLnRyaW0oKSk7XHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuY29udHJvbFV0aWxpdHkudHJpbUNvbnRyb2xWYWx1ZSh0aGlzLmh0bWxFZGl0b3JGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLnBhdGNoUGF0aCAmJiB0aGlzLmh0bWxFZGl0b3JGb3JtQ29udHJvbC52YWxpZCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsIHRoaXMub3B0aW9ucy5wYXRjaEZ1bmN0aW9uLCB0aGlzLm9wdGlvbnMucGF0Y2hQYXRoKVxyXG4gICAgfVxyXG4gICAgLy9Vc2UgdGhpcyBsaW5lIHRvIGVuYWJsZSB0d28gd2F5IGJpbmRpbmcuXHJcbiAgICB0aGlzLm9wdGlvbnMudmFsdWUgPSBvcmlnaW5hbFZhbHVlO1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuXHJcbiAgcmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5odG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcblxyXG4gIGFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgcmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChjdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5odG1sRWRpdG9yRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBjdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIGFkZEN1c3RvbVZhbGlkYXRpb24gPSAoY3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5hZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuaHRtbEVkaXRvckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgY3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgaXNWYWxpZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuaXNWYWxpZCh0aGlzLmh0bWxFZGl0b3JGb3JtQ29udHJvbClcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYmJzZi1jb250cm9sIGJic2YtaHRtbGVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cIihvcHRpb25zLnZpZXdUeXBlPT0xKT8nYmJzZi12ZXJ0aWNhbCc6J2Jic2YtaG9yaXpvbnRhbCdcIj5cclxuICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuaGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5sYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIHt7b3B0aW9ucy5sYWJlbFZhbHVlfX1cclxuICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLnNob3dBc3RlcmlzayYmb3B0aW9ucy5pc1JlcXVpcmVkKXx8KG9wdGlvbnMuaXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5pc1JlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNSZWFkb25seVwiIGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgPGFuZ3VsYXItZWRpdG9yIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoKVwiIGlkPVwie3tvcHRpb25zLm5hbWV9fVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaHRtbEVkaXRvckZvcm1Db250cm9sLmludmFsaWQgJiYgaHRtbEVkaXRvckZvcm1Db250cm9sLnRvdWNoZWRcIlxyXG4gICAgICAgIGNsYXNzPVwie3tvcHRpb25zLmV4dHJhQ2xhc3Nlc319XCIgW2Rpcl09XCJ0ZXh0RGlyXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLm5hbWV9fVwiXHJcbiAgICAgICAgW2NvbmZpZ109XCJlZGl0b3JDb25maWdcIj48L2FuZ3VsYXItZWRpdG9yPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiIFtpbm5lckhUTUxdPVwib3B0aW9ucy52YWx1ZVwiPjwvc3Bhbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0tIExhYmVsRGVzY3JpcHRpb24tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImJic2YtY29udHJvbC1kZXNjXCIgKm5nSWY9XCJvcHRpb25zLmxhYmVsRGVzY3JpcHRpb24hPW51bGxcIj57e29wdGlvbnMubGFiZWxEZXNjcmlwdGlvbn19PC9kaXY+XHJcbiAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLXZhbGlkYXRpb25cIiAqbmdJZj1cIihodG1sRWRpdG9yRm9ybUNvbnRyb2wuaW52YWxpZCAmJiBodG1sRWRpdG9yRm9ybUNvbnRyb2wudG91Y2hlZClcIj5cclxuICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihodG1sRWRpdG9yRm9ybUNvbnRyb2wuZXJyb3JzfGtleXZhbHVlKX19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKGdyb3VwLnZhbGlkJiZncm91cC5kaXJ0eSYmZ3JvdXAudG91Y2hlZCApfHwoZ3JvdXAudW50b3VjaGVkJiZncm91cC5pbnZhbGlkJiZncm91cC5kaXJ0eSkgXCI+XHJcbiAgICAgIHt7cmVzZXRFcnJvcigpfX08L2Rpdj5cclxuICA8L2Rpdj4iXX0=
|