commons-assessment 12.1.0 → 12.1.2-dev.0

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 (82) hide show
  1. package/README.md +11 -0
  2. package/bundles/commons-assessment.umd.js +2304 -247
  3. package/bundles/commons-assessment.umd.js.map +1 -1
  4. package/esm2015/lib/modules/assessment-maker/assessment-maker.component.js +293 -32
  5. package/esm2015/lib/modules/assessment-maker/assessment-maker.module.js +10 -5
  6. package/esm2015/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.js +1 -1
  7. package/esm2015/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.js +77 -22
  8. package/esm2015/lib/modules/assessment-maker/components/question-bank-picker/question-bank-picker.component.js +276 -0
  9. package/esm2015/lib/modules/assessment-maker/components/question-details/question-details.component.js +22 -2
  10. package/esm2015/lib/modules/assessment-maker/services/assessment-builder.service.js +22 -7
  11. package/esm2015/lib/modules/assessment-maker/services/assessment-maker.service.js +32 -5
  12. package/esm2015/lib/modules/assessment-taker/assessment-taker.component.js +365 -42
  13. package/esm2015/lib/modules/assessment-taker/assessment-taker.module.js +9 -3
  14. package/esm2015/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.js +137 -0
  15. package/esm2015/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.js +177 -0
  16. package/esm2015/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.js +2 -3
  17. package/esm2015/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.js +1 -1
  18. package/esm2015/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.js +5 -2
  19. package/esm2015/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.js +1 -1
  20. package/esm2015/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.js +7 -3
  21. package/esm2015/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.js +7 -3
  22. package/esm2015/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.js +9 -4
  23. package/esm2015/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.js +78 -8
  24. package/esm2015/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.js +1 -1
  25. package/esm2015/lib/modules/assessment-taker/services/assessment-taker.service.js +18 -3
  26. package/esm2015/lib/modules/assessment-taker/services/proctoring.service.js +125 -0
  27. package/esm2015/lib/modules/assessment-taker/services/response-builder.service.js +15 -1
  28. package/esm2015/lib/modules/question-bank/question-bank.component.js +313 -0
  29. package/esm2015/lib/modules/question-bank/question-bank.module.js +45 -0
  30. package/esm2015/lib/shared/components/confirmation-dialog/confirmation-dialog.component.js +56 -0
  31. package/esm2015/lib/shared/components/skill-allocation/skill-allocation.component.js +5 -2
  32. package/esm2015/lib/shared/controllers.js +18 -4
  33. package/esm2015/lib/shared/interfaces/assessment.interface.js +1 -1
  34. package/esm2015/lib/shared/interfaces/proctoring.interface.js +2 -0
  35. package/esm2015/lib/shared/material-modules.js +1 -16
  36. package/esm2015/lib/shared/shared.module.js +8 -3
  37. package/esm2015/lib/shared/utils.js +19 -1
  38. package/esm2015/public-api.js +4 -1
  39. package/fesm2015/commons-assessment.js +2071 -152
  40. package/fesm2015/commons-assessment.js.map +1 -1
  41. package/lib/modules/assessment-maker/assessment-maker.component.d.ts +40 -2
  42. package/lib/modules/assessment-maker/assessment-maker.module.d.ts +6 -5
  43. package/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.d.ts +7 -0
  44. package/lib/modules/assessment-maker/components/question-bank-picker/question-bank-picker.component.d.ts +81 -0
  45. package/lib/modules/assessment-maker/components/question-details/question-details.component.d.ts +6 -1
  46. package/lib/modules/assessment-maker/services/assessment-builder.service.d.ts +10 -3
  47. package/lib/modules/assessment-maker/services/assessment-maker.service.d.ts +15 -11
  48. package/lib/modules/assessment-taker/assessment-taker.component.d.ts +81 -2
  49. package/lib/modules/assessment-taker/assessment-taker.module.d.ts +7 -5
  50. package/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.d.ts +39 -0
  51. package/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.d.ts +82 -0
  52. package/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.d.ts +1 -0
  53. package/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.d.ts +1 -0
  54. package/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.d.ts +1 -0
  55. package/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.d.ts +1 -0
  56. package/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.d.ts +14 -2
  57. package/lib/modules/assessment-taker/services/assessment-taker.service.d.ts +5 -0
  58. package/lib/modules/assessment-taker/services/proctoring.service.d.ts +40 -0
  59. package/lib/modules/assessment-taker/services/response-builder.service.d.ts +9 -0
  60. package/lib/modules/question-bank/question-bank.component.d.ts +65 -0
  61. package/lib/modules/question-bank/question-bank.module.d.ts +12 -0
  62. package/lib/shared/components/confirmation-dialog/confirmation-dialog.component.d.ts +36 -0
  63. package/lib/shared/components/skill-allocation/skill-allocation.component.d.ts +1 -0
  64. package/lib/shared/controllers.d.ts +14 -1
  65. package/lib/shared/interfaces/assessment.interface.d.ts +8 -0
  66. package/lib/shared/interfaces/proctoring.interface.d.ts +101 -0
  67. package/lib/shared/material-modules.d.ts +5 -8
  68. package/lib/shared/shared.module.d.ts +5 -4
  69. package/lib/shared/utils.d.ts +4 -0
  70. package/package.json +1 -1
  71. package/public-api.d.ts +3 -0
  72. package/src/lib/assets/images/arrow-down-blue.svg +3 -0
  73. package/src/lib/assets/images/arrow-up-blue.svg +3 -0
  74. package/src/lib/assets/images/file-import.svg +11 -0
  75. package/src/lib/assets/images/plus-white.svg +1 -0
  76. package/src/lib/assets/images/proctoring.svg +3 -0
  77. package/src/lib/assets/images/user.svg +3 -0
  78. package/src/lib/assets/json/imageConfig.json +7 -1
  79. package/src/lib/assets/json/labelConfig.json +107 -2
  80. package/src/lib/assets/theme/_theme.global.scss +6 -0
  81. package/src/lib/assets/theme/_theme.scss +17 -346
  82. package/src/lib/assets/theme/styles.scss +13 -0
@@ -9,6 +9,7 @@ export class QuestionDetailsComponent {
9
9
  this.labelConfig = {};
10
10
  this.imageConfig = {};
11
11
  this.allowDelete = true;
12
+ this.isLocked = false;
12
13
  this.editQuestion = new EventEmitter();
13
14
  this.duplicateQuestion = new EventEmitter();
14
15
  this.deleteParentQuestion = new EventEmitter();
@@ -29,6 +30,13 @@ export class QuestionDetailsComponent {
29
30
  const el = this.questionText.nativeElement;
30
31
  this.showToggle = el.scrollHeight > el.clientHeight;
31
32
  }
33
+ onQuestionClick(event, questionId, isChild = false) {
34
+ event.stopPropagation();
35
+ if (this.isLocked) {
36
+ return;
37
+ }
38
+ this.editQuestion.emit({ questionId, isChildQuestion: isChild });
39
+ }
32
40
  capitalizeFirst(text) {
33
41
  if (!text)
34
42
  return '';
@@ -41,9 +49,19 @@ export class QuestionDetailsComponent {
41
49
  var _a;
42
50
  return (_a = question === null || question === void 0 ? void 0 : question.defaultOptionsList) === null || _a === void 0 ? void 0 : _a.some(option => (option === null || option === void 0 ? void 0 : option.childQuestionList) && option.childQuestionList.length > 0);
43
51
  }
52
+ trackByOptionId(index, option) {
53
+ var _a;
54
+ return ((_a = option === null || option === void 0 ? void 0 : option.options) === null || _a === void 0 ? void 0 : _a.id) != null ? 'o' + option.options.id : 'i' + index;
55
+ }
56
+ trackByChildId(index, id) {
57
+ return id != null ? 'c' + id : 'i' + index;
58
+ }
59
+ trackBySkillCode(index, skill) {
60
+ return (skill === null || skill === void 0 ? void 0 : skill.code) != null ? 'k' + skill.code : 'i' + index;
61
+ }
44
62
  }
45
63
  QuestionDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- QuestionDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionDetailsComponent, selector: "lib-question-details", inputs: { sectionQuestion: "sectionQuestion", question: "question", questionBank: "questionBank", labelConfig: "labelConfig", imageConfig: "imageConfig", allowDelete: "allowDelete" }, outputs: { editQuestion: "editQuestion", duplicateQuestion: "duplicateQuestion", deleteParentQuestion: "deleteParentQuestion", deleteChildQuestion: "deleteChildQuestion" }, viewQueries: [{ propertyName: "questionText", first: true, predicate: ["questionText"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between mb-3\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-FEF9F1 assessment-text-medium-12 border-palette-F9DAA6\">\r\n {{capitalizeFirst(question?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <span *ngIf=\"question?.weight\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-EDF3FD assessment-text-medium-12 border-palette-C8DAF9\">\r\n {{question?.weight}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}\r\n </span>\r\n <span *ngIf=\"question?.isMandatory\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-E8F7F0 assessment-text-medium-12 border-palette-B7E7CF\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}\r\n </span>\r\n </div>\r\n <button [matMenuTriggerFor]=\"questionsMenu\" (click)=\"$event.stopPropagation()\" class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #questionsMenu=\"matMenu\" class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"duplicateQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button *ngIf=\"allowDelete\" (click)=\"deleteParentQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<div class=\"col-12\">\r\n <div #questionText class=\"assessment-text-medium-15 question-text cursor-pointer\" [class.collapsed]=\"!expanded\"\r\n (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: sectionQuestion?.questionId, isChildQuestion: false})\"\r\n [innerHTML]=\"question?.questionText?.[0]?.text\">\r\n </div>\r\n\r\n <span *ngIf=\"showToggle\" class=\"assessment-text-semibold-15 assessment-text-primary-one cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); expanded = !expanded\">\r\n {{ labelConfig[expanded ? 'COMMONS_ASSESSMENT.LABEL.READ_LESS' : 'COMMONS_ASSESSMENT.LABEL.READ_MORE'] }}\r\n </span>\r\n</div>\r\n\r\n<div *ngIf=\"(question?.skillCodes?.length ?? 0) > 0\" class=\"mt-3\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-eight mb-1\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.SKILLS']}}</p>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span *ngFor=\"let skill of question?.skillCodes\"\r\n class=\"assessment-text-medium-12 assessment-text-grey-ten rounded-2 skill-chip px-3 py-1\">{{skill?.labels?.[0]?.text || skill?.name}}</span>\r\n </div>\r\n</div>\r\n\r\n<!-- Child Questions -->\r\n<ng-container *ngIf=\"question?.defaultOptionsList?.length\">\r\n <div class=\"mt-4 col-12\">\r\n <div *ngFor=\"let option of question?.defaultOptionsList | orderBy\" class=\"my-3 d-flex align-items-start gap-2\">\r\n <div class=\"rounded-circle custom-padding border-grey-ten-2\"></div>\r\n <span class=\"assessment-text-medium-13\">{{option.options?.optionName?.[0]?.text}}</span>\r\n </div>\r\n </div>\r\n\r\n <mat-accordion *ngIf=\"childQuestionPresent(question)\">\r\n <mat-expansion-panel (click)=\"$event.stopPropagation()\"\r\n class=\"mt-4 col-12 border-0 overflow-hidden assessment-panel shadow-none bg-transparent\">\r\n <mat-expansion-panel-header class=\"p-0 bg-transparent pe-1 h-auto\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 pe-2\">\r\n <span\r\n class=\"assessment-text-semibold-12 assessment-text-grey-eight\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</span>\r\n <div class=\"flex-grow-1 border-bottom\"></div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngFor=\"let option of question?.defaultOptionsList | orderBy\">\r\n <div *ngIf=\"option.childQuestionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-primary-one assessment-text-semibold-14 mb-0\">\r\n {{option.options?.optionName?.[0]?.text}}</p>\r\n <div class=\"position-relative overflow-hidden\">\r\n <div *ngFor=\"let childQuestionId of option.childQuestionList\"\r\n class=\"assessment-child-node position-relative mt-3 ms-md-4 ms-3\">\r\n <div *ngIf=\"questionBank[childQuestionId] as childQuestion\"\r\n class=\"d-flex align-items-start justify-content-between gap-3 ps-1\">\r\n <div (click)=\"$event.stopPropagation(); editQuestion.emit({questionId: childQuestionId, isChildQuestion: true})\"\r\n [innerHTML]=\"childQuestion?.questionText?.[0]?.text\"\r\n class=\"flex-grow-1 assessment-text-regular-13 question-text collapsed cursor-pointer\">\r\n </div>\r\n <span\r\n class=\"assessment-text-medium-12 assessment-text-grey-eight d-md-inline d-none text-nowrap\">\r\n {{capitalizeFirst(childQuestion?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <!-- <img (click)=\"$event.stopPropagation(); deleteChildQuestion.emit({option: option, childQuestionId: childQuestionId})\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n class=\"action-icon d-md-inline d-none cursor-pointer\" /> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</ng-container>", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-bold-12{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-11{font-weight:600;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-bold-13{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-regular-14{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-bold-14{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-semibold-10{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.55rem + .1vw);line-height:calc(1rem + .1vw)}.assessment-text-regular-10{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.55rem + .1vw)!important;line-height:calc(1rem + .1vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-bold-15{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-regular-16{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-bold-16{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-regular-20{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(1rem + .3vw);line-height:calc(1.2rem + .3vw)}.assessment-text-bold-20{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .3vw);line-height:calc(1.2rem + .3vw)}.assessment-text-semibold-20{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .3vw);line-height:calc(1.2rem + .3vw)}.assessment-text-medium-20{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .3vw);line-height:calc(1.2rem + .3vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-regular-18{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .3vw)!important}.assessment-text-bold-18{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw);line-height:calc(1.5rem + .1vw)}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-bold-34{overflow-wrap:break-word;font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(2rem + .15vw);line-height:calc(2.5rem + .15vw)}.assessment-text-medium-34{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(2rem + .15vw);line-height:calc(2.5rem + .15vw)}.assessment-text-bold-32{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1.3rem + .75vw);line-height:calc(1.625rem + .5vw)}.assessment-text-bold-22{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .4vw);line-height:calc(1.5rem + .4vw)}.assessment-text-regular-22{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(1rem + .4vw);line-height:calc(1.5rem + .4vw)}.assessment-text-semibold-22{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .4vw);line-height:calc(1.5rem + .4vw)}.assessment-text-medium-22{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(1rem + .4vw);line-height:calc(1.5rem + .4vw)}.assessment-text-bold-24{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(.8rem + .75vw);line-height:calc(.9rem + .75vw)}.assessment-text-regular-24{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.8rem + .75vw);line-height:calc(.9rem + .75vw)}.assessment-text-semibold-24{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.8rem + .75vw);line-height:calc(.9rem + .75vw)}.assessment-text-medium-24{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.8rem + .75vw);line-height:calc(1.2rem + .75vw)}.assessment-text-regular-26{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(1.5rem + .1vw);line-height:calc(1.8rem + .1vw)}.assessment-text-medium-26{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(1.5rem + .1vw);line-height:calc(1.8rem + .1vw)}.assessment-text-bold-26{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1.5rem + .1vw);line-height:calc(1.8rem + .1vw)}.assessment-text-semibold-26{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1.55rem + .1vw);line-height:calc(1.8rem + .1vw)}.assessment-text-regular-28{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(1.55rem + .2vw);line-height:calc(2rem + .2vw)}.assessment-text-medium-28{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(1.55rem + .2vw);line-height:calc(2rem + .2vw)}.assessment-text-semibold-28{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1.55rem + .2vw);line-height:calc(2rem + .2vw);letter-spacing:1}.assessment-text-bold-28{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1.55rem + .2vw);line-height:calc(2rem + .2vw)}.assessment-text-regular-30{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(1.5rem + .4vw)}.assessment-text-medium-30{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(1.5rem + .4vw);line-height:calc(1.5rem + .4vw)}.assessment-text-bold-30{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(1.5rem + .4vw);line-height:calc(2rem + .4vw)}.assessment-text-semibold-30{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1.5rem + .4vw);line-height:calc(1.5rem + .4vw);letter-spacing:.5}.assessment-text-bold-36{font-weight:700;font-family:var(--assessment-font-family)!important;font-size:calc(2rem + .25vw);line-height:calc(2.5rem + .3vw)}.assessment-text-semibold-36{font-weight:600;font-family:var(--assessment-font-family);font-size:calc(2rem + .25vw);line-height:calc(2.5rem + .3vw)}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-bold-34{font-size:calc(1.8rem + .15vh);line-height:calc(2.2rem + .15vh)}.assessment-text-bold-32{font-size:calc(1.3rem + 1vh);line-height:calc(1.5rem + 1vh)}.assessment-text-semibold-30{font-size:calc(1.5rem + .4vh);line-height:calc(1.8rem + .4vh)}.assessment-text-medium-24{line-height:2.188rem}.assessment-text-medium-24,.assessment-text-regular-24,.assessment-text-semibold-24,.assessment-text-bold-24,.assessment-text-light-24{font-size:calc(1.3rem + .5vh);line-height:calc(1.8rem + .5vh)}.assessment-text-medium-18,.assessment-text-regular-18,.assessment-text-bold-18,.assessment-text-semibold-18,.assessment-text-light-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-light-16,.assessment-text-bold-16{font-size:calc(.9rem + .3vh)!important;line-height:calc(1.2rem + .3vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16,.assessment-text-regular-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15,.assessment-text-bold-15,.assessment-text-light-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12,.assessment-text-bold-12,.assessment-text-medium-upper-12,.assessment-text-light-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-regular-14,.assessment-text-light-14,.assessment-text-medium-upper-14,.assessment-text-semibold-14,.assessment-text-bold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13,.assessment-text-bold-13,.assessment-text-light-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11,.assessment-text-semibold-11,.assessment-text-bold-11,.assessment-text-light-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.border-palette-F9DAA6{border:.064em solid var(--assessment-palette-F9DAA6)}.border-palette-C8DAF9{border:.064em solid var(--assessment-palette-C8DAF9)}.border-palette-B7E7CF{border:.064em solid var(--assessment-palette-B7E7CF)}.border-grey-ten-2{border:.12rem solid var(--assessment-grey-ten)}.custom-padding{padding:.4rem}.assessment-child-node:before{content:\"\";position:absolute;bottom:calc(100% - .7rem);top:-100vh;border-left:.064em solid var(--assessment-grey-five);border-bottom:.064em solid var(--assessment-grey-five);border-bottom-left-radius:.75rem;z-index:0;left:-1.5rem;width:1.5rem}@media screen and (max-width: 767px){.assessment-child-node:before{left:-1rem;width:1rem}}.question-text{word-break:break-word}.question-text.collapsed{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}\n"], components: [{ type: i1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }], pipes: { "orderBy": i4.OrderByPipe } });
64
+ QuestionDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionDetailsComponent, selector: "lib-question-details", inputs: { sectionQuestion: "sectionQuestion", question: "question", questionBank: "questionBank", labelConfig: "labelConfig", imageConfig: "imageConfig", allowDelete: "allowDelete", isLocked: "isLocked" }, outputs: { editQuestion: "editQuestion", duplicateQuestion: "duplicateQuestion", deleteParentQuestion: "deleteParentQuestion", deleteChildQuestion: "deleteChildQuestion" }, viewQueries: [{ propertyName: "questionText", first: true, predicate: ["questionText"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex align-items-center justify-content-between mb-3\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-FEF9F1 assessment-text-medium-12 border-palette-F9DAA6\">\r\n {{capitalizeFirst(question?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <span *ngIf=\"question?.weight\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-EDF3FD assessment-text-medium-12 border-palette-C8DAF9\">\r\n {{question?.weight}} {{labelConfig['COMMONS_ASSESSMENT.LABEL.MARKS']}}\r\n </span>\r\n <span *ngIf=\"question?.isMandatory\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-E8F7F0 assessment-text-medium-12 border-palette-B7E7CF\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.MANDATORY']}}\r\n </span>\r\n <span *ngIf=\"isLocked\"\r\n class=\"assessment-border-radius-two p-2 assessment-bg-palette-FEF9F1 assessment-text-medium-12 border-palette-F9DAA6 d-inline-flex align-items-center gap-1\">\r\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\">\r\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect>\r\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\r\n </svg>\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.LOCKED'] || 'Locked'}}\r\n </span>\r\n </div>\r\n <button [matMenuTriggerFor]=\"questionsMenu\" (click)=\"$event.stopPropagation()\" class=\"border-0 bg-transparent py-2\">\r\n <img [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.ACTION_DOTS']\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/action-dots.svg')\" />\r\n </button>\r\n <mat-menu #questionsMenu=\"matMenu\" class=\"mat-menu assessment-border-radius-two assessment-border-grey-four-1\">\r\n <button (click)=\"duplicateQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DUPLICATE']}}\r\n </button>\r\n <button *ngIf=\"allowDelete\" (click)=\"deleteParentQuestion.emit(sectionQuestion)\" mat-menu-item\r\n class=\"py-2 assessment-text-semibold-12 assessment-text-danger\">\r\n {{labelConfig['COMMONS_ASSESSMENT.LABEL.DELETE']}}\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<div class=\"col-12\">\r\n <div #questionText class=\"assessment-text-medium-15 question-text\"\r\n [class.cursor-pointer]=\"!isLocked\"\r\n [class.collapsed]=\"!expanded\"\r\n (click)=\"onQuestionClick($event, sectionQuestion?.questionId, false)\"\r\n [innerHTML]=\"question?.questionText?.[0]?.text\">\r\n </div>\r\n\r\n <span *ngIf=\"showToggle\" class=\"assessment-text-semibold-15 assessment-text-primary-one cursor-pointer\"\r\n (click)=\"$event.stopPropagation(); expanded = !expanded\">\r\n {{ labelConfig[expanded ? 'COMMONS_ASSESSMENT.LABEL.READ_LESS' : 'COMMONS_ASSESSMENT.LABEL.READ_MORE'] }}\r\n </span>\r\n</div>\r\n\r\n<div *ngIf=\"(question?.skillCodes?.length ?? 0) > 0\" class=\"mt-3\">\r\n <p class=\"assessment-text-medium-13 assessment-text-grey-eight mb-1\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.SKILLS']}}</p>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <span *ngFor=\"let skill of question?.skillCodes; trackBy: trackBySkillCode\"\r\n class=\"assessment-text-medium-12 assessment-text-grey-ten rounded-2 skill-chip px-3 py-1\">{{skill?.labels?.[0]?.text || skill?.name}}</span>\r\n </div>\r\n</div>\r\n\r\n<!-- Child Questions -->\r\n<ng-container *ngIf=\"question?.defaultOptionsList?.length\">\r\n <div class=\"mt-4 col-12\">\r\n <div *ngFor=\"let option of question?.defaultOptionsList | orderBy; trackBy: trackByOptionId\" class=\"my-3 d-flex align-items-start gap-2\">\r\n <div class=\"rounded-circle custom-padding border-grey-ten-2\"></div>\r\n <span class=\"assessment-text-medium-13\">{{option.options?.optionName?.[0]?.text}}</span>\r\n </div>\r\n </div>\r\n\r\n <mat-accordion *ngIf=\"childQuestionPresent(question)\">\r\n <mat-expansion-panel (click)=\"$event.stopPropagation()\"\r\n class=\"mt-4 col-12 border-0 overflow-hidden assessment-panel shadow-none bg-transparent\">\r\n <mat-expansion-panel-header class=\"p-0 bg-transparent pe-1 h-auto\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1 pe-2\">\r\n <span\r\n class=\"assessment-text-semibold-12 assessment-text-grey-eight\">{{labelConfig['COMMONS_ASSESSMENT.LABEL.CHILD_QUESTIONS']}}</span>\r\n <div class=\"flex-grow-1 border-bottom\"></div>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngFor=\"let option of question?.defaultOptionsList | orderBy; trackBy: trackByOptionId\">\r\n <div *ngIf=\"option.childQuestionList?.length\" class=\"mt-3\">\r\n <p class=\"assessment-text-primary-one assessment-text-semibold-14 mb-0\">\r\n {{option.options?.optionName?.[0]?.text}}</p>\r\n <div class=\"position-relative overflow-hidden\">\r\n <div *ngFor=\"let childQuestionId of option.childQuestionList; trackBy: trackByChildId\"\r\n class=\"assessment-child-node position-relative mt-3 ms-md-4 ms-3\">\r\n <div *ngIf=\"questionBank[childQuestionId] as childQuestion\"\r\n class=\"d-flex align-items-start justify-content-between gap-3 ps-1\">\r\n <div (click)=\"onQuestionClick($event, childQuestionId, true)\"\r\n [innerHTML]=\"childQuestion?.questionText?.[0]?.text\"\r\n [class.cursor-pointer]=\"!isLocked\"\r\n class=\"flex-grow-1 assessment-text-regular-13 question-text collapsed\">\r\n </div>\r\n <span\r\n class=\"assessment-text-medium-12 assessment-text-grey-eight d-md-inline d-none text-nowrap\">\r\n {{capitalizeFirst(childQuestion?.questionType?.labels?.[0]?.text)}}\r\n </span>\r\n <!-- <img (click)=\"$event.stopPropagation(); deleteChildQuestion.emit({option: option, childQuestionId: childQuestionId})\"\r\n [src]=\"imageConfig['COMMONS_ASSESSMENT.ICON.DELETE']\"\r\n class=\"action-icon d-md-inline d-none cursor-pointer\" /> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n</ng-container>", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.border-palette-F9DAA6{border:.064em solid var(--assessment-palette-F9DAA6)}.border-palette-C8DAF9{border:.064em solid var(--assessment-palette-C8DAF9)}.border-palette-B7E7CF{border:.064em solid var(--assessment-palette-B7E7CF)}.border-grey-ten-2{border:.12rem solid var(--assessment-grey-ten)}.custom-padding{padding:.4rem}.assessment-child-node:before{content:\"\";position:absolute;bottom:calc(100% - .7rem);top:-100vh;border-left:.064em solid var(--assessment-grey-five);border-bottom:.064em solid var(--assessment-grey-five);border-bottom-left-radius:.75rem;z-index:0;left:-1.5rem;width:1.5rem}@media screen and (max-width: 767px){.assessment-child-node:before{left:-1rem;width:1rem}}.question-text{word-break:break-word}.question-text.collapsed{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}\n"], components: [{ type: i1.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }], pipes: { "orderBy": i4.OrderByPipe } });
47
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDetailsComponent, decorators: [{
48
66
  type: Component,
49
67
  args: [{
@@ -63,6 +81,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
63
81
  type: Input
64
82
  }], allowDelete: [{
65
83
  type: Input
84
+ }], isLocked: [{
85
+ type: Input
66
86
  }], editQuestion: [{
67
87
  type: Output
68
88
  }], duplicateQuestion: [{
@@ -75,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
75
95
  type: ViewChild,
76
96
  args: ['questionText']
77
97
  }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvY29tcG9uZW50cy9xdWVzdGlvbi1kZXRhaWxzL3F1ZXN0aW9uLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL2NvbXBvbmVudHMvcXVlc3Rpb24tZGV0YWlscy9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUzdHLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFTVyxnQkFBVyxHQUE4QixFQUFFLENBQUM7UUFDNUMsZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQzVDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTNCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWlELENBQUM7UUFDakYsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDeEQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDM0Qsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFFN0YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFDO0tBa0NwQjtJQS9CQyxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQXdCO1FBQ3RDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQzVDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBNEI7O1FBQy9DLE9BQU8sTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsa0JBQWtCLDBDQUFFLElBQUksQ0FDdkMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxpQkFBaUIsS0FBSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7O3NIQS9DVSx3QkFBd0I7MEdBQXhCLHdCQUF3QiwrZ0JDVHJDLGkyTUFnR2U7NEZEdkZGLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztpQkFDakQ7OEJBRVUsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFJb0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50UXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTZWN0aW9uUXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi1wYXBlci5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcXVlc3Rpb24tZGV0YWlscycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXN0aW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3F1ZXN0aW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVlc3Rpb25EZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgc2VjdGlvblF1ZXN0aW9uITogU2VjdGlvblF1ZXN0aW9uO1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uITogQXNzZXNzbWVudFF1ZXN0aW9uO1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uQmFuayE6IFJlY29yZDxudW1iZXIsIEFzc2Vzc21lbnRRdWVzdGlvbj47XHJcbiAgQElucHV0KCkgbGFiZWxDb25maWc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBASW5wdXQoKSBpbWFnZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIGFsbG93RGVsZXRlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpIGVkaXRRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBxdWVzdGlvbklkOiBhbnksIGlzQ2hpbGRRdWVzdGlvbjogYm9vbGVhbiB9PigpO1xyXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VjdGlvblF1ZXN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVQYXJlbnRRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VjdGlvblF1ZXN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVDaGlsZFF1ZXN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG9wdGlvbjogYW55LCBjaGlsZFF1ZXN0aW9uSWQ6IG51bWJlciB9PigpO1xyXG5cclxuICBleHBhbmRlZCA9IGZhbHNlO1xyXG4gIHNob3dUb2dnbGUgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdxdWVzdGlvblRleHQnKSBxdWVzdGlvblRleHQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tPdmVyZmxvdygpKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVRleHQoKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcblxyXG4gICAgaWYgKCF0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja092ZXJmbG93KCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tPdmVyZmxvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5xdWVzdGlvblRleHQubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuc2hvd1RvZ2dsZSA9IGVsLnNjcm9sbEhlaWdodCA+IGVsLmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIGNhcGl0YWxpemVGaXJzdCh0ZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJykubWFwKHdvcmQgPT4gd29yZC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpIHtcclxuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICB9XHJcblxyXG4gIGNoaWxkUXVlc3Rpb25QcmVzZW50KHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24pIHtcclxuICAgIHJldHVybiBxdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0Py5zb21lKFxyXG4gICAgICBvcHRpb24gPT4gb3B0aW9uPy5jaGlsZFF1ZXN0aW9uTGlzdCAmJiBvcHRpb24uY2hpbGRRdWVzdGlvbkxpc3QubGVuZ3RoID4gMFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0yIGFzc2Vzc21lbnQtYmctcGFsZXR0ZS1GRUY5RjEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBib3JkZXItcGFsZXR0ZS1GOURBQTZcIj5cclxuICAgICAgICAgICAge3tjYXBpdGFsaXplRmlyc3QocXVlc3Rpb24/LnF1ZXN0aW9uVHlwZT8ubGFiZWxzPy5bMF0/LnRleHQpfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbj8ud2VpZ2h0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIHAtMiBhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRURGM0ZEIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYm9yZGVyLXBhbGV0dGUtQzhEQUY5XCI+XHJcbiAgICAgICAgICAgIHt7cXVlc3Rpb24/LndlaWdodH19IHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVJLUyddfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbj8uaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0yIGFzc2Vzc21lbnQtYmctcGFsZXR0ZS1FOEY3RjAgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBib3JkZXItcGFsZXR0ZS1CN0U3Q0ZcIj5cclxuICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BTkRBVE9SWSddfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInF1ZXN0aW9uc01lbnVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgY2xhc3M9XCJib3JkZXItMCBiZy10cmFuc3BhcmVudCBweS0yXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5BQ1RJT05fRE9UUyddXCJcclxuICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL2FjdGlvbi1kb3RzLnN2ZycpXCIgLz5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNxdWVzdGlvbnNNZW51PVwibWF0TWVudVwiIGNsYXNzPVwibWF0LW1lbnUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJvcmRlci1ncmV5LWZvdXItMVwiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImR1cGxpY2F0ZVF1ZXN0aW9uLmVtaXQoc2VjdGlvblF1ZXN0aW9uKVwiIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJweS0yIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMlwiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuRFVQTElDQVRFJ119fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0RlbGV0ZVwiIChjbGljayk9XCJkZWxldGVQYXJlbnRRdWVzdGlvbi5lbWl0KHNlY3Rpb25RdWVzdGlvbilcIiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwicHktMiBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuREVMRVRFJ119fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgIDxkaXYgI3F1ZXN0aW9uVGV4dCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTUgcXVlc3Rpb24tdGV4dCBjdXJzb3ItcG9pbnRlclwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiIWV4cGFuZGVkXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBlZGl0UXVlc3Rpb24uZW1pdCh7cXVlc3Rpb25JZDogc2VjdGlvblF1ZXN0aW9uPy5xdWVzdGlvbklkLCBpc0NoaWxkUXVlc3Rpb246IGZhbHNlfSlcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwicXVlc3Rpb24/LnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0XCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cInNob3dUb2dnbGVcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNSBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGV4cGFuZGVkID0gIWV4cGFuZGVkXCI+XHJcbiAgICAgICAge3sgbGFiZWxDb25maWdbZXhwYW5kZWQgPyAnQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlJFQURfTEVTUycgOiAnQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlJFQURfTU9SRSddIH19XHJcbiAgICA8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cIihxdWVzdGlvbj8uc2tpbGxDb2Rlcz8ubGVuZ3RoID8/IDApID4gMFwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LWVpZ2h0IG1iLTFcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuU0tJTExTJ119fTwvcD5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGdhcC0yXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHNraWxsIG9mIHF1ZXN0aW9uPy5za2lsbENvZGVzXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiByb3VuZGVkLTIgc2tpbGwtY2hpcCBweC0zIHB5LTFcIj57e3NraWxsPy5sYWJlbHM/LlswXT8udGV4dCB8fCBza2lsbD8ubmFtZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGlsZCBRdWVzdGlvbnMgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0Py5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC00IGNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBxdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0IHwgb3JkZXJCeVwiIGNsYXNzPVwibXktMyBkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdW5kZWQtY2lyY2xlIGN1c3RvbS1wYWRkaW5nIGJvcmRlci1ncmV5LXRlbi0yXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xM1wiPnt7b3B0aW9uLm9wdGlvbnM/Lm9wdGlvbk5hbWU/LlswXT8udGV4dH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1hY2NvcmRpb24gKm5nSWY9XCJjaGlsZFF1ZXN0aW9uUHJlc2VudChxdWVzdGlvbilcIj5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtdC00IGNvbC0xMiBib3JkZXItMCBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1wYW5lbCBzaGFkb3ctbm9uZSBiZy10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY2xhc3M9XCJwLTAgYmctdHJhbnNwYXJlbnQgcGUtMSBoLWF1dG9cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGZsZXgtZ3Jvdy0xIHBlLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1laWdodFwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5DSElMRF9RVUVTVElPTlMnXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBib3JkZXItYm90dG9tXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHF1ZXN0aW9uPy5kZWZhdWx0T3B0aW9uc0xpc3QgfCBvcmRlckJ5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Py5sZW5ndGhcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1wcmltYXJ5LW9uZSBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTQgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LnRleHR9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkUXVlc3Rpb25JZCBvZiBvcHRpb24uY2hpbGRRdWVzdGlvbkxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWNoaWxkLW5vZGUgcG9zaXRpb24tcmVsYXRpdmUgbXQtMyBtcy1tZC00IG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkJhbmtbY2hpbGRRdWVzdGlvbklkXSBhcyBjaGlsZFF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMyBwcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBlZGl0UXVlc3Rpb24uZW1pdCh7cXVlc3Rpb25JZDogY2hpbGRRdWVzdGlvbklkLCBpc0NoaWxkUXVlc3Rpb246IHRydWV9KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY2hpbGRRdWVzdGlvbj8ucXVlc3Rpb25UZXh0Py5bMF0/LnRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIHF1ZXN0aW9uLXRleHQgY29sbGFwc2VkIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LWVpZ2h0IGQtbWQtaW5saW5lIGQtbm9uZSB0ZXh0LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NhcGl0YWxpemVGaXJzdChjaGlsZFF1ZXN0aW9uPy5xdWVzdGlvblR5cGU/LmxhYmVscz8uWzBdPy50ZXh0KX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGltZyAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBkZWxldGVDaGlsZFF1ZXN0aW9uLmVtaXQoe29wdGlvbjogb3B0aW9uLCBjaGlsZFF1ZXN0aW9uSWQ6IGNoaWxkUXVlc3Rpb25JZH0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uREVMRVRFJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uIGQtbWQtaW5saW5lIGQtbm9uZSBjdXJzb3ItcG9pbnRlclwiIC8+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDwvbWF0LWFjY29yZGlvbj5cclxuPC9uZy1jb250YWluZXI+Il19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvY29tcG9uZW50cy9xdWVzdGlvbi1kZXRhaWxzL3F1ZXN0aW9uLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL2NvbXBvbmVudHMvcXVlc3Rpb24tZGV0YWlscy9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUzdHLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFTVyxnQkFBVyxHQUE4QixFQUFFLENBQUM7UUFDNUMsZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQzVDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBQzVCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBaUQsQ0FBQztRQUNqRixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUN4RCx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUMzRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBNEMsQ0FBQztRQUU3RixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7S0FzRHBCO0lBbkRDLGVBQWU7UUFDYixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENB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QUFDO2lCQUNqRDs4QkFFVSxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBSW9CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU2VjdGlvblF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24tcGFwZXIuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uLWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25RdWVzdGlvbiE6IFNlY3Rpb25RdWVzdGlvbjtcclxuICBASW5wdXQoKSBxdWVzdGlvbiE6IEFzc2Vzc21lbnRRdWVzdGlvbjtcclxuICBASW5wdXQoKSBxdWVzdGlvbkJhbmshOiBSZWNvcmQ8bnVtYmVyLCBBc3Nlc3NtZW50UXVlc3Rpb24+O1xyXG4gIEBJbnB1dCgpIGxhYmVsQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgQElucHV0KCkgaW1hZ2VDb25maWc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBASW5wdXQoKSBhbGxvd0RlbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgaXNMb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGVkaXRRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBxdWVzdGlvbklkOiBhbnksIGlzQ2hpbGRRdWVzdGlvbjogYm9vbGVhbiB9PigpO1xyXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VjdGlvblF1ZXN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVQYXJlbnRRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8U2VjdGlvblF1ZXN0aW9uPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVDaGlsZFF1ZXN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IG9wdGlvbjogYW55LCBjaGlsZFF1ZXN0aW9uSWQ6IG51bWJlciB9PigpO1xyXG5cclxuICBleHBhbmRlZCA9IGZhbHNlO1xyXG4gIHNob3dUb2dnbGUgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdxdWVzdGlvblRleHQnKSBxdWVzdGlvblRleHQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tPdmVyZmxvdygpKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVRleHQoKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcblxyXG4gICAgaWYgKCF0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja092ZXJmbG93KCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tPdmVyZmxvdygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5xdWVzdGlvblRleHQubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuc2hvd1RvZ2dsZSA9IGVsLnNjcm9sbEhlaWdodCA+IGVsLmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIG9uUXVlc3Rpb25DbGljayhldmVudDogRXZlbnQsIHF1ZXN0aW9uSWQ6IGFueSwgaXNDaGlsZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICh0aGlzLmlzTG9ja2VkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdFF1ZXN0aW9uLmVtaXQoeyBxdWVzdGlvbklkLCBpc0NoaWxkUXVlc3Rpb246IGlzQ2hpbGQgfSk7XHJcbiAgfVxyXG5cclxuICBjYXBpdGFsaXplRmlyc3QodGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGlmICghdGV4dCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS5zcGxpdCgnICcpLm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBpbWFnZUVycm9ySGFuZGxlcihldmVudDogYW55LCBmaWxlUGF0aDogc3RyaW5nKSB7XHJcbiAgICBldmVudC50YXJnZXQuc3JjID0gZmlsZVBhdGg7XHJcbiAgfVxyXG5cclxuICBjaGlsZFF1ZXN0aW9uUHJlc2VudChxdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uKSB7XHJcbiAgICByZXR1cm4gcXVlc3Rpb24/LmRlZmF1bHRPcHRpb25zTGlzdD8uc29tZShcclxuICAgICAgb3B0aW9uID0+IG9wdGlvbj8uY2hpbGRRdWVzdGlvbkxpc3QgJiYgb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Lmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5T3B0aW9uSWQoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb24/Lm9wdGlvbnM/LmlkICE9IG51bGwgPyAnbycgKyBvcHRpb24ub3B0aW9ucy5pZCA6ICdpJyArIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUNoaWxkSWQoaW5kZXg6IG51bWJlciwgaWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGlkICE9IG51bGwgPyAnYycgKyBpZCA6ICdpJyArIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeVNraWxsQ29kZShpbmRleDogbnVtYmVyLCBza2lsbDogYW55KSB7XHJcbiAgICByZXR1cm4gc2tpbGw/LmNvZGUgIT0gbnVsbCA/ICdrJyArIHNraWxsLmNvZGUgOiAnaScgKyBpbmRleDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0yIGFzc2Vzc21lbnQtYmctcGFsZXR0ZS1GRUY5RjEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBib3JkZXItcGFsZXR0ZS1GOURBQTZcIj5cclxuICAgICAgICAgICAge3tjYXBpdGFsaXplRmlyc3QocXVlc3Rpb24/LnF1ZXN0aW9uVHlwZT8ubGFiZWxzPy5bMF0/LnRleHQpfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbj8ud2VpZ2h0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIHAtMiBhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRURGM0ZEIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYm9yZGVyLXBhbGV0dGUtQzhEQUY5XCI+XHJcbiAgICAgICAgICAgIHt7cXVlc3Rpb24/LndlaWdodH19IHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVJLUyddfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbj8uaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0yIGFzc2Vzc21lbnQtYmctcGFsZXR0ZS1FOEY3RjAgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBib3JkZXItcGFsZXR0ZS1CN0U3Q0ZcIj5cclxuICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BTkRBVE9SWSddfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0xvY2tlZFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBwLTIgYXNzZXNzbWVudC1iZy1wYWxldHRlLUZFRjlGMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGJvcmRlci1wYWxldHRlLUY5REFBNiBkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTFcIiBoZWlnaHQ9XCIxMVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjIuMlwiPlxyXG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiMTFcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTFcIiByeD1cIjJcIiByeT1cIjJcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTFWN2E1IDUgMCAwIDEgMTAgMHY0XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkxPQ0tFRCddIHx8ICdMb2NrZWQnfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInF1ZXN0aW9uc01lbnVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgY2xhc3M9XCJib3JkZXItMCBiZy10cmFuc3BhcmVudCBweS0yXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5BQ1RJT05fRE9UUyddXCJcclxuICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL2FjdGlvbi1kb3RzLnN2ZycpXCIgLz5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNxdWVzdGlvbnNNZW51PVwibWF0TWVudVwiIGNsYXNzPVwibWF0LW1lbnUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJvcmRlci1ncmV5LWZvdXItMVwiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImR1cGxpY2F0ZVF1ZXN0aW9uLmVtaXQoc2VjdGlvblF1ZXN0aW9uKVwiIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJweS0yIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMlwiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuRFVQTElDQVRFJ119fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0RlbGV0ZVwiIChjbGljayk9XCJkZWxldGVQYXJlbnRRdWVzdGlvbi5lbWl0KHNlY3Rpb25RdWVzdGlvbilcIiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwicHktMiBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuREVMRVRFJ119fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgIDxkaXYgI3F1ZXN0aW9uVGV4dCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTUgcXVlc3Rpb24tdGV4dFwiXHJcbiAgICAgICAgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cIiFpc0xvY2tlZFwiXHJcbiAgICAgICAgW2NsYXNzLmNvbGxhcHNlZF09XCIhZXhwYW5kZWRcIlxyXG4gICAgICAgIChjbGljayk9XCJvblF1ZXN0aW9uQ2xpY2soJGV2ZW50LCBzZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQsIGZhbHNlKVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJxdWVzdGlvbj8ucXVlc3Rpb25UZXh0Py5bMF0/LnRleHRcIj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwic2hvd1RvZ2dsZVwiIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE1IGFzc2Vzc21lbnQtdGV4dC1wcmltYXJ5LW9uZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZXhwYW5kZWQgPSAhZXhwYW5kZWRcIj5cclxuICAgICAgICB7eyBsYWJlbENvbmZpZ1tleHBhbmRlZCA/ICdDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUkVBRF9MRVNTJyA6ICdDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUkVBRF9NT1JFJ10gfX1cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0lmPVwiKHF1ZXN0aW9uPy5za2lsbENvZGVzPy5sZW5ndGggPz8gMCkgPiAwXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHQgbWItMVwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5TS0lMTFMnXX19PC9wPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgc2tpbGwgb2YgcXVlc3Rpb24/LnNraWxsQ29kZXM7IHRyYWNrQnk6IHRyYWNrQnlTa2lsbENvZGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIHJvdW5kZWQtMiBza2lsbC1jaGlwIHB4LTMgcHktMVwiPnt7c2tpbGw/LmxhYmVscz8uWzBdPy50ZXh0IHx8IHNraWxsPy5uYW1lfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIENoaWxkIFF1ZXN0aW9ucyAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXN0aW9uPy5kZWZhdWx0T3B0aW9uc0xpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTQgY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHF1ZXN0aW9uPy5kZWZhdWx0T3B0aW9uc0xpc3QgfCBvcmRlckJ5OyB0cmFja0J5OiB0cmFja0J5T3B0aW9uSWRcIiBjbGFzcz1cIm15LTMgZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBjdXN0b20tcGFkZGluZyBib3JkZXItZ3JleS10ZW4tMlwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTNcIj57e29wdGlvbi5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LnRleHR9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxtYXQtYWNjb3JkaW9uICpuZ0lmPVwiY2hpbGRRdWVzdGlvblByZXNlbnQocXVlc3Rpb24pXCI+XHJcbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibXQtNCBjb2wtMTIgYm9yZGVyLTAgb3ZlcmZsb3ctaGlkZGVuIGFzc2Vzc21lbnQtcGFuZWwgc2hhZG93LW5vbmUgYmctdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwicC0wIGJnLXRyYW5zcGFyZW50IHBlLTEgaC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBmbGV4LWdyb3ctMSBwZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHRcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQ0hJTERfUVVFU1RJT05TJ119fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgYm9yZGVyLWJvdHRvbVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBxdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0IHwgb3JkZXJCeTsgdHJhY2tCeTogdHJhY2tCeU9wdGlvbklkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Py5sZW5ndGhcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1wcmltYXJ5LW9uZSBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTQgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LnRleHR9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkUXVlc3Rpb25JZCBvZiBvcHRpb24uY2hpbGRRdWVzdGlvbkxpc3Q7IHRyYWNrQnk6IHRyYWNrQnlDaGlsZElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1jaGlsZC1ub2RlIHBvc2l0aW9uLXJlbGF0aXZlIG10LTMgbXMtbWQtNCBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25CYW5rW2NoaWxkUXVlc3Rpb25JZF0gYXMgY2hpbGRRdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTMgcHMtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cIm9uUXVlc3Rpb25DbGljaygkZXZlbnQsIGNoaWxkUXVlc3Rpb25JZCwgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNoaWxkUXVlc3Rpb24/LnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cIiFpc0xvY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93LTEgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgcXVlc3Rpb24tdGV4dCBjb2xsYXBzZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHQgZC1tZC1pbmxpbmUgZC1ub25lIHRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y2FwaXRhbGl6ZUZpcnN0KGNoaWxkUXVlc3Rpb24/LnF1ZXN0aW9uVHlwZT8ubGFiZWxzPy5bMF0/LnRleHQpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW1nIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGRlbGV0ZUNoaWxkUXVlc3Rpb24uZW1pdCh7b3B0aW9uOiBvcHRpb24sIGNoaWxkUXVlc3Rpb25JZDogY2hpbGRRdWVzdGlvbklkfSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5ERUxFVEUnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb24gZC1tZC1pbmxpbmUgZC1ub25lIGN1cnNvci1wb2ludGVyXCIgLz4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgPC9tYXQtYWNjb3JkaW9uPlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { removeKeyDeep, deepClone } from '../../../shared/utils';
2
3
  import * as i0 from "@angular/core";
3
4
  export class AssessmentBuilderService {
4
5
  constructor() {
@@ -100,7 +101,8 @@ export class AssessmentBuilderService {
100
101
  }
101
102
  generateSectionQuestion(question, sectionQuestion = {}) {
102
103
  var _a, _b;
103
- return Object.assign({ id: (sectionQuestion === null || sectionQuestion === void 0 ? void 0 : sectionQuestion.id) || 0, question, isMandatory: question === null || question === void 0 ? void 0 : question.isMandatory }, (!(sectionQuestion === null || sectionQuestion === void 0 ? void 0 : sectionQuestion.id) && ((_a = this.defaultAssessmentDTO) === null || _a === void 0 ? void 0 : _a.tenant) && { tenant: (_b = this.defaultAssessmentDTO) === null || _b === void 0 ? void 0 : _b.tenant }));
104
+ const sanitizedQuestion = question ? removeKeyDeep(deepClone(question), 'uuid') : question;
105
+ return Object.assign({ id: (sectionQuestion === null || sectionQuestion === void 0 ? void 0 : sectionQuestion.id) || 0, question: sanitizedQuestion, isMandatory: question === null || question === void 0 ? void 0 : question.isMandatory }, (!(sectionQuestion === null || sectionQuestion === void 0 ? void 0 : sectionQuestion.id) && ((_a = this.defaultAssessmentDTO) === null || _a === void 0 ? void 0 : _a.tenant) && { tenant: (_b = this.defaultAssessmentDTO) === null || _b === void 0 ? void 0 : _b.tenant }));
104
106
  }
105
107
  generateQuestionPaperDTO(questionPaper, questionBank) {
106
108
  var _a, _b, _c;
@@ -116,6 +118,9 @@ export class AssessmentBuilderService {
116
118
  let sectionQuestionsCount = 0;
117
119
  (_a = section.sectionQuestionsList) === null || _a === void 0 ? void 0 : _a.forEach((q, qIndex) => {
118
120
  q.orderNo = qIndex + 1;
121
+ if (q.question) {
122
+ q.question = removeKeyDeep(q.question, 'uuid');
123
+ }
119
124
  const question = (q === null || q === void 0 ? void 0 : q.question) || questionBank[(q === null || q === void 0 ? void 0 : q.questionId) || -1];
120
125
  if (question && q.isActive !== false) {
121
126
  sectionMarks += Number(question.weight) || 0;
@@ -127,20 +132,30 @@ export class AssessmentBuilderService {
127
132
  });
128
133
  return questionPaper;
129
134
  }
130
- generateAssessmentDTO(assessmentId, questionPaper) {
135
+ generateAssessmentDTO(assessmentId, questionPaper, assessmentConfigs) {
131
136
  var _a;
132
- return Object.assign(Object.assign({ id: assessmentId, totallMarks: ((_a = questionPaper === null || questionPaper === void 0 ? void 0 : questionPaper.questionPaperSectionList) === null || _a === void 0 ? void 0 : _a.filter((section) => section.isActive !== false).reduce((acc, section) => acc + (section.totalMarks || 0), 0)) || 0 }, (!assessmentId && Object.assign({}, this.defaultAssessmentDTO))), { cacheEvictionEnabled: true });
137
+ return Object.assign(Object.assign(Object.assign({ id: assessmentId, totallMarks: ((_a = questionPaper === null || questionPaper === void 0 ? void 0 : questionPaper.questionPaperSectionList) === null || _a === void 0 ? void 0 : _a.filter((section) => section.isActive !== false).reduce((acc, section) => acc + (section.totalMarks || 0), 0)) || 0 }, (!assessmentId && Object.assign({}, this.defaultAssessmentDTO))), (assessmentConfigs && { assessmentConfigs })), { cacheEvictionEnabled: true });
133
138
  }
134
- generateAssessmentInstanceDTO(assessmentId, predefinedAssessmentInstance) {
139
+ generateAssessmentInstanceDTO(assessmentId, predefinedAssessmentInstance, duration) {
135
140
  var _a, _b;
136
141
  let d = new Date();
137
142
  let year = d.getFullYear();
138
143
  let month = d.getMonth();
139
144
  let day = d.getDate();
140
145
  let endDate = new Date(year + 20, month, day);
141
- return Object.assign({ id: 0, endDate: endDate, startDate: new Date(), assessment: Object.assign({ id: assessmentId }, (((_a = this.defaultAssessmentDTO) === null || _a === void 0 ? void 0 : _a.tenant) && { tenant: (_b = this.defaultAssessmentDTO) === null || _b === void 0 ? void 0 : _b.tenant })), scheduleStatus: {
146
+ return Object.assign(Object.assign({ id: 0, endDate: endDate, startDate: new Date(), assessment: Object.assign({ id: assessmentId }, (((_a = this.defaultAssessmentDTO) === null || _a === void 0 ? void 0 : _a.tenant) && { tenant: (_b = this.defaultAssessmentDTO) === null || _b === void 0 ? void 0 : _b.tenant })), scheduleStatus: {
142
147
  code: 'ASSESSMENT.PUBLISH'
143
- } }, predefinedAssessmentInstance);
148
+ } }, predefinedAssessmentInstance), (duration != null && { duration }));
149
+ }
150
+ /**
151
+ * Patch fragment carrying the duration onto an already-created instance (by id), to bundle into
152
+ * the assessment/question-paper patch. Empty unless the time input is enabled and an instance exists.
153
+ */
154
+ buildInstancePatch(showTimeInput, assessmentInstanceId, durationSeconds) {
155
+ if (!showTimeInput || !assessmentInstanceId) {
156
+ return {};
157
+ }
158
+ return { assessmentInstance: { id: assessmentInstanceId, duration: durationSeconds } };
144
159
  }
145
160
  }
146
161
  AssessmentBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -151,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
151
166
  providedIn: 'root'
152
167
  }]
153
168
  }], ctorParameters: function () { return []; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvc2VydmljZXMvYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0MsTUFBTSxPQUFPLHdCQUF3QjtJQVFqQztRQU5RLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQU05QixDQUFDO0lBSmpCLHVCQUF1QixDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUlELGNBQWMsQ0FBQyxRQUFhLEVBQUUsbUJBQThDLEVBQUU7O1FBRTFFLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLGVBQWUsS0FBSSxFQUFFLENBQUM7YUFDL0QsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLE1BQVcsRUFBRSxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVgsTUFBTSxlQUFlLEdBQUc7WUFDcEIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDdkgsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FB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VUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnQsIEFzc2Vzc21lbnRJbnN0YW5jZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL2Fzc2Vzc21lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUXVlc3Rpb25QYXBlclNlY3Rpb24sIFNlY3Rpb25RdWVzdGlvbiwgQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi1wYXBlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50UXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3Nlc3NtZW50QnVpbGRlclNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgZGVmYXVsdEFzc2Vzc21lbnREVE86IEFzc2Vzc21lbnQgPSB7fTtcclxuXHJcbiAgICBzZXREZWZhdWx0QXNzZXNzbWVudERUTyh2YWx1ZTogQXNzZXNzbWVudCkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8gPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIHNldFF1ZXN0aW9uRFRPKGZvcm1EYXRhOiBhbnksIGV4aXN0aW5nUXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiB8IG51bGwgPSB7fSk6IEFzc2Vzc21lbnRRdWVzdGlvbiB7XHJcblxyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnc01hcCA9IChleGlzdGluZ1F1ZXN0aW9uPy5xdWVzdGlvbkNvbmZpZ3MgfHwgW10pXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYzogYW55LCBjb25maWc6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYWNjW2NvbmZpZy5jb25maWdLZXldID0gY29uZmlnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgfSwge30pO1xyXG5cclxuICAgICAgICBjb25zdCBxdWVzdGlvbkNvbmZpZ3MgPSBbXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWluQ2hhcmFjdGVyQ291bnQnLCBjb25maWdWYWx1ZTogZm9ybURhdGEubWluQ2hhcmFjdGVyQ291bnQgPyBTdHJpbmcoZm9ybURhdGEubWluQ2hhcmFjdGVyQ291bnQpIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heENoYXJhY3RlckNvdW50JywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heENoYXJhY3RlckNvdW50ID8gU3RyaW5nKGZvcm1EYXRhLm1heENoYXJhY3RlckNvdW50KSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nLCBjb25maWdWYWx1ZTogZm9ybURhdGEubWluaW11bU51bWJlck9mT3B0aW9uID8gU3RyaW5nKGZvcm1EYXRhLm1pbmltdW1OdW1iZXJPZk9wdGlvbikgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWF4aW11bU51bWJlck9mT3B0aW9uJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heGltdW1OdW1iZXJPZk9wdGlvbiA/IFN0cmluZyhmb3JtRGF0YS5tYXhpbXVtTnVtYmVyT2ZPcHRpb24pIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heEZpbGVTaXplJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heEZpbGVTaXplID8gU3RyaW5nKGZvcm1EYXRhLm1heEZpbGVTaXplKSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhOb09mRmlsZXMnLCBjb25maWdWYWx1ZTogZm9ybURhdGEubWF4Tm9PZkZpbGVzID8gU3RyaW5nKGZvcm1EYXRhLm1heE5vT2ZGaWxlcykgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIC8vIHsgY29uZmlnS2V5OiAndmlzaWJpbGl0eScsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS52aXNpYmlsaXR5ID8gJ3RydWUnIDogJ2ZhbHNlJyB9XHJcbiAgICAgICAgXS5tYXAoY29uZmlnID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBleGlzdGluZ0NvbmZpZ3NNYXBbY29uZmlnLmNvbmZpZ0tleV0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICB9KSkuZmlsdGVyKEJvb2xlYW4pO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5leGlzdGluZ1F1ZXN0aW9uLFxyXG4gICAgICAgICAgICBxdWVzdGlvblRleHQ6IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25UZXh0Py5bMF0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogeyBjb2RlOiAnRU5HJyB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZm9ybURhdGEucXVlc3Rpb25UZXh0IHx8ICcnXHJcbiAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICBxdWVzdGlvblN1YlRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uU3ViVGV4dCA/IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25TdWJUZXh0Py5bMF0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogeyBjb2RlOiAnRU5HJyB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogZm9ybURhdGEucXVlc3Rpb25TdWJUZXh0XHJcbiAgICAgICAgICAgIH1dIDogW10sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVHlwZTogeyBjb2RlOiBmb3JtRGF0YS5xdWVzdGlvblR5cGUgfHwgJycgfSxcclxuICAgICAgICAgICAgcXVlc3Rpb25TdWJ0eXBlOiB7IGNvZGU6IGZvcm1EYXRhLnF1ZXN0aW9uU3VidHlwZSB8fCBmb3JtRGF0YS5xdWVzdGlvblR5cGU/LnJlcGxhY2UoJ1FVRVNUSU9OX1RZUEUnLCAnUVVFU1RJT05fU1VCX1RZUEUnKSB8fCAnJyB9LFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogZm9ybURhdGEuaXNNYW5kYXRvcnkgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRmlsdGVyRW5hYmxlZDogZm9ybURhdGEuaXNGaWx0ZXJFbmFibGVkIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICB3ZWlnaHQ6IE51bWJlcihmb3JtRGF0YS50b3RhbE1hcmtzIHx8IDApLFxyXG4gICAgICAgICAgICBoaW50VGV4dDogZm9ybURhdGEuaGludFRleHQgfHwgJycsXHJcbiAgICAgICAgICAgIG1lZGlhVXJsOiBmb3JtRGF0YS5xdWVzdGlvbk1lZGlhIHx8ICcnLFxyXG4gICAgICAgICAgICByZXNwb25zZVZhbGlkYXRpb246IGZvcm1EYXRhLmN1c3RvbVJlZ2V4IHx8ICcnLFxyXG4gICAgICAgICAgICBza2lsbENvZGVzOiBmb3JtRGF0YS5za2lsbENvZGVzPy5tYXAoKHNraWxsOiBhbnkpID0+ICh7IGNvZGU6IHNraWxsLCBjbGFzc0NvZGU6IFwiUkVGLkFTU0VTU01FTlRfUVVFU1RJT05fU0tJTExcIiB9KSkgfHwgW10sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uQ29uZmlncyxcclxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbnNMaXN0OiAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdPcHRpb25zID0gZXhpc3RpbmdRdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybU9wdGlvbnMgPSBmb3JtRGF0YS5vcHRpb25zIHx8IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDEuIFByb2Nlc3MgaXRlbXMgZnJvbSBmb3JtRGF0YSAobmV3IGFuZCB1cGRhdGVkKVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvY2Vzc2VkT3B0aW9ucyA9IGZvcm1PcHRpb25zLm1hcCgob3B0OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ09wdCA9IGV4aXN0aW5nT3B0aW9ucy5maW5kKGVvID0+IGVvLmlkID09PSBvcHQuaWQgJiYgZW8uaWQgIT09IDApIHx8IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ09wdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG9wdC5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiBleGlzdGluZ09wdC51dWlkIHx8IG9wdC51dWlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlck5vOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlaWdodDogTnVtYmVyKG9wdC53ZWlnaHQgfHwgMCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFya3NSZXF1aXJlZDogb3B0LnJlbWFya3NSZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IG9wdC5pc0FjdGl2ZSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihleGlzdGluZ09wdC5vcHRpb25zIHx8IHt9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBvcHQ/Lm9wdGlvbnM/LmlkIHx8IGV4aXN0aW5nT3B0Lm9wdGlvbnM/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25OYW1lOiBbe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBleGlzdGluZ09wdC5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBvcHQub3B0aW9uTGFiZWwgfHwgJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFF1ZXN0aW9uTGlzdDogb3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IGV4aXN0aW5nT3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDIuIElkZW50aWZ5IGV4aXN0aW5nIG9wdGlvbnMgdGhhdCBhcmUgTk9UIGluIGZvcm1EYXRhIChyZW1vdmVkIGJ5IHVzZXIpIGFuZCBtYXJrIHRoZW0gaW5hY3RpdmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1PcHRpb25JZHMgPSBuZXcgU2V0KHByb2Nlc3NlZE9wdGlvbnMubWFwKChvOiBhbnkpID0+IG8uaWQpLmZpbHRlcigoaWQ6IG51bWJlcikgPT4gaWQgIT09IDApKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZWRPcHRpb25zID0gZXhpc3RpbmdPcHRpb25zLmZpbHRlcihlbyA9PiBlby5pZCAmJiAhZm9ybU9wdGlvbklkcy5oYXMoZW8uaWQpKS5tYXAoZW8gPT4gKHsgLi4uZW8sIGlzQWN0aXZlOiBmYWxzZSB9KSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5wcm9jZXNzZWRPcHRpb25zLCAuLi5yZW1vdmVkT3B0aW9uc107XHJcbiAgICAgICAgICAgIH0pKCksXHJcbiAgICAgICAgICAgIC4uLighZXhpc3RpbmdRdWVzdGlvbj8uaWQgJiYge1xyXG4gICAgICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8uZG9tYWluICYmIHsgZG9tYWluOiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy5kb21haW4gfSksXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRRdWVzdGlvbkRUTyhxdWVzdGlvbkRhdGE6IEFzc2Vzc21lbnRRdWVzdGlvbikge1xyXG4gICAgICAgIGNvbnN0IGdldENvbmZpZyA9IChrZXk6IHN0cmluZykgPT4gcXVlc3Rpb25EYXRhLnF1ZXN0aW9uQ29uZmlncz8uZmluZChjID0+IGMuY29uZmlnS2V5ID09PSBrZXkpPy5jb25maWdWYWx1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHF1ZXN0aW9uRGF0YS5pZCxcclxuICAgICAgICAgICAgcXVlc3Rpb25UZXh0OiBxdWVzdGlvbkRhdGEucXVlc3Rpb25UZXh0Py5bMF0/LnRleHQgfHwgJycsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uU3ViVGV4dDogcXVlc3Rpb25EYXRhLnF1ZXN0aW9uU3ViVGV4dD8uWzBdPy50ZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHF1ZXN0aW9uRGF0YS5xdWVzdGlvblR5cGU/LmNvZGUgfHwgJycsXHJcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBxdWVzdGlvbkRhdGEuaXNNYW5kYXRvcnkgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIGlzRmlsdGVyRW5hYmxlZDogcXVlc3Rpb25EYXRhLmlzRmlsdGVyRW5hYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgdG90YWxNYXJrczogcXVlc3Rpb25EYXRhLndlaWdodCB8fCAwLFxyXG4gICAgICAgICAgICBoaW50VGV4dDogcXVlc3Rpb25EYXRhLmhpbnRUZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvbk1lZGlhOiBxdWVzdGlvbkRhdGEubWVkaWFVcmwgfHwgJycsXHJcbiAgICAgICAgICAgIG1pbkNoYXJhY3RlckNvdW50OiBnZXRDb25maWcoJ21pbkNoYXJhY3RlckNvdW50JykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtaW5DaGFyYWN0ZXJDb3VudCcpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heENoYXJhY3RlckNvdW50OiBnZXRDb25maWcoJ21heENoYXJhY3RlckNvdW50JykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhDaGFyYWN0ZXJDb3VudCcpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1pbmltdW1OdW1iZXJPZk9wdGlvbjogZ2V0Q29uZmlnKCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKSA/IE51bWJlcihnZXRDb25maWcoJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heGltdW1OdW1iZXJPZk9wdGlvbjogZ2V0Q29uZmlnKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKSA/IE51bWJlcihnZXRDb25maWcoJ21heGltdW1OdW1iZXJPZk9wdGlvbicpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiBnZXRDb25maWcoJ21heEZpbGVTaXplJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhGaWxlU2l6ZScpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIG1heE5vT2ZGaWxlczogZ2V0Q29uZmlnKCdtYXhOb09mRmlsZXMnKSA/IE51bWJlcihnZXRDb25maWcoJ21heE5vT2ZGaWxlcycpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIC8vIHZpc2liaWxpdHk6IGdldENvbmZpZygndmlzaWJpbGl0eScpID09PSAndHJ1ZScsXHJcbiAgICAgICAgICAgIGN1c3RvbVJlZ2V4OiBxdWVzdGlvbkRhdGE/LnJlc3BvbnNlVmFsaWRhdGlvbixcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogcXVlc3Rpb25EYXRhPy5za2lsbENvZGVzPy5tYXAoKHNraWxsOiBhbnkpID0+IHNraWxsLmNvZGUpIHx8IFtdLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBxdWVzdGlvbkRhdGEuZGVmYXVsdE9wdGlvbnNMaXN0Py5tYXAob3B0ID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpZDogb3B0LmlkLFxyXG4gICAgICAgICAgICAgICAgdXVpZDogb3B0LnV1aWQsXHJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbDogb3B0Lm9wdGlvbnM/Lm9wdGlvbk5hbWU/LlswXT8udGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgICAgIHdlaWdodDogb3B0LndlaWdodCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgcmVtYXJrc1JlcXVpcmVkOiBvcHQucmVtYXJrc1JlcXVpcmVkIHx8IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaXNBY3RpdmU6IG9wdC5pc0FjdGl2ZSAhPT0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBjaGlsZFF1ZXN0aW9uTGlzdDogb3B0LmNoaWxkUXVlc3Rpb25MaXN0IHx8IFtdLFxyXG4gICAgICAgICAgICB9KSkgfHwgW10sXHJcbiAgICAgICAgICAgIGNoaWxkUXVlc3Rpb25zOiBxdWVzdGlvbkRhdGE/LmNoaWxkUXVlc3Rpb25zIHx8IFtdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZU5ld1NlY3Rpb24oc2VxdWVuY2U6IG51bWJlcik6IFF1ZXN0aW9uUGFwZXJTZWN0aW9uIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgcXBzTmFtZTogW3tcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGBTZWN0aW9uICR7c2VxdWVuY2V9YFxyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgb3JkZXJObzogc2VxdWVuY2UsXHJcbiAgICAgICAgICAgIHNlY3Rpb25RdWVzdGlvbnNMaXN0OiBbXSxcclxuICAgICAgICAgICAgdG90YWxNYXJrczogMCxcclxuICAgICAgICAgICAgdG90YWxRdWVzdGlvbnM6IDAsXHJcbiAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KSxcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVTZWN0aW9uUXVlc3Rpb24ocXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiwgc2VjdGlvblF1ZXN0aW9uOiBTZWN0aW9uUXVlc3Rpb24gPSB7fSk6IFNlY3Rpb25RdWVzdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IHNlY3Rpb25RdWVzdGlvbj8uaWQgfHwgMCxcclxuICAgICAgICAgICAgcXVlc3Rpb24sXHJcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBxdWVzdGlvbj8uaXNNYW5kYXRvcnksXHJcbiAgICAgICAgICAgIC4uLighc2VjdGlvblF1ZXN0aW9uPy5pZCAmJiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZVF1ZXN0aW9uUGFwZXJEVE8ocXVlc3Rpb25QYXBlcjogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIHF1ZXN0aW9uQmFuazogUmVjb3JkPG51bWJlciwgQXNzZXNzbWVudFF1ZXN0aW9uPik6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyIHtcclxuICAgICAgICBpZiAoIXF1ZXN0aW9uUGFwZXIpIHJldHVybiBxdWVzdGlvblBhcGVyO1xyXG5cclxuICAgICAgICBpZiAoIXF1ZXN0aW9uUGFwZXI/LmlkICYmIHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCkge1xyXG4gICAgICAgICAgICBxdWVzdGlvblBhcGVyLnRlbmFudCA9IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBxdWVzdGlvblBhcGVyLnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZm9yRWFjaCgoc2VjdGlvbjogYW55LCBzSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICBzZWN0aW9uLm9yZGVyTm8gPSBzSW5kZXggKyAxO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNlY3Rpb25NYXJrcyA9IDA7XHJcbiAgICAgICAgICAgIGxldCBzZWN0aW9uUXVlc3Rpb25zQ291bnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgc2VjdGlvbi5zZWN0aW9uUXVlc3Rpb25zTGlzdD8uZm9yRWFjaCgocTogU2VjdGlvblF1ZXN0aW9uLCBxSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcS5vcmRlck5vID0gcUluZGV4ICsgMTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gcT8ucXVlc3Rpb24gfHwgcXVlc3Rpb25CYW5rW3E/LnF1ZXN0aW9uSWQgfHwgLTFdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uICYmIHEuaXNBY3RpdmUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbk1hcmtzICs9IE51bWJlcihxdWVzdGlvbi53ZWlnaHQpIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvblF1ZXN0aW9uc0NvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VjdGlvbi50b3RhbE1hcmtzID0gc2VjdGlvbk1hcmtzO1xyXG4gICAgICAgICAgICBzZWN0aW9uLnRvdGFsUXVlc3Rpb25zID0gc2VjdGlvblF1ZXN0aW9uc0NvdW50O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcXVlc3Rpb25QYXBlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUFzc2Vzc21lbnREVE8oYXNzZXNzbWVudElkOiBudW1iZXIsIHF1ZXN0aW9uUGFwZXI6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyKTogQXNzZXNzbWVudCB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnRJZCxcclxuICAgICAgICAgICAgdG90YWxsTWFya3M6IHF1ZXN0aW9uUGFwZXI/LnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8uZmlsdGVyKChzZWN0aW9uOiBhbnkpID0+IHNlY3Rpb24uaXNBY3RpdmUgIT09IGZhbHNlKS5yZWR1Y2UoKGFjYzogbnVtYmVyLCBzZWN0aW9uOiBhbnkpID0+IGFjYyArIChzZWN0aW9uLnRvdGFsTWFya3MgfHwgMCksIDApIHx8IDAsXHJcbiAgICAgICAgICAgIC4uLighYXNzZXNzbWVudElkICYmIHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE9cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhY2hlRXZpY3Rpb25FbmFibGVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUFzc2Vzc21lbnRJbnN0YW5jZURUTyhhc3Nlc3NtZW50SWQ6IG51bWJlciwgcHJlZGVmaW5lZEFzc2Vzc21lbnRJbnN0YW5jZTogQXNzZXNzbWVudEluc3RhbmNlKTogQXNzZXNzbWVudEluc3RhbmNlIHtcclxuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gZC5nZXRNb250aCgpO1xyXG4gICAgICAgIGxldCBkYXkgPSBkLmdldERhdGUoKTtcclxuICAgICAgICBsZXQgZW5kRGF0ZSA9IG5ldyBEYXRlKHllYXIgKyAyMCwgbW9udGgsIGRheSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGVuZERhdGU6IGVuZERhdGUsXHJcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgYXNzZXNzbWVudDoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnRJZCxcclxuICAgICAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY2hlZHVsZVN0YXR1czoge1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ0FTU0VTU01FTlQuUFVCTElTSCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4ucHJlZGVmaW5lZEFzc2Vzc21lbnRJbnN0YW5jZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvc2VydmljZXMvYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUtqRSxNQUFNLE9BQU8sd0JBQXdCO0lBUWpDO1FBTlEseUJBQW9CLEdBQWUsRUFBRSxDQUFDO0lBTTlCLENBQUM7SUFKakIsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBSUQsY0FBYyxDQUFDLFFBQWEsRUFBRSxtQkFBOEMsRUFBRTs7UUFFMUUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUEsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsZUFBZSxLQUFJLEVBQUUsQ0FBQzthQUMvRCxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsTUFBVyxFQUFFLEVBQUU7WUFDOUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDL0IsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFWCxNQUFNLGVBQWUsR0FBRztZQUNwQixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUN2SCxFQUFF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QztRQUM5QyxxQ0FDSSxFQUFFLEVBQUUsQ0FBQyxFQUNMLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxFQUNyQixVQUFVLGtCQUNOLEVBQUUsRUFBRSxZQUFZLElBQ2IsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLG9CQUFvQiwwQ0FBRSxNQUFNLEtBQUksRUFBRSxNQUFNLEVBQUUsTUFBQSxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLE1BQU0sRUFBRSxDQUFDLEdBRTNGLGNBQWMsRUFBRTtnQkFDWixJQUFJLEVBQUUsb0JBQW9CO2FBQzdCLElBQ0UsNEJBQTRCLEdBRTVCLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQ3hDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLGFBQXNCLEVBQUUsb0JBQTRCLEVBQUUsZUFBdUI7UUFDNUYsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3pDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFDM0YsQ0FBQzs7c0hBM09RLHdCQUF3QjswSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07NEZBRVQsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudCwgQXNzZXNzbWVudEluc3RhbmNlLCBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9hc3Nlc3NtZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uUGFwZXJTZWN0aW9uLCBTZWN0aW9uUXVlc3Rpb24sIEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24tcGFwZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgcmVtb3ZlS2V5RGVlcCwgZGVlcENsb25lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGRlZmF1bHRBc3Nlc3NtZW50RFRPOiBBc3Nlc3NtZW50ID0ge307XHJcblxyXG4gICAgc2V0RGVmYXVsdEFzc2Vzc21lbnREVE8odmFsdWU6IEFzc2Vzc21lbnQpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBzZXRRdWVzdGlvbkRUTyhmb3JtRGF0YTogYW55LCBleGlzdGluZ1F1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24gfCBudWxsID0ge30pOiBBc3Nlc3NtZW50UXVlc3Rpb24ge1xyXG5cclxuICAgICAgICBjb25zdCBleGlzdGluZ0NvbmZpZ3NNYXAgPSAoZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25Db25maWdzIHx8IFtdKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhY2M6IGFueSwgY29uZmlnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGFjY1tjb25maWcuY29uZmlnS2V5XSA9IGNvbmZpZztcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIH0sIHt9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25Db25maWdzID0gW1xyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21pbkNoYXJhY3RlckNvdW50JywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1pbkNoYXJhY3RlckNvdW50ID8gU3RyaW5nKGZvcm1EYXRhLm1pbkNoYXJhY3RlckNvdW50KSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhDaGFyYWN0ZXJDb3VudCcsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhDaGFyYWN0ZXJDb3VudCA/IFN0cmluZyhmb3JtRGF0YS5tYXhDaGFyYWN0ZXJDb3VudCkgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWluaW11bU51bWJlck9mT3B0aW9uJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1pbmltdW1OdW1iZXJPZk9wdGlvbiA/IFN0cmluZyhmb3JtRGF0YS5taW5pbXVtTnVtYmVyT2ZPcHRpb24pIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heGltdW1OdW1iZXJPZk9wdGlvbicsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhpbXVtTnVtYmVyT2ZPcHRpb24gPyBTdHJpbmcoZm9ybURhdGEubWF4aW11bU51bWJlck9mT3B0aW9uKSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhGaWxlU2l6ZScsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhGaWxlU2l6ZSA/IFN0cmluZyhmb3JtRGF0YS5tYXhGaWxlU2l6ZSkgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWF4Tm9PZkZpbGVzJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heE5vT2ZGaWxlcyA/IFN0cmluZyhmb3JtRGF0YS5tYXhOb09mRmlsZXMpIDogbnVsbCB9LFxyXG4gICAgICAgICAgICAvLyB7IGNvbmZpZ0tleTogJ3Zpc2liaWxpdHknLCBjb25maWdWYWx1ZTogZm9ybURhdGEudmlzaWJpbGl0eSA/ICd0cnVlJyA6ICdmYWxzZScgfVxyXG4gICAgICAgIF0ubWFwKGNvbmZpZyA9PiAoe1xyXG4gICAgICAgICAgICBpZDogZXhpc3RpbmdDb25maWdzTWFwW2NvbmZpZy5jb25maWdLZXldPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgfSkpLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZXhpc3RpbmdRdWVzdGlvbixcclxuICAgICAgICAgICAgcXVlc3Rpb25UZXh0OiBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nUXVlc3Rpb24/LnF1ZXN0aW9uVGV4dD8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uVGV4dCB8fCAnJ1xyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgcXVlc3Rpb25TdWJUZXh0OiBmb3JtRGF0YS5xdWVzdGlvblN1YlRleHQgPyBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nUXVlc3Rpb24/LnF1ZXN0aW9uU3ViVGV4dD8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uU3ViVGV4dFxyXG4gICAgICAgICAgICB9XSA6IFtdLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHsgY29kZTogZm9ybURhdGEucXVlc3Rpb25UeXBlIHx8ICcnIH0sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uU3VidHlwZTogeyBjb2RlOiBmb3JtRGF0YS5xdWVzdGlvblN1YnR5cGUgfHwgZm9ybURhdGEucXVlc3Rpb25UeXBlPy5yZXBsYWNlKCdRVUVTVElPTl9UWVBFJywgJ1FVRVNUSU9OX1NVQl9UWVBFJykgfHwgJycgfSxcclxuICAgICAgICAgICAgaXNNYW5kYXRvcnk6IGZvcm1EYXRhLmlzTWFuZGF0b3J5IHx8IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0ZpbHRlckVuYWJsZWQ6IGZvcm1EYXRhLmlzRmlsdGVyRW5hYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgd2VpZ2h0OiBOdW1iZXIoZm9ybURhdGEudG90YWxNYXJrcyB8fCAwKSxcclxuICAgICAgICAgICAgaGludFRleHQ6IGZvcm1EYXRhLmhpbnRUZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBtZWRpYVVybDogZm9ybURhdGEucXVlc3Rpb25NZWRpYSB8fCAnJyxcclxuICAgICAgICAgICAgcmVzcG9uc2VWYWxpZGF0aW9uOiBmb3JtRGF0YS5jdXN0b21SZWdleCB8fCAnJyxcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogZm9ybURhdGEuc2tpbGxDb2Rlcz8ubWFwKChza2lsbDogYW55KSA9PiAoeyBjb2RlOiBza2lsbCwgY2xhc3NDb2RlOiBcIlJFRi5BU1NFU1NNRU5UX1FVRVNUSU9OX1NLSUxMXCIgfSkpIHx8IFtdLFxyXG4gICAgICAgICAgICBxdWVzdGlvbkNvbmZpZ3MsXHJcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zTGlzdDogKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9ucyA9IGV4aXN0aW5nUXVlc3Rpb24/LmRlZmF1bHRPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1PcHRpb25zID0gZm9ybURhdGEub3B0aW9ucyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAxLiBQcm9jZXNzIGl0ZW1zIGZyb20gZm9ybURhdGEgKG5ldyBhbmQgdXBkYXRlZClcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZE9wdGlvbnMgPSBmb3JtT3B0aW9ucy5tYXAoKG9wdDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdPcHQgPSBleGlzdGluZ09wdGlvbnMuZmluZChlbyA9PiBlby5pZCA9PT0gb3B0LmlkICYmIGVvLmlkICE9PSAwKSB8fCB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdPcHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBvcHQuaWQgfHwgMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXVpZDogZXhpc3RpbmdPcHQudXVpZCB8fCBvcHQudXVpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJObzogaW5kZXggKyAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IE51bWJlcihvcHQud2VpZ2h0IHx8IDApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1hcmtzUmVxdWlyZWQ6IG9wdC5yZW1hcmtzUmVxdWlyZWQgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBvcHQuaXNBY3RpdmUgIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oZXhpc3RpbmdPcHQub3B0aW9ucyB8fCB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogb3B0Py5vcHRpb25zPy5pZCB8fCBleGlzdGluZ09wdC5vcHRpb25zPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZTogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdPcHQub3B0aW9ucz8ub3B0aW9uTmFtZT8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7IGNvZGU6ICdFTkcnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogb3B0Lm9wdGlvbkxhYmVsIHx8ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkxpc3Q6IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBleGlzdGluZ09wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAyLiBJZGVudGlmeSBleGlzdGluZyBvcHRpb25zIHRoYXQgYXJlIE5PVCBpbiBmb3JtRGF0YSAocmVtb3ZlZCBieSB1c2VyKSBhbmQgbWFyayB0aGVtIGluYWN0aXZlXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtT3B0aW9uSWRzID0gbmV3IFNldChwcm9jZXNzZWRPcHRpb25zLm1hcCgobzogYW55KSA9PiBvLmlkKS5maWx0ZXIoKGlkOiBudW1iZXIpID0+IGlkICE9PSAwKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkT3B0aW9ucyA9IGV4aXN0aW5nT3B0aW9ucy5maWx0ZXIoZW8gPT4gZW8uaWQgJiYgIWZvcm1PcHRpb25JZHMuaGFzKGVvLmlkKSkubWFwKGVvID0+ICh7IC4uLmVvLCBpc0FjdGl2ZTogZmFsc2UgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJvY2Vzc2VkT3B0aW9ucywgLi4ucmVtb3ZlZE9wdGlvbnNdO1xyXG4gICAgICAgICAgICB9KSgpLFxyXG4gICAgICAgICAgICAuLi4oIWV4aXN0aW5nUXVlc3Rpb24/LmlkICYmIHtcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LmRvbWFpbiAmJiB7IGRvbWFpbjogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8uZG9tYWluIH0pLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UXVlc3Rpb25EVE8ocXVlc3Rpb25EYXRhOiBBc3Nlc3NtZW50UXVlc3Rpb24pIHtcclxuICAgICAgICBjb25zdCBnZXRDb25maWcgPSAoa2V5OiBzdHJpbmcpID0+IHF1ZXN0aW9uRGF0YS5xdWVzdGlvbkNvbmZpZ3M/LmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0ga2V5KT8uY29uZmlnVmFsdWU7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBxdWVzdGlvbkRhdGEuaWQsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVGV4dDogcXVlc3Rpb25EYXRhLnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvblN1YlRleHQ6IHF1ZXN0aW9uRGF0YS5xdWVzdGlvblN1YlRleHQ/LlswXT8udGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBxdWVzdGlvbkRhdGEucXVlc3Rpb25UeXBlPy5jb2RlIHx8ICcnLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogcXVlc3Rpb25EYXRhLmlzTWFuZGF0b3J5IHx8IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0ZpbHRlckVuYWJsZWQ6IHF1ZXN0aW9uRGF0YS5pc0ZpbHRlckVuYWJsZWQgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IHF1ZXN0aW9uRGF0YS53ZWlnaHQgfHwgMCxcclxuICAgICAgICAgICAgaGludFRleHQ6IHF1ZXN0aW9uRGF0YS5oaW50VGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25NZWRpYTogcXVlc3Rpb25EYXRhLm1lZGlhVXJsIHx8ICcnLFxyXG4gICAgICAgICAgICBtaW5DaGFyYWN0ZXJDb3VudDogZ2V0Q29uZmlnKCdtaW5DaGFyYWN0ZXJDb3VudCcpID8gTnVtYmVyKGdldENvbmZpZygnbWluQ2hhcmFjdGVyQ291bnQnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhDaGFyYWN0ZXJDb3VudDogZ2V0Q29uZmlnKCdtYXhDaGFyYWN0ZXJDb3VudCcpID8gTnVtYmVyKGdldENvbmZpZygnbWF4Q2hhcmFjdGVyQ291bnQnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtaW5pbXVtTnVtYmVyT2ZPcHRpb246IGdldENvbmZpZygnbWluaW11bU51bWJlck9mT3B0aW9uJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhpbXVtTnVtYmVyT2ZPcHRpb246IGdldENvbmZpZygnbWF4aW11bU51bWJlck9mT3B0aW9uJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogZ2V0Q29uZmlnKCdtYXhGaWxlU2l6ZScpID8gTnVtYmVyKGdldENvbmZpZygnbWF4RmlsZVNpemUnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhOb09mRmlsZXM6IGdldENvbmZpZygnbWF4Tm9PZkZpbGVzJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhOb09mRmlsZXMnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICAvLyB2aXNpYmlsaXR5OiBnZXRDb25maWcoJ3Zpc2liaWxpdHknKSA9PT0gJ3RydWUnLFxyXG4gICAgICAgICAgICBjdXN0b21SZWdleDogcXVlc3Rpb25EYXRhPy5yZXNwb25zZVZhbGlkYXRpb24sXHJcbiAgICAgICAgICAgIHNraWxsQ29kZXM6IHF1ZXN0aW9uRGF0YT8uc2tpbGxDb2Rlcz8ubWFwKChza2lsbDogYW55KSA9PiBza2lsbC5jb2RlKSB8fCBbXSxcclxuICAgICAgICAgICAgb3B0aW9uczogcXVlc3Rpb25EYXRhLmRlZmF1bHRPcHRpb25zTGlzdD8ubWFwKG9wdCA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG9wdC5pZCxcclxuICAgICAgICAgICAgICAgIHV1aWQ6IG9wdC51dWlkLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw6IG9wdC5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LnRleHQgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IG9wdC53ZWlnaHQgfHwgMCxcclxuICAgICAgICAgICAgICAgIHJlbWFya3NSZXF1aXJlZDogb3B0LnJlbWFya3NSZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBvcHQuaXNBY3RpdmUgIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkxpc3Q6IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXSxcclxuICAgICAgICAgICAgfSkpIHx8IFtdLFxyXG4gICAgICAgICAgICBjaGlsZFF1ZXN0aW9uczogcXVlc3Rpb25EYXRhPy5jaGlsZFF1ZXN0aW9ucyB8fCBbXVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVOZXdTZWN0aW9uKHNlcXVlbmNlOiBudW1iZXIpOiBRdWVzdGlvblBhcGVyU2VjdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIHFwc05hbWU6IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7IGNvZGU6ICdFTkcnIH0sXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBgU2VjdGlvbiAke3NlcXVlbmNlfWBcclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIG9yZGVyTm86IHNlcXVlbmNlLFxyXG4gICAgICAgICAgICBzZWN0aW9uUXVlc3Rpb25zTGlzdDogW10sXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IDAsXHJcbiAgICAgICAgICAgIHRvdGFsUXVlc3Rpb25zOiAwLFxyXG4gICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlU2VjdGlvblF1ZXN0aW9uKHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24sIHNlY3Rpb25RdWVzdGlvbjogU2VjdGlvblF1ZXN0aW9uID0ge30pOiBTZWN0aW9uUXVlc3Rpb24ge1xyXG4gICAgICAgIGNvbnN0IHNhbml0aXplZFF1ZXN0aW9uID0gcXVlc3Rpb24gPyByZW1vdmVLZXlEZWVwKGRlZXBDbG9uZShxdWVzdGlvbiksICd1dWlkJykgOiBxdWVzdGlvbjtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogc2VjdGlvblF1ZXN0aW9uPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICBxdWVzdGlvbjogc2FuaXRpemVkUXVlc3Rpb24sXHJcbiAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBxdWVzdGlvbj8uaXNNYW5kYXRvcnksXHJcbiAgICAgICAgICAgIC4uLighc2VjdGlvblF1ZXN0aW9uPy5pZCAmJiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZVF1ZXN0aW9uUGFwZXJEVE8ocXVlc3Rpb25QYXBlcjogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIHF1ZXN0aW9uQmFuazogUmVjb3JkPG51bWJlciwgQXNzZXNzbWVudFF1ZXN0aW9uPik6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyIHtcclxuICAgICAgICBpZiAoIXF1ZXN0aW9uUGFwZXIpIHJldHVybiBxdWVzdGlvblBhcGVyO1xyXG5cclxuICAgICAgICBpZiAoIXF1ZXN0aW9uUGFwZXI/LmlkICYmIHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCkge1xyXG4gICAgICAgICAgICBxdWVzdGlvblBhcGVyLnRlbmFudCA9IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHF1ZXN0aW9uUGFwZXIucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0Py5mb3JFYWNoKChzZWN0aW9uOiBhbnksIHNJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHNlY3Rpb24ub3JkZXJObyA9IHNJbmRleCArIDE7XHJcblxyXG4gICAgICAgICAgICBsZXQgc2VjdGlvbk1hcmtzID0gMDtcclxuICAgICAgICAgICAgbGV0IHNlY3Rpb25RdWVzdGlvbnNDb3VudCA9IDA7XHJcblxyXG4gICAgICAgICAgICBzZWN0aW9uLnNlY3Rpb25RdWVzdGlvbnNMaXN0Py5mb3JFYWNoKChxOiBTZWN0aW9uUXVlc3Rpb24sIHFJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBxLm9yZGVyTm8gPSBxSW5kZXggKyAxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHEucXVlc3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBxLnF1ZXN0aW9uID0gcmVtb3ZlS2V5RGVlcChxLnF1ZXN0aW9uLCAndXVpZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBxPy5xdWVzdGlvbiB8fCBxdWVzdGlvbkJhbmtbcT8ucXVlc3Rpb25JZCB8fCAtMV07XHJcbiAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb24gJiYgcS5pc0FjdGl2ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uTWFya3MgKz0gTnVtYmVyKHF1ZXN0aW9uLndlaWdodCkgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uUXVlc3Rpb25zQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBzZWN0aW9uLnRvdGFsTWFya3MgPSBzZWN0aW9uTWFya3M7XHJcbiAgICAgICAgICAgIHNlY3Rpb24udG90YWxRdWVzdGlvbnMgPSBzZWN0aW9uUXVlc3Rpb25zQ291bnQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBxdWVzdGlvblBhcGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlQXNzZXNzbWVudERUTyhhc3Nlc3NtZW50SWQ6IG51bWJlciwgcXVlc3Rpb25QYXBlcjogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIGFzc2Vzc21lbnRDb25maWdzPzogQ29uZmlnW10pOiBBc3Nlc3NtZW50IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogYXNzZXNzbWVudElkLFxyXG4gICAgICAgICAgICB0b3RhbGxNYXJrczogcXVlc3Rpb25QYXBlcj8ucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0Py5maWx0ZXIoKHNlY3Rpb246IGFueSkgPT4gc2VjdGlvbi5pc0FjdGl2ZSAhPT0gZmFsc2UpLnJlZHVjZSgoYWNjOiBudW1iZXIsIHNlY3Rpb246IGFueSkgPT4gYWNjICsgKHNlY3Rpb24udG90YWxNYXJrcyB8fCAwKSwgMCkgfHwgMCxcclxuICAgICAgICAgICAgLi4uKCFhc3Nlc3NtZW50SWQgJiYge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kZWZhdWx0QXNzZXNzbWVudERUT1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgLi4uKGFzc2Vzc21lbnRDb25maWdzICYmIHsgYXNzZXNzbWVudENvbmZpZ3MgfSksXHJcbiAgICAgICAgICAgIGNhY2hlRXZpY3Rpb25FbmFibGVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUFzc2Vzc21lbnRJbnN0YW5jZURUTyhhc3Nlc3NtZW50SWQ6IG51bWJlciwgcHJlZGVmaW5lZEFzc2Vzc21lbnRJbnN0YW5jZTogQXNzZXNzbWVudEluc3RhbmNlLCBkdXJhdGlvbj86IG51bWJlcik6IEFzc2Vzc21lbnRJbnN0YW5jZSB7XHJcbiAgICAgICAgbGV0IGQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGxldCB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGxldCBtb250aCA9IGQuZ2V0TW9udGgoKTtcclxuICAgICAgICBsZXQgZGF5ID0gZC5nZXREYXRlKCk7XHJcbiAgICAgICAgbGV0IGVuZERhdGUgPSBuZXcgRGF0ZSh5ZWFyICsgMjAsIG1vbnRoLCBkYXkpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICBlbmREYXRlOiBlbmREYXRlLFxyXG4gICAgICAgICAgICBzdGFydERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIGFzc2Vzc21lbnQ6IHtcclxuICAgICAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50SWQsXHJcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2NoZWR1bGVTdGF0dXM6IHtcclxuICAgICAgICAgICAgICAgIGNvZGU6ICdBU1NFU1NNRU5ULlBVQkxJU0gnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLnByZWRlZmluZWRBc3Nlc3NtZW50SW5zdGFuY2UsXHJcbiAgICAgICAgICAgIC8vIHRoZSBtYWtlcidzIGNob3NlbiBkdXJhdGlvbiAoc2Vjb25kcykgd2lucyBvdmVyIGFueSBwcmVkZWZpbmVkIHZhbHVlXHJcbiAgICAgICAgICAgIC4uLihkdXJhdGlvbiAhPSBudWxsICYmIHsgZHVyYXRpb24gfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXRjaCBmcmFnbWVudCBjYXJyeWluZyB0aGUgZHVyYXRpb24gb250byBhbiBhbHJlYWR5LWNyZWF0ZWQgaW5zdGFuY2UgKGJ5IGlkKSwgdG8gYnVuZGxlIGludG9cclxuICAgICAqIHRoZSBhc3Nlc3NtZW50L3F1ZXN0aW9uLXBhcGVyIHBhdGNoLiBFbXB0eSB1bmxlc3MgdGhlIHRpbWUgaW5wdXQgaXMgZW5hYmxlZCBhbmQgYW4gaW5zdGFuY2UgZXhpc3RzLlxyXG4gICAgICovXHJcbiAgICBidWlsZEluc3RhbmNlUGF0Y2goc2hvd1RpbWVJbnB1dDogYm9vbGVhbiwgYXNzZXNzbWVudEluc3RhbmNlSWQ6IG51bWJlciwgZHVyYXRpb25TZWNvbmRzOiBudW1iZXIpOiB7IGFzc2Vzc21lbnRJbnN0YW5jZT86IEFzc2Vzc21lbnRJbnN0YW5jZSB9IHtcclxuICAgICAgICBpZiAoIXNob3dUaW1lSW5wdXQgfHwgIWFzc2Vzc21lbnRJbnN0YW5jZUlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgYXNzZXNzbWVudEluc3RhbmNlOiB7IGlkOiBhc3Nlc3NtZW50SW5zdGFuY2VJZCwgZHVyYXRpb246IGR1cmF0aW9uU2Vjb25kcyB9IH07XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,6 +1,8 @@
1
1
  import { HttpHeaders, HttpParams } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
+ import { of } from 'rxjs';
3
4
  import * as controllers from '../../../shared/controllers';
5
+ import { removeKeyDeep } from '../../../shared/utils';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@angular/common/http";
6
8
  export class AssessmentMakerService {
@@ -14,19 +16,26 @@ export class AssessmentMakerService {
14
16
  }
15
17
  createParams(params) {
16
18
  let param = new HttpParams();
17
- for (const key of Object.keys(params)) {
18
- param = param.set(key, params[key]);
19
+ for (const key of Object.keys(params || {})) {
20
+ if (params[key] !== undefined && params[key] !== null && params[key] !== '') {
21
+ param = param.set(key, params[key]);
22
+ }
19
23
  }
20
24
  return param;
21
25
  }
22
26
  getConfigJSON(fileName) {
23
27
  return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);
24
28
  }
29
+ getResponseCount(assessmentInstanceId) {
30
+ return this.http.get(controllers.assessmentMakerController.getResponseCount + this.createParams({ assessmentInstanceId }), { headers: this.getHeaders() });
31
+ }
25
32
  createAssessmentAndQuestionPaper(payload) {
26
- return this.http.post(controllers.assessmentMakerController.assessmentAndQuestionPaper, payload, { headers: this.getHeaders() });
33
+ const cleanPayload = removeKeyDeep(payload, 'uuid');
34
+ return this.http.post(controllers.assessmentMakerController.assessmentAndQuestionPaper, cleanPayload, { headers: this.getHeaders() });
27
35
  }
28
36
  patchAssessmentAndQuestionPaper(payload) {
29
- return this.http.patch(controllers.assessmentMakerController.assessmentAndQuestionPaper, payload, { headers: this.getHeaders() });
37
+ const cleanPayload = removeKeyDeep(payload, 'uuid');
38
+ return this.http.patch(controllers.assessmentMakerController.assessmentAndQuestionPaper, cleanPayload, { headers: this.getHeaders() });
30
39
  }
31
40
  createQuestion(payload) {
32
41
  return this.http.post(controllers.assessmentMakerController.createQuestion, payload, { headers: this.getHeaders() });
@@ -54,10 +63,28 @@ export class AssessmentMakerService {
54
63
  getRefDataByCode(code, params) {
55
64
  return this.http.get(controllers.refDataController.getRefDataByCode.replace('$Code', code) + this.createParams(params), { headers: this.getHeaders() });
56
65
  }
66
+ getQuestionBankQuestions(params) {
67
+ return this.http.get(controllers.questionBankController.searchQuestions + this.createParams(params), { headers: this.getHeaders() });
68
+ }
69
+ checkQuestionsLocked(questionIds, scope = 'ASSESSMENT_INSTANCE') {
70
+ if (!questionIds || questionIds.length === 0) {
71
+ return of({});
72
+ }
73
+ let params = new HttpParams().set('scope', scope);
74
+ questionIds.forEach(id => {
75
+ if (id) {
76
+ params = params.append('questionIds', id.toString().trim());
77
+ }
78
+ });
79
+ return this.http.get(controllers.questionBankController.questionsLocked, {
80
+ params,
81
+ headers: this.getHeaders()
82
+ });
83
+ }
57
84
  }
58
85
  AssessmentMakerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentMakerService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
59
86
  AssessmentMakerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentMakerService });
60
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentMakerService, decorators: [{
61
88
  type: Injectable
62
89
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL3NlcnZpY2VzL2Fzc2Vzc21lbnQtbWFrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRzNELE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDVSxJQUFnQjs7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUhULGtCQUFhLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsT0FBTywwQ0FBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBSW5FLENBQUM7SUFFRyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElB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QyxPQUFZO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsTUFBVztRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxSixDQUFDOztvSEE3RFUsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGNvbnRyb2xsZXJzIGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb250cm9sbGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBc3Nlc3NtZW50TWFrZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0c0Jhc2VVcmwgPSBkb2N1bWVudD8uYmFzZVVSST8ucmVwbGFjZSgvXFwvJC8sICcnKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICApIHsgfVxyXG5cclxuICBwcml2YXRlIGdldEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpLnNldCgnWC1MaWJyYXJ5LVNvdXJjZScsICdjb21tb25zLWFzc2Vzc21lbnQnKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBhcmFtcyhwYXJhbXM6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgbGV0IHBhcmFtID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcclxuICAgICAgcGFyYW0gPSBwYXJhbS5zZXQoa2V5LCBwYXJhbXNba2V5XSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW07XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWdKU09OKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXNzZXRzQmFzZVVybH0vYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC8ke2ZpbGVOYW1lfS5qc29uYCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5hc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlciwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuY3JlYXRlUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaFF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLnBhdGNoUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbnNCeUlkcyhwYXJhbXM6IHsgcXVlc3Rpb25JZHM6IG51bWJlcltdIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UXVlc3Rpb25zQnlJZHMsIHsgcGFyYW1zLCBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFzc2Vzc21lbnRDb250ZXh0KHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmdldEFzc2Vzc21lbnRDb250ZXh0ICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVNlY3Rpb24ocXVlc3Rpb25QYXBlcklkOiBudW1iZXIsIHNlY3Rpb25JZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZHVwbGljYXRlU2VjdGlvbj8ucmVwbGFjZSgnJEFzc2Vzc21lbnRRdWVzdGlvblBhcGVySWQnLCBxdWVzdGlvblBhcGVySWQ/LnRvU3RyaW5nKCkpPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKSwge30sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVRdWVzdGlvbihzZWN0aW9uSWQ6IG51bWJlciwgc2VjdGlvblF1ZXN0aW9uSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmR1cGxpY2F0ZVF1ZXN0aW9uPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKT8ucmVwbGFjZSgnJFNlY3Rpb25RdWVzdGlvbklkJywgc2VjdGlvblF1ZXN0aW9uSWQ/LnRvU3RyaW5nKCkpLCB7fSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZSwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlZkRhdGFCeUNvZGUoY29kZTogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoY29udHJvbGxlcnMucmVmRGF0YUNvbnRyb2xsZXIuZ2V0UmVmRGF0YUJ5Q29kZS5yZXBsYWNlKCckQ29kZScsIGNvZGUpICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcbn1cclxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL3NlcnZpY2VzL2Fzc2Vzc21lbnQtbWFrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBR3RELE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDVSxJQUFnQjs7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUhULGtCQUFhLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsT0FBTywwQ0FBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBSW5FLENBQUM7SUFFRyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzNDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsR0FBRyxD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RUFBRSxDQUFDLENBQUM7SUFDMUosQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQVc7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2SSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsV0FBZ0MsRUFBRSxRQUFnQixxQkFBcUI7UUFDMUYsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxFQUFFLEVBQUU7Z0JBQ04sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzdEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEwQixXQUFXLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFO1lBQ2hHLE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDOztvSEF6RlUsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIGNvbnRyb2xsZXJzIGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb250cm9sbGVycyc7XHJcbmltcG9ydCB7IHJlbW92ZUtleURlZXAgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudE1ha2VyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhc3NldHNCYXNlVXJsID0gZG9jdW1lbnQ/LmJhc2VVUkk/LnJlcGxhY2UoL1xcLyQvLCAnJyk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ1gtTGlicmFyeS1Tb3VyY2UnLCAnY29tbW9ucy1hc3Nlc3NtZW50Jyk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVQYXJhbXMocGFyYW1zOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgIGxldCBwYXJhbSA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbXMgfHwge30pKSB7XHJcbiAgICAgIGlmIChwYXJhbXNba2V5XSAhPT0gdW5kZWZpbmVkICYmIHBhcmFtc1trZXldICE9PSBudWxsICYmIHBhcmFtc1trZXldICE9PSAnJykge1xyXG4gICAgICAgIHBhcmFtID0gcGFyYW0uc2V0KGtleSwgcGFyYW1zW2tleV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW07XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWdKU09OKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXNzZXRzQmFzZVVybH0vYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC8ke2ZpbGVOYW1lfS5qc29uYCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zZUNvdW50KGFzc2Vzc21lbnRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UmVzcG9uc2VDb3VudCArIHRoaXMuY3JlYXRlUGFyYW1zKHsgYXNzZXNzbWVudEluc3RhbmNlSWQgfSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGNsZWFuUGF5bG9hZCA9IHJlbW92ZUtleURlZXAocGF5bG9hZCwgJ3V1aWQnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBjbGVhblBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaEFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyKHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgY2xlYW5QYXlsb2FkID0gcmVtb3ZlS2V5RGVlcChwYXlsb2FkLCAndXVpZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBjbGVhblBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVRdWVzdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmNyZWF0ZVF1ZXN0aW9uLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hRdWVzdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5wYXRjaFF1ZXN0aW9uLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25zQnlJZHMocGFyYW1zOiB7IHF1ZXN0aW9uSWRzOiBudW1iZXJbXSB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmdldFF1ZXN0aW9uc0J5SWRzLCB7IHBhcmFtcywgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBc3Nlc3NtZW50Q29udGV4dChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5nZXRBc3Nlc3NtZW50Q29udGV4dCArIHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVTZWN0aW9uKHF1ZXN0aW9uUGFwZXJJZDogbnVtYmVyLCBzZWN0aW9uSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmR1cGxpY2F0ZVNlY3Rpb24/LnJlcGxhY2UoJyRBc3Nlc3NtZW50UXVlc3Rpb25QYXBlcklkJywgcXVlc3Rpb25QYXBlcklkPy50b1N0cmluZygpKT8ucmVwbGFjZSgnJFNlY3Rpb25JZCcsIHNlY3Rpb25JZD8udG9TdHJpbmcoKSksIHt9LCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlUXVlc3Rpb24oc2VjdGlvbklkOiBudW1iZXIsIHNlY3Rpb25RdWVzdGlvbklkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5kdXBsaWNhdGVRdWVzdGlvbj8ucmVwbGFjZSgnJFNlY3Rpb25JZCcsIHNlY3Rpb25JZD8udG9TdHJpbmcoKSk/LnJlcGxhY2UoJyRTZWN0aW9uUXVlc3Rpb25JZCcsIHNlY3Rpb25RdWVzdGlvbklkPy50b1N0cmluZygpKSwge30sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50SW5zdGFuY2UocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5jcmVhdGVBc3Nlc3NtZW50SW5zdGFuY2UsIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZWZEYXRhQnlDb2RlKGNvZGU6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLnJlZkRhdGFDb250cm9sbGVyLmdldFJlZkRhdGFCeUNvZGUucmVwbGFjZSgnJENvZGUnLCBjb2RlKSArIHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbkJhbmtRdWVzdGlvbnMocGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLnF1ZXN0aW9uQmFua0NvbnRyb2xsZXIuc2VhcmNoUXVlc3Rpb25zICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrUXVlc3Rpb25zTG9ja2VkKHF1ZXN0aW9uSWRzOiAobnVtYmVyIHwgc3RyaW5nKVtdLCBzY29wZTogc3RyaW5nID0gJ0FTU0VTU01FTlRfSU5TVEFOQ0UnKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4ge1xyXG4gICAgaWYgKCFxdWVzdGlvbklkcyB8fCBxdWVzdGlvbklkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnc2NvcGUnLCBzY29wZSk7XHJcbiAgICBxdWVzdGlvbklkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncXVlc3Rpb25JZHMnLCBpZC50b1N0cmluZygpLnRyaW0oKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KGNvbnRyb2xsZXJzLnF1ZXN0aW9uQmFua0NvbnRyb2xsZXIucXVlc3Rpb25zTG9ja2VkLCB7XHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuIl19