survery-lib 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/esm2022/lib/components/question-boolean-template/question-boolean-template.component.mjs +18 -17
  2. package/esm2022/lib/components/question-check-box-template/question-check-box-template.component.mjs +21 -19
  3. package/esm2022/lib/components/question-dropdown-template/question-dropdown-template.component.mjs +17 -16
  4. package/esm2022/lib/components/question-matrix-template/question-matrix-template.component.mjs +24 -19
  5. package/esm2022/lib/components/question-radio-button-template/question-radio-button-template.component.mjs +18 -17
  6. package/esm2022/lib/components/question-text-template/question-text-template.component.mjs +19 -18
  7. package/esm2022/lib/pipes/default-question-answer.pipe.mjs +2 -2
  8. package/esm2022/lib/pipes/default-question-answers.pipe.mjs +2 -2
  9. package/esm2022/lib/survery-lib.component.mjs +20 -11
  10. package/fesm2022/survery-lib.mjs +146 -132
  11. package/fesm2022/survery-lib.mjs.map +1 -1
  12. package/lib/components/question-boolean-template/question-boolean-template.component.d.ts +4 -4
  13. package/lib/components/question-check-box-template/question-check-box-template.component.d.ts +4 -4
  14. package/lib/components/question-dropdown-template/question-dropdown-template.component.d.ts +4 -4
  15. package/lib/components/question-matrix-template/question-matrix-template.component.d.ts +7 -6
  16. package/lib/components/question-radio-button-template/question-radio-button-template.component.d.ts +4 -4
  17. package/lib/components/question-text-template/question-text-template.component.d.ts +4 -4
  18. package/lib/pipes/default-question-answer.pipe.d.ts +1 -1
  19. package/lib/pipes/default-question-answers.pipe.d.ts +1 -1
  20. package/lib/survery-lib.component.d.ts +2 -0
  21. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { QuestionTypeEnum } from '../../../shared/enums/question-type.enum';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs';
4
+ import { debounceTime, filter, map } from 'rxjs';
5
5
  import { v4 as guidGenerator } from 'uuid';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ng-stack/forms";
8
- import * as i2 from "@angular/common";
8
+ import * as i2 from "../../services/survey-lib.service";
9
+ import * as i3 from "@angular/common";
9
10
  export class QuestionBooleanTemplateComponent {
10
11
  get fCtrls() {
11
12
  return this.rForm.controls;
@@ -36,15 +37,9 @@ export class QuestionBooleanTemplateComponent {
36
37
  this.isShow = value.isVisable;
37
38
  this.isDisabled = value.isReadOnly;
38
39
  }
39
- set setAnswer(defaultAnswer) {
40
- if (defaultAnswer != null) {
41
- this.fCtrls.answer.setValue(defaultAnswer.AnswerId);
42
- const groupIndex = this.fCtrls.answerArray.value.findIndex(x => x.id == defaultAnswer.AnswerId);
43
- this.fCtrls.answerArray.at(groupIndex).controls.isSelected.setValue(true);
44
- }
45
- }
46
- constructor(_formBuilder) {
40
+ constructor(_formBuilder, _surveyLibService) {
47
41
  this._formBuilder = _formBuilder;
42
+ this._surveyLibService = _surveyLibService;
48
43
  this.elemId = guidGenerator();
49
44
  this.emitter = new EventEmitter();
50
45
  this.isShow = true;
@@ -60,7 +55,7 @@ export class QuestionBooleanTemplateComponent {
60
55
  });
61
56
  }
62
57
  ngOnInit() {
63
- this.fCtrls.answer.valueChanges.pipe().pipe(debounceTime(500), distinctUntilChanged()).subscribe(value => {
58
+ this.fCtrls.answer.valueChanges.pipe().pipe(debounceTime(200)).subscribe(value => {
64
59
  const formValue = this.rForm.value;
65
60
  this.emitter.emit({
66
61
  QuestionId: formValue.id,
@@ -69,6 +64,14 @@ export class QuestionBooleanTemplateComponent {
69
64
  });
70
65
  });
71
66
  this.fCtrls.answer.setValue(null);
67
+ this._surveyLibService.surveyAnswersObsrv
68
+ .pipe(map(x => x.defaultAnswers.filter(x => x.QuestionId == this.fCtrls.id.value)))
69
+ .pipe(filter(x => x.length > 0)).pipe(map(x => x.at(0)))
70
+ .subscribe(answer => {
71
+ this.fCtrls.answer.setValue(answer.AnswerId);
72
+ const groupIndex = this.fCtrls.answerArray.value.findIndex(x => x.id == answer.AnswerId);
73
+ this.fCtrls.answerArray.at(groupIndex).controls.isSelected.setValue(true);
74
+ });
72
75
  }
73
76
  onChangeAnswer(item) {
74
77
  this.fCtrls.answer.setValue(item.id);
@@ -76,13 +79,13 @@ export class QuestionBooleanTemplateComponent {
76
79
  convertToFormControl(element) {
77
80
  return element;
78
81
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionBooleanTemplateComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
80
- 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", setAnswer: "setAnswer" }, 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: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionBooleanTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
83
+ 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"] }] }); }
81
84
  }
82
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionBooleanTemplateComponent, decorators: [{
83
86
  type: Component,
84
87
  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" }]
85
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { emitter: [{
88
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
86
89
  type: Output
87
90
  }], isShow: [{
88
91
  type: Input
@@ -90,7 +93,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
90
93
  type: Input
91
94
  }], setQuestion: [{
92
95
  type: Input
93
- }], setAnswer: [{
94
- type: Input
95
96
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS9xdWVzdGlvbi1ib29sZWFuLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1ib29sZWFuLXRlbXBsYXRlL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRCxPQUFPLEVBQUUsRUFBRSxJQUFJLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQVMzQyxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQU9ELElBQWEsV0FBVyxDQUFDLEtBQXdCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3BCLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVTtZ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QUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUNqQyxNQUFNLEVBQUUsS0FBSzthQUNkLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBdUQ7UUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBWTtRQUMvQixPQUFPLE9BQXNCLENBQUM7SUFDaEMsQ0FBQzs4R0FyRlUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0Msa05DbEI3QyxpMUJBYUE7OzJGREthLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSwrQkFBK0I7a0dBaUIvQixPQUFPO3NCQUFoQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBMkJPLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvblJhZGlvQnV0dG9uVGVtcGxhdGVGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9xdWVzdGlvbi1yYWRpby1idXR0b24tdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25BbnN3ZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcXVlc3Rpb24tYW5zd2VyLm1vZGVsJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UsIFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtLWludGVyZmFjZXMvcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IHY0IGFzIGd1aWRHZW5lcmF0b3IgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFN1cnZleUFuc3dlckR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1hbnN3ZXIuZHRvJztcbmltcG9ydCB7IERlZmF1bHRRdWVzdGlvbkFuc3dlckR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL2RlZmF1bHQtcXVlc3Rpb24tYW5zd2Vycy5kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1ib29sZWFuLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZWxlbUlkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgc3VydmV5UXVlc3Rpb246IFN1cnZleVF1ZXN0aW9uRHRvO1xuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZT47XG5cbiAgZ2V0IGZDdHJscygpIHtcbiAgICByZXR1cm4gdGhpcy5yRm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCBxdWVzdGlvblR5cGVFbnVtKCkge1xuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xuICB9XG5cbiAgQE91dHB1dCgpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXN0aW9uQW5zd2VyTW9kZWw+KCk7XG5cbiAgQElucHV0KCkgaXNTaG93OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCBzZXRRdWVzdGlvbih2YWx1ZTogU3VydmV5UXVlc3Rpb25EdG8pIHtcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5yRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGlkOiB2YWx1ZS5xdWVzdGlvbklkLFxuICAgICAgbmFtZTogdmFsdWUucXVlc3Rpb25OYW1lLFxuICAgICAgdGl0bGU6IHZhbHVlLnF1ZXN0aW9uVGl0bGUsXG4gICAgICB0eXBlSWQ6IHZhbHVlLnF1ZXN0aW9uVHlwZUlkLFxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlLnF1ZXN0aW9uRGVzY3JpcHRpb25cbiAgICB9KTtcblxuICAgIHZhbHVlLnN1cnZleUFuc3dlcnMuZm9yRWFjaChzdXJ2ZXJ5QW5zd2VyID0+IHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8QW5zd2VyQ2hpbGRPZlF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgICBpZDogW3N1cnZlcnlBbnN3ZXIuYW5zd2VySWRdLFxuICAgICAgICB0aXRsZTogW3N1cnZlcnlBbnN3ZXIuYW5zd2VyVGl0bGVdLFxuICAgICAgICBpc1NlbGVjdGVkOiBbZmFsc2VdXG4gICAgICB9KSlcbiAgICB9KVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdmFsdWUuaXNSZWFkT25seTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZXRBbnN3ZXIoZGVmYXVsdEFuc3dlcjogRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvKSB7XG4gICAgaWYgKGRlZmF1bHRBbnN3ZXIgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKGRlZmF1bHRBbnN3ZXIuQW5zd2VySWQpO1xuXG4gICAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5mQ3RybHMuYW5zd2VyQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5pZCA9PSBkZWZhdWx0QW5zd2VyLkFuc3dlcklkKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LmF0KGdyb3VwSW5kZXgpLmNvbnRyb2xzLmlzU2VsZWN0ZWQuc2V0VmFsdWUodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIG5hbWU6IFtudWxsXSxcbiAgICAgIHRpdGxlOiBbbnVsbF0sXG4gICAgICB0eXBlSWQ6IFtudWxsXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbbnVsbF0sXG4gICAgICBhbnN3ZXI6IFtudWxsXSxcbiAgICAgIGFuc3dlckFycmF5OiB0aGlzLl9mb3JtQnVpbGRlci5hcnJheTxBbnN3ZXJDaGlsZE9mUXVlc3Rpb25Cb29sZWFuVGVtcGxhdGVGb3JtSW50ZXJmYWNlPihbXSlcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZkN0cmxzLmFuc3dlci52YWx1ZUNoYW5nZXMucGlwZSgpLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnJGb3JtLnZhbHVlO1xuICAgICAgdGhpcy5lbWl0dGVyLmVtaXQoe1xuICAgICAgICBRdWVzdGlvbklkOiBmb3JtVmFsdWUuaWQsXG4gICAgICAgIElzVmFsaWQ6IHRoaXMuZkN0cmxzLmFuc3dlci52YWxpZCxcbiAgICAgICAgQW5zd2VyOiB2YWx1ZVxuICAgICAgfSlcbiAgICB9KTtcblxuICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIG9uQ2hhbmdlQW5zd2VyKGl0ZW06IEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UpIHtcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUoaXRlbS5pZCk7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInF1YXN0aW9uXCIgW2F0dHIuaWRdPVwiJ3F1ZXN0aW9uXycrZkN0cmxzLmlkLnZhbHVlXCIgIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1xdWVzdGlvbic6IGZDdHJscy5hbnN3ZXIuaW52YWxpZCAgLCAnZC1ub25lJzppc1Nob3cgIT0gdHJ1ZX1cIj5cbiAgICA8aDMgY2xhc3M9XCJxdWFzdGlvbi10aXRsZSBcIj5cbiAgICAgICAge3tmQ3RybHMudGl0bGUudmFsdWV9fVxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWJ1dHRvbi1xdWFzdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLXJhZGlvIGZvcm0tY2hlY2staW5saW5lXCIgXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZDdHJscy5hbnN3ZXJBcnJheS5jb250cm9scyA7bGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIChjaGFuZ2UpPVwib25DaGFuZ2VBbnN3ZXIoaXRlbS52YWx1ZSlcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bi1vcHRpb25cIiBpZD1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bl97e2l9fVwiIFtjaGVja2VkXT1cIml0ZW0udmFsdWUuaXNTZWxlY3RlZCA9PSB0cnVlPyB0cnVlIDogbnVsbFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bl97e2l9fVwiPnt7aXRlbS52YWx1ZS50aXRsZX19PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdXJ2ZXJ5LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS9xdWVzdGlvbi1ib29sZWFuLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1ib29sZWFuLXRlbXBsYXRlL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHNUUsT0FBTyxFQUFFLFlBQVksRUFBd0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd2RSxPQUFPLEVBQUUsRUFBRSxJQUFJLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFVM0MsTUFBTSxPQUFPLGdDQUFnQztJQUszQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFPRCxJQUFhLFdBQVcsQ0FBQyxLQUF3QjtRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNwQixFQUFFLEVBQUUsS0FBSyxD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QkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVPLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvblJhZGlvQnV0dG9uVGVtcGxhdGVGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9xdWVzdGlvbi1yYWRpby1idXR0b24tdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25BbnN3ZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcXVlc3Rpb24tYW5zd2VyLm1vZGVsJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbnN3ZXJDaGlsZE9mUXVlc3Rpb25Cb29sZWFuVGVtcGxhdGVGb3JtSW50ZXJmYWNlLCBRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0BuZy1zdGFjay9mb3Jtcyc7XG5pbXBvcnQgeyB2NCBhcyBndWlkR2VuZXJhdG9yIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBTdXJ2ZXlBbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktYW5zd2VyLmR0byc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IFN1cnZleUxpYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdXJ2ZXktbGliLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1ib29sZWFuLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tYm9vbGVhbi10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZWxlbUlkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgc3VydmV5UXVlc3Rpb246IFN1cnZleVF1ZXN0aW9uRHRvO1xuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZT47XG5cbiAgZ2V0IGZDdHJscygpIHtcbiAgICByZXR1cm4gdGhpcy5yRm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCBxdWVzdGlvblR5cGVFbnVtKCkge1xuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xuICB9XG5cbiAgQE91dHB1dCgpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXN0aW9uQW5zd2VyTW9kZWw+KCk7XG5cbiAgQElucHV0KCkgaXNTaG93OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCBzZXRRdWVzdGlvbih2YWx1ZTogU3VydmV5UXVlc3Rpb25EdG8pIHtcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5yRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGlkOiB2YWx1ZS5xdWVzdGlvbklkLFxuICAgICAgbmFtZTogdmFsdWUucXVlc3Rpb25OYW1lLFxuICAgICAgdGl0bGU6IHZhbHVlLnF1ZXN0aW9uVGl0bGUsXG4gICAgICB0eXBlSWQ6IHZhbHVlLnF1ZXN0aW9uVHlwZUlkLFxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlLnF1ZXN0aW9uRGVzY3JpcHRpb25cbiAgICB9KTtcblxuICAgIHZhbHVlLnN1cnZleUFuc3dlcnMuZm9yRWFjaChzdXJ2ZXJ5QW5zd2VyID0+IHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8QW5zd2VyQ2hpbGRPZlF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgICBpZDogW3N1cnZlcnlBbnN3ZXIuYW5zd2VySWRdLFxuICAgICAgICB0aXRsZTogW3N1cnZlcnlBbnN3ZXIuYW5zd2VyVGl0bGVdLFxuICAgICAgICBpc1NlbGVjdGVkOiBbZmFsc2VdXG4gICAgICB9KSlcbiAgICB9KVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdmFsdWUuaXNSZWFkT25seTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciAgLCBwcml2YXRlIF9zdXJ2ZXlMaWJTZXJ2aWNlOlN1cnZleUxpYlNlcnZpY2UpIHtcbiAgICB0aGlzLnJGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25Cb29sZWFuVGVtcGxhdGVGb3JtSW50ZXJmYWNlPih7XG4gICAgICBpZDogW251bGxdLFxuICAgICAgbmFtZTogW251bGxdLFxuICAgICAgdGl0bGU6IFtudWxsXSxcbiAgICAgIHR5cGVJZDogW251bGxdLFxuICAgICAgZGVzY3JpcHRpb246IFtudWxsXSxcbiAgICAgIGFuc3dlcjogW251bGxdLFxuICAgICAgYW5zd2VyQXJyYXk6IHRoaXMuX2Zvcm1CdWlsZGVyLmFycmF5PEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KFtdKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnZhbHVlQ2hhbmdlcy5waXBlKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XG4gICAgICB0aGlzLmVtaXR0ZXIuZW1pdCh7XG4gICAgICAgIFF1ZXN0aW9uSWQ6IGZvcm1WYWx1ZS5pZCxcbiAgICAgICAgSXNWYWxpZDogdGhpcy5mQ3RybHMuYW5zd2VyLnZhbGlkLFxuICAgICAgICBBbnN3ZXI6IHZhbHVlXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKG51bGwpO1xuXG4gICAgdGhpcy5fc3VydmV5TGliU2VydmljZS5zdXJ2ZXlBbnN3ZXJzT2JzcnZcbiAgICAucGlwZShtYXAoeD0+IHguZGVmYXVsdEFuc3dlcnMuZmlsdGVyKHg9PnguUXVlc3Rpb25JZCA9PSB0aGlzLmZDdHJscy5pZC52YWx1ZSkpKVxuICAgIC5waXBlKGZpbHRlcih4PT54Lmxlbmd0aCAgPiAwKSkucGlwZShtYXAoeD0+IHguYXQoMCkpKVxuICAgIC5zdWJzY3JpYmUoYW5zd2VyPT57XG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUoYW5zd2VyLkFuc3dlcklkKTtcblxuICAgICAgY29uc3QgZ3JvdXBJbmRleCA9IHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHguaWQgPT0gYW5zd2VyLkFuc3dlcklkKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LmF0KGdyb3VwSW5kZXgpLmNvbnRyb2xzLmlzU2VsZWN0ZWQuc2V0VmFsdWUodHJ1ZSk7XG4gICAgfSlcbiAgfVxuXG4gIG9uQ2hhbmdlQW5zd2VyKGl0ZW06IEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UpIHtcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUoaXRlbS5pZCk7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInF1YXN0aW9uXCIgW2F0dHIuaWRdPVwiJ3F1ZXN0aW9uXycrZkN0cmxzLmlkLnZhbHVlXCIgIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1xdWVzdGlvbic6IGZDdHJscy5hbnN3ZXIuaW52YWxpZCAgLCAnZC1ub25lJzppc1Nob3cgIT0gdHJ1ZX1cIj5cbiAgICA8aDMgY2xhc3M9XCJxdWFzdGlvbi10aXRsZSBcIj5cbiAgICAgICAge3tmQ3RybHMudGl0bGUudmFsdWV9fVxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInJhZGlvLWJ1dHRvbi1xdWFzdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLXJhZGlvIGZvcm0tY2hlY2staW5saW5lXCIgXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZDdHJscy5hbnN3ZXJBcnJheS5jb250cm9scyA7bGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJyYWRpb1wiIChjaGFuZ2UpPVwib25DaGFuZ2VBbnN3ZXIoaXRlbS52YWx1ZSlcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bi1vcHRpb25cIiBpZD1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bl97e2l9fVwiIFtjaGVja2VkXT1cIml0ZW0udmFsdWUuaXNTZWxlY3RlZCA9PSB0cnVlPyB0cnVlIDogbnVsbFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bl97e2l9fVwiPnt7aXRlbS52YWx1ZS50aXRsZX19PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,10 +1,12 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { QuestionTypeEnum } from '../../../shared/enums/question-type.enum';
4
+ import { debounceTime, filter, map } from 'rxjs';
4
5
  import { v4 as guidGenerator } from 'uuid';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@ng-stack/forms";
7
- import * as i2 from "@angular/common";
8
+ import * as i2 from "../../services/survey-lib.service";
9
+ import * as i3 from "@angular/common";
8
10
  export class QuestionCheckBoxTemplateComponent {
9
11
  get fCtrls() {
10
12
  return this.rForm.controls;
@@ -35,18 +37,9 @@ export class QuestionCheckBoxTemplateComponent {
35
37
  this.isShow = value.isVisable;
36
38
  this.isDisabled = value.isReadOnly;
37
39
  }
38
- set setAnswer(defaultAnswer) {
39
- if (defaultAnswer != null) {
40
- const distinctArray = defaultAnswer.AnswerIdArr.filter((n, i) => defaultAnswer.AnswerIdArr.indexOf(n) === i);
41
- this.fCtrls.answer.setValue(distinctArray);
42
- defaultAnswer.AnswerIdArr.forEach(answerId => {
43
- const groupIndex = this.fCtrls.answerArray.value.findIndex(x => x.id == answerId);
44
- this.fCtrls.answerArray.at(groupIndex).controls.isSelected.setValue(true);
45
- });
46
- }
47
- }
48
- constructor(_formBuilder) {
40
+ constructor(_formBuilder, _surveyLibService) {
49
41
  this._formBuilder = _formBuilder;
42
+ this._surveyLibService = _surveyLibService;
50
43
  this.elemId = guidGenerator();
51
44
  this.emitter = new EventEmitter();
52
45
  this.isShow = true;
@@ -62,7 +55,7 @@ export class QuestionCheckBoxTemplateComponent {
62
55
  });
63
56
  }
64
57
  ngOnInit() {
65
- this.fCtrls.answer.valueChanges.subscribe(value => {
58
+ this.fCtrls.answer.valueChanges.pipe().pipe(debounceTime(200)).subscribe(value => {
66
59
  const formValue = this.rForm.value;
67
60
  this.emitter.emit({
68
61
  QuestionId: formValue.id,
@@ -71,6 +64,17 @@ export class QuestionCheckBoxTemplateComponent {
71
64
  });
72
65
  });
73
66
  this.fCtrls.answer.setValue(null);
67
+ this._surveyLibService.surveyAnswersObsrv
68
+ .pipe(map(x => x.defaultAnswers.filter(x => x.QuestionId == this.fCtrls.id.value)))
69
+ .pipe(filter(x => x.length > 0)).pipe(map(x => x.at(0)))
70
+ .subscribe(answer => {
71
+ const distinctArray = answer.AnswerIdArr.filter((n, i) => answer.AnswerIdArr.indexOf(n) === i);
72
+ this.fCtrls.answer.setValue(distinctArray);
73
+ answer.AnswerIdArr.forEach(answerId => {
74
+ const groupIndex = this.fCtrls.answerArray.value.findIndex(x => x.id == answerId);
75
+ this.fCtrls.answerArray.at(groupIndex).controls.isSelected.setValue(true);
76
+ });
77
+ });
74
78
  }
75
79
  onChangeAnswer(item, event) {
76
80
  var answerArr = this.fCtrls.answer.value || [];
@@ -86,13 +90,13 @@ export class QuestionCheckBoxTemplateComponent {
86
90
  convertToFormControl(element) {
87
91
  return element;
88
92
  }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCheckBoxTemplateComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
90
- 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", setAnswer: "setAnswer" }, 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: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCheckBoxTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
94
+ 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"] }] }); }
91
95
  }
92
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionCheckBoxTemplateComponent, decorators: [{
93
97
  type: Component,
94
98
  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" }]
95
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { emitter: [{
99
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
96
100
  type: Output
97
101
  }], isShow: [{
98
102
  type: Input
@@ -100,7 +104,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
100
104
  type: Input
101
105
  }], setQuestion: [{
102
106
  type: Input
103
- }], setAnswer: [{
104
- type: Input
105
107
  }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSzVFLE9BQU8sRUFBRSxFQUFFLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBVTNDLE1BQU0sT0FBTyxpQ0FBaUM7SUFLNUMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBTUQsSUFBYSxXQUFXLENBQUMsS0FBd0I7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDcEIsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUN4QixLQUFLLEVB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QyxTQUFTOytCQUNFLGlDQUFpQztrR0FpQmpDLE9BQU87c0JBQWhCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ08sV0FBVztzQkFBdkIsS0FBSztnQkEyQk8sU0FBUztzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0BuZy1zdGFjay9mb3Jtcyc7XG5pbXBvcnQgeyBTdXJ2ZXlBbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktYW5zd2VyLmR0byc7XG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1xdWVzdGlvbi5kdG8nO1xuaW1wb3J0IHsgUXVlc3Rpb25UeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgQW5zd2VyQ2hpbGRPZlF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUZvcm1JbnRlcmZhY2UsXG4gICBRdWVzdGlvbkNoZWNrQm94VGVtcGxhdGVGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25SYWRpb0J1dHRvblRlbXBsYXRlRm9ybUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtLWludGVyZmFjZXMvcXVlc3Rpb24tcmFkaW8tYnV0dG9uLXRlbXBsYXRlLmZvcm0taW50ZXJmYWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIGd1aWRHZW5lcmF0b3IgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9uLWNoZWNrLWJveC10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uLWNoZWNrLWJveC10ZW1wbGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGVsZW1JZCA9IGd1aWRHZW5lcmF0b3IoKSBhcyBzdHJpbmc7XG4gIHN1cnZleVF1ZXN0aW9uOiBTdXJ2ZXlRdWVzdGlvbkR0bztcbiAgckZvcm06IEZvcm1Hcm91cDxRdWVzdGlvbkNoZWNrQm94VGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcblxuICBnZXQgZkN0cmxzKCkge1xuICAgIHJldHVybiB0aGlzLnJGb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgZ2V0IHF1ZXN0aW9uVHlwZUVudW0oKSB7XG4gICAgcmV0dXJuIFF1ZXN0aW9uVHlwZUVudW07XG4gIH1cblxuICBAT3V0cHV0KCkgZW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlc3Rpb25BbnN3ZXJNb2RlbD4oKTtcblxuICBASW5wdXQoKSBpc1Nob3c6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzZXRRdWVzdGlvbih2YWx1ZTogU3VydmV5UXVlc3Rpb25EdG8pIHtcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5yRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGlkOiB2YWx1ZS5xdWVzdGlvbklkLFxuICAgICAgbmFtZTogdmFsdWUucXVlc3Rpb25OYW1lLFxuICAgICAgdGl0bGU6IHZhbHVlLnF1ZXN0aW9uVGl0bGUsXG4gICAgICB0eXBlSWQ6IHZhbHVlLnF1ZXN0aW9uVHlwZUlkLFxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlLnF1ZXN0aW9uRGVzY3JpcHRpb25cbiAgICB9KTtcblxuICAgIHZhbHVlLnN1cnZleUFuc3dlcnMuZm9yRWFjaChzdXJ2ZXJ5QW5zd2VyID0+IHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LnB1c2godGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8QW5zd2VyQ2hpbGRPZlF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KHtcbiAgICAgICAgaWQ6IFtzdXJ2ZXJ5QW5zd2VyLmFuc3dlcklkXSxcbiAgICAgICAgdGl0bGU6IFtzdXJ2ZXJ5QW5zd2VyLmFuc3dlclRpdGxlXSxcbiAgICAgICAgaXNTZWxlY3RlZDogW2ZhbHNlXVxuICAgICAgfSkpXG4gICAgfSlcblxuICAgIGlmICh2YWx1ZS5pc1JlcXVpcmVkID09IHRydWUpIHtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICB0aGlzLmZDdHJscy5hbnN3ZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHRoaXMuaXNTaG93ID0gdmFsdWUuaXNWaXNhYmxlO1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IHZhbHVlLmlzUmVhZE9ubHk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2V0QW5zd2VyKGRlZmF1bHRBbnN3ZXI6IERlZmF1bHRRdWVzdGlvbkFuc3dlckR0bykge1xuICAgIGlmIChkZWZhdWx0QW5zd2VyICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGRpc3RpbmN0QXJyYXkgPSBkZWZhdWx0QW5zd2VyLkFuc3dlcklkQXJyLmZpbHRlcigobiwgaSkgPT4gZGVmYXVsdEFuc3dlci5BbnN3ZXJJZEFyci5pbmRleE9mKG4pID09PSBpKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShkaXN0aW5jdEFycmF5KTtcblxuICAgICAgZGVmYXVsdEFuc3dlci5BbnN3ZXJJZEFyci5mb3JFYWNoKGFuc3dlcklkPT57XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPSB0aGlzLmZDdHJscy5hbnN3ZXJBcnJheS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4LmlkID09IGFuc3dlcklkKTtcbiAgICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyQXJyYXkuYXQoZ3JvdXBJbmRleCkuY29udHJvbHMuaXNTZWxlY3RlZC5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgIH0pOyAgIFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkNoZWNrQm94VGVtcGxhdGVGb3JtSW50ZXJmYWNlPih7XG4gICAgICBpZDogW251bGxdLFxuICAgICAgbmFtZTogW251bGxdLFxuICAgICAgdGl0bGU6IFtudWxsXSxcbiAgICAgIHR5cGVJZDogW251bGxdLFxuICAgICAgZGVzY3JpcHRpb246IFtudWxsXSxcbiAgICAgIGFuc3dlcjogW251bGxdICxcbiAgICAgIGFuc3dlckFycmF5OiB0aGlzLl9mb3JtQnVpbGRlci5hcnJheTxBbnN3ZXJDaGlsZE9mUXVlc3Rpb25DaGVja0JveFRlbXBsYXRlRm9ybUludGVyZmFjZT4oW10pXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnJGb3JtLnZhbHVlO1xuICAgICAgdGhpcy5lbWl0dGVyLmVtaXQoe1xuICAgICAgICBRdWVzdGlvbklkOiBmb3JtVmFsdWUuaWQsXG4gICAgICAgIElzVmFsaWQ6IHRoaXMuZkN0cmxzLmFuc3dlci52YWxpZCxcbiAgICAgICAgQW5zd2VyOiB2YWx1ZVxuICAgICAgfSlcbiAgICB9KTtcblxuICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIG9uQ2hhbmdlQW5zd2VyKGl0ZW06IEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UsIGV2ZW50OiBFdmVudCkge1xuICAgIHZhciBhbnN3ZXJBcnI6IG51bWJlcltdID0gdGhpcy5mQ3RybHMuYW5zd2VyLnZhbHVlIHx8IFtdO1xuXG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgYW55KS5jaGVja2VkID09IHRydWUpIHtcbiAgICAgIGFuc3dlckFyci5wdXNoKGl0ZW0uaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbnN3ZXJBcnIgPSBhbnN3ZXJBcnIuZmlsdGVyKHggPT4geCAhPSBpdGVtLmlkKTtcbiAgICB9XG5cbiAgICBhbnN3ZXJBcnIgPSBhbnN3ZXJBcnIubGVuZ3RoID09IDAgPyBbXSA6IGFuc3dlckFycjtcbiAgICB0aGlzLmZDdHJscy5hbnN3ZXIuc2V0VmFsdWUoYW5zd2VyQXJyKTtcbiAgfVxuXG4gIGNvbnZlcnRUb0Zvcm1Db250cm9sKGVsZW1lbnQ6IGFueSkge1xuICAgIHJldHVybiBlbGVtZW50IGFzIEZvcm1Db250cm9sO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicXVhc3Rpb25cIiBbYXR0ci5pZF09XCIncXVlc3Rpb25fJytmQ3RybHMuaWQudmFsdWVcIiAgW25nQ2xhc3NdPVwieydpbnZhbGlkLXF1ZXN0aW9uJzogZkN0cmxzLmFuc3dlci5pbnZhbGlkICAsICdkLW5vbmUnOmlzU2hvdyAhPSB0cnVlfVwiPlxuICAgIDxoMyBjbGFzcz1cInF1YXN0aW9uLXRpdGxlIFwiPlxuICAgICAgICB7e2ZDdHJscy50aXRsZS52YWx1ZX19XG4gICAgPC9oMz5cblxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1idXR0b24tcXVhc3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgY2hlY2stYm94LWZvcm0tY2hlY2tcIiAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZkN0cmxzLmFuc3dlckFycmF5LmNvbnRyb2xzIDtsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgaWQ9XCJ7e2VsZW1JZH19X19jaGVja2JveF97e2l9fVwiICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZUFuc3dlcihpdGVtLnZhbHVlICwkZXZlbnQpXCIgW2NoZWNrZWRdPVwiaXRlbS52YWx1ZS5pc1NlbGVjdGVkID09IHRydWU/IHRydWUgOiBudWxsXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsICBcIiBmb3I9XCJ7e2VsZW1JZH19X19jaGVja2JveF97e2l9fVwiPnt7aXRlbS52YWx1ZS50aXRsZX19PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUvcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSTVFLE9BQU8sRUFBRSxZQUFZLEVBQXdCLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsSUFBSSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBVzNDLE1BQU0sT0FBTyxpQ0FBaUM7SUFLNUMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBTUQsSUFBYSxXQUFXLENBQUMsS0FBd0I7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDcEIsRUFBRSxF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QUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUV6RCxJQUFLLEtBQUssQ0FBQyxNQUFjLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTtZQUN6QyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0wsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQVk7UUFDL0IsT0FBTyxPQUFzQixDQUFDO0lBQ2hDLENBQUM7OEdBakdVLGlDQUFpQztrR0FBakMsaUNBQWlDLDRMQ3JCOUMsa3lCQWFBOzsyRkRRYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsaUNBQWlDO2lJQWlCakMsT0FBTztzQkFBaEIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleUFuc3dlckR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1hbnN3ZXIuZHRvJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBBbnN3ZXJDaGlsZE9mUXVlc3Rpb25DaGVja0JveFRlbXBsYXRlRm9ybUludGVyZmFjZSxcbiAgIFF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLWNoZWNrLWJveC10ZW1wbGF0ZS5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBRdWVzdGlvblJhZGlvQnV0dG9uVGVtcGxhdGVGb3JtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0taW50ZXJmYWNlcy9xdWVzdGlvbi1yYWRpby1idXR0b24tdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIGd1aWRHZW5lcmF0b3IgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IEFuc3dlckNoaWxkT2ZRdWVzdGlvbkJvb2xlYW5UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLWJvb2xlYW4tdGVtcGxhdGUuZm9ybS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3VydmV5TGliU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N1cnZleS1saWIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbi1jaGVjay1ib3gtdGVtcGxhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tY2hlY2stYm94LXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25DaGVja0JveFRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZWxlbUlkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgc3VydmV5UXVlc3Rpb246IFN1cnZleVF1ZXN0aW9uRHRvO1xuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+O1xuXG4gIGdldCBmQ3RybHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuckZvcm0uY29udHJvbHM7XG4gIH1cblxuICBnZXQgcXVlc3Rpb25UeXBlRW51bSgpIHtcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxRdWVzdGlvbkFuc3dlck1vZGVsPigpO1xuXG4gIEBJbnB1dCgpIGlzU2hvdzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xuICAgIHRoaXMuc3VydmV5UXVlc3Rpb24gPSB2YWx1ZTtcbiAgICB0aGlzLnJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgaWQ6IHZhbHVlLnF1ZXN0aW9uSWQsXG4gICAgICBuYW1lOiB2YWx1ZS5xdWVzdGlvbk5hbWUsXG4gICAgICB0aXRsZTogdmFsdWUucXVlc3Rpb25UaXRsZSxcbiAgICAgIHR5cGVJZDogdmFsdWUucXVlc3Rpb25UeXBlSWQsXG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWUucXVlc3Rpb25EZXNjcmlwdGlvblxuICAgIH0pO1xuXG4gICAgdmFsdWUuc3VydmV5QW5zd2Vycy5mb3JFYWNoKHN1cnZlcnlBbnN3ZXIgPT4ge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyQXJyYXkucHVzaCh0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxBbnN3ZXJDaGlsZE9mUXVlc3Rpb25DaGVja0JveFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgICBpZDogW3N1cnZlcnlBbnN3ZXIuYW5zd2VySWRdLFxuICAgICAgICB0aXRsZTogW3N1cnZlcnlBbnN3ZXIuYW5zd2VyVGl0bGVdLFxuICAgICAgICBpc1NlbGVjdGVkOiBbZmFsc2VdXG4gICAgICB9KSlcbiAgICB9KVxuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdmFsdWUuaXNSZWFkT25seTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciAscHJpdmF0ZSAgX3N1cnZleUxpYlNlcnZpY2UgOlN1cnZleUxpYlNlcnZpY2UpIHtcbiAgICB0aGlzLnJGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25DaGVja0JveFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIG5hbWU6IFtudWxsXSxcbiAgICAgIHRpdGxlOiBbbnVsbF0sXG4gICAgICB0eXBlSWQ6IFtudWxsXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbbnVsbF0sXG4gICAgICBhbnN3ZXI6IFtudWxsXSAsXG4gICAgICBhbnN3ZXJBcnJheTogdGhpcy5fZm9ybUJ1aWxkZXIuYXJyYXk8QW5zd2VyQ2hpbGRPZlF1ZXN0aW9uQ2hlY2tCb3hUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KFtdKVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnZhbHVlQ2hhbmdlcy5waXBlKCkucGlwZShkZWJvdW5jZVRpbWUoMjAwKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XG4gICAgICB0aGlzLmVtaXR0ZXIuZW1pdCh7XG4gICAgICAgIFF1ZXN0aW9uSWQ6IGZvcm1WYWx1ZS5pZCxcbiAgICAgICAgSXNWYWxpZDogdGhpcy5mQ3RybHMuYW5zd2VyLnZhbGlkLFxuICAgICAgICBBbnN3ZXI6IHZhbHVlXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKG51bGwpO1xuXG4gICAgdGhpcy5fc3VydmV5TGliU2VydmljZS5zdXJ2ZXlBbnN3ZXJzT2JzcnZcbiAgICAucGlwZShtYXAoeD0+IHguZGVmYXVsdEFuc3dlcnMuZmlsdGVyKHg9PnguUXVlc3Rpb25JZCA9PSB0aGlzLmZDdHJscy5pZC52YWx1ZSkpKVxuICAgIC5waXBlKGZpbHRlcih4PT54Lmxlbmd0aCAgPiAwKSkucGlwZShtYXAoeD0+IHguYXQoMCkpKVxuICAgIC5zdWJzY3JpYmUoYW5zd2VyPT57XG4gICAgICBjb25zdCBkaXN0aW5jdEFycmF5ID0gYW5zd2VyLkFuc3dlcklkQXJyLmZpbHRlcigobiwgaSkgPT4gYW5zd2VyLkFuc3dlcklkQXJyLmluZGV4T2YobikgPT09IGkpO1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKGRpc3RpbmN0QXJyYXkpO1xuXG4gICAgICBhbnN3ZXIuQW5zd2VySWRBcnIuZm9yRWFjaChhbnN3ZXJJZD0+e1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5mQ3RybHMuYW5zd2VyQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5pZCA9PSBhbnN3ZXJJZCk7XG4gICAgICAgIHRoaXMuZkN0cmxzLmFuc3dlckFycmF5LmF0KGdyb3VwSW5kZXgpLmNvbnRyb2xzLmlzU2VsZWN0ZWQuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICB9KTsgICBcbiAgICB9KVxuICB9XG5cbiAgb25DaGFuZ2VBbnN3ZXIoaXRlbTogQW5zd2VyQ2hpbGRPZlF1ZXN0aW9uQm9vbGVhblRlbXBsYXRlRm9ybUludGVyZmFjZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgdmFyIGFuc3dlckFycjogbnVtYmVyW10gPSB0aGlzLmZDdHJscy5hbnN3ZXIudmFsdWUgfHwgW107XG5cbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBhbnkpLmNoZWNrZWQgPT0gdHJ1ZSkge1xuICAgICAgYW5zd2VyQXJyLnB1c2goaXRlbS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuc3dlckFyciA9IGFuc3dlckFyci5maWx0ZXIoeCA9PiB4ICE9IGl0ZW0uaWQpO1xuICAgIH1cblxuICAgIGFuc3dlckFyciA9IGFuc3dlckFyci5sZW5ndGggPT0gMCA/IFtdIDogYW5zd2VyQXJyO1xuICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShhbnN3ZXJBcnIpO1xuICB9XG5cbiAgY29udmVydFRvRm9ybUNvbnRyb2woZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWFzdGlvblwiIFthdHRyLmlkXT1cIidxdWVzdGlvbl8nK2ZDdHJscy5pZC52YWx1ZVwiICBbbmdDbGFzc109XCJ7J2ludmFsaWQtcXVlc3Rpb24nOiBmQ3RybHMuYW5zd2VyLmludmFsaWQgICwgJ2Qtbm9uZSc6aXNTaG93ICE9IHRydWV9XCI+XG4gICAgPGgzIGNsYXNzPVwicXVhc3Rpb24tdGl0bGUgXCI+XG4gICAgICAgIHt7ZkN0cmxzLnRpdGxlLnZhbHVlfX1cbiAgICA8L2gzPlxuXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWJ1dHRvbi1xdWFzdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBjaGVjay1ib3gtZm9ybS1jaGVja1wiICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmQ3RybHMuYW5zd2VyQXJyYXkuY29udHJvbHMgO2xldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBpZD1cInt7ZWxlbUlkfX1fX2NoZWNrYm94X3t7aX19XCIgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlQW5zd2VyKGl0ZW0udmFsdWUgLCRldmVudClcIiBbY2hlY2tlZF09XCJpdGVtLnZhbHVlLmlzU2VsZWN0ZWQgPT0gdHJ1ZT8gdHJ1ZSA6IG51bGxcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgIFwiIGZvcj1cInt7ZWxlbUlkfX1fX2NoZWNrYm94X3t7aX19XCI+e3tpdGVtLnZhbHVlLnRpdGxlfX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,11 +1,12 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { QuestionTypeEnum } from '../../../shared/enums/question-type.enum';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs';
4
+ import { debounceTime, filter, map } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@ng-stack/forms";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "@angular/forms";
7
+ import * as i2 from "../../services/survey-lib.service";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/forms";
9
10
  export class QuestionDropdownTemplateComponent {
10
11
  get fCtrls() {
11
12
  return this.rForm.controls;
@@ -29,13 +30,9 @@ export class QuestionDropdownTemplateComponent {
29
30
  this.isShow = value.isVisable;
30
31
  this.isDisabled = value.isReadOnly;
31
32
  }
32
- set setAnswer(defaultAnswer) {
33
- if (defaultAnswer != null) {
34
- this.fCtrls.answer.setValue(defaultAnswer.AnswerId);
35
- }
36
- }
37
- constructor(_formBuilder) {
33
+ constructor(_formBuilder, _surveyLibService) {
38
34
  this._formBuilder = _formBuilder;
35
+ this._surveyLibService = _surveyLibService;
39
36
  this.emitter = new EventEmitter();
40
37
  this.isShow = true;
41
38
  this.isDisabled = false;
@@ -49,7 +46,7 @@ export class QuestionDropdownTemplateComponent {
49
46
  });
50
47
  }
51
48
  ngOnInit() {
52
- this.fCtrls.answer.valueChanges.pipe().pipe(debounceTime(500), distinctUntilChanged()).subscribe(value => {
49
+ this.fCtrls.answer.valueChanges.pipe().pipe(debounceTime(200)).subscribe(value => {
53
50
  const formValue = this.rForm.value;
54
51
  this.emitter.emit({
55
52
  QuestionId: formValue.id,
@@ -58,17 +55,23 @@ export class QuestionDropdownTemplateComponent {
58
55
  });
59
56
  });
60
57
  this.fCtrls.answer.setValue(null);
58
+ this._surveyLibService.surveyAnswersObsrv
59
+ .pipe(map(x => x.defaultAnswers.filter(x => x.QuestionId == this.fCtrls.id.value)))
60
+ .pipe(filter(x => x.length > 0)).pipe(map(x => x.at(0)))
61
+ .subscribe(answer => {
62
+ this.fCtrls.answer.setValue(answer.AnswerId);
63
+ });
61
64
  }
62
65
  convertToFormControl(element) {
63
66
  return element;
64
67
  }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownTemplateComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
66
- 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", setAnswer: "setAnswer" }, 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\">\n <select class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\">\n <option *ngFor=\"let item of surveyQuestion?.surveyAnswers\" [value]=\"item.answerId\">{{item.answerTitle}}</option>\n </select>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
69
+ 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\">\n <select class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\">\n <option *ngFor=\"let item of surveyQuestion?.surveyAnswers\" [value]=\"item.answerId\">{{item.answerTitle}}</option>\n </select>\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: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
67
70
  }
68
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionDropdownTemplateComponent, decorators: [{
69
72
  type: Component,
70
73
  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\">\n <select class=\"form-control\" [formControl]=\"convertToFormControl(fCtrls.answer)\" [disabled]=\"isDisabled\">\n <option *ngFor=\"let item of surveyQuestion?.surveyAnswers\" [value]=\"item.answerId\">{{item.answerTitle}}</option>\n </select>\n </div>\n</div>\n" }]
71
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { emitter: [{
74
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
72
75
  type: Output
73
76
  }], isShow: [{
74
77
  type: Input
@@ -76,7 +79,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
76
79
  type: Input
77
80
  }], setQuestion: [{
78
81
  type: Input
79
- }], setAnswer: [{
80
- type: Input
81
82
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tZHJvcGRvd24tdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VydmVyeS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZS9xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVMxRCxNQUFNLE9BQU8saUNBQWlDO0lBSTVDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQU1ELElBQWEsV0FBVyxDQUFDLEtBQXdCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3BCLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUNwQixJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsY0FBYztZQUM1QixXQUFXLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDN0M7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFhLFNBQVMsQ0FBQyxhQUF1QztRQUM1RCxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxZQUFvQixZQUF5QjtRQUF6QixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQTdCbkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRW5ELFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQTJCbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBd0M7WUFDMUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1osS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2IsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ2QsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDakMsTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBWTtRQUMvQixPQUFPLE9BQXNCLENBQUM7SUFDaEMsQ0FBQzs4R0FuRVUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsbU5DaEI5QyxpakJBVUE7OzJGRE1hLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxnQ0FBZ0M7a0dBZ0JoQyxPQUFPO3NCQUFoQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBbUJPLFNBQVM7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAbmctc3RhY2svZm9ybXMnO1xuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25EdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktcXVlc3Rpb24uZHRvJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFF1ZXN0aW9uRHJvcGRvd25UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmZvcm0taW50ZXJmYWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uUmFkaW9CdXR0b25UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZS5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xuaW1wb3J0IHsgRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3MvZGVmYXVsdC1xdWVzdGlvbi1hbnN3ZXJzLmR0byc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc3VydmV5UXVlc3Rpb246IFN1cnZleVF1ZXN0aW9uRHRvO1xuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uRHJvcGRvd25UZW1wbGF0ZUZvcm1JbnRlcmZhY2U+O1xuXG4gIGdldCBmQ3RybHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuckZvcm0uY29udHJvbHM7XG4gIH1cblxuICBnZXQgcXVlc3Rpb25UeXBlRW51bSgpIHtcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxRdWVzdGlvbkFuc3dlck1vZGVsPigpO1xuXG4gIEBJbnB1dCgpIGlzU2hvdzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xuICAgIHRoaXMuc3VydmV5UXVlc3Rpb24gPSB2YWx1ZTtcbiAgICB0aGlzLnJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgaWQ6IHZhbHVlLnF1ZXN0aW9uSWQsXG4gICAgICBuYW1lOiB2YWx1ZS5xdWVzdGlvbk5hbWUsXG4gICAgICB0aXRsZTogdmFsdWUucXVlc3Rpb25UaXRsZSxcbiAgICAgIHR5cGVJZDogdmFsdWUucXVlc3Rpb25UeXBlSWQsXG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWUucXVlc3Rpb25EZXNjcmlwdGlvblxuICAgIH0pO1xuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdmFsdWUuaXNSZWFkT25seTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzZXRBbnN3ZXIoZGVmYXVsdEFuc3dlcjogRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvKSB7XG4gICAgaWYgKGRlZmF1bHRBbnN3ZXIgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKGRlZmF1bHRBbnN3ZXIuQW5zd2VySWQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbkRyb3Bkb3duVGVtcGxhdGVGb3JtSW50ZXJmYWNlPih7XG4gICAgICBpZDogW251bGxdLFxuICAgICAgbmFtZTogW251bGxdLFxuICAgICAgdGl0bGU6IFtudWxsXSxcbiAgICAgIHR5cGVJZDogW251bGxdLFxuICAgICAgZGVzY3JpcHRpb246IFtudWxsXSxcbiAgICAgIGFuc3dlcjogW251bGxdIFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnZhbHVlQ2hhbmdlcy5waXBlKCkucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XG4gICAgICB0aGlzLmVtaXR0ZXIuZW1pdCh7XG4gICAgICAgIFF1ZXN0aW9uSWQ6IGZvcm1WYWx1ZS5pZCxcbiAgICAgICAgSXNWYWxpZDogdGhpcy5mQ3RybHMuYW5zd2VyLnZhbGlkLFxuICAgICAgICBBbnN3ZXI6IHZhbHVlXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgY29udmVydFRvRm9ybUNvbnRyb2woZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWFzdGlvblwiIFthdHRyLmlkXT1cIidxdWVzdGlvbl8nK2ZDdHJscy5pZC52YWx1ZVwiICBbbmdDbGFzc109XCJ7J2ludmFsaWQtcXVlc3Rpb24nOiBmQ3RybHMuYW5zd2VyLmludmFsaWQgICwgJ2Qtbm9uZSc6aXNTaG93ICE9IHRydWV9XCI+XG4gICAgPGgzIGNsYXNzPVwicXVhc3Rpb24tdGl0bGUgXCI+XG4gICAgICAgIHt7ZkN0cmxzLnRpdGxlLnZhbHVlfX1cbiAgICA8L2gzPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXF1YXN0aW9uXCI+XG4gICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbZm9ybUNvbnRyb2xdPVwiY29udmVydFRvRm9ybUNvbnRyb2woZkN0cmxzLmFuc3dlcilcIiAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc3VydmV5UXVlc3Rpb24/LnN1cnZleUFuc3dlcnNcIiBbdmFsdWVdPVwiaXRlbS5hbnN3ZXJJZFwiPnt7aXRlbS5hbnN3ZXJUaXRsZX19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tZHJvcGRvd24tdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3VydmVyeS1saWIvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZS9xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUc1RSxPQUFPLEVBQUUsWUFBWSxFQUF3QixNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFVdkUsTUFBTSxPQUFPLGlDQUFpQztJQUk1QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFNRCxJQUFhLFdBQVcsQ0FBQyxLQUF3QjtRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNwQixFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ3hC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aEMsQ0FBQzs4R0FwRVUsaUNBQWlDO2tHQUFqQyxpQ0FBaUMsMkxDakI5QyxpakJBVUE7OzJGRE9hLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxnQ0FBZ0M7aUlBZ0JoQyxPQUFPO3NCQUFoQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAbmctc3RhY2svZm9ybXMnO1xuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25EdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktcXVlc3Rpb24uZHRvJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFF1ZXN0aW9uRHJvcGRvd25UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmZvcm0taW50ZXJmYWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uUmFkaW9CdXR0b25UZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLXJhZGlvLWJ1dHRvbi10ZW1wbGF0ZS5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUXVlc3Rpb25BbnN3ZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcXVlc3Rpb24tYW5zd2VyLm1vZGVsJztcbmltcG9ydCB7IERlZmF1bHRRdWVzdGlvbkFuc3dlckR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL2RlZmF1bHQtcXVlc3Rpb24tYW5zd2Vycy5kdG8nO1xuaW1wb3J0IHsgU3VydmV5TGliU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N1cnZleS1saWIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1kcm9wZG93bi10ZW1wbGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uLWRyb3Bkb3duLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgc3VydmV5UXVlc3Rpb246IFN1cnZleVF1ZXN0aW9uRHRvO1xuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uRHJvcGRvd25UZW1wbGF0ZUZvcm1JbnRlcmZhY2U+O1xuXG4gIGdldCBmQ3RybHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuckZvcm0uY29udHJvbHM7XG4gIH1cblxuICBnZXQgcXVlc3Rpb25UeXBlRW51bSgpIHtcbiAgICByZXR1cm4gUXVlc3Rpb25UeXBlRW51bTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxRdWVzdGlvbkFuc3dlck1vZGVsPigpO1xuXG4gIEBJbnB1dCgpIGlzU2hvdzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNldFF1ZXN0aW9uKHZhbHVlOiBTdXJ2ZXlRdWVzdGlvbkR0bykge1xuICAgIHRoaXMuc3VydmV5UXVlc3Rpb24gPSB2YWx1ZTtcbiAgICB0aGlzLnJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgaWQ6IHZhbHVlLnF1ZXN0aW9uSWQsXG4gICAgICBuYW1lOiB2YWx1ZS5xdWVzdGlvbk5hbWUsXG4gICAgICB0aXRsZTogdmFsdWUucXVlc3Rpb25UaXRsZSxcbiAgICAgIHR5cGVJZDogdmFsdWUucXVlc3Rpb25UeXBlSWQsXG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWUucXVlc3Rpb25EZXNjcmlwdGlvblxuICAgIH0pO1xuXG4gICAgaWYgKHZhbHVlLmlzUmVxdWlyZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIHRoaXMuZkN0cmxzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdmFsdWUuaXNSZWFkT25seTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciAscHJpdmF0ZSAgX3N1cnZleUxpYlNlcnZpY2UgOlN1cnZleUxpYlNlcnZpY2UpIHtcbiAgICB0aGlzLnJGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8UXVlc3Rpb25Ecm9wZG93blRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIG5hbWU6IFtudWxsXSxcbiAgICAgIHRpdGxlOiBbbnVsbF0sXG4gICAgICB0eXBlSWQ6IFtudWxsXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBbbnVsbF0sXG4gICAgICBhbnN3ZXI6IFtudWxsXSBcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZkN0cmxzLmFuc3dlci52YWx1ZUNoYW5nZXMucGlwZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnJGb3JtLnZhbHVlO1xuICAgICAgdGhpcy5lbWl0dGVyLmVtaXQoe1xuICAgICAgICBRdWVzdGlvbklkOiBmb3JtVmFsdWUuaWQsXG4gICAgICAgIElzVmFsaWQ6IHRoaXMuZkN0cmxzLmFuc3dlci52YWxpZCxcbiAgICAgICAgQW5zd2VyOiB2YWx1ZVxuICAgICAgfSlcbiAgICB9KTtcblxuICAgIHRoaXMuZkN0cmxzLmFuc3dlci5zZXRWYWx1ZShudWxsKTtcblxuICAgIHRoaXMuX3N1cnZleUxpYlNlcnZpY2Uuc3VydmV5QW5zd2Vyc09ic3J2XG4gICAgLnBpcGUobWFwKHg9PiB4LmRlZmF1bHRBbnN3ZXJzLmZpbHRlcih4PT54LlF1ZXN0aW9uSWQgPT0gdGhpcy5mQ3RybHMuaWQudmFsdWUpKSlcbiAgICAucGlwZShmaWx0ZXIoeD0+eC5sZW5ndGggID4gMCkpLnBpcGUobWFwKHg9PiB4LmF0KDApKSlcbiAgICAuc3Vic2NyaWJlKGFuc3dlcj0+e1xuICAgICAgdGhpcy5mQ3RybHMuYW5zd2VyLnNldFZhbHVlKGFuc3dlci5BbnN3ZXJJZCk7XG4gICAgfSlcbiAgfVxuXG4gIGNvbnZlcnRUb0Zvcm1Db250cm9sKGVsZW1lbnQ6IGFueSkge1xuICAgIHJldHVybiBlbGVtZW50IGFzIEZvcm1Db250cm9sO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicXVhc3Rpb25cIiBbYXR0ci5pZF09XCIncXVlc3Rpb25fJytmQ3RybHMuaWQudmFsdWVcIiAgW25nQ2xhc3NdPVwieydpbnZhbGlkLXF1ZXN0aW9uJzogZkN0cmxzLmFuc3dlci5pbnZhbGlkICAsICdkLW5vbmUnOmlzU2hvdyAhPSB0cnVlfVwiPlxuICAgIDxoMyBjbGFzcz1cInF1YXN0aW9uLXRpdGxlIFwiPlxuICAgICAgICB7e2ZDdHJscy50aXRsZS52YWx1ZX19XG4gICAgPC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1xdWFzdGlvblwiPlxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGZDdHJscy5hbnN3ZXIpXCIgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN1cnZleVF1ZXN0aW9uPy5zdXJ2ZXlBbnN3ZXJzXCIgW3ZhbHVlXT1cIml0ZW0uYW5zd2VySWRcIj57e2l0ZW0uYW5zd2VyVGl0bGV9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -2,11 +2,12 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { QuestionTypeEnum } from '../../../shared/enums/question-type.enum';
4
4
  import { v4 as guidGenerator } from 'uuid';
5
- import { debounceTime, distinctUntilChanged } from 'rxjs';
5
+ import { debounceTime, filter, map } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ng-stack/forms";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/forms";
8
+ import * as i2 from "../../services/survey-lib.service";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "@angular/forms";
10
11
  export class QuestionMatrixTemplateComponent {
11
12
  get fCtrls() {
12
13
  return this.rForm.controls;
@@ -30,7 +31,7 @@ export class QuestionMatrixTemplateComponent {
30
31
  group.controls.answer.addValidators([Validators.required]);
31
32
  group.controls.answer.updateValueAndValidity();
32
33
  }
33
- group.controls.answer.valueChanges.pipe().pipe(debounceTime(500), distinctUntilChanged()).subscribe(value => {
34
+ group.controls.answer.valueChanges.pipe().pipe(debounceTime(200)).subscribe(value => {
34
35
  const formValue = this.rForm.value;
35
36
  this.emitter.emit({
36
37
  QuestionId: group.value.subQuestionId,
@@ -43,16 +44,9 @@ export class QuestionMatrixTemplateComponent {
43
44
  this.isShow = value.isVisable;
44
45
  this.isDisabled = value.isReadOnly;
45
46
  }
46
- set setAnswers(defaultAnswerArr) {
47
- this.fCtrls.subQuestionArray.controls.forEach(group => {
48
- var answer = defaultAnswerArr.find(x => x.QuestionId == group.value.subQuestionId);
49
- if (answer != null) {
50
- group.controls.answer.setValue(answer.AnswerId);
51
- }
52
- });
53
- }
54
- constructor(_formBuilder) {
47
+ constructor(_formBuilder, _surveyLibService) {
55
48
  this._formBuilder = _formBuilder;
49
+ this._surveyLibService = _surveyLibService;
56
50
  this.elemId = guidGenerator();
57
51
  this.emitter = new EventEmitter();
58
52
  this.isShow = true;
@@ -63,6 +57,19 @@ export class QuestionMatrixTemplateComponent {
63
57
  subQuestionArray: this._formBuilder.array([])
64
58
  });
65
59
  }
60
+ ngOnInit() {
61
+ this._surveyLibService.surveyAnswersObsrv
62
+ .pipe(map(x => x.defaultAnswers.filter(x => x.ParentQuestionId == this.fCtrls.id.value)))
63
+ .pipe(filter(x => x.length > 0))
64
+ .subscribe(answers => {
65
+ this.fCtrls.subQuestionArray.controls.forEach(group => {
66
+ var answer = answers.find(x => x.QuestionId == group.value.subQuestionId);
67
+ if (answer != null) {
68
+ group.controls.answer.setValue(answer.AnswerId);
69
+ }
70
+ });
71
+ });
72
+ }
66
73
  onChangeAnswer(question, answer) {
67
74
  const index = this.fCtrls.subQuestionArray.value.findIndex(x => x.subQuestionId == question.subQuestionId);
68
75
  var subQuestionGroup = this.fCtrls.subQuestionArray.controls[index];
@@ -76,13 +83,13 @@ export class QuestionMatrixTemplateComponent {
76
83
  convertToFormControl(element) {
77
84
  return element;
78
85
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
80
- 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", setAnswers: "setAnswers" }, 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: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SurveyLibService }], target: i0.ɵɵFactoryTarget.Component }); }
87
+ 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"] }] }); }
81
88
  }
82
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: QuestionMatrixTemplateComponent, decorators: [{
83
90
  type: Component,
84
91
  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>" }]
85
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { emitter: [{
92
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SurveyLibService }]; }, propDecorators: { emitter: [{
86
93
  type: Output
87
94
  }], isShow: [{
88
95
  type: Input
@@ -90,7 +97,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
90
97
  type: Input
91
98
  }], setQuestion: [{
92
99
  type: Input
93
- }], setAnswers: [{
94
- type: Input
95
100
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxFQUFFLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzFELE1BQU0sT0FBTywrQkFBK0I7SUFLMUMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBTUQsSUFBYSxXQUFXLENBQUMsS0FBd0I7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDcEIsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3BC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QUF1QjtRQUNyRyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRyxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixVQUFVLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDaEQsTUFBTSxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUs7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQVk7UUFDL0IsT0FBTyxPQUFzQixDQUFDO0lBQ2hDLENBQUM7OEdBcEZVLCtCQUErQjtrR0FBL0IsK0JBQStCLG1OQ25CNUMsc3VEQW1DTTs7MkZEaEJPLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSw4QkFBOEI7a0dBaUI5QixPQUFPO3NCQUFoQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBbUNPLFVBQVU7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQG5nLXN0YWNrL2Zvcm1zJztcbmltcG9ydCB7IFN1cnZleUFuc3dlckR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1hbnN3ZXIuZHRvJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uR3JvdXBEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktcXVlc3Rpb24tZ3JvdXAuZHRvJztcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBTdXJ2ZXlTdWJRdWVzdGlvbkR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1zdWItcXVlc3Rpb24uZHRvJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFF1ZXN0aW9uTWF0cml4VGVtcGxhdGVGb3JtSW50ZXJmYWNlLCBTdWJRdWVzdGlvbkNoaWxkT2ZRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtLWludGVyZmFjZXMvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmZvcm0taW50ZXJmYWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uQW5zd2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3F1ZXN0aW9uLWFuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyB2NCBhcyBndWlkR2VuZXJhdG9yIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBEZWZhdWx0UXVlc3Rpb25BbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9kZWZhdWx0LXF1ZXN0aW9uLWFuc3dlcnMuZHRvJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uLW1hdHJpeC10ZW1wbGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbk1hdHJpeFRlbXBsYXRlQ29tcG9uZW50IHtcbiAgZWxlbUlkID0gZ3VpZEdlbmVyYXRvcigpIGFzIHN0cmluZztcbiAgc3VydmV5UXVlc3Rpb246IFN1cnZleVF1ZXN0aW9uRHRvO1xuICByRm9ybTogRm9ybUdyb3VwPFF1ZXN0aW9uTWF0cml4VGVtcGxhdGVGb3JtSW50ZXJmYWNlPjtcblxuICBnZXQgZkN0cmxzKCkge1xuICAgIHJldHVybiB0aGlzLnJGb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgZ2V0IHF1ZXN0aW9uVHlwZUVudW0oKSB7XG4gICAgcmV0dXJuIFF1ZXN0aW9uVHlwZUVudW07XG4gIH1cblxuICBAT3V0cHV0KCkgZW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlc3Rpb25BbnN3ZXJNb2RlbD4oKTtcblxuICBASW5wdXQoKSBpc1Nob3c6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzZXRRdWVzdGlvbih2YWx1ZTogU3VydmV5UXVlc3Rpb25EdG8pIHtcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5yRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGlkOiB2YWx1ZS5xdWVzdGlvbklkLFxuICAgICAgdHlwZUlkOiB2YWx1ZS5xdWVzdGlvblR5cGVJZFxuICAgIH0pO1xuXG4gICAgdmFsdWUuc3VydmV5U3ViUXVlc3Rpb25zLmZvckVhY2goeCA9PiB7XG4gICAgICB2YXIgZ3JvdXAgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxTdWJRdWVzdGlvbkNoaWxkT2ZRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgICBzdWJRdWVzdGlvbklkOiBbeC5xdWVzdGlvbklkXSxcbiAgICAgICAgcXVlc3Rpb25UaXRsZTogW3gucXVlc3Rpb25UaXRsZV0sXG4gICAgICAgIGFuc3dlcjogW251bGxdLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh2YWx1ZS5pc1JlcXVpcmVkID09IHRydWUpIHtcbiAgICAgICAgZ3JvdXAuY29udHJvbHMuYW5zd2VyLmFkZFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgZ3JvdXAuY29udHJvbHMuYW5zd2VyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH1cblxuICAgICAgZ3JvdXAuY29udHJvbHMuYW5zd2VyLnZhbHVlQ2hhbmdlcy5waXBlKCkucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5yRm9ybS52YWx1ZTtcbiAgICAgICAgdGhpcy5lbWl0dGVyLmVtaXQoe1xuICAgICAgICAgIFF1ZXN0aW9uSWQ6IGdyb3VwLnZhbHVlLnN1YlF1ZXN0aW9uSWQsXG4gICAgICAgICAgQW5zd2VyOiBncm91cC52YWx1ZS5hbnN3ZXIsXG4gICAgICAgICAgSXNWYWxpZDogZ3JvdXAuY29udHJvbHMuYW5zd2VyLnZhbGlkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZkN0cmxzLnN1YlF1ZXN0aW9uQXJyYXkucHVzaChncm91cCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmlzU2hvdyA9IHZhbHVlLmlzVmlzYWJsZTtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSB2YWx1ZS5pc1JlYWRPbmx5O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHNldEFuc3dlcnMoZGVmYXVsdEFuc3dlckFycjogRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvW10pIHtcbiAgICB0aGlzLmZDdHJscy5zdWJRdWVzdGlvbkFycmF5LmNvbnRyb2xzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgdmFyIGFuc3dlciA9IGRlZmF1bHRBbnN3ZXJBcnIuZmluZCh4ID0+IHguUXVlc3Rpb25JZCA9PSBncm91cC52YWx1ZS5zdWJRdWVzdGlvbklkKTtcbiAgICAgIGlmIChhbnN3ZXIgIT0gbnVsbCkge1xuICAgICAgICBncm91cC5jb250cm9scy5hbnN3ZXIuc2V0VmFsdWUoYW5zd2VyLkFuc3dlcklkKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5yRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwPFF1ZXN0aW9uTWF0cml4VGVtcGxhdGVGb3JtSW50ZXJmYWNlPih7XG4gICAgICBpZDogW251bGxdLFxuICAgICAgdHlwZUlkOiBbbnVsbF0sXG4gICAgICBzdWJRdWVzdGlvbkFycmF5OiB0aGlzLl9mb3JtQnVpbGRlci5hcnJheTxTdWJRdWVzdGlvbkNoaWxkT2ZRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZT4oW10pXG4gICAgfSk7ICBcbiAgfVxuXG4gIG9uQ2hhbmdlQW5zd2VyKHF1ZXN0aW9uOiBTdWJRdWVzdGlvbkNoaWxkT2ZRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZSwgYW5zd2VyOiBTdXJ2ZXlBbnN3ZXJEdG8pIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZkN0cmxzLnN1YlF1ZXN0aW9uQXJyYXkudmFsdWUuZmluZEluZGV4KHggPT4geC5zdWJRdWVzdGlvbklkID09IHF1ZXN0aW9uLnN1YlF1ZXN0aW9uSWQpO1xuICAgIHZhciBzdWJRdWVzdGlvbkdyb3VwID0gdGhpcy5mQ3RybHMuc3ViUXVlc3Rpb25BcnJheS5jb250cm9sc1tpbmRleF07XG5cbiAgICBzdWJRdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmFuc3dlci5zZXRWYWx1ZShhbnN3ZXIuYW5zd2VySWQpO1xuXG4gICAgdGhpcy5lbWl0dGVyLmVtaXQoe1xuICAgICAgUXVlc3Rpb25JZDogc3ViUXVlc3Rpb25Hcm91cC52YWx1ZS5zdWJRdWVzdGlvbklkLFxuICAgICAgQW5zd2VyOiBzdWJRdWVzdGlvbkdyb3VwLnZhbHVlLmFuc3dlcixcbiAgICAgIElzVmFsaWQ6IHN1YlF1ZXN0aW9uR3JvdXAuY29udHJvbHMuYW5zd2VyLnZhbGlkXG4gICAgfSk7XG4gIH1cblxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZWxlbWVudCBhcyBGb3JtQ29udHJvbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInF1YXN0aW9uXCIgW2F0dHIuaWRdPVwiJ3F1ZXN0aW9uXycrZkN0cmxzLmlkLnZhbHVlXCIgc3R5bGU9XCIgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcIlxuW25nQ2xhc3NdPVwieydkLW5vbmUnOmlzU2hvdyAhPSB0cnVlfVwiPlxuICA8aDMgY2xhc3M9XCJxdWFzdGlvbi10aXRsZSBcIj5cbiAgICB7e3N1cnZleVF1ZXN0aW9uPy5xdWVzdGlvblRpdGxlfX1cbiAgPC9oMz5cbiAgPGRpdiBjbGFzcz1cIm1hdHJpeC1xdWVzdGlvblwiIFtmb3JtR3JvdXBdPVwickZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0cml4LXRhYmxlXCIgZm9ybUFycmF5TmFtZT1cInN1YlF1ZXN0aW9uQXJyYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtaGVhZC1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hdHJpeC1jb2xcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtY29sXCIgKm5nRm9yPVwibGV0IGFuc3dlcnMgb2Ygc3VydmV5UXVlc3Rpb24/LnN1cnZleUFuc3dlcnNcIj5cbiAgICAgICAgICB7e2Fuc3dlcnMuYW5zd2VyVGl0bGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWF0cml4LXJvd1wiXG4gICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbkdyb3VwIG9mIGZDdHJscy5zdWJRdWVzdGlvbkFycmF5LmNvbnRyb2xzIDtsZXQgc3ViUXVlc3Rpb25JbmRleCA9IGluZGV4XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydpbnZhbGlkLXF1ZXN0aW9uJzogcXVlc3Rpb25Hcm91cC5jb250cm9scy5hbnN3ZXIuaW52YWxpZH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hdHJpeC1jb2wgbWF0cml4LXN1Yi1xdWFzdGlvblwiPlxuICAgICAgICAgIHt7cXVlc3Rpb25Hcm91cC52YWx1ZS5xdWVzdGlvblRpdGxlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtY29sXCIgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBzdXJ2ZXlRdWVzdGlvbj8uc3VydmV5QW5zd2VycztsZXQgYW5zd2VySW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2stcmFkaW8gZm9ybS1jaGVjay1pbmxpbmVcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIiBuYW1lPVwie3tlbGVtSWR9fV9fcmFkaW8tYnRuLW9wdGlvbl97e3N1YlF1ZXN0aW9uSW5kZXh9fVwiXG4gICAgICAgICAgICAgIGlkPVwie3tlbGVtSWR9fV9fcmFkaW8tYnRuX3t7c3ViUXVlc3Rpb25JbmRleH19X3t7YW5zd2VySW5kZXh9fVwiIChjaGFuZ2UpPVwib25DaGFuZ2VBbnN3ZXIocXVlc3Rpb25Hcm91cC52YWx1ZSAsYW5zd2VyKVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwie3thbnN3ZXIuYW5zd2VySWR9fVwiICBbY2hlY2tlZF09XCJhbnN3ZXIuYW5zd2VySWQgPT0gcXVlc3Rpb25Hcm91cC52YWx1ZS5hbnN3ZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZC1tZC1pbmxpbmUgZC1sZy1ub25lXCJcbiAgICAgICAgICAgICAgZm9yPVwie3tlbGVtSWR9fV9fcmFkaW8tYnRuX3t7c3ViUXVlc3Rpb25JbmRleH19X3t7YW5zd2VySW5kZXh9fVwiPiB7e2Fuc3dlci5hbnN3ZXJUaXRsZX19PC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9kaXY+Il19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N1cnZlcnktbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUvcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxFQUFFLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQXdCLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVF2RSxNQUFNLE9BQU8sK0JBQStCO0lBSzFDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQU1ELElBQWEsV0FBVyxDQUFDLEtBQXdCO1FBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3BCLEVBQUUsRUFBRSxLQUFLLENBQUMs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LENBQUM7OEdBeEZVLCtCQUErQjtrR0FBL0IsK0JBQStCLHlMQ3BCNUMsc3VEQW1DTTs7MkZEZk8sK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4QjtpSUFpQjlCLE9BQU87c0JBQWhCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ08sV0FBVztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0BuZy1zdGFjay9mb3Jtcyc7XG5pbXBvcnQgeyBTdXJ2ZXlBbnN3ZXJEdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktYW5zd2VyLmR0byc7XG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkdyb3VwRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3Mvc3VydmV5LXF1ZXN0aW9uLWdyb3VwLmR0byc7XG5pbXBvcnQgeyBTdXJ2ZXlRdWVzdGlvbkR0byB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kdG9zL3N1cnZleS1xdWVzdGlvbi5kdG8nO1xuaW1wb3J0IHsgU3VydmV5U3ViUXVlc3Rpb25EdG8gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZHRvcy9zdXJ2ZXktc3ViLXF1ZXN0aW9uLmR0byc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZSwgU3ViUXVlc3Rpb25DaGlsZE9mUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUZvcm1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS1pbnRlcmZhY2VzL3F1ZXN0aW9uLW1hdHJpeC10ZW1wbGF0ZS5mb3JtLWludGVyZmFjZSc7XG5pbXBvcnQgeyBRdWVzdGlvbkFuc3dlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL21vZGVscy9xdWVzdGlvbi1hbnN3ZXIubW9kZWwnO1xuaW1wb3J0IHsgdjQgYXMgZ3VpZEdlbmVyYXRvciB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRGVmYXVsdFF1ZXN0aW9uQW5zd2VyRHRvIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2R0b3MvZGVmYXVsdC1xdWVzdGlvbi1hbnN3ZXJzLmR0byc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3VydmV5TGliU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N1cnZleS1saWIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1xdWVzdGlvbi1tYXRyaXgtdGVtcGxhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlc3Rpb24tbWF0cml4LXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGVsZW1JZCA9IGd1aWRHZW5lcmF0b3IoKSBhcyBzdHJpbmc7XG4gIHN1cnZleVF1ZXN0aW9uOiBTdXJ2ZXlRdWVzdGlvbkR0bztcbiAgckZvcm06IEZvcm1Hcm91cDxRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZT47XG5cbiAgZ2V0IGZDdHJscygpIHtcbiAgICByZXR1cm4gdGhpcy5yRm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCBxdWVzdGlvblR5cGVFbnVtKCkge1xuICAgIHJldHVybiBRdWVzdGlvblR5cGVFbnVtO1xuICB9XG5cbiAgQE91dHB1dCgpIGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFF1ZXN0aW9uQW5zd2VyTW9kZWw+KCk7XG5cbiAgQElucHV0KCkgaXNTaG93OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2V0UXVlc3Rpb24odmFsdWU6IFN1cnZleVF1ZXN0aW9uRHRvKSB7XG4gICAgdGhpcy5zdXJ2ZXlRdWVzdGlvbiA9IHZhbHVlO1xuICAgIHRoaXMuckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBpZDogdmFsdWUucXVlc3Rpb25JZCxcbiAgICAgIHR5cGVJZDogdmFsdWUucXVlc3Rpb25UeXBlSWRcbiAgICB9KTtcblxuICAgIHZhbHVlLnN1cnZleVN1YlF1ZXN0aW9ucy5mb3JFYWNoKHggPT4ge1xuICAgICAgdmFyIGdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXA8U3ViUXVlc3Rpb25DaGlsZE9mUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KHtcbiAgICAgICAgc3ViUXVlc3Rpb25JZDogW3gucXVlc3Rpb25JZF0sXG4gICAgICAgIHF1ZXN0aW9uVGl0bGU6IFt4LnF1ZXN0aW9uVGl0bGVdLFxuICAgICAgICBhbnN3ZXI6IFtudWxsXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmFsdWUuaXNSZXF1aXJlZCA9PSB0cnVlKSB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzLmFuc3dlci5hZGRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzLmFuc3dlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG5cbiAgICAgIGdyb3VwLmNvbnRyb2xzLmFuc3dlci52YWx1ZUNoYW5nZXMucGlwZSgpLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuckZvcm0udmFsdWU7XG4gICAgICAgIHRoaXMuZW1pdHRlci5lbWl0KHtcbiAgICAgICAgICBRdWVzdGlvbklkOiBncm91cC52YWx1ZS5zdWJRdWVzdGlvbklkLFxuICAgICAgICAgIEFuc3dlcjogZ3JvdXAudmFsdWUuYW5zd2VyLFxuICAgICAgICAgIElzVmFsaWQ6IGdyb3VwLmNvbnRyb2xzLmFuc3dlci52YWxpZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmZDdHJscy5zdWJRdWVzdGlvbkFycmF5LnB1c2goZ3JvdXApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc1Nob3cgPSB2YWx1ZS5pc1Zpc2FibGU7XG4gICAgdGhpcy5pc0Rpc2FibGVkID0gdmFsdWUuaXNSZWFkT25seTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2Zvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciAsIHByaXZhdGUgX3N1cnZleUxpYlNlcnZpY2U6U3VydmV5TGliU2VydmljZSkge1xuICAgIHRoaXMuckZvcm0gPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cDxRdWVzdGlvbk1hdHJpeFRlbXBsYXRlRm9ybUludGVyZmFjZT4oe1xuICAgICAgaWQ6IFtudWxsXSxcbiAgICAgIHR5cGVJZDogW251bGxdLFxuICAgICAgc3ViUXVlc3Rpb25BcnJheTogdGhpcy5fZm9ybUJ1aWxkZXIuYXJyYXk8U3ViUXVlc3Rpb25DaGlsZE9mUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUZvcm1JbnRlcmZhY2U+KFtdKVxuICAgIH0pOyAgXG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3VydmV5TGliU2VydmljZS5zdXJ2ZXlBbnN3ZXJzT2JzcnZcbiAgICAucGlwZShtYXAoeD0+IHguZGVmYXVsdEFuc3dlcnMuZmlsdGVyKHg9PnguUGFyZW50UXVlc3Rpb25JZCA9PSB0aGlzLmZDdHJscy5pZC52YWx1ZSkpKVxuICAgIC5waXBlKGZpbHRlcih4PT54Lmxlbmd0aCAgPiAwKSlcbiAgICAuc3Vic2NyaWJlKGFuc3dlcnM9PntcbiAgICAgIHRoaXMuZkN0cmxzLnN1YlF1ZXN0aW9uQXJyYXkuY29udHJvbHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIHZhciBhbnN3ZXIgPSBhbnN3ZXJzLmZpbmQoeCA9PiB4LlF1ZXN0aW9uSWQgPT0gZ3JvdXAudmFsdWUuc3ViUXVlc3Rpb25JZCk7XG4gICAgICAgIGlmIChhbnN3ZXIgIT0gbnVsbCkge1xuICAgICAgICAgIGdyb3VwLmNvbnRyb2xzLmFuc3dlci5zZXRWYWx1ZShhbnN3ZXIuQW5zd2VySWQpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBvbkNoYW5nZUFuc3dlcihxdWVzdGlvbjogU3ViUXVlc3Rpb25DaGlsZE9mUXVlc3Rpb25NYXRyaXhUZW1wbGF0ZUZvcm1JbnRlcmZhY2UsIGFuc3dlcjogU3VydmV5QW5zd2VyRHRvKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZDdHJscy5zdWJRdWVzdGlvbkFycmF5LnZhbHVlLmZpbmRJbmRleCh4ID0+IHguc3ViUXVlc3Rpb25JZCA9PSBxdWVzdGlvbi5zdWJRdWVzdGlvbklkKTtcbiAgICB2YXIgc3ViUXVlc3Rpb25Hcm91cCA9IHRoaXMuZkN0cmxzLnN1YlF1ZXN0aW9uQXJyYXkuY29udHJvbHNbaW5kZXhdO1xuXG4gICAgc3ViUXVlc3Rpb25Hcm91cC5jb250cm9scy5hbnN3ZXIuc2V0VmFsdWUoYW5zd2VyLmFuc3dlcklkKTtcblxuICAgIHRoaXMuZW1pdHRlci5lbWl0KHtcbiAgICAgIFF1ZXN0aW9uSWQ6IHN1YlF1ZXN0aW9uR3JvdXAudmFsdWUuc3ViUXVlc3Rpb25JZCxcbiAgICAgIEFuc3dlcjogc3ViUXVlc3Rpb25Hcm91cC52YWx1ZS5hbnN3ZXIsXG4gICAgICBJc1ZhbGlkOiBzdWJRdWVzdGlvbkdyb3VwLmNvbnRyb2xzLmFuc3dlci52YWxpZFxuICAgIH0pO1xuICB9XG5cbiAgY29udmVydFRvRm9ybUNvbnRyb2woZWxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQgYXMgRm9ybUNvbnRyb2w7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxdWFzdGlvblwiIFthdHRyLmlkXT1cIidxdWVzdGlvbl8nK2ZDdHJscy5pZC52YWx1ZVwiIHN0eWxlPVwiIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XCJcbltuZ0NsYXNzXT1cInsnZC1ub25lJzppc1Nob3cgIT0gdHJ1ZX1cIj5cbiAgPGgzIGNsYXNzPVwicXVhc3Rpb24tdGl0bGUgXCI+XG4gICAge3tzdXJ2ZXlRdWVzdGlvbj8ucXVlc3Rpb25UaXRsZX19XG4gIDwvaDM+XG4gIDxkaXYgY2xhc3M9XCJtYXRyaXgtcXVlc3Rpb25cIiBbZm9ybUdyb3VwXT1cInJGb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1hdHJpeC10YWJsZVwiIGZvcm1BcnJheU5hbWU9XCJzdWJRdWVzdGlvbkFycmF5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0cml4LWhlYWQtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtY29sXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF0cml4LWNvbFwiICpuZ0Zvcj1cImxldCBhbnN3ZXJzIG9mIHN1cnZleVF1ZXN0aW9uPy5zdXJ2ZXlBbnN3ZXJzXCI+XG4gICAgICAgICAge3thbnN3ZXJzLmFuc3dlclRpdGxlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1hdHJpeC1yb3dcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb25Hcm91cCBvZiBmQ3RybHMuc3ViUXVlc3Rpb25BcnJheS5jb250cm9scyA7bGV0IHN1YlF1ZXN0aW9uSW5kZXggPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1xdWVzdGlvbic6IHF1ZXN0aW9uR3JvdXAuY29udHJvbHMuYW5zd2VyLmludmFsaWR9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtY29sIG1hdHJpeC1zdWItcXVhc3Rpb25cIj5cbiAgICAgICAgICB7e3F1ZXN0aW9uR3JvdXAudmFsdWUucXVlc3Rpb25UaXRsZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF0cml4LWNvbFwiICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2Ygc3VydmV5UXVlc3Rpb24/LnN1cnZleUFuc3dlcnM7bGV0IGFuc3dlckluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLXJhZGlvIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cInJhZGlvXCIgbmFtZT1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bi1vcHRpb25fe3tzdWJRdWVzdGlvbkluZGV4fX1cIlxuICAgICAgICAgICAgICBpZD1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bl97e3N1YlF1ZXN0aW9uSW5kZXh9fV97e2Fuc3dlckluZGV4fX1cIiAoY2hhbmdlKT1cIm9uQ2hhbmdlQW5zd2VyKHF1ZXN0aW9uR3JvdXAudmFsdWUgLGFuc3dlcilcIlxuICAgICAgICAgICAgICB2YWx1ZT1cInt7YW5zd2VyLmFuc3dlcklkfX1cIiAgW2NoZWNrZWRdPVwiYW5zd2VyLmFuc3dlcklkID09IHF1ZXN0aW9uR3JvdXAudmFsdWUuYW5zd2VyXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGQtbWQtaW5saW5lIGQtbGctbm9uZVwiXG4gICAgICAgICAgICAgIGZvcj1cInt7ZWxlbUlkfX1fX3JhZGlvLWJ0bl97e3N1YlF1ZXN0aW9uSW5kZXh9fV97e2Fuc3dlckluZGV4fX1cIj4ge3thbnN3ZXIuYW5zd2VyVGl0bGV9fTwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==