@piserve-tech/form-submission 1.2.2 → 1.2.3

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 (75) hide show
  1. package/README.md +24 -24
  2. package/esm2022/element-type/element-type.module.mjs +1 -1
  3. package/esm2022/element-type/form-elements/form-elements.component.mjs +3 -3
  4. package/esm2022/form-fields/check-box-fields/check-box-fields.component.mjs +10 -22
  5. package/esm2022/form-fields/date-time-fields/date-time-fields.component.mjs +3 -3
  6. package/esm2022/form-fields/drop-down-fields/drop-down-fields.component.mjs +20 -29
  7. package/esm2022/form-fields/file-picker-fields/file-picker-fields.component.mjs +5 -3
  8. package/esm2022/form-fields/form-fields.module.mjs +1 -1
  9. package/esm2022/form-fields/location-fields/location-fields.component.mjs +3 -3
  10. package/esm2022/form-fields/mail-fields/mail-fields.component.mjs +3 -3
  11. package/esm2022/form-fields/mobile-fields/mobile-fields.component.mjs +14 -12
  12. package/esm2022/form-fields/number-fields/number-fields.component.mjs +3 -3
  13. package/esm2022/form-fields/password-fields/password-fields.component.mjs +3 -3
  14. package/esm2022/form-fields/radio-button-fields/radio-button-fields.component.mjs +7 -29
  15. package/esm2022/form-fields/rich-text-editor-fields/rich-text-editor-fields.component.mjs +3 -3
  16. package/esm2022/form-fields/section-fields/section-fields.component.mjs +3 -3
  17. package/esm2022/form-fields/selection-matrix-fields/selection-matrix-fields.component.mjs +3 -3
  18. package/esm2022/form-fields/signature-fields/signature-fields.component.mjs +3 -3
  19. package/esm2022/form-fields/slider-fields/slider-fields.component.mjs +3 -3
  20. package/esm2022/form-fields/terms-and-condition-fields/terms-and-condition-fields.component.mjs +3 -3
  21. package/esm2022/form-fields/text-area-fields/text-area-fields.component.mjs +3 -3
  22. package/esm2022/form-fields/text-fields/text-fields.component.mjs +3 -3
  23. package/esm2022/form-fields/toggle-switch-fields/toggle-switch-fields.component.mjs +3 -3
  24. package/esm2022/form-fields/url-fields/url-fields.component.mjs +3 -3
  25. package/esm2022/form-submission/form-submission.module.mjs +1 -1
  26. package/esm2022/form-submission/header/header.component.mjs +3 -3
  27. package/esm2022/form-submission/navigation-tabs/navigation-tabs.component.mjs +3 -3
  28. package/esm2022/form-submission/next-prev-navigation/next-prev-navigation.component.mjs +3 -3
  29. package/esm2022/form-submission/submit-form/submit-form.component.mjs +26 -42
  30. package/esm2022/lib/form-submission.component.mjs +3 -3
  31. package/esm2022/lib/form-submission.module.mjs +1 -1
  32. package/esm2022/lib/form-submission.service.mjs +1 -1
  33. package/esm2022/logic/first-child/first-child.component.mjs +3 -3
  34. package/esm2022/logic/forth-child/forth-child.component.mjs +3 -3
  35. package/esm2022/logic/logic.module.mjs +1 -1
  36. package/esm2022/logic/second-child/second-child.component.mjs +3 -3
  37. package/esm2022/logic/third-child/third-child.component.mjs +3 -3
  38. package/esm2022/models/appearance.model.mjs +1 -1
  39. package/esm2022/models/attachment.model.mjs +1 -1
  40. package/esm2022/models/elementOptionAPI.model.mjs +1 -1
  41. package/esm2022/models/elementOptionAPIData.model.mjs +1 -1
  42. package/esm2022/models/elementOptionDB.model.mjs +1 -1
  43. package/esm2022/models/elementOptionDBCriteria.model.mjs +1 -1
  44. package/esm2022/models/enum/condition.enum.mjs +1 -1
  45. package/esm2022/models/enum/elementType .enum.mjs +1 -1
  46. package/esm2022/models/enum/entityType.enum.mjs +1 -1
  47. package/esm2022/models/formConfiguration.model.mjs +1 -1
  48. package/esm2022/models/formElement.model.mjs +1 -1
  49. package/esm2022/models/formElementType.model.mjs +1 -1
  50. package/esm2022/models/grid.model.mjs +1 -1
  51. package/esm2022/models/logic.model.mjs +1 -1
  52. package/esm2022/models/option.model.mjs +1 -1
  53. package/esm2022/models/page.model.mjs +1 -1
  54. package/esm2022/models/publicForm.model.mjs +1 -1
  55. package/esm2022/models/question.model.mjs +1 -1
  56. package/esm2022/models/row.model.mjs +1 -1
  57. package/esm2022/models/section.model.mjs +1 -1
  58. package/esm2022/models/subForm.model.mjs +1 -1
  59. package/esm2022/models/validation.model.mjs +1 -1
  60. package/esm2022/public-api.mjs +1 -1
  61. package/esm2022/question/question/question.component.mjs +3 -3
  62. package/esm2022/question/question.module.mjs +1 -1
  63. package/esm2022/services/countryService.mjs +1 -1
  64. package/esm2022/services/data.service.mjs +1 -1
  65. package/esm2022/services/form.service.mjs +1 -1
  66. package/esm2022/services/mapper.service.mjs +1 -1
  67. package/esm2022/sub-form/sub-form/sub-form.component.mjs +3 -3
  68. package/esm2022/sub-form/sub-form.module.mjs +1 -1
  69. package/fesm2022/piserve-tech-form-submission.mjs +124 -179
  70. package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
  71. package/form-fields/check-box-fields/check-box-fields.component.d.ts +0 -1
  72. package/form-fields/drop-down-fields/drop-down-fields.component.d.ts +2 -5
  73. package/form-fields/radio-button-fields/radio-button-fields.component.d.ts +1 -2
  74. package/form-submission/submit-form/submit-form.component.d.ts +8 -22
  75. package/package.json +3 -3
package/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # FormSubmission
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project formSubmission` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project formSubmission`.
8
- > Note: Don't forget to add `--project formSubmission` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build formSubmission` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build formSubmission`, go to the dist folder `cd dist/form-submission` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test formSubmission` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # FormSubmission
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project formSubmission` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project formSubmission`.
8
+ > Note: Don't forget to add `--project formSubmission` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build formSubmission` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build formSubmission`, go to the dist folder `cd dist/form-submission` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test formSubmission` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
31
31
  ]
32
32
  }]
33
33
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC10eXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvZWxlbWVudC10eXBlL2VsZW1lbnQtdHlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFnQjVELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQVhaLHFCQUFxQixhQUVuQyxZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixhQUFhLGFBR2IscUJBQXFCO2dIQUdaLGlCQUFpQixZQVQxQixZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixhQUFhOzs0RkFNSixpQkFBaUI7a0JBWjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUUscUJBQXFCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVlc3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9xdWVzdGlvbi9xdWVzdGlvbi5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZHMvZm9ybS1maWVsZHMubW9kdWxlJztcclxuaW1wb3J0IHsgU3ViRm9ybU1vZHVsZSB9IGZyb20gJy4uL3N1Yi1mb3JtL3N1Yi1mb3JtLm1vZHVsZSc7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbIEZvcm1FbGVtZW50c0NvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUXVlc3Rpb25Nb2R1bGUsXHJcbiAgICBGb3JtRmllbGRzTW9kdWxlLFxyXG4gICAgU3ViRm9ybU1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRm9ybUVsZW1lbnRzQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWxlbWVudFR5cGVNb2R1bGUgeyB9XHJcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC10eXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvZWxlbWVudC10eXBlL2VsZW1lbnQtdHlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFnQjVELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQVhaLHFCQUFxQixhQUVuQyxZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixhQUFhLGFBR2IscUJBQXFCO2dIQUdaLGlCQUFpQixZQVQxQixZQUFZO1lBQ1osY0FBYztZQUNkLGdCQUFnQjtZQUNoQixhQUFhOzs0RkFNSixpQkFBaUI7a0JBWjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUUscUJBQXFCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtRWxlbWVudHNDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZWxlbWVudHMvZm9ybS1lbGVtZW50cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9xdWVzdGlvbi9xdWVzdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uL2Zvcm0tZmllbGRzL2Zvcm0tZmllbGRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTdWJGb3JtTW9kdWxlIH0gZnJvbSAnLi4vc3ViLWZvcm0vc3ViLWZvcm0ubW9kdWxlJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWyBGb3JtRWxlbWVudHNDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFF1ZXN0aW9uTW9kdWxlLFxuICAgIEZvcm1GaWVsZHNNb2R1bGUsXG4gICAgU3ViRm9ybU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRm9ybUVsZW1lbnRzQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRWxlbWVudFR5cGVNb2R1bGUgeyB9XG4iXX0=
@@ -11,11 +11,11 @@ export class FormElementsComponent {
11
11
  this.edit = false;
12
12
  }
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormElementsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormElementsComponent, selector: "lib-form-elements", inputs: { grid: "grid", currentPageIndex: "currentPageIndex", edit: "edit" }, ngImport: i0, template: "<div *ngIf=\"grid.entityType === 'QUESTION'\">\r\n <lib-question [question]=\"grid?.element\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [edit]=\"edit\"\r\n ></lib-question>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SECTION'\">\r\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SUBFORM'\">\r\n <lib-sub-form [subForm]=\"grid.element\"></lib-sub-form>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.QuestionComponent, selector: "lib-question", inputs: ["question", "edit", "currentPageIndex"], outputs: ["emitValidations"] }, { kind: "component", type: i3.SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: i4.SubFormComponent, selector: "lib-sub-form", inputs: ["subForm"] }] }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormElementsComponent, selector: "lib-form-elements", inputs: { grid: "grid", currentPageIndex: "currentPageIndex", edit: "edit" }, ngImport: i0, template: "<div *ngIf=\"grid.entityType === 'QUESTION'\">\n <lib-question [question]=\"grid?.element\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n ></lib-question>\n</div>\n<div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n</div>\n<div *ngIf=\"grid.entityType === 'SUBFORM'\">\n <lib-sub-form [subForm]=\"grid.element\"></lib-sub-form>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.QuestionComponent, selector: "lib-question", inputs: ["question", "edit", "currentPageIndex"], outputs: ["emitValidations"] }, { kind: "component", type: i3.SectionFieldsComponent, selector: "lib-section-fields", inputs: ["section"] }, { kind: "component", type: i4.SubFormComponent, selector: "lib-sub-form", inputs: ["subForm"] }] }); }
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormElementsComponent, decorators: [{
17
17
  type: Component,
18
- args: [{ selector: 'lib-form-elements', template: "<div *ngIf=\"grid.entityType === 'QUESTION'\">\r\n <lib-question [question]=\"grid?.element\"\r\n [currentPageIndex]=\"currentPageIndex\"\r\n [edit]=\"edit\"\r\n ></lib-question>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SECTION'\">\r\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\r\n</div>\r\n<div *ngIf=\"grid.entityType === 'SUBFORM'\">\r\n <lib-sub-form [subForm]=\"grid.element\"></lib-sub-form>\r\n</div>\r\n" }]
18
+ args: [{ selector: 'lib-form-elements', template: "<div *ngIf=\"grid.entityType === 'QUESTION'\">\n <lib-question [question]=\"grid?.element\"\n [currentPageIndex]=\"currentPageIndex\"\n [edit]=\"edit\"\n ></lib-question>\n</div>\n<div *ngIf=\"grid.entityType === 'SECTION'\">\n <lib-section-fields [section]=\"grid.element\"></lib-section-fields>\n</div>\n<div *ngIf=\"grid.entityType === 'SUBFORM'\">\n <lib-sub-form [subForm]=\"grid.element\"></lib-sub-form>\n</div>\n" }]
19
19
  }], propDecorators: { grid: [{
20
20
  type: Input
21
21
  }], currentPageIndex: [{
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
23
23
  }], edit: [{
24
24
  type: Input
25
25
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2VsZW1lbnQtdHlwZS9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvZm9ybS1lbGVtZW50cy9mb3JtLWVsZW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPdkIsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1XLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFDN0IsU0FBSSxHQUFhLEtBQUssQ0FBQztLQUNqQzsrR0FKWSxxQkFBcUI7bUdBQXJCLHFCQUFxQix1SUNibEMsb2NBWUE7OzRGRENhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBS3BCLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWVsZW1lbnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50cy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnRzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBncmlkOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIGVkaXQgOiBib29sZWFuID0gZmFsc2U7XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImdyaWQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJ1wiPlxyXG4gIDxsaWItcXVlc3Rpb24gW3F1ZXN0aW9uXT1cImdyaWQ/LmVsZW1lbnRcIlxyXG4gIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxyXG4gIFtlZGl0XT1cImVkaXRcIlxyXG4gID48L2xpYi1xdWVzdGlvbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdTRUNUSU9OJ1wiPlxyXG4gIDxsaWItc2VjdGlvbi1maWVsZHMgW3NlY3Rpb25dPVwiZ3JpZC5lbGVtZW50XCI+PC9saWItc2VjdGlvbi1maWVsZHM+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZ3JpZC5lbnRpdHlUeXBlID09PSAnU1VCRk9STSdcIj5cclxuICA8bGliLXN1Yi1mb3JtIFtzdWJGb3JtXT1cImdyaWQuZWxlbWVudFwiPjwvbGliLXN1Yi1mb3JtPlxyXG48L2Rpdj5cclxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2VsZW1lbnQtdHlwZS9mb3JtLWVsZW1lbnRzL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9lbGVtZW50LXR5cGUvZm9ybS1lbGVtZW50cy9mb3JtLWVsZW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPdkIsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1XLFNBQUksR0FBUSxFQUFFLENBQUM7UUFDZixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFDN0IsU0FBSSxHQUFhLEtBQUssQ0FBQztLQUNqQzsrR0FKWSxxQkFBcUI7bUdBQXJCLHFCQUFxQix1SUNibEMsNGFBWUE7OzRGRENhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBS3BCLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWVsZW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWVsZW1lbnRzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50c0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGdyaWQ6IGFueSA9IHt9O1xuICBASW5wdXQoKSBjdXJyZW50UGFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBlZGl0IDogYm9vbGVhbiA9IGZhbHNlO1xufVxuIiwiPGRpdiAqbmdJZj1cImdyaWQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJ1wiPlxuICA8bGliLXF1ZXN0aW9uIFtxdWVzdGlvbl09XCJncmlkPy5lbGVtZW50XCJcbiAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXG4gIFtlZGl0XT1cImVkaXRcIlxuICA+PC9saWItcXVlc3Rpb24+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJncmlkLmVudGl0eVR5cGUgPT09ICdTRUNUSU9OJ1wiPlxuICA8bGliLXNlY3Rpb24tZmllbGRzIFtzZWN0aW9uXT1cImdyaWQuZWxlbWVudFwiPjwvbGliLXNlY3Rpb24tZmllbGRzPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiZ3JpZC5lbnRpdHlUeXBlID09PSAnU1VCRk9STSdcIj5cbiAgPGxpYi1zdWItZm9ybSBbc3ViRm9ybV09XCJncmlkLmVsZW1lbnRcIj48L2xpYi1zdWItZm9ybT5cbjwvZGl2PlxuIl19
@@ -36,9 +36,6 @@ export class CheckBoxFieldsComponent {
36
36
  switch (this.optionType) {
37
37
  case 'OPTION':
38
38
  this.customOptions = this.question.formElement.option.customOptions;
39
- if (this.question.answer) {
40
- this.initializeCustomOption();
41
- }
42
39
  break;
43
40
  case 'LOOKUP':
44
41
  this.lookupTable = this.question.formElement.option.lookupTable;
@@ -67,13 +64,13 @@ export class CheckBoxFieldsComponent {
67
64
  this.minimumSelection = undefined;
68
65
  this.maximumSelection = undefined;
69
66
  }
70
- }
71
- initializeCustomOption() {
72
- this.customOptions.forEach((option) => {
73
- if (this.question.answer.find((a) => a.toString() === option.value.toString())) {
74
- this.selectedOptions.push(option);
75
- }
76
- });
67
+ if (this.question.answer) {
68
+ this.customOptions.forEach((option) => {
69
+ if (this.question.answer.find((a) => a.toString() === option.value)) {
70
+ this.selectedOptions.push(option);
71
+ }
72
+ });
73
+ }
77
74
  }
78
75
  onCheckboxChange(option, event) {
79
76
  if (this.selectionType === 'SINGLE') {
@@ -171,9 +168,6 @@ export class CheckBoxFieldsComponent {
171
168
  value: item.value,
172
169
  label: item.label,
173
170
  }));
174
- if (this.question.answer) {
175
- this.initializeCustomOption();
176
- }
177
171
  }, (error) => {
178
172
  console.error('HTTP Error:', error);
179
173
  });
@@ -186,9 +180,6 @@ export class CheckBoxFieldsComponent {
186
180
  value: item.value,
187
181
  label: item.label,
188
182
  }));
189
- if (this.question.answer) {
190
- this.initializeCustomOption();
191
- }
192
183
  }
193
184
  else {
194
185
  console.error('Error fetching data from database:', response.message);
@@ -218,9 +209,6 @@ export class CheckBoxFieldsComponent {
218
209
  value: item[apiConfig.valueField],
219
210
  label: item[apiConfig.labelField],
220
211
  }));
221
- if (this.question.answer) {
222
- this.initializeCustomOption();
223
- }
224
212
  }, (error) => {
225
213
  console.error('HTTP Error:', error);
226
214
  });
@@ -281,12 +269,12 @@ export class CheckBoxFieldsComponent {
281
269
  !this.selectedOptions.includes(option));
282
270
  }
283
271
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, deps: [{ token: i1.FormService }], target: i0.ɵɵFactoryTarget.Component }); }
284
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: { question: "question" }, ngImport: i0, template: "<div [ngClass]=\"'col-' + count\" class=\"mb-5 px-3\">\r\n <div class=\"input-wrapper mb-2\">\r\n <div [innerHTML]=\"question.questionNumber\"></div>\r\n &nbsp;&nbsp; <label>{{ question.question }}</label\r\n >&nbsp;\r\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"option.value + question?.id\"\r\n [name]=\"option.value + 'Checkbox'\"\r\n [value]=\"option.value\"\r\n (change)=\"onCheckboxChange(option, $event)\"\r\n [disabled]=\"isOptionDisabled(option)\"\r\n [checked]=\"selectedOptions.includes(option)\"\r\n />\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + question?.id\"\r\n *ngIf=\"optionType == 'OPTION'\"\r\n >{{ option.value }}</label\r\n >\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + question?.id\"\r\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\r\n >{{ option.label }}</label\r\n >\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-left:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;white-space:nowrap}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}.form-check-input,.form-check-label{cursor:pointer}\n"], 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
272
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckBoxFieldsComponent, selector: "lib-check-box-fields", inputs: { question: "question" }, ngImport: i0, template: "<div [ngClass]=\"'col-' + count\" class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"option.value + 'Checkbox'\"\n [name]=\"option.value + 'Checkbox'\"\n [value]=\"option.value\"\n (change)=\"onCheckboxChange(option, $event)\"\n [disabled]=\"isOptionDisabled(option)\"\n [checked]=\"selectedOptions.includes(option)\"\n />\n <label\n class=\"formCheckLabel ms-2 mb-2\"\n [for]=\"option.value + 'Checkbox'\"\n *ngIf=\"optionType == 'OPTION'\"\n >{{ option.value }}</label\n >\n <label\n class=\"formCheckLabel ms-2 mb-2\"\n [for]=\"option.value + 'Checkbox'\"\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\n >{{ option.label }}</label\n >\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-left:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;white-space:nowrap}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}.form-check-input,.form-check-label{cursor:pointer}\n"], 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
285
273
  }
286
274
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckBoxFieldsComponent, decorators: [{
287
275
  type: Component,
288
- args: [{ selector: 'lib-check-box-fields', template: "<div [ngClass]=\"'col-' + count\" class=\"mb-5 px-3\">\r\n <div class=\"input-wrapper mb-2\">\r\n <div [innerHTML]=\"question.questionNumber\"></div>\r\n &nbsp;&nbsp; <label>{{ question.question }}</label\r\n >&nbsp;\r\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\r\n <div\r\n class=\"svg-wrapper mb-2 hintIcon\"\r\n [attr.data-title]=\"hint\"\r\n *ngIf=\"hint\"\r\n >\r\n <svg\r\n class=\"hintSvg\"\r\n viewBox=\"0 0 30 30\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\r\n stroke=\"#323232\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\r\n <input\r\n class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"option.value + question?.id\"\r\n [name]=\"option.value + 'Checkbox'\"\r\n [value]=\"option.value\"\r\n (change)=\"onCheckboxChange(option, $event)\"\r\n [disabled]=\"isOptionDisabled(option)\"\r\n [checked]=\"selectedOptions.includes(option)\"\r\n />\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + question?.id\"\r\n *ngIf=\"optionType == 'OPTION'\"\r\n >{{ option.value }}</label\r\n >\r\n <label\r\n class=\"formCheckLabel ms-2 mb-2\"\r\n [for]=\"option.value + question?.id\"\r\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\r\n >{{ option.label }}</label\r\n >\r\n </div>\r\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\r\n <svg\r\n class=\"validationSvg\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\r\n fill=\"#FF0000\"\r\n stroke=\"#FF0000\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M12 12.75L12 7.75\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\r\n </svg>\r\n {{ validationMessage }}\r\n </div>\r\n</div>\r\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-left:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;white-space:nowrap}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}.form-check-input,.form-check-label{cursor:pointer}\n"] }]
276
+ args: [{ selector: 'lib-check-box-fields', template: "<div [ngClass]=\"'col-' + count\" class=\"mb-5 px-3\">\n <div class=\"input-wrapper mb-2\">\n <div [innerHTML]=\"question.questionNumber\"></div>\n &nbsp;&nbsp; <label>{{ question.question }}</label\n >&nbsp;\n <span class=\"text-danger\" *ngIf=\"required\">*</span>\n <div\n class=\"svg-wrapper mb-2 hintIcon\"\n [attr.data-title]=\"hint\"\n *ngIf=\"hint\"\n >\n <svg\n class=\"hintSvg\"\n viewBox=\"0 0 30 30\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M15 26.25V26.25C8.78625 26.25 3.75 21.2138 3.75 15V15C3.75 8.78625 8.78625 3.75 15 3.75V3.75C21.2138 3.75 26.25 8.78625 26.25 15V15C26.25 21.2138 21.2138 26.25 15 26.25Z\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15 16.5623V16.2498C15 15.2285 15.6312 14.6748 16.2637 14.2498C16.8812 13.8335 17.5 13.291 17.5 12.291C17.5 10.9098 16.3813 9.79102 15 9.79102C13.6187 9.79102 12.5 10.9098 12.5 12.291\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14.9988 20C14.8263 20 14.6863 20.14 14.6875 20.3125C14.6875 20.485 14.8275 20.625 15 20.625C15.1725 20.625 15.3125 20.485 15.3125 20.3125C15.3125 20.14 15.1725 20 14.9988 20\"\n stroke=\"#323232\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <div class=\"form-check\" *ngFor=\"let option of customOptions\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [id]=\"option.value + 'Checkbox'\"\n [name]=\"option.value + 'Checkbox'\"\n [value]=\"option.value\"\n (change)=\"onCheckboxChange(option, $event)\"\n [disabled]=\"isOptionDisabled(option)\"\n [checked]=\"selectedOptions.includes(option)\"\n />\n <label\n class=\"formCheckLabel ms-2 mb-2\"\n [for]=\"option.value + 'Checkbox'\"\n *ngIf=\"optionType == 'OPTION'\"\n >{{ option.value }}</label\n >\n <label\n class=\"formCheckLabel ms-2 mb-2\"\n [for]=\"option.value + 'Checkbox'\"\n *ngIf=\"optionType == 'LOOKUP' || 'DATABASE' || 'API'\"\n >{{ option.label }}</label\n >\n </div>\n <div *ngIf=\"validationFailed\" class=\"text-danger\">\n <svg\n class=\"validationSvg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.001 16.75C12.139 16.75 12.251 16.638 12.25 16.5C12.25 16.362 12.138 16.25 12 16.25C11.862 16.25 11.75 16.362 11.75 16.5C11.75 16.638 11.862 16.75 12.001 16.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 21C7.029 21 3 16.971 3 12C3 7.029 7.029 3 12 3C16.971 3 21 7.029 21 12C21 16.971 16.971 21 12 21Z\"\n fill=\"#FF0000\"\n stroke=\"#FF0000\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 12.75L12 7.75\"\n stroke=\"white\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"white\" />\n </svg>\n {{ validationMessage }}\n </div>\n</div>\n", styles: [".input-wrapper{display:flex;align-items:flex-start}.svg-wrapper{margin-left:auto;z-index:999}.hintIcon{position:relative;cursor:pointer}.hintIcon:hover:before{content:attr(data-title);position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);padding:4px 8px;border-radius:4px;background-color:#1d252d;color:#8e9aa0;font-size:14px;white-space:nowrap}.hintIcon:hover:after{content:\"\";position:absolute;top:calc(100% - 26px);left:50%;border:solid transparent;border-width:18px;border-bottom-color:#1d252d;transform:translate(-50%)}.height{height:42px}.invalid{border-color:red}.hintSvg{width:30px;height:30px;fill:none}.validationSvg{width:24px;height:24px;fill:none}.form-check-input,.form-check-label{cursor:pointer}\n"] }]
289
277
  }], ctorParameters: function () { return [{ type: i1.FormService }]; }, propDecorators: { question: [{
290
278
  type: Input
291
279
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2NoZWNrLWJveC1maWVsZHMvY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2NoZWNrLWJveC1maWVsZHMvY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkUsTUFBTSxPQUFPLHVCQUF1QjtJQWtCbEMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFqQm5DLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDNUIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFHM0IsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFFBQUcsR0FBUSxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQVUsRUFBRSxDQUFDLENBQUMsb0RBQW9EO1FBQzVFLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxzQkFBaUIsR0FBVyxFQUFFLENBQUM7SUFFaUIsQ0FBQztJQUVqRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gs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SSxDQUFDLGdCQUFnQjtZQUNwRCxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUN2QyxDQUFDO0lBQ0osQ0FBQzsrR0EzVFUsdUJBQXVCO21HQUF2Qix1QkFBdUIsOEZDUnBDLDh4SEFxR0E7OzRGRDdGYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCO2tHQUt2QixRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY2hlY2stYm94LWZpZWxkcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrLWJveC1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrLWJveC1maWVsZHMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrQm94RmllbGRzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBxdWVzdGlvbjogYW55ID0ge307XHJcbiAgY291bnQ6IG51bWJlciA9IDA7XHJcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoaW50OiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3Rpb25UeXBlOiBzdHJpbmcgPSAnJztcclxuICBtaW5pbXVtU2VsZWN0aW9uPzogbnVtYmVyO1xyXG4gIG1heGltdW1TZWxlY3Rpb24/OiBudW1iZXI7XHJcbiAgb3B0aW9uVHlwZTogc3RyaW5nID0gJyc7XHJcbiAgbG9va3VwVGFibGU6IGFueSA9IHt9O1xyXG4gIGN1c3RvbU9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgZGF0YWJhc2U6IGFueSA9IHt9O1xyXG4gIGFwaTogYW55ID0ge307XHJcbiAgYXBpT3B0aW9uczogYW55W10gPSBbXTsgLy8gQXNzdW1pbmcgeW91IGhhdmUgYSBwcm9wZXJ0eSB0byBzdG9yZSBBUEkgb3B0aW9uc1xyXG4gIHNlbGVjdGVkT3B0aW9uczogYW55W10gPSBbXTtcclxuICB2YWxpZGF0aW9uRmFpbGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy52YWx1ZUFzc2lnbmVkKCk7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUFzc2lnbmVkKCkge1xyXG4gICAgdGhpcy5jb3VudCA9IHRoaXMucXVlc3Rpb24uY291bnQ7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gdGhpcy5xdWVzdGlvbi5yZXF1aXJlZDtcclxuICAgIHRoaXMuaGludCA9IHRoaXMucXVlc3Rpb24uaGludDtcclxuICAgIHRoaXMuc2VsZWN0aW9uVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5zZWxlY3Rpb25UeXBlO1xyXG4gICAgdGhpcy5taW5pbXVtU2VsZWN0aW9uID1cclxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbmltdW1TZWxlY3Rpb247XHJcbiAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gPVxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWF4aW11bVNlbGVjdGlvbjtcclxuICAgIHRoaXMub3B0aW9uVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLm9wdGlvblR5cGU7XHJcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlICdPUFRJT04nOlxyXG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmN1c3RvbU9wdGlvbnM7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21PcHRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0xPT0tVUCc6XHJcbiAgICAgICAgdGhpcy5sb29rdXBUYWJsZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmxvb2t1cFRhYmxlO1xyXG4gICAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbUxvb2t1cCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdEQVRBQkFTRSc6XHJcbiAgICAgICAgdGhpcy5kYXRhYmFzZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmRhdGFiYXNlO1xyXG4gICAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbURhdGFiYXNlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0FQSSc6XHJcbiAgICAgICAgdGhpcy5hcGkgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Lm9wdGlvbi5hcGk7XHJcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tQVBJKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIG9wdGlvbiB0eXBlOicsIHRoaXMub3B0aW9uVHlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgc2VsZWN0aW9uVHlwZSBpcyAnU0lOR0xFJywgc2V0IG1pbmltdW1TZWxlY3Rpb24gYW5kIG1heGltdW1TZWxlY3Rpb24gdG8gMVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ1NJTkdMRScpIHtcclxuICAgICAgdGhpcy5taW5pbXVtU2VsZWN0aW9uID0gMTtcclxuICAgICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uID0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiBzZWxlY3Rpb25UeXBlIGlzICdNVUxUSVBMRScgYW5kIG1pblNlbGVjdGlvbiBhbmQgbWF4U2VsZWN0aW9uIGFyZSBub3Qgc3BlY2lmaWVkLCBzZXQgdGhlbSB0byB1bmRlZmluZWRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3Rpb25UeXBlID09PSAnTVVMVElQTEUnICYmXHJcbiAgICAgICF0aGlzLm1pbmltdW1TZWxlY3Rpb24gJiZcclxuICAgICAgIXRoaXMubWF4aW11bVNlbGVjdGlvblxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubWluaW11bVNlbGVjdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZUN1c3RvbU9wdGlvbigpIHtcclxuICAgIHRoaXMuY3VzdG9tT3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIuZmluZCgoYTogYW55KSA9PiBhLnRvU3RyaW5nKCkgPT09IG9wdGlvbi52YWx1ZS50b1N0cmluZygpKSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hDaGFuZ2Uob3B0aW9uOiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdTSU5HTEUnKSB7XHJcbiAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW29wdGlvbl07XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSBbb3B0aW9uLnZhbHVlXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc01pbmltdW1TZWxlY3Rpb25WYWxpZCgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdNVUxUSVBMRScpIHtcclxuICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb24pKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0gIT09IG9wdGlvblxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xyXG4gICAgICB0aGlzLmlzTWluaW11bVNlbGVjdGlvblZhbGlkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBvcHRpb25zIGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZFxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiB0aGlzLm1heGltdW1TZWxlY3Rpb25cclxuICAgICkge1xyXG4gICAgICAvLyBJZiBleGNlZWRlZCwgdW5jaGVjayB0aGUgbGFzdCBzZWxlY3RlZCBvcHRpb25cclxuICAgICAgZXZlbnQudGFyZ2V0LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgKGl0ZW0pID0+IGl0ZW0gIT09IG9wdGlvblxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XHJcbiAgICAgIHRoaXMuaXNNaW5pbXVtU2VsZWN0aW9uVmFsaWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLnF1ZXN0aW9uLmNoaWxkTG9naWNzKXtcclxuICAgICAgICAgIHRoaXMudXBkYXRlQ2hpbGRMb2dpY3ModGhpcy5xdWVzdGlvbik7XHJcbiAgICAgICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hpbGRMb2dpY3MocXVlc3Rpb246IGFueSkge1xyXG4gICAgaWYgKHF1ZXN0aW9uLmNoaWxkTG9naWNzICYmIEFycmF5LmlzQXJyYXkocXVlc3Rpb24uY2hpbGRMb2dpY3MpKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmNoaWxkTG9naWNzLmZvckVhY2goKGNoaWxkTG9naWM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHRoaXMuc2VsZWN0aW9uVHlwZT09J1NJTkdMRScpe1xyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICAgY2hpbGRMb2dpYy5zaG93TG9naWM9ZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYyA9IHRoaXMuZXZhbHVhdGVDb25kaXRpb24odGhpcy5zZWxlY3RlZE9wdGlvbnNbMF0/LnZhbHVlLCBjaGlsZExvZ2ljLmNvbmRpdGlvbiwgY2hpbGRMb2dpYy5pbnB1dFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnTVVMVElQTEUnKSB7XHJcbiAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICBjaGlsZExvZ2ljLnNob3c9ZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnZhbHVlKTtcclxuICAgICAgICAgIGNoaWxkTG9naWMuc2hvd0xvZ2ljID0gdGhpcy5ldmFsdWF0ZU11bHRpcGxlQ29uZGl0aW9uKHNlbGVjdGVkVmFsdWVzLCBjaGlsZExvZ2ljLmNvbmRpdGlvbiwgY2hpbGRMb2dpYy5pbnB1dFZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBldmFsdWF0ZUNvbmRpdGlvbihhbnN3ZXI6IGFueVtdLCBjb25kaXRpb246IHN0cmluZywgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzdHJpbmdJbnB1dFZhbHVlID0gQXJyYXkuaXNBcnJheShpbnB1dFZhbHVlKSA/IGlucHV0VmFsdWUubWFwKHZhbCA9PiB2YWwudG9TdHJpbmcoKSkgOiBpbnB1dFZhbHVlO1xyXG5cclxuICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7ICAgICAgXHJcbiAgICAgIGNhc2UgXCIhPVwiOlxyXG4gICAgICAgIHJldHVybiBhbnN3ZXIgIT1zdHJpbmdJbnB1dFZhbHVlO1xyXG4gICAgICBjYXNlIFwiPVwiOlxyXG4gICAgICAgIHJldHVybiBhbnN3ZXIgPT1zdHJpbmdJbnB1dFZhbHVlO1xyXG4gICAgICBjYXNlIFwiSU5cIjpcclxuICAgICAgICByZXR1cm4gc3RyaW5nSW5wdXRWYWx1ZS5pbmNsdWRlcyhhbnN3ZXIpO1xyXG4gICAgICBjYXNlIFwiTk9UIElOXCI6XHJcbiAgICAgICAgcmV0dXJuICEoc3RyaW5nSW5wdXRWYWx1ZS5pbmNsdWRlcyhhbnN3ZXIpKVxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV2YWx1YXRlTXVsdGlwbGVDb25kaXRpb24oYW5zd2VyczogYW55W10sIGNvbmRpdGlvbjogc3RyaW5nLCBpbnB1dFZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHN0cmluZ0lucHV0VmFsdWUgPSBBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpID8gaW5wdXRWYWx1ZS5tYXAodmFsID0+IHZhbC50b1N0cmluZygpKSA6IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcclxuICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XHJcbiAgICAgIGNhc2UgXCIhPVwiOlxyXG4gICAgICAgIHJldHVybiBhbnN3ZXJzLmV2ZXJ5KGFuc3dlciA9PiBhbnN3ZXIgIT0gc3RyaW5nSW5wdXRWYWx1ZSk7XHJcbiAgICAgIGNhc2UgXCI9XCI6XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuc29tZShhbnN3ZXIgPT4gYW5zd2VyID09IHN0cmluZ0lucHV0VmFsdWUpO1xyXG4gICAgICBjYXNlIFwiSU5cIjpcclxuICAgICAgICByZXR1cm4gYW5zd2Vycy5zb21lKGFuc3dlciA9PiBzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcikpO1xyXG4gICAgICBjYXNlIFwiTk9UIElOXCI6XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuZXZlcnkoYW5zd2VyID0+ICFzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcikpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZldGNoRGF0YUZyb21Mb29rdXAoKSB7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmZldGNoRGF0YUZyb21Mb29rdXAodGhpcy5sb29rdXBUYWJsZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSByZXNwb25zZS5yZXN1bHQudmFsdWVzLm1hcChcclxuICAgICAgICAgIChpdGVtOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXHJcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmFuc3dlcikge1xyXG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplQ3VzdG9tT3B0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZldGNoRGF0YUZyb21EYXRhYmFzZSgpIHtcclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YWJhc2UgPSB0aGlzLnRyYW5zZm9ybURhdGFiYXNlT2JqZWN0KHRoaXMuZGF0YWJhc2UpO1xyXG4gICAgdGhpcy5mb3JtU2VydmljZS5mZXRjaERhdGFGcm9tRGF0YWJhc2UodHJhbnNmb3JtZWREYXRhYmFzZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gcmVzcG9uc2UucmVzdWx0Lm1hcChcclxuICAgICAgICAgICAgKGl0ZW06IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmFuc3dlcikge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21PcHRpb24oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YSBmcm9tIGRhdGFiYXNlOicsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignSFRUUCBFcnJvcjonLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1EYXRhYmFzZU9iamVjdChkYXRhYmFzZTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0YWJsZU5hbWU6IGRhdGFiYXNlLnRhYmxlTmFtZSxcclxuICAgICAgdmFsdWVGaWVsZDogZGF0YWJhc2UudmFsdWVGaWVsZCxcclxuICAgICAgbGFiZWxGaWVsZDogZGF0YWJhc2UubGFiZWxGaWVsZCxcclxuICAgICAgY3JpdGVyaWE6IGRhdGFiYXNlLmNyaXRlcmlhLm1hcCgoY3JpdGVyaWE6IGFueSkgPT4gKHtcclxuICAgICAgICBmaWVsZDogY3JpdGVyaWEuZmllbGQsXHJcbiAgICAgICAgY29uZGl0aW9uOiBjcml0ZXJpYS5jb25kaXRpb24sXHJcbiAgICAgICAgdmFsdWU6IGNyaXRlcmlhLmlucHV0VmFsdWUsXHJcbiAgICAgICAgbG9naWNhbE9wZXJhdG9yOiBjcml0ZXJpYS5sb2dpY2FsT3BlcmF0b3IsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmZXRjaERhdGFGcm9tQVBJKCkge1xyXG4gICAgY29uc3QgYXBpQ29uZmlnID0gdGhpcy5hcGk7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmZldGNoRGF0YUZyb21FeHRlcm5hbEFQSShhcGlDb25maWcudXJsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3REYXRhQnlQYXRoKHJlc3BvbnNlLCBhcGlDb25maWcucGF0aFRvVmFsdWUpO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogaXRlbVthcGlDb25maWcudmFsdWVGaWVsZF0sXHJcbiAgICAgICAgICBsYWJlbDogaXRlbVthcGlDb25maWcubGFiZWxGaWVsZF0sXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmFuc3dlcikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21PcHRpb24oKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignSFRUUCBFcnJvcjonLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0RGF0YUJ5UGF0aChkYXRhOiBhbnksIHBhdGg6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBpc01pbmltdW1TZWxlY3Rpb25WYWxpZCgpIHtcclxuICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09IDAgJiYgdGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm1pbmltdW1TZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGlvblR5cGU9PSdTSU5HTEUnKXtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uICYmIHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYE1pbmltdW0gJHt0aGlzLm1pbmltdW1TZWxlY3Rpb259ICBzZWxlY3Rpb24ocykgcmVxdWlyZWQuYDtcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA8IHRoaXMubWluaW11bVNlbGVjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSBgTWluaW11bSAke3RoaXMubWluaW11bVNlbGVjdGlvbn0gIHNlbGVjdGlvbihzKSByZXF1aXJlZC5gO1xyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9uVHlwZSA9PT0gJ09QVElPTicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tT3B0aW9ucztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnTE9PS1VQJykge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmxvb2t1cFRhYmxlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnQVBJJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlPcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWVGaWVsZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc09wdGlvbkRpc2FibGVkKG9wdGlvbjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPj0gdGhpcy5tYXhpbXVtU2VsZWN0aW9uICYmXHJcbiAgICAgICF0aGlzLnNlbGVjdGVkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb24pXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIidjb2wtJyArIGNvdW50XCIgY2xhc3M9XCJtYi01IHB4LTNcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlciBtYi0yXCI+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwicXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJcIj48L2Rpdj5cclxuICAgICZuYnNwOyZuYnNwOyA8bGFiZWw+e3sgcXVlc3Rpb24ucXVlc3Rpb24gfX08L2xhYmVsXHJcbiAgICA+Jm5ic3A7XHJcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwic3ZnLXdyYXBwZXIgbWItMiBoaW50SWNvblwiXHJcbiAgICAgIFthdHRyLmRhdGEtdGl0bGVdPVwiaGludFwiXHJcbiAgICAgICpuZ0lmPVwiaGludFwiXHJcbiAgICA+XHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImhpbnRTdmdcIlxyXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMzAgMzBcIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICBkPVwiTTE1IDI2LjI1VjI2LjI1QzguNzg2MjUgMjYuMjUgMy43NSAyMS4yMTM4IDMuNzUgMTVWMTVDMy43NSA4Ljc4NjI1IDguNzg2MjUgMy43NSAxNSAzLjc1VjMuNzVDMjEuMjEzOCAzLjc1IDI2LjI1IDguNzg2MjUgMjYuMjUgMTVWMTVDMjYuMjUgMjEuMjEzOCAyMS4yMTM4IDI2LjI1IDE1IDI2LjI1WlwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMzIzMjMyXCJcclxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxwYXRoXHJcbiAgICAgICAgICBkPVwiTTE1IDE2LjU2MjNWMTYuMjQ5OEMxNSAxNS4yMjg1IDE1LjYzMTIgMTQuNjc0OCAxNi4yNjM3IDE0LjI0OThDMTYuODgxMiAxMy44MzM1IDE3LjUgMTMuMjkxIDE3LjUgMTIuMjkxQzE3LjUgMTAuOTA5OCAxNi4zODEzIDkuNzkxMDIgMTUgOS43OTEwMkMxMy42MTg3IDkuNzkxMDIgMTIuNSAxMC45MDk4IDEyLjUgMTIuMjkxXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMTQuOTk4OCAyMEMxNC44MjYzIDIwIDE0LjY4NjMgMjAuMTQgMTQuNjg3NSAyMC4zMTI1QzE0LjY4NzUgMjAuNDg1IDE0LjgyNzUgMjAuNjI1IDE1IDIwLjYyNUMxNS4xNzI1IDIwLjYyNSAxNS4zMTI1IDIwLjQ4NSAxNS4zMTI1IDIwLjMxMjVDMTUuMzEyNSAyMC4xNCAxNS4xNzI1IDIwIDE0Ljk5ODggMjBcIlxyXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXHJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3VzdG9tT3B0aW9uc1wiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgIFtpZF09XCJvcHRpb24udmFsdWUgKyBxdWVzdGlvbj8uaWRcIlxyXG4gICAgICBbbmFtZV09XCJvcHRpb24udmFsdWUgKyAnQ2hlY2tib3gnXCJcclxuICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXHJcbiAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZShvcHRpb24sICRldmVudClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcclxuICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvbilcIlxyXG4gICAgLz5cclxuICAgIDxsYWJlbFxyXG4gICAgICBjbGFzcz1cImZvcm1DaGVja0xhYmVsIG1zLTIgbWItMlwiXHJcbiAgICAgIFtmb3JdPVwib3B0aW9uLnZhbHVlICsgcXVlc3Rpb24/LmlkXCJcclxuICAgICAgKm5nSWY9XCJvcHRpb25UeXBlID09ICdPUFRJT04nXCJcclxuICAgICAgPnt7IG9wdGlvbi52YWx1ZSB9fTwvbGFiZWxcclxuICAgID5cclxuICAgIDxsYWJlbFxyXG4gICAgICBjbGFzcz1cImZvcm1DaGVja0xhYmVsIG1zLTIgbWItMlwiXHJcbiAgICAgIFtmb3JdPVwib3B0aW9uLnZhbHVlICsgcXVlc3Rpb24/LmlkXCJcclxuICAgICAgKm5nSWY9XCJvcHRpb25UeXBlID09ICdMT09LVVAnIHx8ICdEQVRBQkFTRScgfHwgJ0FQSSdcIlxyXG4gICAgICA+e3sgb3B0aW9uLmxhYmVsIH19PC9sYWJlbFxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgPHN2Z1xyXG4gICAgICBjbGFzcz1cInZhbGlkYXRpb25TdmdcIlxyXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICA+XHJcbiAgICAgIDxwYXRoXHJcbiAgICAgICAgZD1cIk0xMi4wMDEgMTYuNzVDMTIuMTM5IDE2Ljc1IDEyLjI1MSAxNi42MzggMTIuMjUgMTYuNUMxMi4yNSAxNi4zNjIgMTIuMTM4IDE2LjI1IDEyIDE2LjI1QzExLjg2MiAxNi4yNSAxMS43NSAxNi4zNjIgMTEuNzUgMTYuNUMxMS43NSAxNi42MzggMTEuODYyIDE2Ljc1IDEyLjAwMSAxNi43NVwiXHJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAvPlxyXG4gICAgICA8cGF0aFxyXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgIGQ9XCJNMTIgMjFDNy4wMjkgMjEgMyAxNi45NzEgMyAxMkMzIDcuMDI5IDcuMDI5IDMgMTIgM0MxNi45NzEgMyAyMSA3LjAyOSAyMSAxMkMyMSAxNi45NzEgMTYuOTcxIDIxIDEyIDIxWlwiXHJcbiAgICAgICAgZmlsbD1cIiNGRjAwMDBcIlxyXG4gICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAvPlxyXG4gICAgICA8cGF0aFxyXG4gICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXHJcbiAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxyXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgPC9zdmc+XHJcbiAgICB7eyB2YWxpZGF0aW9uTWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2NoZWNrLWJveC1maWVsZHMvY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2NoZWNrLWJveC1maWVsZHMvY2hlY2stYm94LWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkUsTUFBTSxPQUFPLHVCQUF1QjtJQWtCbEMsWUFBb0IsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFqQm5DLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDNUIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFHM0IsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUMxQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFFBQUcsR0FBUSxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQVUsRUFBRSxDQUFDLENBQUMsb0RBQW9EO1FBQzVFLG9CQUFlLEdBQVUsRUFBRSxDQUFDO1FBQzVCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxzQkFBaUIsR0FBVyxFQUFFLENBQUM7SUFFaUIsQ0FBQztJQUVqRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gs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QUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ2pDO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUMzQjthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDdkMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzNEO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVc7UUFDMUIsT0FBTyxDQUNMLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0I7WUFDcEQsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FDdkMsQ0FBQztJQUNKLENBQUM7K0dBN1NVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDhGQ1JwQyw4a0hBcUdBOzs0RkQ3RmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHNCQUFzQjtrR0FLdkIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jaGVjay1ib3gtZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrLWJveC1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVjay1ib3gtZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrQm94RmllbGRzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9O1xuICBjb3VudDogbnVtYmVyID0gMDtcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGludDogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZyA9ICcnO1xuICBtaW5pbXVtU2VsZWN0aW9uPzogbnVtYmVyO1xuICBtYXhpbXVtU2VsZWN0aW9uPzogbnVtYmVyO1xuICBvcHRpb25UeXBlOiBzdHJpbmcgPSAnJztcbiAgbG9va3VwVGFibGU6IGFueSA9IHt9O1xuICBjdXN0b21PcHRpb25zOiBhbnlbXSA9IFtdO1xuICBkYXRhYmFzZTogYW55ID0ge307XG4gIGFwaTogYW55ID0ge307XG4gIGFwaU9wdGlvbnM6IGFueVtdID0gW107IC8vIEFzc3VtaW5nIHlvdSBoYXZlIGEgcHJvcGVydHkgdG8gc3RvcmUgQVBJIG9wdGlvbnNcbiAgc2VsZWN0ZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICB2YWxpZGF0aW9uRmFpbGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52YWx1ZUFzc2lnbmVkKCk7XG4gIH1cblxuICB2YWx1ZUFzc2lnbmVkKCkge1xuICAgIHRoaXMuY291bnQgPSB0aGlzLnF1ZXN0aW9uLmNvdW50O1xuICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLnF1ZXN0aW9uLnJlcXVpcmVkO1xuICAgIHRoaXMuaGludCA9IHRoaXMucXVlc3Rpb24uaGludDtcbiAgICB0aGlzLnNlbGVjdGlvblR5cGUgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2Uuc2VsZWN0aW9uVHlwZTtcbiAgICB0aGlzLm1pbmltdW1TZWxlY3Rpb24gPVxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbmltdW1TZWxlY3Rpb247XG4gICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uID1cbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhpbXVtU2VsZWN0aW9uO1xuICAgIHRoaXMub3B0aW9uVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLm9wdGlvblR5cGU7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgJ09QVElPTic6XG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmN1c3RvbU9wdGlvbnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTE9PS1VQJzpcbiAgICAgICAgdGhpcy5sb29rdXBUYWJsZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmxvb2t1cFRhYmxlO1xuICAgICAgICB0aGlzLmZldGNoRGF0YUZyb21Mb29rdXAoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Lm9wdGlvbi5kYXRhYmFzZTtcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tRGF0YWJhc2UoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBUEknOlxuICAgICAgICB0aGlzLmFwaSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmFwaTtcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tQVBJKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIG9wdGlvbiB0eXBlOicsIHRoaXMub3B0aW9uVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgc2VsZWN0aW9uVHlwZSBpcyAnU0lOR0xFJywgc2V0IG1pbmltdW1TZWxlY3Rpb24gYW5kIG1heGltdW1TZWxlY3Rpb24gdG8gMVxuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdTSU5HTEUnKSB7XG4gICAgICB0aGlzLm1pbmltdW1TZWxlY3Rpb24gPSAxO1xuICAgICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uID0gMTtcbiAgICB9XG5cbiAgICAvLyBJZiBzZWxlY3Rpb25UeXBlIGlzICdNVUxUSVBMRScgYW5kIG1pblNlbGVjdGlvbiBhbmQgbWF4U2VsZWN0aW9uIGFyZSBub3Qgc3BlY2lmaWVkLCBzZXQgdGhlbSB0byB1bmRlZmluZWRcbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdNVUxUSVBMRScgJiZcbiAgICAgICF0aGlzLm1pbmltdW1TZWxlY3Rpb24gJiZcbiAgICAgICF0aGlzLm1heGltdW1TZWxlY3Rpb25cbiAgICApIHtcbiAgICAgIHRoaXMubWluaW11bVNlbGVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMubWF4aW11bVNlbGVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIpIHtcbiAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucy5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIuZmluZCgoYTogYW55KSA9PiBhLnRvU3RyaW5nKCkgPT09IG9wdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgb25DaGVja2JveENoYW5nZShvcHRpb246IGFueSwgZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdTSU5HTEUnKSB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbb3B0aW9uXTtcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSBbb3B0aW9uLnZhbHVlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLmlzTWluaW11bVNlbGVjdGlvblZhbGlkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdNVUxUSVBMRScpIHtcbiAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvbikpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKTtcbiAgICAgIHRoaXMuaXNNaW5pbXVtU2VsZWN0aW9uVmFsaWQoKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIG9wdGlvbnMgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkXG4gICAgaWYgKFxuICAgICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IHRoaXMubWF4aW11bVNlbGVjdGlvblxuICAgICkge1xuICAgICAgLy8gSWYgZXhjZWVkZWQsIHVuY2hlY2sgdGhlIGxhc3Qgc2VsZWN0ZWQgb3B0aW9uXG4gICAgICBldmVudC50YXJnZXQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIoXG4gICAgICAgIChpdGVtKSA9PiBpdGVtICE9PSBvcHRpb25cbiAgICAgICk7XG4gICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XG4gICAgICB0aGlzLmlzTWluaW11bVNlbGVjdGlvblZhbGlkKCk7XG4gICAgfVxuXG4gICAgaWYodGhpcy5xdWVzdGlvbi5jaGlsZExvZ2ljcyl7XG4gICAgICAgICAgdGhpcy51cGRhdGVDaGlsZExvZ2ljcyh0aGlzLnF1ZXN0aW9uKTtcbiAgICAgICAgfVxuICB9XG5cbiAgdXBkYXRlQ2hpbGRMb2dpY3MocXVlc3Rpb246IGFueSkge1xuICAgIGlmIChxdWVzdGlvbi5jaGlsZExvZ2ljcyAmJiBBcnJheS5pc0FycmF5KHF1ZXN0aW9uLmNoaWxkTG9naWNzKSkge1xuICAgICAgcXVlc3Rpb24uY2hpbGRMb2dpY3MuZm9yRWFjaCgoY2hpbGRMb2dpYzogYW55KSA9PiB7XG4gICAgICAgIGlmKHRoaXMuc2VsZWN0aW9uVHlwZT09J1NJTkdMRScpe1xuICAgICAgICAgIGlmKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aD09MCl7XG4gICAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYz1mYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGNoaWxkTG9naWMuc2hvd0xvZ2ljID0gdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbih0aGlzLnNlbGVjdGVkT3B0aW9uc1swXT8udmFsdWUsIGNoaWxkTG9naWMuY29uZGl0aW9uLCBjaGlsZExvZ2ljLmlucHV0VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdNVUxUSVBMRScpIHtcbiAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg9PTApe1xuICAgICAgICAgICAgY2hpbGRMb2dpYy5zaG93PWZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS52YWx1ZSk7XG4gICAgICAgICAgY2hpbGRMb2dpYy5zaG93TG9naWMgPSB0aGlzLmV2YWx1YXRlTXVsdGlwbGVDb25kaXRpb24oc2VsZWN0ZWRWYWx1ZXMsIGNoaWxkTG9naWMuY29uZGl0aW9uLCBjaGlsZExvZ2ljLmlucHV0VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIFxuICBldmFsdWF0ZUNvbmRpdGlvbihhbnN3ZXI6IGFueVtdLCBjb25kaXRpb246IHN0cmluZywgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RyaW5nSW5wdXRWYWx1ZSA9IEFycmF5LmlzQXJyYXkoaW5wdXRWYWx1ZSkgPyBpbnB1dFZhbHVlLm1hcCh2YWwgPT4gdmFsLnRvU3RyaW5nKCkpIDogaW5wdXRWYWx1ZTtcblxuICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7ICAgICAgXG4gICAgICBjYXNlIFwiIT1cIjpcbiAgICAgICAgcmV0dXJuIGFuc3dlciAhPXN0cmluZ0lucHV0VmFsdWU7XG4gICAgICBjYXNlIFwiPVwiOlxuICAgICAgICByZXR1cm4gYW5zd2VyID09c3RyaW5nSW5wdXRWYWx1ZTtcbiAgICAgIGNhc2UgXCJJTlwiOlxuICAgICAgICByZXR1cm4gc3RyaW5nSW5wdXRWYWx1ZS5pbmNsdWRlcyhhbnN3ZXIpO1xuICAgICAgY2FzZSBcIk5PVCBJTlwiOlxuICAgICAgICByZXR1cm4gIShzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcikpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGVNdWx0aXBsZUNvbmRpdGlvbihhbnN3ZXJzOiBhbnlbXSwgY29uZGl0aW9uOiBzdHJpbmcsIGlucHV0VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0cmluZ0lucHV0VmFsdWUgPSBBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpID8gaW5wdXRWYWx1ZS5tYXAodmFsID0+IHZhbC50b1N0cmluZygpKSA6IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSBcIiE9XCI6XG4gICAgICAgIHJldHVybiBhbnN3ZXJzLmV2ZXJ5KGFuc3dlciA9PiBhbnN3ZXIgIT0gc3RyaW5nSW5wdXRWYWx1ZSk7XG4gICAgICBjYXNlIFwiPVwiOlxuICAgICAgICByZXR1cm4gYW5zd2Vycy5zb21lKGFuc3dlciA9PiBhbnN3ZXIgPT0gc3RyaW5nSW5wdXRWYWx1ZSk7XG4gICAgICBjYXNlIFwiSU5cIjpcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuc29tZShhbnN3ZXIgPT4gc3RyaW5nSW5wdXRWYWx1ZS5pbmNsdWRlcyhhbnN3ZXIpKTtcbiAgICAgIGNhc2UgXCJOT1QgSU5cIjpcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuZXZlcnkoYW5zd2VyID0+ICFzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZldGNoRGF0YUZyb21Mb29rdXAoKSB7XG4gICAgdGhpcy5mb3JtU2VydmljZS5mZXRjaERhdGFGcm9tTG9va3VwKHRoaXMubG9va3VwVGFibGUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSByZXNwb25zZS5yZXN1bHQudmFsdWVzLm1hcChcbiAgICAgICAgICAoaXRlbTogeyB2YWx1ZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0pID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hUVFAgRXJyb3I6JywgZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBmZXRjaERhdGFGcm9tRGF0YWJhc2UoKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWREYXRhYmFzZSA9IHRoaXMudHJhbnNmb3JtRGF0YWJhc2VPYmplY3QodGhpcy5kYXRhYmFzZSk7XG4gICAgdGhpcy5mb3JtU2VydmljZS5mZXRjaERhdGFGcm9tRGF0YWJhc2UodHJhbnNmb3JtZWREYXRhYmFzZSkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gcmVzcG9uc2UucmVzdWx0Lm1hcChcbiAgICAgICAgICAgIChpdGVtOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4gKHtcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhdGEgZnJvbSBkYXRhYmFzZTonLCByZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdHJhbnNmb3JtRGF0YWJhc2VPYmplY3QoZGF0YWJhc2U6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICB0YWJsZU5hbWU6IGRhdGFiYXNlLnRhYmxlTmFtZSxcbiAgICAgIHZhbHVlRmllbGQ6IGRhdGFiYXNlLnZhbHVlRmllbGQsXG4gICAgICBsYWJlbEZpZWxkOiBkYXRhYmFzZS5sYWJlbEZpZWxkLFxuICAgICAgY3JpdGVyaWE6IGRhdGFiYXNlLmNyaXRlcmlhLm1hcCgoY3JpdGVyaWE6IGFueSkgPT4gKHtcbiAgICAgICAgZmllbGQ6IGNyaXRlcmlhLmZpZWxkLFxuICAgICAgICBjb25kaXRpb246IGNyaXRlcmlhLmNvbmRpdGlvbixcbiAgICAgICAgdmFsdWU6IGNyaXRlcmlhLmlucHV0VmFsdWUsXG4gICAgICAgIGxvZ2ljYWxPcGVyYXRvcjogY3JpdGVyaWEubG9naWNhbE9wZXJhdG9yLFxuICAgICAgfSkpLFxuICAgIH07XG4gIH1cblxuICBmZXRjaERhdGFGcm9tQVBJKCkge1xuICAgIGNvbnN0IGFwaUNvbmZpZyA9IHRoaXMuYXBpO1xuICAgIHRoaXMuZm9ybVNlcnZpY2UuZmV0Y2hEYXRhRnJvbUV4dGVybmFsQVBJKGFwaUNvbmZpZy51cmwpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0RGF0YUJ5UGF0aChyZXNwb25zZSwgYXBpQ29uZmlnLnBhdGhUb1ZhbHVlKTtcbiAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogaXRlbVthcGlDb25maWcudmFsdWVGaWVsZF0sXG4gICAgICAgICAgbGFiZWw6IGl0ZW1bYXBpQ29uZmlnLmxhYmVsRmllbGRdLFxuICAgICAgICB9KSk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hUVFAgRXJyb3I6JywgZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBleHRyYWN0RGF0YUJ5UGF0aChkYXRhOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIGRhdGEpO1xuICB9XG5cbiAgaXNNaW5pbXVtU2VsZWN0aW9uVmFsaWQoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XG4gICAgXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PSAwICYmIHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJ1RoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbic7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWluaW11bVNlbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZih0aGlzLnNlbGVjdGlvblR5cGU9PSdTSU5HTEUnKXtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA8IHRoaXMubWluaW11bVNlbGVjdGlvbiAmJiB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYE1pbmltdW0gJHt0aGlzLm1pbmltdW1TZWxlY3Rpb259ICBzZWxlY3Rpb24ocykgcmVxdWlyZWQuYDtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYE1pbmltdW0gJHt0aGlzLm1pbmltdW1TZWxlY3Rpb259ICBzZWxlY3Rpb24ocykgcmVxdWlyZWQuYDtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0T3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnT1BUSU9OJykge1xuICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tT3B0aW9ucztcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9uVHlwZSA9PT0gJ0xPT0tVUCcpIHtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMubG9va3VwVGFibGUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnQVBJJykge1xuICAgICAgcmV0dXJuIHRoaXMuYXBpT3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlRmllbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgaXNPcHRpb25EaXNhYmxlZChvcHRpb246IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID49IHRoaXMubWF4aW11bVNlbGVjdGlvbiAmJlxuICAgICAgIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmluY2x1ZGVzKG9wdGlvbilcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIidjb2wtJyArIGNvdW50XCIgY2xhc3M9XCJtYi01IHB4LTNcIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgbWItMlwiPlxuICAgIDxkaXYgW2lubmVySFRNTF09XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiPjwvZGl2PlxuICAgICZuYnNwOyZuYnNwOyA8bGFiZWw+e3sgcXVlc3Rpb24ucXVlc3Rpb24gfX08L2xhYmVsXG4gICAgPiZuYnNwO1xuICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN2Zy13cmFwcGVyIG1iLTIgaGludEljb25cIlxuICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJoaW50XCJcbiAgICAgICpuZ0lmPVwiaGludFwiXG4gICAgPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImhpbnRTdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDMwIDMwXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xNSAyNi4yNVYyNi4yNUM4Ljc4NjI1IDI2LjI1IDMuNzUgMjEuMjEzOCAzLjc1IDE1VjE1QzMuNzUgOC43ODYyNSA4Ljc4NjI1IDMuNzUgMTUgMy43NVYzLjc1QzIxLjIxMzggMy43NSAyNi4yNSA4Ljc4NjI1IDI2LjI1IDE1VjE1QzI2LjI1IDIxLjIxMzggMjEuMjEzOCAyNi4yNSAxNSAyNi4yNVpcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTYuNTYyM1YxNi4yNDk4QzE1IDE1LjIyODUgMTUuNjMxMiAxNC42NzQ4IDE2LjI2MzcgMTQuMjQ5OEMxNi44ODEyIDEzLjgzMzUgMTcuNSAxMy4yOTEgMTcuNSAxMi4yOTFDMTcuNSAxMC45MDk4IDE2LjM4MTMgOS43OTEwMiAxNSA5Ljc5MTAyQzEzLjYxODcgOS43OTEwMiAxMi41IDEwLjkwOTggMTIuNSAxMi4yOTFcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTQuOTk4OCAyMEMxNC44MjYzIDIwIDE0LjY4NjMgMjAuMTQgMTQuNjg3NSAyMC4zMTI1QzE0LjY4NzUgMjAuNDg1IDE0LjgyNzUgMjAuNjI1IDE1IDIwLjYyNUMxNS4xNzI1IDIwLjYyNSAxNS4zMTI1IDIwLjQ4NSAxNS4zMTI1IDIwLjMxMjVDMTUuMzEyNSAyMC4xNCAxNS4xNzI1IDIwIDE0Ljk5ODggMjBcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3VzdG9tT3B0aW9uc1wiPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICBbaWRdPVwib3B0aW9uLnZhbHVlICsgJ0NoZWNrYm94J1wiXG4gICAgICBbbmFtZV09XCJvcHRpb24udmFsdWUgKyAnQ2hlY2tib3gnXCJcbiAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKG9wdGlvbiwgJGV2ZW50KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNPcHRpb25EaXNhYmxlZChvcHRpb24pXCJcbiAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb24pXCJcbiAgICAvPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJmb3JtQ2hlY2tMYWJlbCBtcy0yIG1iLTJcIlxuICAgICAgW2Zvcl09XCJvcHRpb24udmFsdWUgKyAnQ2hlY2tib3gnXCJcbiAgICAgICpuZ0lmPVwib3B0aW9uVHlwZSA9PSAnT1BUSU9OJ1wiXG4gICAgICA+e3sgb3B0aW9uLnZhbHVlIH19PC9sYWJlbFxuICAgID5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwiZm9ybUNoZWNrTGFiZWwgbXMtMiBtYi0yXCJcbiAgICAgIFtmb3JdPVwib3B0aW9uLnZhbHVlICsgJ0NoZWNrYm94J1wiXG4gICAgICAqbmdJZj1cIm9wdGlvblR5cGUgPT0gJ0xPT0tVUCcgfHwgJ0RBVEFCQVNFJyB8fCAnQVBJJ1wiXG4gICAgICA+e3sgb3B0aW9uLmxhYmVsIH19PC9sYWJlbFxuICAgID5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwidmFsaWRhdGlvblN2Z1wiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTIuMDAxIDE2Ljc1QzEyLjEzOSAxNi43NSAxMi4yNTEgMTYuNjM4IDEyLjI1IDE2LjVDMTIuMjUgMTYuMzYyIDEyLjEzOCAxNi4yNSAxMiAxNi4yNUMxMS44NjIgMTYuMjUgMTEuNzUgMTYuMzYyIDExLjc1IDE2LjVDMTEuNzUgMTYuNjM4IDExLjg2MiAxNi43NSAxMi4wMDEgMTYuNzVcIlxuICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEyIDIxQzcuMDI5IDIxIDMgMTYuOTcxIDMgMTJDMyA3LjAyOSA3LjAyOSAzIDEyIDNDMTYuOTcxIDMgMjEgNy4wMjkgMjEgMTJDMjEgMTYuOTcxIDE2Ljk3MSAyMSAxMiAyMVpcIlxuICAgICAgICBmaWxsPVwiI0ZGMDAwMFwiXG4gICAgICAgIHN0cm9rZT1cIiNGRjAwMDBcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNMTIgMTIuNzVMMTIgNy43NVwiXG4gICAgICAgIHN0cm9rZT1cIndoaXRlXCJcbiAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjE2XCIgcj1cIjFcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgIDwvc3ZnPlxuICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=