survery-lib 0.1.30 → 0.1.32
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/esm2022/lib/components/question-boolean-template/question-boolean-template.component.mjs +3 -3
- package/esm2022/lib/components/question-check-box-template/question-check-box-template.component.mjs +3 -3
- package/esm2022/lib/components/question-dropdown-multi-template/question-dropdown-multi-template.component.mjs +3 -3
- package/esm2022/lib/components/question-dropdown-template/question-dropdown-template.component.mjs +3 -3
- package/esm2022/lib/components/question-matrix-template/question-matrix-template.component.mjs +3 -3
- package/esm2022/lib/components/question-radio-button-template/question-radio-button-template.component.mjs +3 -3
- package/esm2022/lib/components/question-text-template/question-text-template.component.mjs +4 -3
- package/esm2022/lib/survery-lib.component.mjs +5 -2
- package/fesm2022/survery-lib.mjs +19 -15
- package/fesm2022/survery-lib.mjs.map +1 -1
- package/lib/components/question-text-template/question-text-template.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@ export class QuestionTextTemplateComponent {
|
|
|
17
17
|
return QuestionTypeEnum;
|
|
18
18
|
}
|
|
19
19
|
set setQuestion(value) {
|
|
20
|
+
this.surveyQuestion = value;
|
|
20
21
|
this.rForm.patchValue({
|
|
21
22
|
id: value.questionId,
|
|
22
23
|
name: value.questionName,
|
|
@@ -95,11 +96,11 @@ export class QuestionTextTemplateComponent {
|
|
|
95
96
|
this.fCtrls.answer.updateValueAndValidity();
|
|
96
97
|
}
|
|
97
98
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isShow: "isShow", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i5.TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isShow: "isShow", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i5.TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
|
|
99
100
|
}
|
|
100
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, decorators: [{
|
|
101
102
|
type: Component,
|
|
102
|
-
args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>" }]
|
|
103
|
+
args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>" }]
|
|
103
104
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
104
105
|
type: Output
|
|
105
106
|
}], isShow: [{
|
|
@@ -111,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
111
112
|
}], isDisabled: [{
|
|
112
113
|
type: Input
|
|
113
114
|
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7QUFPdEUsTUFBTSxPQUFPLDZCQUE2QjtJQUl4QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFNRCxJQUFhLFdBQVcsQ0FBQyxLQUF3QjtRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNwQixFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ3hCLEtBQUssRUFBRSxL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QUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQVk7UUFDL0IsT0FBTyxPQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFtQjtRQUM1QyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDN0I7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzhHQXRHVSw2QkFBNkI7a0dBQTdCLDZCQUE2QixpTkNqQjFDLHl6QkFjVTs7MkZER0csNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDRCQUE0QjtpSUFnQjVCLE9BQU87c0JBQWhCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ08sV0FBVztzQkFBdkIsS0FBSztnQkFxQ08sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xTdGFjaywgVmFsaWRhdG9yc01vZGVsIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvblRleHRUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFN1cnZleUxpYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5wdXRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9pbnB1dC10eXBlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uVGV4dFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uVGV4dFRlbXBsYXRlRm9ybUludGVyZmFjZT47XG5cbiAgZ2V0IGZDdHJscygpIHtcbiAgICByZXR1cm4gdGhpcy5yRm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCBxdWVzdGlvblR5cGVFbnVtKCkge1xuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xuICB9XG5cbiAgQE91dHB1dCgpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXN0aW9uQW5zd2VyTW9kZWw+KCk7XG5cbiAgQElucHV0KCkgaXNTaG93OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNUZXh0QXJlYTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xuICAgIHRoaXMuckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBpZDogdmFsdWUucXVlc3Rpb25JZCxcbiAgICAgIG5hbWU6IHZhbHVlLnF1ZXN0aW9uTmFtZSxcbiAgICAgIHRpdGxlOiB2YWx1ZS5xdWVzdGlvblRpdGxlLFxuICAgICAgdHlwZUlkOiB2YWx1ZS5xdWVzdGlvblR5cGVJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZS5xdWVzdGlvbkRlc2NyaXB0aW9uXG4gICAgfSk7XG5cbiAgICBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXT8uYW5zd2VySWQgIT0gbnVsbCAmJiB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdPy5hbnN3ZXJJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZkN0cmxzLnN1cnZleUFuc3dlcklkLnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uYW5zd2VySWQpO1xuICAgICAgdGhpcy5mQ3RybHMuaW5wdXRUeXBlSWQuc2V0VmFsdWUodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcblxuICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRUeXBlSWQgPT0gSW5wdXRUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgaWYodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dE1pbiAhPSBudWxsKXtcbiAgICAgICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dE1pbildKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4ICE9IG51bGwpe1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1heCh2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4KV0pO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCA9PSBJbnB1dFR5cGVFbnVtLkVtYWlsKSB7XG4gICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLmVtYWlsXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy50b2dnbGVFbmFibGVBbnN3ZXIodmFsdWUuaXNSZWFkT25seSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMudG9nZ2xlRW5hYmxlQW5zd2VyKHZhbHVlKTtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9zdXJ2ZXlMaWJTZXJ2aWNlOiBTdXJ2ZXlMaWJTZXJ2aWNlKSB7XG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uVGV4dFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIG5hbWU6IFtudWxsXSxcbiAgICAgIHRpdGxlOiBbbnVsbF0sXG4gICAgICB0eXBlSWQ6IFtudWxsXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbbnVsbF0sXG4gICAgICBzdXJ2ZXlBbnN3ZXJJZDogW251bGxdLFxuICAgICAgYW5zd2VyOiBbbnVsbF0sXG4gICAgICBpbnB1dFR5cGVJZDogW251bGxdXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudmFsdWVDaGFuZ2VzLnBpcGUoKS5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5yRm9ybS52YWx1ZTtcbiAgICAgIHRoaXMuZW1pdHRlci5lbWl0KHtcbiAgICAgICAgUXVlc3Rpb25JZDogZm9ybVZhbHVlLmlkLFxuICAgICAgICBJc1ZhbGlkOiB0aGlzLmZDdHJscy5hbnN3ZXIudmFsaWQsXG4gICAgICAgIEFuc3dlcjogdmFsdWUsXG4gICAgICAgIFN1cnZleUFuc3dlcklkOiBmb3JtVmFsdWUuc3VydmV5QW5zd2VySWRcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUobnVsbCk7XG5cbiAgICB0aGlzLl9zdXJ2ZXlMaWJTZXJ2aWNlLnN1cnZleUFuc3dlcnNPYnNydi5waXBlKG1hcCh4ID0+IHguZGVmYXVsdEFuc3dlcnMuZmlsdGVyKHggPT4geC5RdWVzdGlvbklkID09IHRoaXMuZkN0cmxzLmlkLnZhbHVlKSkpXG4gICAgICAucGlwZShmaWx0ZXIoeCA9PiB4Lmxlbmd0aCA+IDApKS5waXBlKG1hcCh4ID0+IHguYXQoMCkpKVxuICAgICAgLnN1YnNjcmliZShhbnN3ZXIgPT4ge1xuICAgICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUoYW5zd2VyLkFuc3dlclRleHQpO1xuICAgICAgfSk7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRW5hYmxlQW5zd2VyKGlzUmVhZE9ubHk6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNSZWFkT25seSA9PSB0cnVlKSB7XG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5lbmFibGUoKVxuICAgIH1cbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWFzdGlvblwiIFtmb3JtR3JvdXBdPVwickZvcm1cIiBbYXR0ci5pZF09XCIncXVlc3Rpb25fJytmQ3RybHMuaWQudmFsdWVcIlxuICAgIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1xdWVzdGlvbic6IGZDdHJscy5hbnN3ZXIuaW52YWxpZCAsICdkLW5vbmUnOmlzU2hvdyAhPSB0cnVlfVwiPlxuICAgIDxoMyBjbGFzcz1cInF1YXN0aW9uLXRpdGxlIFwiPlxuICAgICAgICB7e2ZDdHJscy50aXRsZS52YWx1ZX19XG4gICAgPC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1xdWFzdGlvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZXh0QXJlYSA9PSBmYWxzZSBlbHNlIHRleHRBcmVhVGVtcGxhdGVcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGZDdHJscy5hbnN3ZXIpXCJcbiAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgW2F0dHIudHlwZV09XCJmQ3RybHMuaW5wdXRUeXBlSWQudmFsdWUgfCB0ZXh0Qm94VHlwZUF0dHJcIiAgPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0QXJlYVRlbXBsYXRlPlxuICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjVcIiBbZm9ybUNvbnRyb2xdPVwiY29udmVydFRvRm9ybUNvbnRyb2woZkN0cmxzLmFuc3dlcilcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiA+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7QUFPdEUsTUFBTSxPQUFPLDZCQUE2QjtJQUt4QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFNRCxJQUFhLFdBQVcsQ0FBQyxLQUF3QjtRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNwQixFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDcEIsSUFBSSxF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R0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQVk7UUFDL0IsT0FBTyxPQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFtQjtRQUM1QyxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDN0I7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM5QyxDQUFDOzhHQXpHVSw2QkFBNkI7a0dBQTdCLDZCQUE2QixpTkNqQjFDLDI0QkFlVTs7MkZERUcsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDRCQUE0QjtpSUFpQjVCLE9BQU87c0JBQWhCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ08sV0FBVztzQkFBdkIsS0FBSztnQkF1Q08sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xTdGFjaywgVmFsaWRhdG9yc01vZGVsIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvblRleHRUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXRleHQtdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFN1cnZleUxpYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5wdXRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9pbnB1dC10eXBlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uVGV4dFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBzdXJ2ZXlRdWVzdGlvbjogU3VydmV5UXVlc3Rpb25EdG87XG4gIHJGb3JtOiBGb3JtR3JvdXA8UXVlc3Rpb25UZXh0VGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcblxuICBnZXQgZkN0cmxzKCkge1xuICAgIHJldHVybiB0aGlzLnJGb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgZ2V0IHF1ZXN0aW9uVHlwZUVudW0oKSB7XG4gICAgcmV0dXJuIFF1ZXN0aW9uVHlwZUVudW07XG4gIH1cblxuICBAT3V0cHV0KCkgZW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlc3Rpb25BbnN3ZXJNb2RlbD4oKTtcblxuICBASW5wdXQoKSBpc1Nob3c6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc1RleHRBcmVhOiBib29sZWFuO1xuICBASW5wdXQoKSBzZXQgc2V0UXVlc3Rpb24odmFsdWU6IFN1cnZleVF1ZXN0aW9uRHRvKSB7XG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvbiA9IHZhbHVlO1xuICAgIFxuICAgIHRoaXMuckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBpZDogdmFsdWUucXVlc3Rpb25JZCxcbiAgICAgIG5hbWU6IHZhbHVlLnF1ZXN0aW9uTmFtZSxcbiAgICAgIHRpdGxlOiB2YWx1ZS5xdWVzdGlvblRpdGxlLFxuICAgICAgdHlwZUlkOiB2YWx1ZS5xdWVzdGlvblR5cGVJZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB2YWx1ZS5xdWVzdGlvbkRlc2NyaXB0aW9uXG4gICAgfSk7XG5cbiAgICBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXT8uYW5zd2VySWQgIT0gbnVsbCAmJiB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdPy5hbnN3ZXJJZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZkN0cmxzLnN1cnZleUFuc3dlcklkLnNldFZhbHVlKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uYW5zd2VySWQpO1xuICAgICAgdGhpcy5mQ3RybHMuaW5wdXRUeXBlSWQuc2V0VmFsdWUodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcblxuICAgICAgaWYgKHZhbHVlLnN1cnZleUFuc3dlcnNbMF0uaW5wdXRUeXBlSWQgPT0gSW5wdXRUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgaWYodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dE1pbiAhPSBudWxsKXtcbiAgICAgICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuYWRkVmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dE1pbildKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKCB2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4ICE9IG51bGwpe1xuICAgICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1heCh2YWx1ZS5zdXJ2ZXlBbnN3ZXJzWzBdLmlucHV0TWF4KV0pO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWUuc3VydmV5QW5zd2Vyc1swXS5pbnB1dFR5cGVJZCA9PSBJbnB1dFR5cGVFbnVtLkVtYWlsKSB7XG4gICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLmVtYWlsXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy50b2dnbGVFbmFibGVBbnN3ZXIodmFsdWUuaXNSZWFkT25seSk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMudG9nZ2xlRW5hYmxlQW5zd2VyKHZhbHVlKTtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9zdXJ2ZXlMaWJTZXJ2aWNlOiBTdXJ2ZXlMaWJTZXJ2aWNlKSB7XG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uVGV4dFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIG5hbWU6IFtudWxsXSxcbiAgICAgIHRpdGxlOiBbbnVsbF0sXG4gICAgICB0eXBlSWQ6IFtudWxsXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbbnVsbF0sXG4gICAgICBzdXJ2ZXlBbnN3ZXJJZDogW251bGxdLFxuICAgICAgYW5zd2VyOiBbbnVsbF0sXG4gICAgICBpbnB1dFR5cGVJZDogW251bGxdXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudmFsdWVDaGFuZ2VzLnBpcGUoKS5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5yRm9ybS52YWx1ZTtcbiAgICAgIHRoaXMuZW1pdHRlci5lbWl0KHtcbiAgICAgICAgUXVlc3Rpb25JZDogZm9ybVZhbHVlLmlkLFxuICAgICAgICBJc1ZhbGlkOiB0aGlzLmZDdHJscy5hbnN3ZXIudmFsaWQsXG4gICAgICAgIEFuc3dlcjogdmFsdWUsXG4gICAgICAgIFN1cnZleUFuc3dlcklkOiBmb3JtVmFsdWUuc3VydmV5QW5zd2VySWRcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUobnVsbCk7XG5cbiAgICB0aGlzLl9zdXJ2ZXlMaWJTZXJ2aWNlLnN1cnZleUFuc3dlcnNPYnNydi5waXBlKG1hcCh4ID0+IHguZGVmYXVsdEFuc3dlcnMuZmlsdGVyKHggPT4geC5RdWVzdGlvbklkID09IHRoaXMuZkN0cmxzLmlkLnZhbHVlKSkpXG4gICAgICAucGlwZShmaWx0ZXIoeCA9PiB4Lmxlbmd0aCA+IDApKS5waXBlKG1hcCh4ID0+IHguYXQoMCkpKVxuICAgICAgLnN1YnNjcmliZShhbnN3ZXIgPT4ge1xuICAgICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUoYW5zd2VyLkFuc3dlclRleHQpO1xuICAgICAgfSk7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlRW5hYmxlQW5zd2VyKGlzUmVhZE9ubHk6IGJvb2xlYW4pIHtcbiAgICBpZiAoaXNSZWFkT25seSA9PSB0cnVlKSB7XG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5lbmFibGUoKVxuICAgIH1cbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWFzdGlvblwiIFtmb3JtR3JvdXBdPVwickZvcm1cIiBbYXR0ci5pZF09XCIncXVlc3Rpb25fJytmQ3RybHMuaWQudmFsdWVcIlxuICAgIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1xdWVzdGlvbic6IGZDdHJscy5hbnN3ZXIuaW52YWxpZCAsICdkLW5vbmUnOmlzU2hvdyAhPSB0cnVlfVwiPlxuICAgIDxoMyBjbGFzcz1cInF1YXN0aW9uLXRpdGxlIFwiPlxuICAgICAgICB7e2ZDdHJscy50aXRsZS52YWx1ZX19XG4gICAgICAgIDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAqbmdJZj1cInN1cnZleVF1ZXN0aW9uLmlzUmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtcXVhc3Rpb25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGV4dEFyZWEgPT0gZmFsc2UgZWxzZSB0ZXh0QXJlYVRlbXBsYXRlXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtmb3JtQ29udHJvbF09XCJjb252ZXJ0VG9Gb3JtQ29udHJvbChmQ3RybHMuYW5zd2VyKVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIFthdHRyLnR5cGVdPVwiZkN0cmxzLmlucHV0VHlwZUlkLnZhbHVlIHwgdGV4dEJveFR5cGVBdHRyXCIgID5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEFyZWFUZW1wbGF0ZT5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCI1XCIgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGZDdHJscy5hbnN3ZXIpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+Il19
|
|
@@ -24,7 +24,10 @@ export class SurveryLibComponent {
|
|
|
24
24
|
return QuestionTypeEnum;
|
|
25
25
|
}
|
|
26
26
|
get isFirstPage() {
|
|
27
|
-
|
|
27
|
+
if (this.showedSurveyPages.length > 0) {
|
|
28
|
+
return this.showedSurveyPages.findIndex(x => x == this.fCtrls.currentPageIndex.value) == 0;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
28
31
|
}
|
|
29
32
|
get isLastPage() {
|
|
30
33
|
return this.showedSurveyPages.findIndex(x => x == this.fCtrls.currentPageIndex.value) == (this.showedSurveyPages.length - 1);
|
|
@@ -295,4 +298,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
295
298
|
}], selectLanguageEmit: [{
|
|
296
299
|
type: Output
|
|
297
300
|
}] } });
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmVyeS1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VydmVyeS1saWIvc3JjL2xpYi9zdXJ2ZXJ5LWxpYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3N1cnZleS1saWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBS3ZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxZQUFZLEVBQUUsb0JBQW9CLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFJMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQW9CcEUsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJ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bUJBQW1CO2tHQUFuQixtQkFBbUIsc05DaENoQyxvMUpBc0VNOzsyRkR0Q08sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjtvS0ErRGxCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdXJ2ZXlMaWJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VydmV5RHRvIH0gZnJvbSAnLi4vc2hhcmVkL2R0b3Mvc3VydmV5LmR0byc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlLCBSdWxlUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2UsIFN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9zdXJ2ZXJ5LWxpYi5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyB2NCBhcyBndWlkR2VuZXJhdG9yIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZ2ljUHJvcGVydHlFbnVtIH0gZnJvbSAnLi4vc2hhcmVkL2VudW1zL0xvZ2ljLVByb3BlcnR5LmVudW0nO1xuaW1wb3J0IHsgUnVsZUV4cER0byB9IGZyb20gJy4uL3NoYXJlZC9kdG9zL3J1bGUtZXhwLmR0byc7XG5pbXBvcnQgeyBPcGVyYXRvckVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvb3BlcmF0b3IuZW51bSc7XG5pbXBvcnQgeyBMb2dpY0FjdGlvbkVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvbG9naWMtYWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ2hlY2tSdWxlRXhwc1VzZWNhc2UgfSBmcm9tICcuL3VzZWNhc2VzL2NoZWNrLXJ1bGUtZXhwcy51c2VjYXNlJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9zdXJ2ZXJ5LXF1ZXN0aW9uLXJlc3VsdC5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUvcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25UZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRdWVzdGlvblJhZGlvQnV0dG9uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tcmFkaW8tYnV0dG9uLXRlbXBsYXRlL3F1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRdWVzdGlvbkNoZWNrQm94VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlL3F1ZXN0aW9uLWNoZWNrLWJveC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdXJ2ZXlMYW5ndWFnZUR0byB9IGZyb20gJy4uL3NoYXJlZC9kdG9zL3N1cnZleS1sYW5ndWFnZS5kdG8nO1xuaW1wb3J0IHsgU3VydmV5U2VjdGlvbkVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvc3VydmV5LXNlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3VydmVyeS1saWInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VydmV5LWxpYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N1cnZleS1saWIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdXJ2ZXJ5TGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBzdXJ2ZXJ5TGlicmFyeURpdklkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgcmVsb2FkRGVmYXVsdEFuc3dlcklkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgc3VydmV5RGF0YTogU3VydmV5RHRvO1xuICBkZWZhdWx0QW5zd2VyczogRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvW107XG4gIHJGb3JtOiBGb3JtR3JvdXA8U3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+O1xuXG4gIGdldCBmQ3RybHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuckZvcm0uY29udHJvbHM7XG4gIH1cblxuICBnZXQgcXVlc3Rpb25UeXBlRW51bSgpIHtcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcbiAgfVxuXG4gIGdldCBpc0ZpcnN0UGFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93ZWRTdXJ2ZXlQYWdlcy5maW5kSW5kZXgoeCA9PiB4ID09IHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWUpID09IDBcbiAgfVxuXG4gIGdldCBpc0xhc3RQYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnNob3dlZFN1cnZleVBhZ2VzLmZpbmRJbmRleCh4ID0+IHggPT0gdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC52YWx1ZSkgPT0gKHRoaXMuc2hvd2VkU3VydmV5UGFnZXMubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIGdldCBzaG93ZWRTdXJ2ZXlQYWdlcygpOiBudW1iZXJbXSB7XG4gICAgdmFyIHBhZ2VBcnI6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBxdWVzdGlvbiA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWVbaW5kZXhdO1xuICAgICAgaWYgKHF1ZXN0aW9uLmlzU2hvdyA9PSB0cnVlICYmIChxdWVzdGlvbi5xdWVzdGlvblR5cGUgIT0gdGhpcy5xdWVzdGlvblR5cGVFbnVtLk1hdHJpeCB8fCBxdWVzdGlvbi5pc01hdHJpeEdyb3VwID09IHRydWUpKSB7XG4gICAgICAgIHBhZ2VBcnIucHVzaChxdWVzdGlvbi5zdXJ2ZXlQYWdlSW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRpc3RpbmN0QXJyYXkgPSBwYWdlQXJyLmZpbHRlcigobiwgaSkgPT4gcGFnZUFyci5pbmRleE9mKG4pID09PSBpKTtcblxuICAgIHJldHVybiBkaXN0aW5jdEFycmF5LnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgfVxuXG4gIGdldCBjdXJydW50U2hvd2VkU3VydmV5UGFnZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd2VkU3VydmV5UGFnZXMuZmluZEluZGV4KHggPT4geCA9PSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlKSArIDE7XG4gIH1cblxuICBnZXQgc3VydmV5UmVzdWx0KCk6IHsgYW5zd2VyczogU3VydmV5UXVlc3Rpb25SZXN1bHRbXSwgY3VycmVudFBhZ2VJbmRleDogbnVtYmVyIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50UGFnZUluZGV4OiB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlLFxuICAgICAgYW5zd2VyczpcbiAgICAgICAgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZS5maWx0ZXIoeCA9PiB4LmlzTWF0cml4R3JvdXAgIT0gdHJ1ZSkubWFwKHggPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBTdXJ2ZXlQYWdlSW5kZXg6IHguc3VydmV5UGFnZUluZGV4LFxuICAgICAgICAgICAgUXVlc3Rpb25JZDogeC5xdWVzdGlvbklkLFxuICAgICAgICAgICAgUXVlc3Rpb25UeXBlOiB4LnF1ZXN0aW9uVHlwZSxcbiAgICAgICAgICAgIEFuc3dlcklkOiB4LmFuc3dlcklkLFxuICAgICAgICAgICAgQW5zd2VyVGV4dDogeC5hbnN3ZXJUZXh0LFxuICAgICAgICAgICAgQW5zd2VySWRBcnI6IHguYW5zd2VySWRBcnJcbiAgICAgICAgICB9IGFzIFN1cnZleVF1ZXN0aW9uUmVzdWx0XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgaXNQcmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYXJhYmljTGFuZ3VhZ2VJZDogbnVtYmVyID0gbnVsbDtcblxuICBAT3V0cHV0KCkgc3VydmV5UmVzdWx0RW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VydmV5UXVlc3Rpb25SZXN1bHRbXT4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdExhbmd1YWdlRW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N1cnZleUxpYlNlcnZpY2U6IFN1cnZleUxpYlNlcnZpY2VcbiAgICAsIHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfY2hlY2tSdWxlRXhwc1VzZWNhc2U6IENoZWNrUnVsZUV4cHNVc2VjYXNlKSB7XG5cbiAgICB0aGlzLnJGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8U3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KHtcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IFswXSxcbiAgICAgIHF1ZXN0aW9uQXJyYXk6IHRoaXMuX2Zvcm1CdWlsZGVyLmFycmF5PFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPihbXSksXG4gICAgICBydWxlUXVlc3Rpb25BcnJheTogdGhpcy5fZm9ybUJ1aWxkZXIuYXJyYXk8UnVsZVF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPihbXSlcbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdXJ2ZXlMaWJTZXJ2aWNlLnN1cnZleURhdGFPYnNydi5waXBlKGRlYm91bmNlVGltZSgzMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoc3VydmV5ID0+IHtcbiAgICAgIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkuY2xlYXIoKTtcbiAgICAgIHRoaXMuZkN0cmxzLnJ1bGVRdWVzdGlvbkFycmF5LmNsZWFyKCk7XG4gICAgICB0aGlzLnN1cnZleURhdGEgPSBudWxsO1xuXG4gICAgICBpZiAoc3VydmV5ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5zdXJ2ZXlEYXRhID0gc3VydmV5O1xuICAgICAgICB0aGlzLmxvYWRRdWVzdGlvbnMoc3VydmV5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgb25QYWdnaW5nTmV4dCgpIHtcbiAgICB2YXIgaXNIYXZlSW52YWxpZFJlY29yZHMgPSB0aGlzLmhhdmVJblZhbGlkYXRlUXVlc3Rpb25zKCk7XG4gICAgaWYgKGlzSGF2ZUludmFsaWRSZWNvcmRzID09IGZhbHNlKSB7XG5cbiAgICAgIGNvbnN0IG5leHRQYWdlSW5kZXggPSB0aGlzLmdldE5leHRTaG93ZWRQYWdlKCk7XG5cbiAgICAgIGlmIChuZXh0UGFnZUluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC5zZXRWYWx1ZShuZXh0UGFnZUluZGV4KTtcblxuICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7XG4gICAgICAgICAgc2Nyb2xsVG9wOiAkKGAjc3VydmVyeS1jYXJkLSR7dGhpcy5zdXJ2ZXJ5TGlicmFyeURpdklkfWApLm9mZnNldCgpLnRvcFxuICAgICAgICB9LCAyMDAwKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHF1ZXN0aW9uQXJyID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZS5maWx0ZXIoeCA9PiB4LmlzTWF0cml4R3JvdXAgIT0gdHJ1ZSkubWFwKHggPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBTdXJ2ZXlQYWdlSW5kZXg6IHguc3VydmV5UGFnZUluZGV4LFxuICAgICAgICAgICAgUXVlc3Rpb25JZDogeC5xdWVzdGlvbklkLFxuICAgICAgICAgICAgUXVlc3Rpb25UeXBlOiB4LnF1ZXN0aW9uVHlwZSxcbiAgICAgICAgICAgIEFuc3dlcklkOiB4LmFuc3dlcklkLFxuICAgICAgICAgICAgQW5zd2VyVGV4dDogeC5hbnN3ZXJUZXh0LFxuICAgICAgICAgICAgQW5zd2VySWRBcnI6IHguYW5zd2VySWRBcnJcbiAgICAgICAgICB9IGFzIFN1cnZleVF1ZXN0aW9uUmVzdWx0XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1cnZleVJlc3VsdEVtaXQuZW1pdChxdWVzdGlvbkFycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25QYWdnaW5nQmFjaygpIHtcbiAgICBjb25zdCBwcmV2UGFnZUluZGV4ID0gdGhpcy5nZXRQcmV2U2hvd2VkUGFnZSgpO1xuICAgIGlmIChwcmV2UGFnZUluZGV4ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXguc2V0VmFsdWUocHJldlBhZ2VJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgb25VcGRhdGVBbnN3ZXJzKG1vZGVsOiBRdWVzdGlvbkFuc3dlck1vZGVsW10pIHtcbiAgICBtb2RlbC5mb3JFYWNoKGVsZW0gPT4ge1xuICAgICAgdGhpcy5vblVwZGF0ZUFuc3dlcihlbGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uVXBkYXRlQW5zd2VyKG1vZGVsOiBRdWVzdGlvbkFuc3dlck1vZGVsKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHgucXVlc3Rpb25JZCA9PSBtb2RlbC5RdWVzdGlvbklkKTtcbiAgICB2YXIgcXVlc3Rpb25Hcm91cCA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkuY29udHJvbHNbaW5kZXhdO1xuICAgIHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuaXNWYWxpZC5zZXRWYWx1ZShtb2RlbC5Jc1ZhbGlkKTtcblxuICAgIGlmIChxdWVzdGlvbkdyb3VwLnZhbHVlLnF1ZXN0aW9uVHlwZSA9PSB0aGlzLnF1ZXN0aW9uVHlwZUVudW0uVGV4dElucHV0KSB7XG4gICAgICBxdWVzdGlvbkdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgICBhbnN3ZXJJZDogbW9kZWwuU3VydmV5QW5zd2VySWQsXG4gICAgICAgIGFuc3dlclRleHQ6IG1vZGVsLkFuc3dlclxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChxdWVzdGlvbkdyb3VwLnZhbHVlLnF1ZXN0aW9uVHlwZSA9PSB0aGlzLnF1ZXN0aW9uVHlwZUVudW0uQ2hlY2tCb3ggfHwgcXVlc3Rpb25Hcm91cC52YWx1ZS5xdWVzdGlvblR5cGUgPT0gdGhpcy5xdWVzdGlvblR5cGVFbnVtLkRyb3BEb3duTXVsdGkpIHtcbiAgICAgIHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuYW5zd2VySWRBcnIuc2V0VmFsdWUobW9kZWwuQW5zd2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlc3Rpb25Hcm91cC5jb250cm9scy5hbnN3ZXJJZC5zZXRWYWx1ZShtb2RlbC5BbnN3ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZDdHJscy5ydWxlUXVlc3Rpb25BcnJheS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4LnF1ZXN0aW9uSWQgPT0gbW9kZWwuUXVlc3Rpb25JZCkgPiAtMSkge1xuICAgICAgdGhpcy5jaGVja1J1bGVzKClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRRdWVzdGlvbnMoc3VydmV5OiBTdXJ2ZXlEdG8pIHtcbiAgICBzdXJ2ZXkuc3VydmV5UGFnZXMuZm9yRWFjaCgocGFnZSwgcGFnZUluZGV4KSA9PiB7XG4gICAgICBwYWdlLnN1cnZleVF1ZXN0aW9uR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuXG4gICAgICAgIGdyb3VwLnN1cnZleVF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXN0aW9uID0+IHtcblxuICAgICAgICAgIGlmIChxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCAhPSA2KSB7XG4gICAgICAgICAgICB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KHtcbiAgICAgICAgICAgICAgc3VydmV5UGFnZUluZGV4OiBwYWdlSW5kZXgsXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IFtxdWVzdGlvbi5xdWVzdGlvbklkXSxcbiAgICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBbcXVlc3Rpb24ucXVlc3Rpb25UeXBlSWRdLFxuICAgICAgICAgICAgICBpc01hdHJpeEdyb3VwOiBbZmFsc2VdLFxuICAgICAgICAgICAgICBhbnN3ZXJJZDogW251bGxdLFxuICAgICAgICAgICAgICBhbnN3ZXJJZEFycjogW251bGxdLFxuICAgICAgICAgICAgICBhbnN3ZXJUZXh0OiBbbnVsbF0sXG4gICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IFtxdWVzdGlvbi5pc1JlcXVpcmVkXSxcbiAgICAgICAgICAgICAgaXNWYWxpZDogW251bGxdLFxuICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBbcXVlc3Rpb24uaXNSZWFkT25seV0sXG4gICAgICAgICAgICAgIGlzU2hvdzogW3F1ZXN0aW9uLmlzVmlzYWJsZV0sXG4gICAgICAgICAgICAgIGlzRGlzYWJsZWRfZGVmYXVsdDogW3F1ZXN0aW9uLmlzUmVhZE9ubHldLFxuICAgICAgICAgICAgICBpc1Nob3dfZGVmYXVsdDogW3F1ZXN0aW9uLmlzVmlzYWJsZV1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS5wdXNoKHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPih7XG4gICAgICAgICAgICAgIHN1cnZleVBhZ2VJbmRleDogcGFnZUluZGV4LFxuICAgICAgICAgICAgICBxdWVzdGlvbklkOiBbcXVlc3Rpb24ucXVlc3Rpb25JZF0sXG4gICAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogW3F1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkXSxcbiAgICAgICAgICAgICAgaXNNYXRyaXhHcm91cDogW3RydWVdLFxuICAgICAgICAgICAgICBhbnN3ZXJJZDogW251bGxdLFxuICAgICAgICAgICAgICBhbnN3ZXJJZEFycjogW251bGxdLFxuICAgICAgICAgICAgICBhbnN3ZXJUZXh0OiBbbnVsbF0sXG4gICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IFtxdWVzdGlvbi5pc1JlcXVpcmVkXSxcbiAgICAgICAgICAgICAgaXNWYWxpZDogW251bGxdLFxuICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBbcXVlc3Rpb24uaXNSZWFkT25seV0sXG4gICAgICAgICAgICAgIGlzU2hvdzogW3F1ZXN0aW9uLmlzVmlzYWJsZV0sXG4gICAgICAgICAgICAgIGlzRGlzYWJsZWRfZGVmYXVsdDogW3F1ZXN0aW9uLmlzUmVhZE9ubHldLFxuICAgICAgICAgICAgICBpc1Nob3dfZGVmYXVsdDogW3F1ZXN0aW9uLmlzVmlzYWJsZV0sXG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIHF1ZXN0aW9uLnN1cnZleVN1YlF1ZXN0aW9ucy5mb3JFYWNoKHN1YlF1ZXN0aW9uID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS5wdXNoKHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPih7XG4gICAgICAgICAgICAgICAgc3VydmV5UGFnZUluZGV4OiBwYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogW3N1YlF1ZXN0aW9uLnF1ZXN0aW9uSWRdLFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogW3N1YlF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkXSxcbiAgICAgICAgICAgICAgICBpc01hdHJpeEdyb3VwOiBbZmFsc2VdLFxuICAgICAgICAgICAgICAgIGFuc3dlcklkOiBbbnVsbF0sXG4gICAgICAgICAgICAgICAgYW5zd2VySWRBcnI6IFtudWxsXSxcbiAgICAgICAgICAgICAgICBhbnN3ZXJUZXh0OiBbbnVsbF0sXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogW3F1ZXN0aW9uLmlzUmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIGlzVmFsaWQ6IFtudWxsXSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBbc3ViUXVlc3Rpb24uaXNSZWFkT25seV0sXG4gICAgICAgICAgICAgICAgaXNTaG93OiBbc3ViUXVlc3Rpb24uaXNWaXNhYmxlXSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkX2RlZmF1bHQ6IFtzdWJRdWVzdGlvbi5pc1JlYWRPbmx5XSxcbiAgICAgICAgICAgICAgICBpc1Nob3dfZGVmYXVsdDogW3N1YlF1ZXN0aW9uLmlzVmlzYWJsZV1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHN1cnZleS5zdXJ2ZXlSdWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgcnVsZS5ydWxlRXhwcy5mb3JFYWNoKHJ1bGVFeHAgPT4ge1xuICAgICAgICB0aGlzLmZDdHJscy5ydWxlUXVlc3Rpb25BcnJheS5wdXNoKHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFJ1bGVRdWVzdGlvbkNoaWxkT2ZTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZT4oe1xuICAgICAgICAgIHF1ZXN0aW9uSWQ6IHJ1bGVFeHAucXVlc3Rpb25JZFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBoYXZlSW5WYWxpZGF0ZVF1ZXN0aW9ucygpIHtcbiAgICBjb25zdCBjdXJyZW50UGFnZUluZGV4ID0gdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC52YWx1ZTtcbiAgICB2YXIgaW52YWxpZFJlY29yZHMgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbHRlcih4ID0+IHguc3VydmV5UGFnZUluZGV4ID09IGN1cnJlbnRQYWdlSW5kZXhcbiAgICAgICYmIHguaXNSZXF1aXJlZCA9PSB0cnVlICYmIHguaXNWYWxpZCAhPSB0cnVlXG4gICAgICAmJiB4LmlzRGlzYWJsZWQgPT0gZmFsc2UgJiYgeC5pc1Nob3cgPT0gdHJ1ZSAmJiB4LmlzTWF0cml4R3JvdXAgIT0gdHJ1ZSk7XG4gICAgaWYgKGludmFsaWRSZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICQoYCNzdXJ2ZXktcGFnZV8ke2N1cnJlbnRQYWdlSW5kZXh9YCkuYWRkQ2xhc3MoJ3N1cnZleS1wYWdlX3N1Ym1pdHRlZCcpO1xuICAgIH1cblxuICAgIGlmIChpbnZhbGlkUmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhpbnZhbGlkUmVjb3Jkcyk7XG4gICAgfVxuICAgIHJldHVybiBpbnZhbGlkUmVjb3Jkcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1J1bGVzKCkge1xuXG4gICAgdGhpcy5zdXJ2ZXlEYXRhLnN1cnZleVJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICB0aGlzLl9jaGVja1J1bGVFeHBzVXNlY2FzZS5leGVjdXRlKHtcbiAgICAgICAgcnVsZUV4cHM6IHJ1bGUucnVsZUV4cHMsXG4gICAgICAgIHF1ZXN0aW9uczogdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZVxuICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG5cbiAgICAgICAgdmFyIGlzUGFzc2VkID0gcmVzdWx0LmV4cHJlc3Rpb25SZXN1bHRBcnIuZmlsdGVyKHggPT4geCA9PSBmYWxzZSkubGVuZ3RoID09IDA7XG4gICAgICAgIGlmIChpc1Bhc3NlZCkge1xuXG4gICAgICAgICAgcnVsZS5ydWxlUmVzdWx0UXVlc3Rpb25zLmZvckVhY2gocmVzdWx0UXVlc3Rpb24gPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHgucXVlc3Rpb25JZCA9PSByZXN1bHRRdWVzdGlvbi5xdWVzdGlvbklkKTtcbiAgICAgICAgICAgIHZhciBxdWVzdGlvbkdyb3VwID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS5hdChpbmRleCk7XG4gICAgICAgICAgICBpZiAocnVsZS5sb2dpY0FjdGlvbklkID09IExvZ2ljQWN0aW9uRW51bS5TaG93KSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuaXNTaG93LnNldFZhbHVlKHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLkhpZGUpIHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25Hcm91cC5jb250cm9scy5pc1Nob3cuc2V0VmFsdWUoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLkVuYWJsZSkge1xuICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmlzRGlzYWJsZWQuc2V0VmFsdWUoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLkRpc2FibGUpIHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25Hcm91cC5jb250cm9scy5pc0Rpc2FibGVkLnNldFZhbHVlKHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLlNldEFuc3dlcikge1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBydWxlLnJ1bGVSZXN1bHRRdWVzdGlvbnMuZm9yRWFjaChyZXN1bHRRdWVzdGlvbiA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5xdWVzdGlvbklkID09IHJlc3VsdFF1ZXN0aW9uLnF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgdmFyIHF1ZXN0aW9uR3JvdXAgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LmF0KGluZGV4KTtcbiAgICAgICAgICAgIHF1ZXN0aW9uR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgIGlzU2hvdzogcXVlc3Rpb25Hcm91cC52YWx1ZS5pc1Nob3dfZGVmYXVsdCxcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZDogcXVlc3Rpb25Hcm91cC52YWx1ZS5pc0Rpc2FibGVkX2RlZmF1bHRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldE5leHRTaG93ZWRQYWdlKCkge1xuICAgIHZhciBjdXJyZW50UGFnZUluZGV4ID0gdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC52YWx1ZTtcbiAgICB2YXIgc2hvd2VkUGFnZXMgPSB0aGlzLnNob3dlZFN1cnZleVBhZ2VzO1xuICAgIHZhciBuZXh0U2hvd2VkUGFnZXMgPSBzaG93ZWRQYWdlcy5maWx0ZXIoeCA9PiB4ID4gY3VycmVudFBhZ2VJbmRleCk7XG4gICAgaWYgKG5leHRTaG93ZWRQYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gbmV4dFNob3dlZFBhZ2VzWzBdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJldlNob3dlZFBhZ2UoKSB7XG4gICAgdmFyIGN1cnJlbnRQYWdlSW5kZXggPSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlO1xuICAgIHZhciBzaG93ZWRQYWdlcyA9IHRoaXMuc2hvd2VkU3VydmV5UGFnZXM7XG4gICAgdmFyIHByZXZTaG93ZWRQYWdlcyA9IHNob3dlZFBhZ2VzLmZpbHRlcih4ID0+IHggPCBjdXJyZW50UGFnZUluZGV4KTtcbiAgICBpZiAocHJldlNob3dlZFBhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwcmV2U2hvd2VkUGFnZXNbcHJldlNob3dlZFBhZ2VzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPGRpdiBpZD1cInN1cnZlcnktY2FyZC17e3N1cnZlcnlMaWJyYXJ5RGl2SWR9fVwiIGNsYXNzPVwic3VydmF5LWNhcmRcIiA+XHJcbiAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgdGV4dC1jZW50ZXJcIiByb2xlPVwiYWxlcnRcIiAqbmdJZj1cImlzUHJlID09IHRydWUgJiYgc3VydmV5RGF0YSAhPSBudWxsXCI+XHJcbiAgICA8aDQgY2xhc3M9XCJhbGVydC1oZWFkaW5nIG1iLTBcIj5UaGlzIHN1cnZleSBpbiByZXZpZXcgcGhhc2UgPC9oND5cclxuICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1cnZleVBhZ2Ugb2Ygc3VydmV5RGF0YT8uc3VydmV5UGFnZXM7IGxldCBzdXJ2ZXlQYWdlSW5kZXggPSBpbmRleFwiXHJcbiAgICAgIFthdHRyLmlkXT1cIidzdXJ2ZXktcGFnZV8nK3N1cnZleVBhZ2VJbmRleFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZC1ub25lJzogc3VydmV5UGFnZUluZGV4ICE9IGZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlfVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN1cnZleVBhZ2Uuc3VydmV5UXVlc3Rpb25Hcm91cHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmF5LWNhcmRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImdyb3VwLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7aXRlbS5xdWVzdGlvbkdyb3VwTmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJncm91cC1zdWItdGl0bGUgXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7aXRlbS5xdWVzdGlvbkdyb3VwRGVzY3JpcHRpb259fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGl0ZW0uc3VydmV5UXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUgI3F1ZXN0aW9uQm9vbGVhblRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uQm9vbGVhblwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiPjwvbGliLXF1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10ZXh0LXRlbXBsYXRlICNxdWVzdGlvblRleHRUZW1wbGF0ZSBbc2V0UXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoZW1pdHRlcik9XCJvblVwZGF0ZUFuc3dlcigkZXZlbnQpXCIgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCA9PSBxdWVzdGlvblR5cGVFbnVtLlRleHRJbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1RleHRBcmVhXT1cInF1ZXN0aW9uLmlzQWR2YW5jZVRleHRBcmVhXCI+PC9saWItcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZSAjcXVlc3Rpb25SYWRpb0J1dHRvblRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uUmFkaW9CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTaG93XT1cIiAocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNTaG93XCJcclxuICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzRGlzYWJsZWRcIj48L2xpYi1xdWVzdGlvbi1yYWRpby1idXR0b24tdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZSAjcXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTaG93XT1cIiAocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNTaG93XCJcclxuICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzRGlzYWJsZWRcIj48L2xpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLWRyb3Bkb3duLW11bHRpLXRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uRHJvcERvd25NdWx0aVwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiPjwvbGliLXF1ZXN0aW9uLWRyb3Bkb3duLW11bHRpLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlICNxdWVzdGlvbkNoZWNrQm94VGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25UeXBlSWQgPT0gcXVlc3Rpb25UeXBlRW51bS5DaGVja0JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiPjwvbGliLXF1ZXN0aW9uLWNoZWNrLWJveC10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLW1hdHJpeC10ZW1wbGF0ZSAjcXVlc3Rpb25NYXRyaXhUZW1wbGF0ZSBbc2V0UXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoZW1pdHRlcik9XCJvblVwZGF0ZUFuc3dlcigkZXZlbnQpXCIgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCA9PSBxdWVzdGlvblR5cGVFbnVtLk1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiPjwvbGliLXF1ZXN0aW9uLW1hdHJpeC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktY2FyZC1mb290clwiICpuZ0lmPVwic3VydmV5RGF0YSAhPSBudWxsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cIiBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktcGFnaW5hdGlvbiBmdy1ib2xkXCI+XHJcbiAgICAgICAgICA8c3Bhbj57e2N1cnJ1bnRTaG93ZWRTdXJ2ZXlQYWdlc319PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yIG1lLTJcIj5vZjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7c2hvd2VkU3VydmV5UGFnZXM/Lmxlbmd0aH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmVyeS1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VydmVyeS1saWIvc3JjL2xpYi9zdXJ2ZXJ5LWxpYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL3N1cnZleS1saWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBS3ZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxFQUFFLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxZQUFZLEVBQUUsb0JBQW9CLEVBQU0sTUFBTSxNQUFNLENBQUM7QUFJMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQW9CcEUsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QixJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1RjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksVUFB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ZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FoVFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsc05DaENoQyxvMUpBc0VNOzsyRkR0Q08sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjtvS0FrRWxCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdXJ2ZXlMaWJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3VydmV5RHRvIH0gZnJvbSAnLi4vc2hhcmVkL2R0b3Mvc3VydmV5LmR0byc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlLCBSdWxlUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2UsIFN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9zdXJ2ZXJ5LWxpYi5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyB2NCBhcyBndWlkR2VuZXJhdG9yIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvZ2ljUHJvcGVydHlFbnVtIH0gZnJvbSAnLi4vc2hhcmVkL2VudW1zL0xvZ2ljLVByb3BlcnR5LmVudW0nO1xuaW1wb3J0IHsgUnVsZUV4cER0byB9IGZyb20gJy4uL3NoYXJlZC9kdG9zL3J1bGUtZXhwLmR0byc7XG5pbXBvcnQgeyBPcGVyYXRvckVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvb3BlcmF0b3IuZW51bSc7XG5pbXBvcnQgeyBMb2dpY0FjdGlvbkVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvbG9naWMtYWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ2hlY2tSdWxlRXhwc1VzZWNhc2UgfSBmcm9tICcuL3VzZWNhc2VzL2NoZWNrLXJ1bGUtZXhwcy51c2VjYXNlJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL21vZGVscy9zdXJ2ZXJ5LXF1ZXN0aW9uLXJlc3VsdC5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUvcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25UZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tdGV4dC10ZW1wbGF0ZS9xdWVzdGlvbi10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRdWVzdGlvblJhZGlvQnV0dG9uVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tcmFkaW8tYnV0dG9uLXRlbXBsYXRlL3F1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRdWVzdGlvbkNoZWNrQm94VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlL3F1ZXN0aW9uLWNoZWNrLWJveC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdXJ2ZXlMYW5ndWFnZUR0byB9IGZyb20gJy4uL3NoYXJlZC9kdG9zL3N1cnZleS1sYW5ndWFnZS5kdG8nO1xuaW1wb3J0IHsgU3VydmV5U2VjdGlvbkVudW0gfSBmcm9tICcuLi9zaGFyZWQvZW51bXMvc3VydmV5LXNlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItc3VydmVyeS1saWInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VydmV5LWxpYi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N1cnZleS1saWIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdXJ2ZXJ5TGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBzdXJ2ZXJ5TGlicmFyeURpdklkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgcmVsb2FkRGVmYXVsdEFuc3dlcklkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgc3VydmV5RGF0YTogU3VydmV5RHRvO1xuICBkZWZhdWx0QW5zd2VyczogRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvW107XG4gIHJGb3JtOiBGb3JtR3JvdXA8U3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+O1xuXG4gIGdldCBmQ3RybHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuckZvcm0uY29udHJvbHM7XG4gIH1cblxuICBnZXQgcXVlc3Rpb25UeXBlRW51bSgpIHtcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcbiAgfVxuXG4gIGdldCBpc0ZpcnN0UGFnZSgpIHtcbiAgICBpZiAodGhpcy5zaG93ZWRTdXJ2ZXlQYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaG93ZWRTdXJ2ZXlQYWdlcy5maW5kSW5kZXgoeCA9PiB4ID09IHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWUpID09IDA7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IGlzTGFzdFBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd2VkU3VydmV5UGFnZXMuZmluZEluZGV4KHggPT4geCA9PSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlKSA9PSAodGhpcy5zaG93ZWRTdXJ2ZXlQYWdlcy5sZW5ndGggLSAxKVxuICB9XG5cbiAgZ2V0IHNob3dlZFN1cnZleVBhZ2VzKCk6IG51bWJlcltdIHtcbiAgICB2YXIgcGFnZUFycjogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZVtpbmRleF07XG4gICAgICBpZiAocXVlc3Rpb24uaXNTaG93ID09IHRydWUgJiYgKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZSAhPSB0aGlzLnF1ZXN0aW9uVHlwZUVudW0uTWF0cml4IHx8IHF1ZXN0aW9uLmlzTWF0cml4R3JvdXAgPT0gdHJ1ZSkpIHtcbiAgICAgICAgcGFnZUFyci5wdXNoKHF1ZXN0aW9uLnN1cnZleVBhZ2VJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdGluY3RBcnJheSA9IHBhZ2VBcnIuZmlsdGVyKChuLCBpKSA9PiBwYWdlQXJyLmluZGV4T2YobikgPT09IGkpO1xuXG4gICAgcmV0dXJuIGRpc3RpbmN0QXJyYXkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICB9XG5cbiAgZ2V0IGN1cnJ1bnRTaG93ZWRTdXJ2ZXlQYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93ZWRTdXJ2ZXlQYWdlcy5maW5kSW5kZXgoeCA9PiB4ID09IHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWUpICsgMTtcbiAgfVxuXG4gIGdldCBzdXJ2ZXlSZXN1bHQoKTogeyBhbnN3ZXJzOiBTdXJ2ZXlRdWVzdGlvblJlc3VsdFtdLCBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbnRQYWdlSW5kZXg6IHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWUsXG4gICAgICBhbnN3ZXJzOlxuICAgICAgICB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbHRlcih4ID0+IHguaXNNYXRyaXhHcm91cCAhPSB0cnVlKS5tYXAoeCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFN1cnZleVBhZ2VJbmRleDogeC5zdXJ2ZXlQYWdlSW5kZXgsXG4gICAgICAgICAgICBRdWVzdGlvbklkOiB4LnF1ZXN0aW9uSWQsXG4gICAgICAgICAgICBRdWVzdGlvblR5cGU6IHgucXVlc3Rpb25UeXBlLFxuICAgICAgICAgICAgQW5zd2VySWQ6IHguYW5zd2VySWQsXG4gICAgICAgICAgICBBbnN3ZXJUZXh0OiB4LmFuc3dlclRleHQsXG4gICAgICAgICAgICBBbnN3ZXJJZEFycjogeC5hbnN3ZXJJZEFyclxuICAgICAgICAgIH0gYXMgU3VydmV5UXVlc3Rpb25SZXN1bHRcbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBpc1ByZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBhcmFiaWNMYW5ndWFnZUlkOiBudW1iZXIgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSBzdXJ2ZXlSZXN1bHRFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxTdXJ2ZXlRdWVzdGlvblJlc3VsdFtdPigpO1xuICBAT3V0cHV0KCkgc2VsZWN0TGFuZ3VhZ2VFbWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3VydmV5TGliU2VydmljZTogU3VydmV5TGliU2VydmljZVxuICAgICwgcHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9jaGVja1J1bGVFeHBzVXNlY2FzZTogQ2hlY2tSdWxlRXhwc1VzZWNhc2UpIHtcblxuICAgIHRoaXMuckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZT4oe1xuICAgICAgY3VycmVudFBhZ2VJbmRleDogWzBdLFxuICAgICAgcXVlc3Rpb25BcnJheTogdGhpcy5fZm9ybUJ1aWxkZXIuYXJyYXk8UXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KFtdKSxcbiAgICAgIHJ1bGVRdWVzdGlvbkFycmF5OiB0aGlzLl9mb3JtQnVpbGRlci5hcnJheTxSdWxlUXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KFtdKVxuICAgIH0pO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2Uuc3VydmV5RGF0YU9ic3J2LnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZShzdXJ2ZXkgPT4ge1xuICAgICAgdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS5jbGVhcigpO1xuICAgICAgdGhpcy5mQ3RybHMucnVsZVF1ZXN0aW9uQXJyYXkuY2xlYXIoKTtcbiAgICAgIHRoaXMuc3VydmV5RGF0YSA9IG51bGw7XG5cbiAgICAgIGlmIChzdXJ2ZXkgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN1cnZleURhdGEgPSBzdXJ2ZXk7XG4gICAgICAgIHRoaXMubG9hZFF1ZXN0aW9ucyhzdXJ2ZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICBvblBhZ2dpbmdOZXh0KCkge1xuICAgIHZhciBpc0hhdmVJbnZhbGlkUmVjb3JkcyA9IHRoaXMuaGF2ZUluVmFsaWRhdGVRdWVzdGlvbnMoKTtcbiAgICBpZiAoaXNIYXZlSW52YWxpZFJlY29yZHMgPT0gZmFsc2UpIHtcblxuICAgICAgY29uc3QgbmV4dFBhZ2VJbmRleCA9IHRoaXMuZ2V0TmV4dFNob3dlZFBhZ2UoKTtcblxuICAgICAgaWYgKG5leHRQYWdlSW5kZXggIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnNldFZhbHVlKG5leHRQYWdlSW5kZXgpO1xuXG4gICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcbiAgICAgICAgICBzY3JvbGxUb3A6ICQoYCNzdXJ2ZXJ5LWNhcmQtJHt0aGlzLnN1cnZlcnlMaWJyYXJ5RGl2SWR9YCkub2Zmc2V0KCkudG9wXG4gICAgICAgIH0sIDIwMDApO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcXVlc3Rpb25BcnIgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlLmZpbHRlcih4ID0+IHguaXNNYXRyaXhHcm91cCAhPSB0cnVlKS5tYXAoeCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFN1cnZleVBhZ2VJbmRleDogeC5zdXJ2ZXlQYWdlSW5kZXgsXG4gICAgICAgICAgICBRdWVzdGlvbklkOiB4LnF1ZXN0aW9uSWQsXG4gICAgICAgICAgICBRdWVzdGlvblR5cGU6IHgucXVlc3Rpb25UeXBlLFxuICAgICAgICAgICAgQW5zd2VySWQ6IHguYW5zd2VySWQsXG4gICAgICAgICAgICBBbnN3ZXJUZXh0OiB4LmFuc3dlclRleHQsXG4gICAgICAgICAgICBBbnN3ZXJJZEFycjogeC5hbnN3ZXJJZEFyclxuICAgICAgICAgIH0gYXMgU3VydmV5UXVlc3Rpb25SZXN1bHRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3VydmV5UmVzdWx0RW1pdC5lbWl0KHF1ZXN0aW9uQXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblBhZ2dpbmdCYWNrKCkge1xuICAgIGNvbnN0IHByZXZQYWdlSW5kZXggPSB0aGlzLmdldFByZXZTaG93ZWRQYWdlKCk7XG4gICAgaWYgKHByZXZQYWdlSW5kZXggIT0gbnVsbCkge1xuICAgICAgdGhpcy5mQ3RybHMuY3VycmVudFBhZ2VJbmRleC5zZXRWYWx1ZShwcmV2UGFnZUluZGV4KTtcbiAgICB9XG4gIH1cblxuICBvblVwZGF0ZUFuc3dlcnMobW9kZWw6IFF1ZXN0aW9uQW5zd2VyTW9kZWxbXSkge1xuICAgIG1vZGVsLmZvckVhY2goZWxlbSA9PiB7XG4gICAgICB0aGlzLm9uVXBkYXRlQW5zd2VyKGVsZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25VcGRhdGVBbnN3ZXIobW9kZWw6IFF1ZXN0aW9uQW5zd2VyTW9kZWwpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5xdWVzdGlvbklkID09IG1vZGVsLlF1ZXN0aW9uSWQpO1xuICAgIHZhciBxdWVzdGlvbkdyb3VwID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS5jb250cm9sc1tpbmRleF07XG4gICAgcXVlc3Rpb25Hcm91cC5jb250cm9scy5pc1ZhbGlkLnNldFZhbHVlKG1vZGVsLklzVmFsaWQpO1xuXG4gICAgaWYgKHF1ZXN0aW9uR3JvdXAudmFsdWUucXVlc3Rpb25UeXBlID09IHRoaXMucXVlc3Rpb25UeXBlRW51bS5UZXh0SW5wdXQpIHtcbiAgICAgIHF1ZXN0aW9uR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGFuc3dlcklkOiBtb2RlbC5TdXJ2ZXlBbnN3ZXJJZCxcbiAgICAgICAgYW5zd2VyVGV4dDogbW9kZWwuQW5zd2VyXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHF1ZXN0aW9uR3JvdXAudmFsdWUucXVlc3Rpb25UeXBlID09IHRoaXMucXVlc3Rpb25UeXBlRW51bS5DaGVja0JveCB8fCBxdWVzdGlvbkdyb3VwLnZhbHVlLnF1ZXN0aW9uVHlwZSA9PSB0aGlzLnF1ZXN0aW9uVHlwZUVudW0uRHJvcERvd25NdWx0aSkge1xuICAgICAgcXVlc3Rpb25Hcm91cC5jb250cm9scy5hbnN3ZXJJZEFyci5zZXRWYWx1ZShtb2RlbC5BbnN3ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmFuc3dlcklkLnNldFZhbHVlKG1vZGVsLkFuc3dlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZkN0cmxzLnJ1bGVRdWVzdGlvbkFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHgucXVlc3Rpb25JZCA9PSBtb2RlbC5RdWVzdGlvbklkKSA+IC0xKSB7XG4gICAgICB0aGlzLmNoZWNrUnVsZXMoKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZFF1ZXN0aW9ucyhzdXJ2ZXk6IFN1cnZleUR0bykge1xuICAgIHN1cnZleS5zdXJ2ZXlQYWdlcy5mb3JFYWNoKChwYWdlLCBwYWdlSW5kZXgpID0+IHtcbiAgICAgIHBhZ2Uuc3VydmV5UXVlc3Rpb25Hcm91cHMuZm9yRWFjaChncm91cCA9PiB7XG5cbiAgICAgICAgZ3JvdXAuc3VydmV5UXVlc3Rpb25zLmZvckVhY2gocXVlc3Rpb24gPT4ge1xuXG4gICAgICAgICAgaWYgKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkICE9IDYpIHtcbiAgICAgICAgICAgIHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkucHVzaCh0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkNoaWxkT2ZTdXJ2ZXJ5TGliRm9ybUludGVyZmFjZT4oe1xuICAgICAgICAgICAgICBzdXJ2ZXlQYWdlSW5kZXg6IHBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogW3F1ZXN0aW9uLnF1ZXN0aW9uSWRdLFxuICAgICAgICAgICAgICBxdWVzdGlvblR5cGU6IFtxdWVzdGlvbi5xdWVzdGlvblR5cGVJZF0sXG4gICAgICAgICAgICAgIGlzTWF0cml4R3JvdXA6IFtmYWxzZV0sXG4gICAgICAgICAgICAgIGFuc3dlcklkOiBbbnVsbF0sXG4gICAgICAgICAgICAgIGFuc3dlcklkQXJyOiBbbnVsbF0sXG4gICAgICAgICAgICAgIGFuc3dlclRleHQ6IFtudWxsXSxcbiAgICAgICAgICAgICAgaXNSZXF1aXJlZDogW3F1ZXN0aW9uLmlzUmVxdWlyZWRdLFxuICAgICAgICAgICAgICBpc1ZhbGlkOiBbbnVsbF0sXG4gICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IFtxdWVzdGlvbi5pc1JlYWRPbmx5XSxcbiAgICAgICAgICAgICAgaXNTaG93OiBbcXVlc3Rpb24uaXNWaXNhYmxlXSxcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZF9kZWZhdWx0OiBbcXVlc3Rpb24uaXNSZWFkT25seV0sXG4gICAgICAgICAgICAgIGlzU2hvd19kZWZhdWx0OiBbcXVlc3Rpb24uaXNWaXNhYmxlXVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KHtcbiAgICAgICAgICAgICAgc3VydmV5UGFnZUluZGV4OiBwYWdlSW5kZXgsXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IFtxdWVzdGlvbi5xdWVzdGlvbklkXSxcbiAgICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBbcXVlc3Rpb24ucXVlc3Rpb25UeXBlSWRdLFxuICAgICAgICAgICAgICBpc01hdHJpeEdyb3VwOiBbdHJ1ZV0sXG4gICAgICAgICAgICAgIGFuc3dlcklkOiBbbnVsbF0sXG4gICAgICAgICAgICAgIGFuc3dlcklkQXJyOiBbbnVsbF0sXG4gICAgICAgICAgICAgIGFuc3dlclRleHQ6IFtudWxsXSxcbiAgICAgICAgICAgICAgaXNSZXF1aXJlZDogW3F1ZXN0aW9uLmlzUmVxdWlyZWRdLFxuICAgICAgICAgICAgICBpc1ZhbGlkOiBbbnVsbF0sXG4gICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IFtxdWVzdGlvbi5pc1JlYWRPbmx5XSxcbiAgICAgICAgICAgICAgaXNTaG93OiBbcXVlc3Rpb24uaXNWaXNhYmxlXSxcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZF9kZWZhdWx0OiBbcXVlc3Rpb24uaXNSZWFkT25seV0sXG4gICAgICAgICAgICAgIGlzU2hvd19kZWZhdWx0OiBbcXVlc3Rpb24uaXNWaXNhYmxlXSxcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgcXVlc3Rpb24uc3VydmV5U3ViUXVlc3Rpb25zLmZvckVhY2goc3ViUXVlc3Rpb24gPT4ge1xuICAgICAgICAgICAgICB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25DaGlsZE9mU3VydmVyeUxpYkZvcm1JbnRlcmZhY2U+KHtcbiAgICAgICAgICAgICAgICBzdXJ2ZXlQYWdlSW5kZXg6IHBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBbc3ViUXVlc3Rpb24ucXVlc3Rpb25JZF0sXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBbc3ViUXVlc3Rpb24ucXVlc3Rpb25UeXBlSWRdLFxuICAgICAgICAgICAgICAgIGlzTWF0cml4R3JvdXA6IFtmYWxzZV0sXG4gICAgICAgICAgICAgICAgYW5zd2VySWQ6IFtudWxsXSxcbiAgICAgICAgICAgICAgICBhbnN3ZXJJZEFycjogW251bGxdLFxuICAgICAgICAgICAgICAgIGFuc3dlclRleHQ6IFtudWxsXSxcbiAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBbcXVlc3Rpb24uaXNSZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgaXNWYWxpZDogW251bGxdLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IFtzdWJRdWVzdGlvbi5pc1JlYWRPbmx5XSxcbiAgICAgICAgICAgICAgICBpc1Nob3c6IFtzdWJRdWVzdGlvbi5pc1Zpc2FibGVdLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRfZGVmYXVsdDogW3N1YlF1ZXN0aW9uLmlzUmVhZE9ubHldLFxuICAgICAgICAgICAgICAgIGlzU2hvd19kZWZhdWx0OiBbc3ViUXVlc3Rpb24uaXNWaXNhYmxlXVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc3VydmV5LnN1cnZleVJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICBydWxlLnJ1bGVFeHBzLmZvckVhY2gocnVsZUV4cCA9PiB7XG4gICAgICAgIHRoaXMuZkN0cmxzLnJ1bGVRdWVzdGlvbkFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UnVsZVF1ZXN0aW9uQ2hpbGRPZlN1cnZlcnlMaWJGb3JtSW50ZXJmYWNlPih7XG4gICAgICAgICAgcXVlc3Rpb25JZDogcnVsZUV4cC5xdWVzdGlvbklkXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGhhdmVJblZhbGlkYXRlUXVlc3Rpb25zKCkge1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlSW5kZXggPSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlO1xuICAgIHZhciBpbnZhbGlkUmVjb3JkcyA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUuZmlsdGVyKHggPT4geC5zdXJ2ZXlQYWdlSW5kZXggPT0gY3VycmVudFBhZ2VJbmRleFxuICAgICAgJiYgeC5pc1JlcXVpcmVkID09IHRydWUgJiYgeC5pc1ZhbGlkICE9IHRydWVcbiAgICAgICYmIHguaXNEaXNhYmxlZCA9PSBmYWxzZSAmJiB4LmlzU2hvdyA9PSB0cnVlICYmIHguaXNNYXRyaXhHcm91cCAhPSB0cnVlKTtcbiAgICBpZiAoaW52YWxpZFJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgJChgI3N1cnZleS1wYWdlXyR7Y3VycmVudFBhZ2VJbmRleH1gKS5hZGRDbGFzcygnc3VydmV5LXBhZ2Vfc3VibWl0dGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKGludmFsaWRSZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKGludmFsaWRSZWNvcmRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGludmFsaWRSZWNvcmRzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUnVsZXMoKSB7XG5cbiAgICB0aGlzLnN1cnZleURhdGEuc3VydmV5UnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgIHRoaXMuX2NoZWNrUnVsZUV4cHNVc2VjYXNlLmV4ZWN1dGUoe1xuICAgICAgICBydWxlRXhwczogcnVsZS5ydWxlRXhwcyxcbiAgICAgICAgcXVlc3Rpb25zOiB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlXG4gICAgICB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcblxuICAgICAgICB2YXIgaXNQYXNzZWQgPSByZXN1bHQuZXhwcmVzdGlvblJlc3VsdEFyci5maWx0ZXIoeCA9PiB4ID09IGZhbHNlKS5sZW5ndGggPT0gMDtcbiAgICAgICAgaWYgKGlzUGFzc2VkKSB7XG5cbiAgICAgICAgICBydWxlLnJ1bGVSZXN1bHRRdWVzdGlvbnMuZm9yRWFjaChyZXN1bHRRdWVzdGlvbiA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5xdWVzdGlvbklkID09IHJlc3VsdFF1ZXN0aW9uLnF1ZXN0aW9uSWQpO1xuICAgICAgICAgICAgdmFyIHF1ZXN0aW9uR3JvdXAgPSB0aGlzLmZDdHJscy5xdWVzdGlvbkFycmF5LmF0KGluZGV4KTtcbiAgICAgICAgICAgIGlmIChydWxlLmxvZ2ljQWN0aW9uSWQgPT0gTG9naWNBY3Rpb25FbnVtLlNob3cpIHtcbiAgICAgICAgICAgICAgcXVlc3Rpb25Hcm91cC5jb250cm9scy5pc1Nob3cuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUubG9naWNBY3Rpb25JZCA9PSBMb2dpY0FjdGlvbkVudW0uSGlkZSkge1xuICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmlzU2hvdy5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUubG9naWNBY3Rpb25JZCA9PSBMb2dpY0FjdGlvbkVudW0uRW5hYmxlKSB7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuaXNEaXNhYmxlZC5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUubG9naWNBY3Rpb25JZCA9PSBMb2dpY0FjdGlvbkVudW0uRGlzYWJsZSkge1xuICAgICAgICAgICAgICBxdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmlzRGlzYWJsZWQuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUubG9naWNBY3Rpb25JZCA9PSBMb2dpY0FjdGlvbkVudW0uU2V0QW5zd2VyKSB7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJ1bGUucnVsZVJlc3VsdFF1ZXN0aW9ucy5mb3JFYWNoKHJlc3VsdFF1ZXN0aW9uID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4LnF1ZXN0aW9uSWQgPT0gcmVzdWx0UXVlc3Rpb24ucXVlc3Rpb25JZCk7XG4gICAgICAgICAgICB2YXIgcXVlc3Rpb25Hcm91cCA9IHRoaXMuZkN0cmxzLnF1ZXN0aW9uQXJyYXkuYXQoaW5kZXgpO1xuICAgICAgICAgICAgcXVlc3Rpb25Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgaXNTaG93OiBxdWVzdGlvbkdyb3VwLnZhbHVlLmlzU2hvd19kZWZhdWx0LFxuICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBxdWVzdGlvbkdyb3VwLnZhbHVlLmlzRGlzYWJsZWRfZGVmYXVsdFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmV4dFNob3dlZFBhZ2UoKSB7XG4gICAgdmFyIGN1cnJlbnRQYWdlSW5kZXggPSB0aGlzLmZDdHJscy5jdXJyZW50UGFnZUluZGV4LnZhbHVlO1xuICAgIHZhciBzaG93ZWRQYWdlcyA9IHRoaXMuc2hvd2VkU3VydmV5UGFnZXM7XG4gICAgdmFyIG5leHRTaG93ZWRQYWdlcyA9IHNob3dlZFBhZ2VzLmZpbHRlcih4ID0+IHggPiBjdXJyZW50UGFnZUluZGV4KTtcbiAgICBpZiAobmV4dFNob3dlZFBhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBuZXh0U2hvd2VkUGFnZXNbMF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcmV2U2hvd2VkUGFnZSgpIHtcbiAgICB2YXIgY3VycmVudFBhZ2VJbmRleCA9IHRoaXMuZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWU7XG4gICAgdmFyIHNob3dlZFBhZ2VzID0gdGhpcy5zaG93ZWRTdXJ2ZXlQYWdlcztcbiAgICB2YXIgcHJldlNob3dlZFBhZ2VzID0gc2hvd2VkUGFnZXMuZmlsdGVyKHggPT4geCA8IGN1cnJlbnRQYWdlSW5kZXgpO1xuICAgIGlmIChwcmV2U2hvd2VkUGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHByZXZTaG93ZWRQYWdlc1twcmV2U2hvd2VkUGFnZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8ZGl2IGlkPVwic3VydmVyeS1jYXJkLXt7c3VydmVyeUxpYnJhcnlEaXZJZH19XCIgY2xhc3M9XCJzdXJ2YXktY2FyZFwiID5cclxuICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyB0ZXh0LWNlbnRlclwiIHJvbGU9XCJhbGVydFwiICpuZ0lmPVwiaXNQcmUgPT0gdHJ1ZSAmJiBzdXJ2ZXlEYXRhICE9IG51bGxcIj5cclxuICAgIDxoNCBjbGFzcz1cImFsZXJ0LWhlYWRpbmcgbWItMFwiPlRoaXMgc3VydmV5IGluIHJldmlldyBwaGFzZSA8L2g0PlxyXG4gIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgc3VydmV5UGFnZSBvZiBzdXJ2ZXlEYXRhPy5zdXJ2ZXlQYWdlczsgbGV0IHN1cnZleVBhZ2VJbmRleCA9IGluZGV4XCJcclxuICAgICAgW2F0dHIuaWRdPVwiJ3N1cnZleS1wYWdlXycrc3VydmV5UGFnZUluZGV4XCJcclxuICAgICAgW25nQ2xhc3NdPVwieydkLW5vbmUnOiBzdXJ2ZXlQYWdlSW5kZXggIT0gZkN0cmxzLmN1cnJlbnRQYWdlSW5kZXgudmFsdWV9XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3VydmV5UGFnZS5zdXJ2ZXlRdWVzdGlvbkdyb3Vwc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2YXktY2FyZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZheS1jYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZheS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiZ3JvdXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAge3tpdGVtLnF1ZXN0aW9uR3JvdXBOYW1lfX1cclxuICAgICAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLXN1Yi10aXRsZSBcIj5cclxuICAgICAgICAgICAgICAgICAge3tpdGVtLnF1ZXN0aW9uR3JvdXBEZXNjcmlwdGlvbn19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgaXRlbS5zdXJ2ZXlRdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZSAjcXVlc3Rpb25Cb29sZWFuVGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25UeXBlSWQgPT0gcXVlc3Rpb25UeXBlRW51bS5Cb29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgW2lzU2hvd109XCIgKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzU2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCI+PC9saWItcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXRleHQtdGVtcGxhdGUgI3F1ZXN0aW9uVGV4dFRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uVGV4dElucHV0XCJcclxuICAgICAgICAgICAgICAgICAgW2lzU2hvd109XCIgKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzU2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lzVGV4dEFyZWFdPVwicXVlc3Rpb24uaXNBZHZhbmNlVGV4dEFyZWFcIj48L2xpYi1xdWVzdGlvbi10ZXh0LXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tcmFkaW8tYnV0dG9uLXRlbXBsYXRlICNxdWVzdGlvblJhZGlvQnV0dG9uVGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25UeXBlSWQgPT0gcXVlc3Rpb25UeXBlRW51bS5SYWRpb0J1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiPjwvbGliLXF1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlICNxdWVzdGlvbkRyb3Bkb3duVGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25UeXBlSWQgPT0gcXVlc3Rpb25UeXBlRW51bS5Ecm9wRG93blwiXHJcbiAgICAgICAgICAgICAgICAgIFtpc1Nob3ddPVwiIChxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc1Nob3dcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCIocXVlc3Rpb258ZmlsdGVyUXVlc3Rpb24gOiBmQ3RybHMucXVlc3Rpb25BcnJheS52YWx1ZSkuaXNEaXNhYmxlZFwiPjwvbGliLXF1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tZHJvcGRvd24tbXVsdGktdGVtcGxhdGUgW3NldFF1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgKGVtaXR0ZXIpPVwib25VcGRhdGVBbnN3ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25UeXBlSWQgPT0gcXVlc3Rpb25UeXBlRW51bS5Ecm9wRG93bk11bHRpXCJcclxuICAgICAgICAgICAgICAgICAgW2lzU2hvd109XCIgKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzU2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCI+PC9saWItcXVlc3Rpb24tZHJvcGRvd24tbXVsdGktdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUgI3F1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZSBbc2V0UXVlc3Rpb25dPVwicXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAoZW1pdHRlcik9XCJvblVwZGF0ZUFuc3dlcigkZXZlbnQpXCIgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVJZCA9PSBxdWVzdGlvblR5cGVFbnVtLkNoZWNrQm94XCJcclxuICAgICAgICAgICAgICAgICAgW2lzU2hvd109XCIgKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzU2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCI+PC9saWItcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlICNxdWVzdGlvbk1hdHJpeFRlbXBsYXRlIFtzZXRRdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChlbWl0dGVyKT1cIm9uVXBkYXRlQW5zd2VyKCRldmVudClcIiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZUlkID09IHF1ZXN0aW9uVHlwZUVudW0uTWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgW2lzU2hvd109XCIgKHF1ZXN0aW9ufGZpbHRlclF1ZXN0aW9uIDogZkN0cmxzLnF1ZXN0aW9uQXJyYXkudmFsdWUpLmlzU2hvd1wiXHJcbiAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cIihxdWVzdGlvbnxmaWx0ZXJRdWVzdGlvbiA6IGZDdHJscy5xdWVzdGlvbkFycmF5LnZhbHVlKS5pc0Rpc2FibGVkXCI+PC9saWItcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInN1cnZheS1jYXJkLWZvb3RyXCIgKm5nSWY9XCJzdXJ2ZXlEYXRhICE9IG51bGxcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiIGp1c3RpZnktY29udGVudDogc3RhcnQ7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZheS1wYWdpbmF0aW9uIGZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxzcGFuPnt7Y3VycnVudFNob3dlZFN1cnZleVBhZ2VzfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTIgbWUtMlwiPm9mPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3tzaG93ZWRTdXJ2ZXlQYWdlcz8ubGVuZ3RofX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
package/fesm2022/survery-lib.mjs
CHANGED
|
@@ -287,6 +287,7 @@ class QuestionTextTemplateComponent {
|
|
|
287
287
|
return QuestionTypeEnum;
|
|
288
288
|
}
|
|
289
289
|
set setQuestion(value) {
|
|
290
|
+
this.surveyQuestion = value;
|
|
290
291
|
this.rForm.patchValue({
|
|
291
292
|
id: value.questionId,
|
|
292
293
|
name: value.questionName,
|
|
@@ -365,11 +366,11 @@ class QuestionTextTemplateComponent {
|
|
|
365
366
|
this.fCtrls.answer.updateValueAndValidity();
|
|
366
367
|
}
|
|
367
368
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
368
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isShow: "isShow", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
|
|
369
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: { isShow: "isShow", isTextArea: "isTextArea", setQuestion: "setQuestion", isDisabled: "isDisabled" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: TextBoxTypeAttrPipe, name: "textBoxTypeAttr" }] }); }
|
|
369
370
|
}
|
|
370
371
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionTextTemplateComponent, decorators: [{
|
|
371
372
|
type: Component,
|
|
372
|
-
args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>" }]
|
|
373
|
+
args: [{ selector: 'lib-question-text-template', template: "<div class=\"quastion\" [formGroup]=\"rForm\" [attr.id]=\"'question_'+fCtrls.id.value\"\n [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion\">\n <ng-container *ngIf=\"isTextArea == false else textAreaTemplate\">\n <input class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" [attr.type]=\"fCtrls.inputTypeId.value | textBoxTypeAttr\" >\n </ng-container>\n <ng-template #textAreaTemplate>\n <textarea class=\"form-control\" rows=\"5\" [formControl]=\"convertToFormControl(fCtrls.answer)\"\n [disabled]=\"isDisabled\" ></textarea>\n </ng-template>\n </div>" }]
|
|
373
374
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
374
375
|
type: Output
|
|
375
376
|
}], isShow: [{
|
|
@@ -457,11 +458,11 @@ class QuestionRadioButtonTemplateComponent {
|
|
|
457
458
|
return element;
|
|
458
459
|
}
|
|
459
460
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionRadioButtonTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
460
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionRadioButtonTemplateComponent, selector: "lib-question-radio-button-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
|
461
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionRadioButtonTemplateComponent, selector: "lib-question-radio-button-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
461
462
|
}
|
|
462
463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionRadioButtonTemplateComponent, decorators: [{
|
|
463
464
|
type: Component,
|
|
464
|
-
args: [{ selector: 'lib-question-radio-button-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n" }]
|
|
465
|
+
args: [{ selector: 'lib-question-radio-button-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n" }]
|
|
465
466
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
466
467
|
type: Output
|
|
467
468
|
}], isShow: [{
|
|
@@ -558,11 +559,11 @@ class QuestionCheckBoxTemplateComponent {
|
|
|
558
559
|
return element;
|
|
559
560
|
}
|
|
560
561
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCheckBoxTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
561
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionCheckBoxTemplateComponent, selector: "lib-question-check-box-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n\n <div class=\"checkbox-button-quastion\">\n <div class=\"form-check check-box-form-check\" *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"{{elemId}}__checkbox_{{i}}\" [disabled]=\"isDisabled\"\n (change)=\"onChangeAnswer(item.value ,$event)\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label \" for=\"{{elemId}}__checkbox_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
|
562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionCheckBoxTemplateComponent, selector: "lib-question-check-box-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n\n <div class=\"checkbox-button-quastion\">\n <div class=\"form-check check-box-form-check\" *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"{{elemId}}__checkbox_{{i}}\" [disabled]=\"isDisabled\"\n (change)=\"onChangeAnswer(item.value ,$event)\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label \" for=\"{{elemId}}__checkbox_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
562
563
|
}
|
|
563
564
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCheckBoxTemplateComponent, decorators: [{
|
|
564
565
|
type: Component,
|
|
565
|
-
args: [{ selector: 'lib-question-check-box-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n\n <div class=\"checkbox-button-quastion\">\n <div class=\"form-check check-box-form-check\" *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"{{elemId}}__checkbox_{{i}}\" [disabled]=\"isDisabled\"\n (change)=\"onChangeAnswer(item.value ,$event)\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label \" for=\"{{elemId}}__checkbox_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n" }]
|
|
566
|
+
args: [{ selector: 'lib-question-check-box-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n\n <div class=\"checkbox-button-quastion\">\n <div class=\"form-check check-box-form-check\" *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input type=\"checkbox\" class=\"form-check-input\" id=\"{{elemId}}__checkbox_{{i}}\" [disabled]=\"isDisabled\"\n (change)=\"onChangeAnswer(item.value ,$event)\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label \" for=\"{{elemId}}__checkbox_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n" }]
|
|
566
567
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
567
568
|
type: Output
|
|
568
569
|
}], isShow: [{
|
|
@@ -632,11 +633,11 @@ class QuestionDropdownTemplateComponent {
|
|
|
632
633
|
return element;
|
|
633
634
|
}
|
|
634
635
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
635
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionDropdownTemplateComponent, selector: "lib-question-dropdown-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"surveyQuestion?.surveyAnswers\" bindValue=\"answerId\" bindLabel=\"answerTitle\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"false\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }] }); }
|
|
636
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionDropdownTemplateComponent, selector: "lib-question-dropdown-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"surveyQuestion?.surveyAnswers\" bindValue=\"answerId\" bindLabel=\"answerTitle\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"false\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }] }); }
|
|
636
637
|
}
|
|
637
638
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownTemplateComponent, decorators: [{
|
|
638
639
|
type: Component,
|
|
639
|
-
args: [{ selector: 'lib-question-dropdown-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"surveyQuestion?.surveyAnswers\" bindValue=\"answerId\" bindLabel=\"answerTitle\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"false\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"] }]
|
|
640
|
+
args: [{ selector: 'lib-question-dropdown-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"surveyQuestion?.surveyAnswers\" bindValue=\"answerId\" bindLabel=\"answerTitle\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"false\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"] }]
|
|
640
641
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
641
642
|
type: Output
|
|
642
643
|
}], isShow: [{
|
|
@@ -723,11 +724,11 @@ class QuestionMatrixTemplateComponent {
|
|
|
723
724
|
return element;
|
|
724
725
|
}
|
|
725
726
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
726
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{surveyQuestion?.questionTitle}}\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\">\n {{answers.answerTitle}}\n </div>\n </div>\n\n <div class=\"matrix-row\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\">\n {{questionGroup.value.questionTitle}}\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-md-inline d-lg-none\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> {{answer.answerTitle}}</label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
|
|
727
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{surveyQuestion?.questionTitle}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\">\n {{answers.answerTitle}}\n </div>\n </div>\n\n <div class=\"matrix-row\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\">\n {{questionGroup.value.questionTitle}} \n </div>\n <div class=\"matrix-col\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-md-inline d-lg-none\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> {{answer.answerTitle}}</label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
|
|
727
728
|
}
|
|
728
729
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, decorators: [{
|
|
729
730
|
type: Component,
|
|
730
|
-
args: [{ selector: 'lib-question-matrix-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{surveyQuestion?.questionTitle}}\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\">\n {{answers.answerTitle}}\n </div>\n </div>\n\n <div class=\"matrix-row\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\">\n {{questionGroup.value.questionTitle}}\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-md-inline d-lg-none\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> {{answer.answerTitle}}</label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>" }]
|
|
731
|
+
args: [{ selector: 'lib-question-matrix-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" style=\" border-collapse: collapse;\"\n[ngClass]=\"{'d-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{surveyQuestion?.questionTitle}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"matrix-question\" [formGroup]=\"rForm\">\n <div class=\"matrix-table\" formArrayName=\"subQuestionArray\">\n <div class=\"matrix-head-row\">\n <div class=\"matrix-col\">\n </div>\n <div class=\"matrix-col\" *ngFor=\"let answers of surveyQuestion?.surveyAnswers\">\n {{answers.answerTitle}}\n </div>\n </div>\n\n <div class=\"matrix-row\"\n *ngFor=\"let questionGroup of fCtrls.subQuestionArray.controls ;let subQuestionIndex = index\"\n [ngClass]=\"{'invalid-question': questionGroup.controls.answer.invalid}\">\n <div class=\"matrix-col matrix-sub-quastion\">\n {{questionGroup.value.questionTitle}} \n </div>\n <div class=\"matrix-col\" *ngFor=\"let answer of surveyQuestion?.surveyAnswers;let answerIndex = index\">\n <div class=\"form-check form-check-radio form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" name=\"{{elemId}}__radio-btn-option_{{subQuestionIndex}}\"\n id=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\" (change)=\"onChangeAnswer(questionGroup.value ,answer)\"\n value=\"{{answer.answerId}}\" [checked]=\"answer.answerId == questionGroup.value.answer\">\n <label class=\"form-check-label d-md-inline d-lg-none\"\n for=\"{{elemId}}__radio-btn_{{subQuestionIndex}}_{{answerIndex}}\"> {{answer.answerTitle}}</label>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n</div>" }]
|
|
731
732
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
732
733
|
type: Output
|
|
733
734
|
}], isShow: [{
|
|
@@ -813,11 +814,11 @@ class QuestionBooleanTemplateComponent {
|
|
|
813
814
|
return element;
|
|
814
815
|
}
|
|
815
816
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionBooleanTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
816
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionBooleanTemplateComponent, selector: "lib-question-boolean-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
|
|
817
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionBooleanTemplateComponent, selector: "lib-question-boolean-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
817
818
|
}
|
|
818
819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionBooleanTemplateComponent, decorators: [{
|
|
819
820
|
type: Component,
|
|
820
|
-
args: [{ selector: 'lib-question-boolean-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n" }]
|
|
821
|
+
args: [{ selector: 'lib-question-boolean-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"radio-button-quastion\">\n <div class=\"form-check form-check-radio form-check-inline\" \n *ngFor=\"let item of fCtrls.answerArray.controls ;let i = index\">\n <input class=\"form-check-input\" type=\"radio\" (change)=\"onChangeAnswer(item.value)\" [disabled]=\"isDisabled\"\n name=\"{{elemId}}__radio-btn-option\" id=\"{{elemId}}__radio-btn_{{i}}\" [checked]=\"item.value.isSelected == true? true : null\">\n <label class=\"form-check-label\" for=\"{{elemId}}__radio-btn_{{i}}\">{{item.value.title}}</label>\n </div>\n </div>\n</div>\n" }]
|
|
821
822
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
822
823
|
type: Output
|
|
823
824
|
}], isShow: [{
|
|
@@ -897,11 +898,11 @@ class QuestionDropdownMultiTemplateComponent {
|
|
|
897
898
|
return element;
|
|
898
899
|
}
|
|
899
900
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownMultiTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
900
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionDropdownMultiTemplateComponent, selector: "lib-question-dropdown-multi-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"this.fCtrls.answerArray.value\" bindValue=\"id\" bindLabel=\"title\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"true\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }] }); }
|
|
901
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: QuestionDropdownMultiTemplateComponent, selector: "lib-question-dropdown-multi-template", inputs: { isShow: "isShow", isDisabled: "isDisabled", setQuestion: "setQuestion" }, outputs: { emitter: "emitter" }, ngImport: i0, template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"this.fCtrls.answerArray.value\" bindValue=\"id\" bindLabel=\"title\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"true\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }] }); }
|
|
901
902
|
}
|
|
902
903
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownMultiTemplateComponent, decorators: [{
|
|
903
904
|
type: Component,
|
|
904
|
-
args: [{ selector: 'lib-question-dropdown-multi-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"this.fCtrls.answerArray.value\" bindValue=\"id\" bindLabel=\"title\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"true\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"] }]
|
|
905
|
+
args: [{ selector: 'lib-question-dropdown-multi-template', template: "<div class=\"quastion\" [attr.id]=\"'question_'+fCtrls.id.value\" [ngClass]=\"{'invalid-question': fCtrls.answer.invalid , 'd-none':isShow != true}\">\n <h3 class=\"quastion-title \">\n {{fCtrls.title.value}}\n <span style=\"color: red;\" *ngIf=\"surveyQuestion.isRequired\">*</span>\n </h3>\n <div class=\"text-quastion text-quastion__dropdown\">\n <ng-select [items]=\"this.fCtrls.answerArray.value\" bindValue=\"id\" bindLabel=\"title\" class=\"form-control\"\n [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\" [multiple]=\"true\">\n </ng-select>\n </div>\n</div>\n", styles: [".text-quastion .form-control{padding:10px}\n"] }]
|
|
905
906
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: SurveyLibService }]; }, propDecorators: { emitter: [{
|
|
906
907
|
type: Output
|
|
907
908
|
}], isShow: [{
|
|
@@ -934,7 +935,10 @@ class SurveryLibComponent {
|
|
|
934
935
|
return QuestionTypeEnum;
|
|
935
936
|
}
|
|
936
937
|
get isFirstPage() {
|
|
937
|
-
|
|
938
|
+
if (this.showedSurveyPages.length > 0) {
|
|
939
|
+
return this.showedSurveyPages.findIndex(x => x == this.fCtrls.currentPageIndex.value) == 0;
|
|
940
|
+
}
|
|
941
|
+
return true;
|
|
938
942
|
}
|
|
939
943
|
get isLastPage() {
|
|
940
944
|
return this.showedSurveyPages.findIndex(x => x == this.fCtrls.currentPageIndex.value) == (this.showedSurveyPages.length - 1);
|