@hitsoft/e-donusum 100.1.5-Edo-Test → 100.1.5-edo-prod
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/esm2020/lib/auto-send-rules/auto-send-rule/auto-send-rule.module.mjs +1 -1
- package/esm2020/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.mjs +109 -50
- package/esm2020/lib/components/hit-params-generals/hit-params-generals-part2/hit-params-general-part2.component.mjs +7 -15
- package/esm2020/lib/components/hit-params-integrators/hit-params-integrator.component.mjs +61 -50
- package/esm2020/lib/components/hit-setup-wizard/hit-setup-wizard.component.mjs +2 -2
- package/esm2020/lib/document-serials/document-serial/document-serial.module.mjs +1 -1
- package/esm2020/lib/hit-proxy/hit-inbound-invoices/hit-inbound-invoice.service.mjs +29 -12
- package/esm2020/lib/hit-proxy/hit-inbound-invoices/models.mjs +1 -1
- package/esm2020/lib/params-companies/params-company/components/params-company.component.mjs +5 -4
- package/esm2020/lib/params-generals/params-general/components/params-general.component.mjs +6 -5
- package/esm2020/lib/params-integrators/params-integrator/components/params-integrator.component.mjs +9 -4
- package/esm2020/lib/proxy/params-companies/models.mjs +1 -1
- package/esm2020/lib/proxy/params-generals/models.mjs +1 -1
- package/esm2020/lib/proxy/params-integrators/models.mjs +1 -1
- package/fesm2015/hitsoft-e-donusum.mjs +222 -135
- package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
- package/fesm2020/hitsoft-e-donusum.mjs +221 -134
- package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
- package/lib/components/hit-inbound-invoices/hit-inbound-invoice.component.d.ts +13 -6
- package/lib/components/hit-params-generals/hit-params-generals-part2/hit-params-general-part2.component.d.ts +0 -1
- package/lib/components/hit-params-integrators/hit-params-integrator.component.d.ts +3 -0
- package/lib/hit-proxy/hit-inbound-invoices/hit-inbound-invoice.service.d.ts +5 -2
- package/lib/hit-proxy/hit-inbound-invoices/models.d.ts +10 -0
- package/lib/params-integrators/params-integrator/components/params-integrator.component.d.ts +1 -0
- package/lib/proxy/params-companies/models.d.ts +3 -0
- package/lib/proxy/params-generals/models.d.ts +3 -0
- package/lib/proxy/params-integrators/models.d.ts +12 -0
- package/package.json +1 -1
|
@@ -21,7 +21,6 @@ export class HitParamsGeneralPart2Component {
|
|
|
21
21
|
this.IsSubmitButtonHidden = false;
|
|
22
22
|
this.valid = new EventEmitter();
|
|
23
23
|
this.submitButtonDisabled = false;
|
|
24
|
-
this.downloadTokenSecret = '';
|
|
25
24
|
}
|
|
26
25
|
ngOnInit() {
|
|
27
26
|
this.hitParamsGeneralsService.getParamsGeneral().subscribe(data => {
|
|
@@ -32,16 +31,12 @@ export class HitParamsGeneralPart2Component {
|
|
|
32
31
|
this.hitEntegratorsService.getEntegrators().subscribe(data => {
|
|
33
32
|
this.integratorDataSource = data;
|
|
34
33
|
});
|
|
35
|
-
this.hitParamsGeneralsService.getDownloadTokenSecret().subscribe(data => {
|
|
36
|
-
this.downloadTokenSecret = data?.value || '';
|
|
37
|
-
this.generalformParamsGeneralPart2?.patchValue({ downloadTokenSecret: this.downloadTokenSecret });
|
|
38
|
-
});
|
|
39
34
|
}
|
|
40
35
|
buildForm() {
|
|
41
|
-
const { integrator } = this.paramsGeneralDto || {};
|
|
36
|
+
const { integrator, isEntegratorErrorMailActive } = this.paramsGeneralDto || {};
|
|
42
37
|
this.generalformParamsGeneralPart2 = this.fb.group({
|
|
43
38
|
integrator: [integrator ?? 0, []],
|
|
44
|
-
|
|
39
|
+
isEntegratorErrorMailActive: [isEntegratorErrorMailActive ?? false, []],
|
|
45
40
|
});
|
|
46
41
|
}
|
|
47
42
|
async submitForm() {
|
|
@@ -56,11 +51,8 @@ export class HitParamsGeneralPart2Component {
|
|
|
56
51
|
// this.toasterService.info('eDonusum::TransactionStarted');
|
|
57
52
|
this.paramsGeneralDtoPart1.integrator =
|
|
58
53
|
this.generalformParamsGeneralPart2.controls.integrator.value;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
this.hitParamsGeneralsService.setDownloadTokenSecret(tokenSecretValue).subscribe();
|
|
62
|
-
this.downloadTokenSecret = tokenSecretValue;
|
|
63
|
-
}
|
|
54
|
+
this.paramsGeneralDtoPart1.isEntegratorErrorMailActive =
|
|
55
|
+
this.generalformParamsGeneralPart2.controls.isEntegratorErrorMailActive.value;
|
|
64
56
|
const request = this.service.update(this.paramsGeneralDto?.id, {
|
|
65
57
|
...this.paramsGeneralDtoPart1,
|
|
66
58
|
});
|
|
@@ -82,10 +74,10 @@ export class HitParamsGeneralPart2Component {
|
|
|
82
74
|
}
|
|
83
75
|
}
|
|
84
76
|
HitParamsGeneralPart2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsGeneralPart2Component, deps: [{ token: i1.ParamsGeneralService }, { token: i2.FormBuilder }, { token: i3.HitParamsGeneralsService }, { token: i4.ToasterService }, { token: i5.HitEntegratorsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
-
HitParamsGeneralPart2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsGeneralPart2Component, selector: "hit-params-general-part2", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <
|
|
77
|
+
HitParamsGeneralPart2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsGeneralPart2Component, selector: "hit-params-general-part2", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-general-is-entegrator-error-mail-active\"\r\n formControlName=\"isEntegratorErrorMailActive\" class=\"form-check-input\" />\r\n <label for=\"params-general-is-entegrator-error-mail-active\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsEntegratorErrorMailActive' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-general-part2\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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: "directive", type: i6.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i8.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "customItemCreateEvent", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "customItemCreateEventChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "pipe", type: i6.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
86
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsGeneralPart2Component, decorators: [{
|
|
87
79
|
type: Component,
|
|
88
|
-
args: [{ selector: 'hit-params-general-part2', changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <
|
|
80
|
+
args: [{ selector: 'hit-params-general-part2', changeDetection: ChangeDetectionStrategy.Default, providers: [{ provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"generalformParamsGeneralPart2\" id=\"params-general-part2\" (ngSubmit)=\"submitForm()\"\r\n validateOnSubmit>\r\n <div class=\"mt-2 fade-in-top\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <dx-select-box id=\"params-general-integrator\" formControlName=\"integrator\"\r\n class=\"form-control\" displayExpr=\"displayName\" valueExpr=\"id\"\r\n [dataSource]=\"integratorDataSource\">\r\n </dx-select-box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"form-check mb-3\">\r\n <input type=\"checkbox\" id=\"params-general-is-entegrator-error-mail-active\"\r\n formControlName=\"isEntegratorErrorMailActive\" class=\"form-check-input\" />\r\n <label for=\"params-general-is-entegrator-error-mail-active\" class=\"form-check-label\">\r\n {{ 'eDonusum::IsEntegratorErrorMailActive' | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-general-part2\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
89
81
|
}], ctorParameters: function () { return [{ type: i1.ParamsGeneralService }, { type: i2.FormBuilder }, { type: i3.HitParamsGeneralsService }, { type: i4.ToasterService }, { type: i5.HitEntegratorsService }]; }, propDecorators: { paramsGeneralDtoPart1: [{
|
|
90
82
|
type: Input
|
|
91
83
|
}], IsSubmitButtonHidden: [{
|
|
@@ -93,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
93
85
|
}], valid: [{
|
|
94
86
|
type: Output
|
|
95
87
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1nZW5lcmFsLXBhcnQyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1nZW5lcmFscy9oaXQtcGFyYW1zLWdlbmVyYWxzLXBhcnQyL2hpdC1wYXJhbXMtZ2VuZXJhbC1wYXJ0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFscy1wYXJ0Mi9oaXQtcGFyYW1zLWdlbmVyYWwtcGFydDIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFjLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBV3JDLE1BQU0sT0FBTyw4QkFBOEI7SUFpQnpDLFlBQ2tCLE9BQTZCLEVBQ3JDLEVBQWUsRUFDTix3QkFBa0QsRUFDbEQsY0FBOEIsRUFDL0IscUJBQTRDO1FBSjVDLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQ3JDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDTiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBZnJELHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU1QixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFJN0Isd0JBQW1CLEdBQVcsRUFBRSxDQUFDO0lBUTdCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLDZCQUE2QixFQUFFLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDcEcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBRW5ELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqRCxVQUFVLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxtQkFBbUIsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLFFBQVEsQ0FBQztRQUNULElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBRTdCLElBQUksSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sRUFBRTtnQkFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFFakMsNERBQTREO1lBRTVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVO2dCQUNuQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFFL0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztZQUMvRixJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDakQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQzthQUM3QztZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUU7Z0JBQzdELEdBQUcsSUFBSSxDQUFDLHFCQUFxQjthQUM5QixDQUFDLENBQUM7WUFFSCxPQUFPO2lCQUNKLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUNmO2lCQUNBLFNBQVMsQ0FDUixHQUFHLEVBQUU7Z0JBQ0gsa0VBQWtFO2dCQUNsRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUUvRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQ0YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkhBcEdVLDhCQUE4QjsrR0FBOUIsOEJBQThCLDBMQUo5QixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsMEJDWmpFLHMxREFtQ007MkZEbkJPLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBQ25CLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOzZPQVN0RCxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBQYXJhbXNHZW5lcmFsRHRvLCBQYXJhbXNHZW5lcmFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L3BhcmFtcy1nZW5lcmFscyc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgSGl0RW50ZWdyYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGl0LXByb3h5L2hpdC1lbnRlZ3JhdG9ycy9oaXQtZW50ZWdyYXRvci5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoaXQtcGFyYW1zLWdlbmVyYWwtcGFydDInLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1wYXJhbXMtZ2VuZXJhbC1wYXJ0Mi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdFBhcmFtc0dlbmVyYWxQYXJ0MkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDI6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGFyYW1zR2VuZXJhbER0bz86IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIHBhcmFtc0dlbmVyYWxEdG9QYXJ0MTogUGFyYW1zR2VuZXJhbER0bztcclxuXHJcbiAgQElucHV0KCkgSXNTdWJtaXRCdXR0b25IaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBzdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBpbnRlZ3JhdG9yRGF0YVNvdXJjZTogYW55O1xyXG5cclxuICBkb3dubG9hZFRva2VuU2VjcmV0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUGFyYW1zR2VuZXJhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlOiBIaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBoaXRFbnRlZ3JhdG9yc1NlcnZpY2U6IEhpdEVudGVncmF0b3JzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5nZXRFbnRlZ3JhdG9ycygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pbnRlZ3JhdG9yRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmhpdFBhcmFtc0dlbmVyYWxzU2VydmljZS5nZXREb3dubG9hZFRva2VuU2VjcmV0KCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmRvd25sb2FkVG9rZW5TZWNyZXQgPSBkYXRhPy52YWx1ZSB8fCAnJztcclxuICAgICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0Mj8ucGF0Y2hWYWx1ZSh7IGRvd25sb2FkVG9rZW5TZWNyZXQ6IHRoaXMuZG93bmxvYWRUb2tlblNlY3JldCB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3QgeyBpbnRlZ3JhdG9yIH0gPSB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gfHwge307XHJcblxyXG4gICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0MiA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpbnRlZ3JhdG9yOiBbaW50ZWdyYXRvciA/PyAwLCBbXV0sXHJcbiAgICAgIGRvd25sb2FkVG9rZW5TZWNyZXQ6IFt0aGlzLmRvd25sb2FkVG9rZW5TZWNyZXQgPz8gJycsIFtdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdlbmVyYWxmb3JtUGFyYW1zR2VuZXJhbFBhcnQyLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpUcmFuc2FjdGlvblN0YXJ0ZWQnKTtcclxuXHJcbiAgICAgIHRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxLmludGVncmF0b3IgPVxyXG4gICAgICAgIHRoaXMuZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDIuY29udHJvbHMuaW50ZWdyYXRvci52YWx1ZTtcclxuXHJcbiAgICAgIGNvbnN0IHRva2VuU2VjcmV0VmFsdWUgPSB0aGlzLmdlbmVyYWxmb3JtUGFyYW1zR2VuZXJhbFBhcnQyLmNvbnRyb2xzLmRvd25sb2FkVG9rZW5TZWNyZXQudmFsdWU7XHJcbiAgICAgIGlmICh0b2tlblNlY3JldFZhbHVlICE9PSB0aGlzLmRvd25sb2FkVG9rZW5TZWNyZXQpIHtcclxuICAgICAgICB0aGlzLmhpdFBhcmFtc0dlbmVyYWxzU2VydmljZS5zZXREb3dubG9hZFRva2VuU2VjcmV0KHRva2VuU2VjcmV0VmFsdWUpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWRUb2tlblNlY3JldCA9IHRva2VuU2VjcmV0VmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMucGFyYW1zR2VuZXJhbER0bz8uaWQsIHtcclxuICAgICAgICAuLi50aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXF1ZXN0XHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKCgpID0+IHsgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgLy8gdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25TdWNjZXNzZnVsJyk7XHJcbiAgICAgICAgICAgIHRoaXMuaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlLmdldFBhcmFtc0dlbmVyYWwoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25VbnN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDJcIiBpZD1cInBhcmFtcy1nZW5lcmFsLXBhcnQyXCIgKG5nU3VibWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgICAgICAgIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGZhZGUtaW4tdG9wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBpZD1cInBhcmFtcy1nZW5lcmFsLWludGVncmF0b3JcIiBmb3JtQ29udHJvbE5hbWU9XCJpbnRlZ3JhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGRpc3BsYXlFeHByPVwiZGlzcGxheU5hbWVcIiB2YWx1ZUV4cHI9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiaW50ZWdyYXRvckRhdGFTb3VyY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtc2VsZWN0LWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXJhbXMtZ2VuZXJhbC1kb3dubG9hZC10b2tlbi1zZWNyZXRcIj57eyAnZURvbnVzdW06OkRvd25sb2FkVG9rZW5TZWNyZXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInBhcmFtcy1nZW5lcmFsLWRvd25sb2FkLXRva2VuLXNlY3JldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG93bmxvYWRUb2tlblNlY3JldFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWxnLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwic3VibWl0XCIgZm9ybU5hbWU9XCJwYXJhbXMtZ2VuZXJhbC1wYXJ0MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdEJ1dHRvbkRpc2FibGVkXCIgW2hpZGRlbl09XCJJc1N1Ym1pdEJ1dHRvbkhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1nZW5lcmFsLXBhcnQyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1nZW5lcmFscy9oaXQtcGFyYW1zLWdlbmVyYWxzLXBhcnQyL2hpdC1wYXJhbXMtZ2VuZXJhbC1wYXJ0Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lLWRvbnVzdW0vc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wYXJhbXMtZ2VuZXJhbHMvaGl0LXBhcmFtcy1nZW5lcmFscy1wYXJ0Mi9oaXQtcGFyYW1zLWdlbmVyYWwtcGFydDIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFjLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBV3JDLE1BQU0sT0FBTyw4QkFBOEI7SUFlekMsWUFDa0IsT0FBNkIsRUFDckMsRUFBZSxFQUNOLHdCQUFrRCxFQUNsRCxjQUE4QixFQUMvQixxQkFBNEM7UUFKNUMsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDckMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNOLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFickQseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLFVB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WUFDekIsQ0FBQyxDQUNGLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzJIQXpGVSw4QkFBOEI7K0dBQTlCLDhCQUE4QiwwTEFKOUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLDBCQ1pqRSx3K0RBcUNNOzJGRHJCTyw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUNuQix1QkFBdUIsQ0FBQyxPQUFPLGFBQ3JDLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzs2T0FTdEQscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUGFyYW1zR2VuZXJhbER0bywgUGFyYW1zR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9wYXJhbXMtZ2VuZXJhbHMnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdFBhcmFtc0dlbmVyYWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtcGFyYW1zLWdlbmVyYWxzL2hpdC1wYXJhbXMtZ2VuZXJhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEVudGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2hpdC1wcm94eS9oaXQtZW50ZWdyYXRvcnMvaGl0LWVudGVncmF0b3Iuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1nZW5lcmFsLXBhcnQyJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtcGFyYW1zLWdlbmVyYWwtcGFydDIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRQYXJhbXNHZW5lcmFsUGFydDJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGdlbmVyYWxmb3JtUGFyYW1zR2VuZXJhbFBhcnQyOiBGb3JtR3JvdXA7XHJcblxyXG4gIHBhcmFtc0dlbmVyYWxEdG8/OiBQYXJhbXNHZW5lcmFsRHRvO1xyXG5cclxuICBASW5wdXQoKSBwYXJhbXNHZW5lcmFsRHRvUGFydDE6IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIElzU3VibWl0QnV0dG9uSGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgaW50ZWdyYXRvckRhdGFTb3VyY2U6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUGFyYW1zR2VuZXJhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zR2VuZXJhbHNTZXJ2aWNlOiBIaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBoaXRFbnRlZ3JhdG9yc1NlcnZpY2U6IEhpdEVudGVncmF0b3JzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvID0gZGF0YTtcclxuICAgICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5nZXRFbnRlZ3JhdG9ycygpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pbnRlZ3JhdG9yRGF0YVNvdXJjZSA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IHsgaW50ZWdyYXRvciwgaXNFbnRlZ3JhdG9yRXJyb3JNYWlsQWN0aXZlIH0gPSB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gfHwge307XHJcblxyXG4gICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0MiA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpbnRlZ3JhdG9yOiBbaW50ZWdyYXRvciA/PyAwLCBbXV0sXHJcbiAgICAgIGlzRW50ZWdyYXRvckVycm9yTWFpbEFjdGl2ZTogW2lzRW50ZWdyYXRvckVycm9yTWFpbEFjdGl2ZSA/PyBmYWxzZSwgW11dLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICB0aGlzLmhpdFBhcmFtc0dlbmVyYWxzU2VydmljZS5nZXRQYXJhbXNHZW5lcmFsKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gPSBkYXRhO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDIuaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3RhcnRlZCcpO1xyXG5cclxuICAgICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvUGFydDEuaW50ZWdyYXRvciA9XHJcbiAgICAgICAgdGhpcy5nZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0Mi5jb250cm9scy5pbnRlZ3JhdG9yLnZhbHVlO1xyXG4gICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MS5pc0VudGVncmF0b3JFcnJvck1haWxBY3RpdmUgPVxyXG4gICAgICAgIHRoaXMuZ2VuZXJhbGZvcm1QYXJhbXNHZW5lcmFsUGFydDIuY29udHJvbHMuaXNFbnRlZ3JhdG9yRXJyb3JNYWlsQWN0aXZlLnZhbHVlO1xyXG5cclxuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuc2VydmljZS51cGRhdGUodGhpcy5wYXJhbXNHZW5lcmFsRHRvPy5pZCwge1xyXG4gICAgICAgIC4uLnRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJlcXVlc3RcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB0YXAoKCkgPT4geyB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpUcmFuc2FjdGlvblN1Y2Nlc3NmdWwnKTtcclxuICAgICAgICAgICAgdGhpcy5oaXRQYXJhbXNHZW5lcmFsc1NlcnZpY2UuZ2V0UGFyYW1zR2VuZXJhbCgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG8gPSBkYXRhO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy52YWxpZC5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpUcmFuc2FjdGlvblVuc3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJnZW5lcmFsZm9ybVBhcmFtc0dlbmVyYWxQYXJ0MlwiIGlkPVwicGFyYW1zLWdlbmVyYWwtcGFydDJcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCJcclxuICAgICAgICAgICAgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZmFkZS1pbi10b3BcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IGlkPVwicGFyYW1zLWdlbmVyYWwtaW50ZWdyYXRvclwiIGZvcm1Db250cm9sTmFtZT1cImludGVncmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZGlzcGxheUV4cHI9XCJkaXNwbGF5TmFtZVwiIHZhbHVlRXhwcj1cImlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJpbnRlZ3JhdG9yRGF0YVNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJwYXJhbXMtZ2VuZXJhbC1pcy1lbnRlZ3JhdG9yLWVycm9yLW1haWwtYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0VudGVncmF0b3JFcnJvck1haWxBY3RpdmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhcmFtcy1nZW5lcmFsLWlzLWVudGVncmF0b3ItZXJyb3ItbWFpbC1hY3RpdmVcIiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OklzRW50ZWdyYXRvckVycm9yTWFpbEFjdGl2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1sZy1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwicGFyYW1zLWdlbmVyYWwtcGFydDJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRCdXR0b25EaXNhYmxlZFwiIFtoaWRkZW5dPVwiSXNTdWJtaXRCdXR0b25IaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2FicC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -3,7 +3,6 @@ import { DateAdapter } from '@abp/ng.theme.shared/extensions';
|
|
|
3
3
|
import { ChangeDetectionStrategy, Component, EventEmitter, Injectable, Input, Output, } from '@angular/core';
|
|
4
4
|
import { Validators } from '@angular/forms';
|
|
5
5
|
import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap';
|
|
6
|
-
import { finalize, tap } from 'rxjs';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
import * as i1 from "@abp/ng.core";
|
|
9
8
|
import * as i2 from "../../proxy/params-integrators";
|
|
@@ -22,6 +21,7 @@ export class HitParamsIntegratorComponent {
|
|
|
22
21
|
this.hitParamsIntegratorsService = hitParamsIntegratorsService;
|
|
23
22
|
this.toasterService = toasterService;
|
|
24
23
|
this.hitEntegratorsService = hitEntegratorsService;
|
|
24
|
+
this.URL_PATTERN = /^(https?:\/\/)([\w-]+\.)+[\w-]{2,}([:\/?#][^\s]*)?$/;
|
|
25
25
|
this.submitButtonDisabled = false;
|
|
26
26
|
this.connectionTestButtonDisabled = false;
|
|
27
27
|
this.IsSubmitButtonHidden = false;
|
|
@@ -32,7 +32,7 @@ export class HitParamsIntegratorComponent {
|
|
|
32
32
|
this.getParamsIntegrator(true, '');
|
|
33
33
|
}
|
|
34
34
|
buildForm() {
|
|
35
|
-
const { serviceUser, servicePassword, eInvoiceGBLabel, eInvoicePKLabel, eDispatchGBLabel, eDispatchPKLabel, eArchiveGBLabel, eArchivePKLabel, emmGBLabel, emmPKLabel, branchId, } = this.paramsIntegratorDtoWithNavigationPropertiesDto?.paramsIntegrator || {};
|
|
35
|
+
const { serviceUser, servicePassword, eInvoiceGBLabel, eInvoicePKLabel, eDispatchGBLabel, eDispatchPKLabel, eArchiveGBLabel, eArchivePKLabel, emmGBLabel, emmPKLabel, eInvoiceApiUrl, eDespatchApiUrl, eArchiveApiUrl, emmApiUrl, branchId, } = this.paramsIntegratorDtoWithNavigationPropertiesDto?.paramsIntegrator || {};
|
|
36
36
|
this.formParamsIntegrator = this.fb.group({
|
|
37
37
|
serviceUser: [serviceUser ?? null, [Validators.required, Validators.maxLength(64)]],
|
|
38
38
|
servicePassword: [servicePassword ?? null, [Validators.required, Validators.maxLength(64)]],
|
|
@@ -50,11 +50,14 @@ export class HitParamsIntegratorComponent {
|
|
|
50
50
|
// eArchivePKLabel: [eArchivePKLabel ?? null, [Validators.required, Validators.maxLength(256)]],
|
|
51
51
|
// emmGBLabel: [emmGBLabel ?? null, [Validators.required, Validators.maxLength(256)]],
|
|
52
52
|
// emmPKLabel: [emmPKLabel ?? null, [Validators.required, Validators.maxLength(256)]],
|
|
53
|
+
eInvoiceApiUrl: [eInvoiceApiUrl ?? null, [Validators.maxLength(512), Validators.pattern(this.URL_PATTERN)]],
|
|
54
|
+
eDespatchApiUrl: [eDespatchApiUrl ?? null, [Validators.maxLength(512), Validators.pattern(this.URL_PATTERN)]],
|
|
55
|
+
eArchiveApiUrl: [eArchiveApiUrl ?? null, [Validators.maxLength(512), Validators.pattern(this.URL_PATTERN)]],
|
|
56
|
+
emmApiUrl: [emmApiUrl ?? null, [Validators.maxLength(512), Validators.pattern(this.URL_PATTERN)]],
|
|
53
57
|
branchId: [branchId ?? null, []],
|
|
54
58
|
});
|
|
55
59
|
}
|
|
56
60
|
async submitForm() {
|
|
57
|
-
debugger;
|
|
58
61
|
if (this.formParamsIntegrator.invalid) {
|
|
59
62
|
window.scroll({
|
|
60
63
|
top: 0,
|
|
@@ -65,40 +68,52 @@ export class HitParamsIntegratorComponent {
|
|
|
65
68
|
this.valid.emit(false);
|
|
66
69
|
return;
|
|
67
70
|
}
|
|
68
|
-
// if (
|
|
69
|
-
// this.paramsGeneralDtoPart1.isBranch &&
|
|
70
|
-
// this.formParamsIntegrator.controls.branchId.value == undefined
|
|
71
|
-
// ) {
|
|
72
|
-
// this.toasterService.error('eDonusum::PleaseSelectBranch');
|
|
73
|
-
// this.valid.emit(false);
|
|
74
|
-
// return;
|
|
75
|
-
// }
|
|
76
|
-
this.formParamsIntegrator.controls.branchId.setValue(null);
|
|
77
71
|
this.submitButtonDisabled = true;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
72
|
+
try {
|
|
73
|
+
const saved = await this.saveParamsIntegrator();
|
|
74
|
+
if (!saved) {
|
|
75
|
+
this.valid.emit(false);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const testResult = await this.runConnectionTest();
|
|
79
|
+
this.valid.emit(testResult);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
this.submitButtonDisabled = false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
saveParamsIntegrator() {
|
|
86
|
+
this.formParamsIntegrator.controls.branchId.setValue(null);
|
|
87
|
+
const request$ = this.paramsIntegratorDtoWithNavigationPropertiesDto
|
|
81
88
|
? this.service.update(this.paramsIntegratorDtoWithNavigationPropertiesDto.paramsIntegrator.id, {
|
|
82
89
|
...this.formParamsIntegrator.value,
|
|
83
90
|
})
|
|
84
91
|
: this.service.create(this.formParamsIntegrator.value);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
request$.subscribe(async () => {
|
|
94
|
+
await this.getParamsIntegrator(false, this.paramsIntegratorDtoWithNavigationPropertiesDto?.branch
|
|
95
|
+
? this.paramsIntegratorDtoWithNavigationPropertiesDto.branch.id
|
|
96
|
+
: '00000000-0000-0000-0000-000000000000');
|
|
97
|
+
resolve(true);
|
|
98
|
+
}, () => {
|
|
99
|
+
this.toasterService.error('eDonusum::TransactionUnsuccessful');
|
|
100
|
+
resolve(false);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async runConnectionTest() {
|
|
105
|
+
const request = this.formParamsIntegrator.value;
|
|
106
|
+
return await this.hitEntegratorsService.connectionTest(request).then(data => {
|
|
107
|
+
if (data) {
|
|
108
|
+
this.toasterService.success('eDonusum::ConnectionSuccessful');
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.toasterService.error(data?.message);
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}).catch(() => {
|
|
116
|
+
return false;
|
|
102
117
|
});
|
|
103
118
|
}
|
|
104
119
|
async getParamsIntegrator(buildForm = false, branchId) {
|
|
@@ -129,33 +144,29 @@ export class HitParamsIntegratorComponent {
|
|
|
129
144
|
// });
|
|
130
145
|
// }
|
|
131
146
|
async connectionTest() {
|
|
147
|
+
if (this.formParamsIntegrator.invalid) {
|
|
148
|
+
this.toasterService.error('eDonusum::FillRequiredFields');
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
132
151
|
this.connectionTestButtonDisabled = true;
|
|
133
|
-
|
|
134
|
-
this.
|
|
135
|
-
|
|
136
|
-
return await this.hitEntegratorsService.connectionTest(request).then(data => {
|
|
137
|
-
this.connectionTestButtonDisabled = false;
|
|
138
|
-
this.submitButtonDisabled = false;
|
|
139
|
-
if (data) {
|
|
140
|
-
this.toasterService.success('eDonusum::ConnectionSuccessful');
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
this.toasterService.error(data.message);
|
|
152
|
+
try {
|
|
153
|
+
const saved = await this.saveParamsIntegrator();
|
|
154
|
+
if (!saved)
|
|
145
155
|
return false;
|
|
146
|
-
|
|
147
|
-
}
|
|
156
|
+
return await this.runConnectionTest();
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
148
159
|
this.connectionTestButtonDisabled = false;
|
|
149
160
|
this.submitButtonDisabled = false;
|
|
150
|
-
}
|
|
161
|
+
}
|
|
151
162
|
}
|
|
152
163
|
}
|
|
153
164
|
HitParamsIntegratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsIntegratorComponent, deps: [{ token: i1.ListService }, { token: i1.TrackByService }, { token: i2.ParamsIntegratorService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }, { token: i5.HitParamsIntegratorsService }, { token: i3.ToasterService }, { token: i6.HitEntegratorsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
154
|
-
HitParamsIntegratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsIntegratorComponent, selector: "hit-params-integrator", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <!-- <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\" [disabled]=\"connectionTestButtonDisabled\" (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
165
|
+
HitParamsIntegratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsIntegratorComponent, selector: "hit-params-integrator", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <!-- <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-api-url\">\r\n {{ 'eDonusum::EInvoiceApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-api-url\" formControlName=\"eInvoiceApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('eInvoiceApiUrl')?.invalid && (formParamsIntegrator.get('eInvoiceApiUrl')?.touched || formParamsIntegrator.get('eInvoiceApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edespatch-api-url\">\r\n {{ 'eDonusum::EDespatchApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-edespatch-api-url\" formControlName=\"eDespatchApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('eDespatchApiUrl')?.invalid && (formParamsIntegrator.get('eDespatchApiUrl')?.touched || formParamsIntegrator.get('eDespatchApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-api-url\">\r\n {{ 'eDonusum::EArchiveApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-api-url\" formControlName=\"eArchiveApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('eArchiveApiUrl')?.invalid && (formParamsIntegrator.get('eArchiveApiUrl')?.touched || formParamsIntegrator.get('eArchiveApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-emm-api-url\">\r\n {{ 'eDonusum::EmmApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-emm-api-url\" formControlName=\"emmApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('emmApiUrl')?.invalid && (formParamsIntegrator.get('emmApiUrl')?.touched || formParamsIntegrator.get('emmApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\"\r\n [disabled]=\"connectionTestButtonDisabled || formParamsIntegrator.invalid\"\r\n (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled || formParamsIntegrator.invalid\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i7.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
|
|
155
166
|
HitParamsIntegratorComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsIntegratorComponent, providedIn: 'root' });
|
|
156
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsIntegratorComponent, decorators: [{
|
|
157
168
|
type: Component,
|
|
158
|
-
args: [{ selector: 'hit-params-integrator', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <!-- <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\" [disabled]=\"connectionTestButtonDisabled\" (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
169
|
+
args: [{ selector: 'hit-params-integrator', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <!-- <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div> -->\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-api-url\">\r\n {{ 'eDonusum::EInvoiceApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-api-url\" formControlName=\"eInvoiceApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('eInvoiceApiUrl')?.invalid && (formParamsIntegrator.get('eInvoiceApiUrl')?.touched || formParamsIntegrator.get('eInvoiceApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edespatch-api-url\">\r\n {{ 'eDonusum::EDespatchApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-edespatch-api-url\" formControlName=\"eDespatchApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('eDespatchApiUrl')?.invalid && (formParamsIntegrator.get('eDespatchApiUrl')?.touched || formParamsIntegrator.get('eDespatchApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-api-url\">\r\n {{ 'eDonusum::EArchiveApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-api-url\" formControlName=\"eArchiveApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('eArchiveApiUrl')?.invalid && (formParamsIntegrator.get('eArchiveApiUrl')?.touched || formParamsIntegrator.get('eArchiveApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-emm-api-url\">\r\n {{ 'eDonusum::EmmApiUrl' | abpLocalization }}\r\n </label>\r\n\r\n <input id=\"params-integrator-emm-api-url\" formControlName=\"emmApiUrl\"\r\n class=\"form-control\" maxlength=\"512\"\r\n [class.is-invalid]=\"formParamsIntegrator.get('emmApiUrl')?.invalid && (formParamsIntegrator.get('emmApiUrl')?.touched || formParamsIntegrator.get('emmApiUrl')?.dirty)\" />\r\n <div class=\"invalid-feedback\">{{ 'eDonusum::InvalidUrlFormat' | abpLocalization }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\"\r\n [disabled]=\"connectionTestButtonDisabled || formParamsIntegrator.invalid\"\r\n (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled || formParamsIntegrator.invalid\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
159
170
|
}, {
|
|
160
171
|
type: Injectable,
|
|
161
172
|
args: [{
|
|
@@ -168,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
168
179
|
}], valid: [{
|
|
169
180
|
type: Output
|
|
170
181
|
}] } });
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFFOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBa0JyQyxNQUFNLE9BQU8sNEJBQTRCO0lBaUJ2QyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUFnQyxFQUN4QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sMkJBQXdELEVBQ3hELGNBQThCLEVBQzlCLHFCQUE0QztRQVA3QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFx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RSx1QkFBdUIsbUJBQ2hCLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzs7a0JBSTdFLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU0sRUFBRSw0QkFBNEI7aUJBQ2pEOzRVQVlVLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUJQLCBkb3dubG9hZEJsb2IsIExpc3RTZXJ2aWNlLCBQYWdlZFJlc3VsdER0bywgVHJhY2tCeVNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkRhdGVBZGFwdGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBQYXJhbXNJbnRlZ3JhdG9yU2VydmljZSxcclxuICBQYXJhbXNJbnRlZ3JhdG9yV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvLFxyXG59IGZyb20gJy4uLy4uL3Byb3h5L3BhcmFtcy1pbnRlZ3JhdG9ycyc7XHJcbmltcG9ydCB7IFBhcmFtc0dlbmVyYWxEdG8gfSBmcm9tICcuLi8uLi9wcm94eS9wYXJhbXMtZ2VuZXJhbHMnO1xyXG5pbXBvcnQgeyBIaXRFbnRlZ3JhdG9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWVudGVncmF0b3JzL2hpdC1lbnRlZ3JhdG9yLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hpdC1wYXJhbXMtaW50ZWdyYXRvcicsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JywgLy8gU2VydmlzIGdpYmkgZ2xvYmFsIHNhxJ9sYXJcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdFBhcmFtc0ludGVncmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGZvcm1QYXJhbXNJbnRlZ3JhdG9yOiBGb3JtR3JvdXA7XHJcblxyXG4gIHBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/OiBQYXJhbXNJbnRlZ3JhdG9yV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvO1xyXG5cclxuICBzdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgc2NlbmFyaW9UeXBlRGF0YVNvdXJjZTogYW55O1xyXG4gIGRvY3VtZW50VHlwZURhdGFTb3VyY2U6IGFueTtcclxuXHJcbiAgQElucHV0KCkgcGFyYW1zR2VuZXJhbER0b1BhcnQxOiBQYXJhbXNHZW5lcmFsRHRvO1xyXG5cclxuICBASW5wdXQoKSBJc1N1Ym1pdEJ1dHRvbkhpZGRlbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBQYXJhbXNJbnRlZ3JhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZTogSGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdEVudGVncmF0b3JzU2VydmljZTogSGl0RW50ZWdyYXRvcnNTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgIHRoaXMuZ2V0UGFyYW1zSW50ZWdyYXRvcih0cnVlLCAnJyk7XHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlcnZpY2VVc2VyLFxyXG4gICAgICBzZXJ2aWNlUGFzc3dvcmQsXHJcbiAgICAgIGVJbnZvaWNlR0JMYWJlbCxcclxuICAgICAgZUludm9pY2VQS0xhYmVsLFxyXG4gICAgICBlRGlzcGF0Y2hHQkxhYmVsLFxyXG4gICAgICBlRGlzcGF0Y2hQS0xhYmVsLFxyXG4gICAgICBlQXJjaGl2ZUdCTGFiZWwsXHJcbiAgICAgIGVBcmNoaXZlUEtMYWJlbCxcclxuICAgICAgZW1tR0JMYWJlbCxcclxuICAgICAgZW1tUEtMYWJlbCxcclxuICAgICAgYnJhbmNoSWQsXHJcbiAgICB9ID0gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvPy5wYXJhbXNJbnRlZ3JhdG9yIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc2VydmljZVVzZXI6IFtzZXJ2aWNlVXNlciA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNjQpXV0sXHJcbiAgICAgIHNlcnZpY2VQYXNzd29yZDogW3NlcnZpY2VQYXNzd29yZCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNjQpXV0sXHJcbiAgICAgIGVJbnZvaWNlR0JMYWJlbDogW2VJbnZvaWNlR0JMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBlSW52b2ljZVBLTGFiZWw6IFtlSW52b2ljZVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgZURpc3BhdGNoR0JMYWJlbDogW1xyXG4gICAgICAgIGVEaXNwYXRjaEdCTGFiZWwgPz8gbnVsbCxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGVEaXNwYXRjaFBLTGFiZWw6IFtcclxuICAgICAgICBlRGlzcGF0Y2hQS0xhYmVsID8/IG51bGwsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildLFxyXG4gICAgICBdLFxyXG4gICAgICAvLyBlQXJjaGl2ZUdCTGFiZWw6IFtlQXJjaGl2ZUdCTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZUFyY2hpdmVQS0xhYmVsOiBbZUFyY2hpdmVQS0xhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIC8vIGVtbUdCTGFiZWw6IFtlbW1HQkxhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIC8vIGVtbVBLTGFiZWw6IFtlbW1QS0xhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGJyYW5jaElkOiBbYnJhbmNoSWQgPz8gbnVsbCwgW11dLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5pbnZhbGlkKSB7XHJcbiAgICAgIHdpbmRvdy5zY3JvbGwoe1xyXG4gICAgICAgIHRvcDogMCxcclxuICAgICAgICBsZWZ0OiAwLFxyXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RmlsbFJlcXVpcmVkRmllbGRzJyk7XHJcbiAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxLmlzQnJhbmNoICYmXHJcbiAgICAvLyAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQudmFsdWUgPT0gdW5kZWZpbmVkXHJcbiAgICAvLyApIHtcclxuICAgIC8vICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlBsZWFzZVNlbGVjdEJyYW5jaCcpO1xyXG4gICAgLy8gICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcblxyXG4gICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZShudWxsKTtcclxuXHJcbiAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpUcmFuc2FjdGlvblN0YXJ0ZWQnKTtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0b1xyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoXHJcbiAgICAgICAgdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvLnBhcmFtc0ludGVncmF0b3IuaWQsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZSxcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IudmFsdWUpO1xyXG5cclxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdGlvblRlc3QoKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcblxyXG4gICAgcmVxdWVzdFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFwKCgpID0+IHsgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG4gICAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IoXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/LmJyYW5jaFxyXG4gICAgICAgICAgICAgID8gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvLmJyYW5jaC5pZFxyXG4gICAgICAgICAgICAgIDogJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCdcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZC5lbWl0KHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpUcmFuc2FjdGlvblVuc3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UGFyYW1zSW50ZWdyYXRvcihidWlsZEZvcm06IGJvb2xlYW4gPSBmYWxzZSwgYnJhbmNoSWQpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgdGhpcy5oaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UuZ2V0UGFyYW1zSW50ZWdyYXRvcihicmFuY2hJZCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICBkZWJ1Z2dlcjtcclxuICAgICAgdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmIChidWlsZEZvcm0pIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKGJyYW5jaElkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlZEJyYW5jaChkYXRhOiBQYXJhbXNHZW5lcmFsRHRvKSB7XHJcbiAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MSA9IGRhdGE7XHJcblxyXG4gICAgaWYgKCFkYXRhPy5pc0JyYW5jaCkgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsICcnKTtcclxuICB9XHJcblxyXG4gIGJyYW5jaE9uQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gY29ubmVjdGlvblRlc3QoKSB7XHJcbiAgLy8gICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC52YWx1ZSA9PSAnJylcclxuICAvLyAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZSgnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJyk7XHJcblxyXG4gIC8vICAgbGV0IHJlcXVlc3QgPSB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlO1xyXG5cclxuICAvLyAgIHRoaXMuaGl0RW50ZWdyYXRvcnNTZXJ2aWNlLmNvbm5lY3Rpb25UZXN0KHJlcXVlc3QpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAvLyAgICAgdGhpcy52YWxpZC5lbWl0KGRhdGEpO1xyXG5cclxuICAvLyAgICAgcmV0dXJuIGRhdGE7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGNvbm5lY3Rpb25UZXN0KCkge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZD8udmFsdWUgPT0gJycpXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQuc2V0VmFsdWUoJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpO1xyXG5cclxuICAgIGxldCByZXF1ZXN0ID0gdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oaXRFbnRlZ3JhdG9yc1NlcnZpY2UuY29ubmVjdGlvblRlc3QocmVxdWVzdCkudGhlbihkYXRhID0+IHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpDb25uZWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGRhdGEubWVzc2FnZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yXCIgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvclwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInBhcmFtc0dlbmVyYWxEdG9QYXJ0MT8uaXNCcmFuY2hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1icmFuY2gtaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QnJhbmNoJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YWJwLWxvb2t1cC1zZWxlY3QgY2lkPVwicGFyYW1zLWludGVncmF0b3ItYnJhbmNoLWlkXCIgZm9ybUNvbnRyb2xOYW1lPVwiYnJhbmNoSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldEZuXT1cInNlcnZpY2UuZ2V0QnJhbmNoTG9va3VwXCIgKGNoYW5nZSk9XCJicmFuY2hPbkNoYW5nZSgpXCI+PC9hYnAtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXVzZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VydmljZVVzZXInIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLXNlcnZpY2UtdXNlclwiIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VVc2VyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNjRcIiBhdXRvZm9jdXMgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLXNlcnZpY2UtcGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VydmljZVBhc3N3b3JkJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXBhc3N3b3JkXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VydmljZVBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNjRcIiB0eXBlPVwicGFzc3dvcmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1nYmxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlR0JMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtcGtsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGlzcGF0Y2gtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFRGlzcGF0Y2hHQkxhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGlzcGF0Y2gtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVEaXNwYXRjaEdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLXBrbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RURpc3BhdGNoUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlRGlzcGF0Y2hQS0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFQXJjaGl2ZUdCTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlQXJjaGl2ZUdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtcGtsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFQXJjaGl2ZVBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlQXJjaGl2ZVBLTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtbGctZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1lLTJcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWRcIiAoY2xpY2spPVwiY29ubmVjdGlvblRlc3QoKVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2VEb251c3VtOjpDb25uZWN0aW9uVGVzdCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwicGFyYW1zLWludGVncmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRCdXR0b25EaXNhYmxlZFwiIFtoaWRkZW5dPVwiSXNTdWJtaXRCdXR0b25IaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2FicC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFFOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBa0I1RCxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2QyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUFnQyxFQUN4QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sMkJBQXdELEVBQ3hELGNBQThCLEVBQzlCLHFCQUE0QztRQVA3QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ04sZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQTFCOUMsZ0JBQVcsR0FBRyxxREFBcUQsQ0FBQztRQU1yRix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBTzVCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUU1QixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVcxQyxDQUFDO0lBRUwsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sRUFDSixXQUFXLEVBQ1gsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsY0FBYyxFQUNkLGVBQWUsRUFDZixjQUFjLEVBQ2QsU0FBUyxFQUNULFFBQVEsR0FDVCxHQUFHLElBQUksQ0FBQyw4Q0FBOEMsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7UUFFaEYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hDLFdBQVcsRUFBRSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRixlQUFlLEVBQUUsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0YsZUFBZSxFQUFFLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVGLGVBQWUsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1RixnQkFBZ0IsRUFBRTtnQkFDaEIsZ0JBQWdCLElBQUksSUFBSTtnQkFDeEIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakQ7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsZ0JBQWdCLElBQUksSUFBSTtnQkFDeEIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakQ7WUFDRCxnR0FBZ0c7WUFDaEcsZ0dBQWdHO1lBQ2hHLHNGQUFzRjtZQUN0RixzRkFBc0Y7WUFDdEYsY0FBYyxFQUFFLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMzRyxlQUFlLEVBQUUsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzdHLGNBQWMsRUFBRSxDQUFDLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDM0csU0FBUyxFQUFFLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRyxRQUFRLEVBQUUsQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7WUFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDWixHQUFHLEVBQUUsQ0FBQztnQkFDTixJQUFJLEVBQUUsQ0FBQztnQkFDUCxRQUFRLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFakMsSUFBSTtZQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsT0FBTzthQUNSO1lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3QjtnQkFBUztZQUNSLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsOENBQThDO1lBQ2xFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDbkIsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFDdkU7Z0JBQ0UsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSzthQUNuQyxDQUNGO1lBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsUUFBUSxDQUFDLFNBQVMsQ0FDaEIsS0FBSyxJQUFJLEVBQUU7Z0JBQ1QsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQzVCLEtBQUssRUFDTCxJQUFJLENBQUMsOENBQThDLEVBQUUsTUFBTTtvQkFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDL0QsQ0FBQyxDQUFDLHNDQUFzQyxDQUMzQyxDQUFDO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLEVBQ0QsR0FBRyxFQUFFO2dCQUNILElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQy9ELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQixDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxpQkFBaUI7UUFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQztRQUVoRCxPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUUsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFDOUQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1osT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBcUIsS0FBSyxFQUFFLFFBQVE7UUFDNUQsUUFBUSxDQUFDO1FBQ1QsSUFBSSxDQUFDLDJCQUEyQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5RSxRQUFRLENBQUM7WUFDVCxJQUFJLENBQUMsOENBQThDLEdBQUcsSUFBSSxDQUFDO1lBRTNELElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFaEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFzQjtRQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRWxDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUTtZQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsaUVBQWlFO0lBQ2pFLG9HQUFvRztJQUVwRyxtREFBbUQ7SUFFbkQsMkVBQTJFO0lBQzNFLDZCQUE2QjtJQUU3QixtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLElBQUk7SUFFSixLQUFLLENBQUMsY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUMxRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUV6QyxJQUFJO1lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUV6QixPQUFPLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDdkM7Z0JBQVM7WUFDUixJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7U0FDbkM7SUFDSCxDQUFDOzt5SEFoTlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUxBUDVCLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsMEJDekI5RSwwd1RBeUtNOzZIRHpJTyw0QkFBNEIsY0FGM0IsTUFBTTsyRkFFUCw0QkFBNEI7a0JBVnhDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUNoQix1QkFBdUIsQ0FBQyxPQUFPLGFBQ3JDLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7O2tCQUk3RSxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNLEVBQUUsNEJBQTRCO2lCQUNqRDs0VUFjVSxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgZG93bmxvYWRCbG9iLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtaW50ZWdyYXRvcnMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFBhcmFtc0ludGVncmF0b3JTZXJ2aWNlLFxyXG4gIFBhcmFtc0ludGVncmF0b3JXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8sXHJcbn0gZnJvbSAnLi4vLi4vcHJveHkvcGFyYW1zLWludGVncmF0b3JzJztcclxuaW1wb3J0IHsgUGFyYW1zR2VuZXJhbER0byB9IGZyb20gJy4uLy4uL3Byb3h5L3BhcmFtcy1nZW5lcmFscyc7XHJcbmltcG9ydCB7IEhpdEVudGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZW50ZWdyYXRvcnMvaGl0LWVudGVncmF0b3Iuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1pbnRlZ3JhdG9yJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLCAvLyBTZXJ2aXMgZ2liaSBnbG9iYWwgc2HEn2xhclxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0UGFyYW1zSW50ZWdyYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBVUkxfUEFUVEVSTiA9IC9eKGh0dHBzPzpcXC9cXC8pKFtcXHctXStcXC4pK1tcXHctXXsyLH0oWzpcXC8/I11bXlxcc10qKT8kLztcclxuXHJcbiAgZm9ybVBhcmFtc0ludGVncmF0b3I6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bz86IFBhcmFtc0ludGVncmF0b3JXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG87XHJcblxyXG4gIHN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzY2VuYXJpb1R5cGVEYXRhU291cmNlOiBhbnk7XHJcbiAgZG9jdW1lbnRUeXBlRGF0YVNvdXJjZTogYW55O1xyXG5cclxuICBASW5wdXQoKSBwYXJhbXNHZW5lcmFsRHRvUGFydDE6IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIElzU3VibWl0QnV0dG9uSGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFBhcmFtc0ludGVncmF0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlOiBIaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0RW50ZWdyYXRvcnNTZXJ2aWNlOiBIaXRFbnRlZ3JhdG9yc1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsICcnKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VydmljZVVzZXIsXHJcbiAgICAgIHNlcnZpY2VQYXNzd29yZCxcclxuICAgICAgZUludm9pY2VHQkxhYmVsLFxyXG4gICAgICBlSW52b2ljZVBLTGFiZWwsXHJcbiAgICAgIGVEaXNwYXRjaEdCTGFiZWwsXHJcbiAgICAgIGVEaXNwYXRjaFBLTGFiZWwsXHJcbiAgICAgIGVBcmNoaXZlR0JMYWJlbCxcclxuICAgICAgZUFyY2hpdmVQS0xhYmVsLFxyXG4gICAgICBlbW1HQkxhYmVsLFxyXG4gICAgICBlbW1QS0xhYmVsLFxyXG4gICAgICBlSW52b2ljZUFwaVVybCxcclxuICAgICAgZURlc3BhdGNoQXBpVXJsLFxyXG4gICAgICBlQXJjaGl2ZUFwaVVybCxcclxuICAgICAgZW1tQXBpVXJsLFxyXG4gICAgICBicmFuY2hJZCxcclxuICAgIH0gPSB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/LnBhcmFtc0ludGVncmF0b3IgfHwge307XHJcblxyXG4gICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvciA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzZXJ2aWNlVXNlcjogW3NlcnZpY2VVc2VyID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcclxuICAgICAgc2VydmljZVBhc3N3b3JkOiBbc2VydmljZVBhc3N3b3JkID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcclxuICAgICAgZUludm9pY2VHQkxhYmVsOiBbZUludm9pY2VHQkxhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGVJbnZvaWNlUEtMYWJlbDogW2VJbnZvaWNlUEtMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBlRGlzcGF0Y2hHQkxhYmVsOiBbXHJcbiAgICAgICAgZURpc3BhdGNoR0JMYWJlbCA/PyBudWxsLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXSxcclxuICAgICAgXSxcclxuICAgICAgZURpc3BhdGNoUEtMYWJlbDogW1xyXG4gICAgICAgIGVEaXNwYXRjaFBLTGFiZWwgPz8gbnVsbCxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0sXHJcbiAgICAgIF0sXHJcbiAgICAgIC8vIGVBcmNoaXZlR0JMYWJlbDogW2VBcmNoaXZlR0JMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICAvLyBlQXJjaGl2ZVBLTGFiZWw6IFtlQXJjaGl2ZVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZW1tR0JMYWJlbDogW2VtbUdCTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZW1tUEtMYWJlbDogW2VtbVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgZUludm9pY2VBcGlVcmw6IFtlSW52b2ljZUFwaVVybCA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuVVJMX1BBVFRFUk4pXV0sXHJcbiAgICAgIGVEZXNwYXRjaEFwaVVybDogW2VEZXNwYXRjaEFwaVVybCA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuVVJMX1BBVFRFUk4pXV0sXHJcbiAgICAgIGVBcmNoaXZlQXBpVXJsOiBbZUFyY2hpdmVBcGlVcmwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMiksIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlVSTF9QQVRURVJOKV1dLFxyXG4gICAgICBlbW1BcGlVcmw6IFtlbW1BcGlVcmwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMiksIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlVSTF9QQVRURVJOKV1dLFxyXG4gICAgICBicmFuY2hJZDogW2JyYW5jaElkID8/IG51bGwsIFtdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWQpIHtcclxuICAgICAgd2luZG93LnNjcm9sbCh7XHJcbiAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpGaWxsUmVxdWlyZWRGaWVsZHMnKTtcclxuICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlUGFyYW1zSW50ZWdyYXRvcigpO1xyXG4gICAgICBpZiAoIXNhdmVkKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bkNvbm5lY3Rpb25UZXN0KCk7XHJcbiAgICAgIHRoaXMudmFsaWQuZW1pdCh0ZXN0UmVzdWx0KTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZVBhcmFtc0ludGVncmF0b3IoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QkID0gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShcclxuICAgICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8ucGFyYW1zSW50ZWdyYXRvci5pZCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHJlcXVlc3QkLnN1YnNjcmliZShcclxuICAgICAgICBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IoXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/LmJyYW5jaFxyXG4gICAgICAgICAgICAgID8gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvLmJyYW5jaC5pZFxyXG4gICAgICAgICAgICAgIDogJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlRyYW5zYWN0aW9uVW5zdWNjZXNzZnVsJyk7XHJcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcnVuQ29ubmVjdGlvblRlc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oaXRFbnRlZ3JhdG9yc1NlcnZpY2UuY29ubmVjdGlvblRlc3QocmVxdWVzdCkudGhlbihkYXRhID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpDb25uZWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZGF0YT8ubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UGFyYW1zSW50ZWdyYXRvcihidWlsZEZvcm06IGJvb2xlYW4gPSBmYWxzZSwgYnJhbmNoSWQpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgdGhpcy5oaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UuZ2V0UGFyYW1zSW50ZWdyYXRvcihicmFuY2hJZCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICBkZWJ1Z2dlcjtcclxuICAgICAgdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmIChidWlsZEZvcm0pIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKGJyYW5jaElkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlZEJyYW5jaChkYXRhOiBQYXJhbXNHZW5lcmFsRHRvKSB7XHJcbiAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MSA9IGRhdGE7XHJcblxyXG4gICAgaWYgKCFkYXRhPy5pc0JyYW5jaCkgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsICcnKTtcclxuICB9XHJcblxyXG4gIGJyYW5jaE9uQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gY29ubmVjdGlvblRlc3QoKSB7XHJcbiAgLy8gICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC52YWx1ZSA9PSAnJylcclxuICAvLyAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZSgnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJyk7XHJcblxyXG4gIC8vICAgbGV0IHJlcXVlc3QgPSB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlO1xyXG5cclxuICAvLyAgIHRoaXMuaGl0RW50ZWdyYXRvcnNTZXJ2aWNlLmNvbm5lY3Rpb25UZXN0KHJlcXVlc3QpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAvLyAgICAgdGhpcy52YWxpZC5lbWl0KGRhdGEpO1xyXG5cclxuICAvLyAgICAgcmV0dXJuIGRhdGE7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGNvbm5lY3Rpb25UZXN0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RmlsbFJlcXVpcmVkRmllbGRzJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlUGFyYW1zSW50ZWdyYXRvcigpO1xyXG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5Db25uZWN0aW9uVGVzdCgpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yXCIgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvclwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInBhcmFtc0dlbmVyYWxEdG9QYXJ0MT8uaXNCcmFuY2hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1icmFuY2gtaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QnJhbmNoJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YWJwLWxvb2t1cC1zZWxlY3QgY2lkPVwicGFyYW1zLWludGVncmF0b3ItYnJhbmNoLWlkXCIgZm9ybUNvbnRyb2xOYW1lPVwiYnJhbmNoSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldEZuXT1cInNlcnZpY2UuZ2V0QnJhbmNoTG9va3VwXCIgKGNoYW5nZSk9XCJicmFuY2hPbkNoYW5nZSgpXCI+PC9hYnAtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXVzZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VydmljZVVzZXInIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLXNlcnZpY2UtdXNlclwiIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VVc2VyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNjRcIiBhdXRvZm9jdXMgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLXNlcnZpY2UtcGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VydmljZVBhc3N3b3JkJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXBhc3N3b3JkXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VydmljZVBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNjRcIiB0eXBlPVwicGFzc3dvcmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1nYmxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlR0JMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtcGtsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGlzcGF0Y2gtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFRGlzcGF0Y2hHQkxhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGlzcGF0Y2gtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVEaXNwYXRjaEdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLXBrbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RURpc3BhdGNoUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlRGlzcGF0Y2hQS0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLWFwaS11cmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RUludm9pY2VBcGlVcmwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1hcGktdXJsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZUludm9pY2VBcGlVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI1MTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlSW52b2ljZUFwaVVybCcpPy5pbnZhbGlkICYmIChmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VJbnZvaWNlQXBpVXJsJyk/LnRvdWNoZWQgfHwgZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlSW52b2ljZUFwaVVybCcpPy5kaXJ0eSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7ICdlRG9udXN1bTo6SW52YWxpZFVybEZvcm1hdCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkZXNwYXRjaC1hcGktdXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVEZXNwYXRjaEFwaVVybCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkZXNwYXRjaC1hcGktdXJsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZURlc3BhdGNoQXBpVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZURlc3BhdGNoQXBpVXJsJyk/LmludmFsaWQgJiYgKGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZURlc3BhdGNoQXBpVXJsJyk/LnRvdWNoZWQgfHwgZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlRGVzcGF0Y2hBcGlVcmwnKT8uZGlydHkpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyAnZURvbnVzdW06OkludmFsaWRVcmxGb3JtYXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1hcGktdXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVBcmNoaXZlQXBpVXJsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtYXBpLXVybFwiIGZvcm1Db250cm9sTmFtZT1cImVBcmNoaXZlQXBpVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUFyY2hpdmVBcGlVcmwnKT8uaW52YWxpZCAmJiAoZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlQXJjaGl2ZUFwaVVybCcpPy50b3VjaGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUFyY2hpdmVBcGlVcmwnKT8uZGlydHkpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyAnZURvbnVzdW06OkludmFsaWRVcmxGb3JtYXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lbW0tYXBpLXVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFbW1BcGlVcmwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lbW0tYXBpLXVybFwiIGZvcm1Db250cm9sTmFtZT1cImVtbUFwaVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjUxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VtbUFwaVVybCcpPy5pbnZhbGlkICYmIChmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VtbUFwaVVybCcpPy50b3VjaGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZW1tQXBpVXJsJyk/LmRpcnR5KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgJ2VEb251c3VtOjpJbnZhbGlkVXJsRm9ybWF0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1nYmxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVBcmNoaXZlR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVBcmNoaXZlR0JMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVBcmNoaXZlUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtcGtsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVBcmNoaXZlUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1sZy1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWUtMlwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25uZWN0aW9uVGVzdCgpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAnZURvbnVzdW06OkNvbm5lY3Rpb25UZXN0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwic3VibWl0XCIgZm9ybU5hbWU9XCJwYXJhbXMtaW50ZWdyYXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdEJ1dHRvbkRpc2FibGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWRcIiBbaGlkZGVuXT1cIklzU3VibWl0QnV0dG9uSGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9hYnAtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|