commons-assessment 12.1.1 → 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 (56) hide show
  1. package/bundles/commons-assessment.umd.js +989 -114
  2. package/bundles/commons-assessment.umd.js.map +1 -1
  3. package/esm2015/lib/modules/assessment-maker/assessment-maker.component.js +148 -5
  4. package/esm2015/lib/modules/assessment-maker/assessment-maker.module.js +10 -5
  5. package/esm2015/lib/modules/assessment-maker/components/add-edit-section-introduction/add-edit-section-introduction.component.js +1 -1
  6. package/esm2015/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.js +64 -20
  7. package/esm2015/lib/modules/assessment-maker/components/question-bank-picker/question-bank-picker.component.js +276 -0
  8. package/esm2015/lib/modules/assessment-maker/components/question-details/question-details.component.js +12 -2
  9. package/esm2015/lib/modules/assessment-maker/services/assessment-builder.service.js +7 -2
  10. package/esm2015/lib/modules/assessment-maker/services/assessment-maker.service.js +30 -19
  11. package/esm2015/lib/modules/assessment-taker/assessment-taker.component.js +2 -7
  12. package/esm2015/lib/modules/assessment-taker/components/proctoring-consent/proctoring-consent.component.js +2 -14
  13. package/esm2015/lib/modules/assessment-taker/components/proctoring-result/proctoring-result.component.js +2 -2
  14. package/esm2015/lib/modules/assessment-taker/components/question-type-date-picker/question-type-date-picker.component.js +1 -1
  15. package/esm2015/lib/modules/assessment-taker/components/question-type-editor/question-type-editor.component.js +1 -1
  16. package/esm2015/lib/modules/assessment-taker/components/question-type-file-upload/question-type-file-upload.component.js +1 -1
  17. package/esm2015/lib/modules/assessment-taker/components/question-type-long/question-type-long.component.js +1 -1
  18. package/esm2015/lib/modules/assessment-taker/components/question-type-multiselect/question-type-multiselect.component.js +1 -1
  19. package/esm2015/lib/modules/assessment-taker/components/question-type-objective/question-type-objective.component.js +1 -1
  20. package/esm2015/lib/modules/assessment-taker/components/question-type-preference/question-type-preference.component.js +1 -1
  21. package/esm2015/lib/modules/assessment-taker/components/question-type-short/question-type-short.component.js +1 -1
  22. package/esm2015/lib/modules/assessment-taker/components/section-instructions/section-instructions.component.js +1 -1
  23. package/esm2015/lib/modules/assessment-taker/services/assessment-taker.service.js +2 -15
  24. package/esm2015/lib/modules/question-bank/question-bank.component.js +313 -0
  25. package/esm2015/lib/modules/question-bank/question-bank.module.js +45 -0
  26. package/esm2015/lib/shared/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  27. package/esm2015/lib/shared/components/skill-allocation/skill-allocation.component.js +1 -1
  28. package/esm2015/lib/shared/controllers.js +5 -1
  29. package/esm2015/lib/shared/interfaces/assessment.interface.js +1 -1
  30. package/esm2015/lib/shared/pipes/order-by.pipe.js +3 -4
  31. package/esm2015/lib/shared/utils.js +19 -1
  32. package/esm2015/public-api.js +4 -1
  33. package/fesm2015/commons-assessment.js +904 -93
  34. package/fesm2015/commons-assessment.js.map +1 -1
  35. package/lib/modules/assessment-maker/assessment-maker.component.d.ts +11 -2
  36. package/lib/modules/assessment-maker/assessment-maker.module.d.ts +6 -5
  37. package/lib/modules/assessment-maker/components/assessment-builder/assessment-builder.component.d.ts +3 -0
  38. package/lib/modules/assessment-maker/components/question-bank-picker/question-bank-picker.component.d.ts +81 -0
  39. package/lib/modules/assessment-maker/components/question-details/question-details.component.d.ts +3 -1
  40. package/lib/modules/assessment-maker/services/assessment-maker.service.d.ts +3 -2
  41. package/lib/modules/assessment-taker/services/assessment-taker.service.d.ts +16 -18
  42. package/lib/modules/question-bank/question-bank.component.d.ts +65 -0
  43. package/lib/modules/question-bank/question-bank.module.d.ts +12 -0
  44. package/lib/shared/controllers.d.ts +4 -0
  45. package/lib/shared/interfaces/assessment.interface.d.ts +5 -0
  46. package/lib/shared/utils.d.ts +4 -0
  47. package/package.json +1 -1
  48. package/public-api.d.ts +3 -0
  49. package/src/lib/assets/images/arrow-down-blue.svg +3 -0
  50. package/src/lib/assets/images/arrow-up-blue.svg +3 -0
  51. package/src/lib/assets/images/file-import.svg +11 -0
  52. package/src/lib/assets/images/plus-white.svg +1 -0
  53. package/src/lib/assets/json/imageConfig.json +5 -1
  54. package/src/lib/assets/json/labelConfig.json +35 -4
  55. package/src/lib/assets/theme/_theme.global.scss +0 -1
  56. package/src/lib/assets/theme/styles.global.scss +0 -12
@@ -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 '';
@@ -53,7 +61,7 @@ export class QuestionDetailsComponent {
53
61
  }
54
62
  }
55
63
  QuestionDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- 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; 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 | orderBy; 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)=\"$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-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-input-focus-box-shadow{box-shadow:var(--assessment-input-focus-box-shadow)!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 } });
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 } });
57
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDetailsComponent, decorators: [{
58
66
  type: Component,
59
67
  args: [{
@@ -73,6 +81,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
73
81
  type: Input
74
82
  }], allowDelete: [{
75
83
  type: Input
84
+ }], isLocked: [{
85
+ type: Input
76
86
  }], editQuestion: [{
77
87
  type: Output
78
88
  }], duplicateQuestion: [{
@@ -85,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
85
95
  type: ViewChild,
86
96
  args: ['questionText']
87
97
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvY29tcG9uZW50cy9xdWVzdGlvbi1kZXRhaWxzL3F1ZXN0aW9uLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL2NvbXBvbmVudHMvcXVlc3Rpb24tZGV0YWlscy9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUzdHLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFTVyxnQkFBVyxHQUE4QixFQUFFLENBQUM7UUFDNUMsZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQzVDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTNCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWlELENBQUM7UUFDakYsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDeEQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDM0Qsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQTRDLENBQUM7UUFFN0YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQUcsS0FBSyxDQUFDO0tBOENwQjtJQTNDQyxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQXdCO1FBQ3RDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQzVDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBNEI7O1FBQy9DLE9BQU8sTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsa0JBQWtCLDBDQUFFLElBQUksQ0FDdkMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxpQkFBaUIsS0FBSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYSxFQUFFLE1BQVc7O1FBQ3hDLE9BQU8sQ0FBQSxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPLDBDQUFFLEVBQUUsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUM3RSxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWEsRUFBRSxFQUFPO1FBQ25DLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUM3QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLEtBQVU7UUFDeEMsT0FBTyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUM5RCxDQUFDOztzSEEzRFUsd0JBQXdCOzBHQUF4Qix3QkFBd0IsK2dCQ1RyQyxtOU1BZ0dlOzRGRHZGRix3QkFBd0I7a0JBTHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLG1DQUFtQztvQkFDaEQsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7aUJBQ2pEOzhCQUVVLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBSW9CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU2VjdGlvblF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24tcGFwZXIuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uLWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25RdWVzdGlvbiE6IFNlY3Rpb25RdWVzdGlvbjtcclxuICBASW5wdXQoKSBxdWVzdGlvbiE6IEFzc2Vzc21lbnRRdWVzdGlvbjtcclxuICBASW5wdXQoKSBxdWVzdGlvbkJhbmshOiBSZWNvcmQ8bnVtYmVyLCBBc3Nlc3NtZW50UXVlc3Rpb24+O1xyXG4gIEBJbnB1dCgpIGxhYmVsQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgQElucHV0KCkgaW1hZ2VDb25maWc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBASW5wdXQoKSBhbGxvd0RlbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSBlZGl0UXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgcXVlc3Rpb25JZDogYW55LCBpc0NoaWxkUXVlc3Rpb246IGJvb2xlYW4gfT4oKTtcclxuICBAT3V0cHV0KCkgZHVwbGljYXRlUXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFNlY3Rpb25RdWVzdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlUGFyZW50UXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFNlY3Rpb25RdWVzdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlQ2hpbGRRdWVzdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBvcHRpb246IGFueSwgY2hpbGRRdWVzdGlvbklkOiBudW1iZXIgfT4oKTtcclxuXHJcbiAgZXhwYW5kZWQgPSBmYWxzZTtcclxuICBzaG93VG9nZ2xlID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgncXVlc3Rpb25UZXh0JykgcXVlc3Rpb25UZXh0ITogRWxlbWVudFJlZjtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrT3ZlcmZsb3coKSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVUZXh0KCkge1xyXG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xyXG5cclxuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tPdmVyZmxvdygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrT3ZlcmZsb3coKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMucXVlc3Rpb25UZXh0Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLnNob3dUb2dnbGUgPSBlbC5zY3JvbGxIZWlnaHQgPiBlbC5jbGllbnRIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBjYXBpdGFsaXplRmlyc3QodGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGlmICghdGV4dCkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS5zcGxpdCgnICcpLm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBpbWFnZUVycm9ySGFuZGxlcihldmVudDogYW55LCBmaWxlUGF0aDogc3RyaW5nKSB7XHJcbiAgICBldmVudC50YXJnZXQuc3JjID0gZmlsZVBhdGg7XHJcbiAgfVxyXG5cclxuICBjaGlsZFF1ZXN0aW9uUHJlc2VudChxdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uKSB7XHJcbiAgICByZXR1cm4gcXVlc3Rpb24/LmRlZmF1bHRPcHRpb25zTGlzdD8uc29tZShcclxuICAgICAgb3B0aW9uID0+IG9wdGlvbj8uY2hpbGRRdWVzdGlvbkxpc3QgJiYgb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Lmxlbmd0aCA+IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5T3B0aW9uSWQoaW5kZXg6IG51bWJlciwgb3B0aW9uOiBhbnkpIHtcclxuICAgIHJldHVybiBvcHRpb24/Lm9wdGlvbnM/LmlkICE9IG51bGwgPyAnbycgKyBvcHRpb24ub3B0aW9ucy5pZCA6ICdpJyArIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUNoaWxkSWQoaW5kZXg6IG51bWJlciwgaWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGlkICE9IG51bGwgPyAnYycgKyBpZCA6ICdpJyArIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeVNraWxsQ29kZShpbmRleDogbnVtYmVyLCBza2lsbDogYW55KSB7XHJcbiAgICByZXR1cm4gc2tpbGw/LmNvZGUgIT0gbnVsbCA/ICdrJyArIHNraWxsLmNvZGUgOiAnaScgKyBpbmRleDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0yIGFzc2Vzc21lbnQtYmctcGFsZXR0ZS1GRUY5RjEgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBib3JkZXItcGFsZXR0ZS1GOURBQTZcIj5cclxuICAgICAgICAgICAge3tjYXBpdGFsaXplRmlyc3QocXVlc3Rpb24/LnF1ZXN0aW9uVHlwZT8ubGFiZWxzPy5bMF0/LnRleHQpfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbj8ud2VpZ2h0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIHAtMiBhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRURGM0ZEIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgYm9yZGVyLXBhbGV0dGUtQzhEQUY5XCI+XHJcbiAgICAgICAgICAgIHt7cXVlc3Rpb24/LndlaWdodH19IHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5NQVJLUyddfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbj8uaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gcC0yIGFzc2Vzc21lbnQtYmctcGFsZXR0ZS1FOEY3RjAgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBib3JkZXItcGFsZXR0ZS1CN0U3Q0ZcIj5cclxuICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BTkRBVE9SWSddfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInF1ZXN0aW9uc01lbnVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgY2xhc3M9XCJib3JkZXItMCBiZy10cmFuc3BhcmVudCBweS0yXCI+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5BQ1RJT05fRE9UUyddXCJcclxuICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL2FjdGlvbi1kb3RzLnN2ZycpXCIgLz5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNxdWVzdGlvbnNNZW51PVwibWF0TWVudVwiIGNsYXNzPVwibWF0LW1lbnUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJvcmRlci1ncmV5LWZvdXItMVwiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImR1cGxpY2F0ZVF1ZXN0aW9uLmVtaXQoc2VjdGlvblF1ZXN0aW9uKVwiIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgY2xhc3M9XCJweS0yIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMlwiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuRFVQTElDQVRFJ119fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0RlbGV0ZVwiIChjbGljayk9XCJkZWxldGVQYXJlbnRRdWVzdGlvbi5lbWl0KHNlY3Rpb25RdWVzdGlvbilcIiBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgIGNsYXNzPVwicHktMiBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuREVMRVRFJ119fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgIDxkaXYgI3F1ZXN0aW9uVGV4dCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTUgcXVlc3Rpb24tdGV4dCBjdXJzb3ItcG9pbnRlclwiIFtjbGFzcy5jb2xsYXBzZWRdPVwiIWV4cGFuZGVkXCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBlZGl0UXVlc3Rpb24uZW1pdCh7cXVlc3Rpb25JZDogc2VjdGlvblF1ZXN0aW9uPy5xdWVzdGlvbklkLCBpc0NoaWxkUXVlc3Rpb246IGZhbHNlfSlcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwicXVlc3Rpb24/LnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0XCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cInNob3dUb2dnbGVcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNSBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGV4cGFuZGVkID0gIWV4cGFuZGVkXCI+XHJcbiAgICAgICAge3sgbGFiZWxDb25maWdbZXhwYW5kZWQgPyAnQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlJFQURfTEVTUycgOiAnQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlJFQURfTU9SRSddIH19XHJcbiAgICA8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cIihxdWVzdGlvbj8uc2tpbGxDb2Rlcz8ubGVuZ3RoID8/IDApID4gMFwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LWVpZ2h0IG1iLTFcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuU0tJTExTJ119fTwvcD5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGdhcC0yXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHNraWxsIG9mIHF1ZXN0aW9uPy5za2lsbENvZGVzOyB0cmFja0J5OiB0cmFja0J5U2tpbGxDb2RlXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiByb3VuZGVkLTIgc2tpbGwtY2hpcCBweC0zIHB5LTFcIj57e3NraWxsPy5sYWJlbHM/LlswXT8udGV4dCB8fCBza2lsbD8ubmFtZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBDaGlsZCBRdWVzdGlvbnMgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0Py5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC00IGNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBxdWVzdGlvbj8uZGVmYXVsdE9wdGlvbnNMaXN0IHwgb3JkZXJCeTsgdHJhY2tCeTogdHJhY2tCeU9wdGlvbklkXCIgY2xhc3M9XCJteS0zIGQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC1jaXJjbGUgY3VzdG9tLXBhZGRpbmcgYm9yZGVyLWdyZXktdGVuLTJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzXCI+e3tvcHRpb24ub3B0aW9ucz8ub3B0aW9uTmFtZT8uWzBdPy50ZXh0fX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LWFjY29yZGlvbiAqbmdJZj1cImNoaWxkUXVlc3Rpb25QcmVzZW50KHF1ZXN0aW9uKVwiPlxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm10LTQgY29sLTEyIGJvcmRlci0wIG92ZXJmbG93LWhpZGRlbiBhc3Nlc3NtZW50LXBhbmVsIHNoYWRvdy1ub25lIGJnLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cInAtMCBiZy10cmFuc3BhcmVudCBwZS0xIGgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgZmxleC1ncm93LTEgcGUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LWVpZ2h0XCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLkNISUxEX1FVRVNUSU9OUyddfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGJvcmRlci1ib3R0b21cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb24/LmRlZmF1bHRPcHRpb25zTGlzdCB8IG9yZGVyQnk7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25JZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbi5jaGlsZFF1ZXN0aW9uTGlzdD8ubGVuZ3RoXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1vbmUgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE0IG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ub3B0aW9ucz8ub3B0aW9uTmFtZT8uWzBdPy50ZXh0fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZFF1ZXN0aW9uSWQgb2Ygb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0IHwgb3JkZXJCeTsgdHJhY2tCeTogdHJhY2tCeUNoaWxkSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWNoaWxkLW5vZGUgcG9zaXRpb24tcmVsYXRpdmUgbXQtMyBtcy1tZC00IG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkJhbmtbY2hpbGRRdWVzdGlvbklkXSBhcyBjaGlsZFF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMyBwcy0xXCI+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;
@@ -161,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
161
166
  providedIn: 'root'
162
167
  }]
163
168
  }], ctorParameters: function () { return []; } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFrZXIvc2VydmljZXMvYXNzZXNzbWVudC1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRM0MsTUFBTSxPQUFPLHdCQUF3QjtJQVFqQztRQU5RLHlCQUFvQixHQUFlLEVBQUUsQ0FBQztJQU05QixDQUFDO0lBSmpCLHVCQUF1QixDQUFDLEtBQWlCO1FBQ3JDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUlELGNBQWMsQ0FBQyxRQUFhLEVBQUUsbUJBQThDLEVBQUU7O1FBRTFFLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFBLGdCQUFnQixhQUFoQixnQkFBZ0IsdUJBQWhCLGdCQUFnQixDQUFFLGVBQWUsS0FBSSxFQUFFLENBQUM7YUFDL0QsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLE1BQVcsRUFBRSxFQUFFO1lBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVgsTUFBTSxlQUFlLEdBQUc7WUFDcEIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDdkgsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FB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QUMsUUFBUSxJQUFJLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQ3hDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLGFBQXNCLEVBQUUsb0JBQTRCLEVBQUUsZUFBdUI7UUFDNUYsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ3pDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFDM0YsQ0FBQzs7c0hBeE9RLHdCQUF3QjswSEFBeEIsd0JBQXdCLGNBRnJCLE1BQU07NEZBRVQsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudCwgQXNzZXNzbWVudEluc3RhbmNlLCBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9hc3Nlc3NtZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uUGFwZXJTZWN0aW9uLCBTZWN0aW9uUXVlc3Rpb24sIEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24tcGFwZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudEJ1aWxkZXJTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIGRlZmF1bHRBc3Nlc3NtZW50RFRPOiBBc3Nlc3NtZW50ID0ge307XHJcblxyXG4gICAgc2V0RGVmYXVsdEFzc2Vzc21lbnREVE8odmFsdWU6IEFzc2Vzc21lbnQpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBzZXRRdWVzdGlvbkRUTyhmb3JtRGF0YTogYW55LCBleGlzdGluZ1F1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24gfCBudWxsID0ge30pOiBBc3Nlc3NtZW50UXVlc3Rpb24ge1xyXG5cclxuICAgICAgICBjb25zdCBleGlzdGluZ0NvbmZpZ3NNYXAgPSAoZXhpc3RpbmdRdWVzdGlvbj8ucXVlc3Rpb25Db25maWdzIHx8IFtdKVxyXG4gICAgICAgICAgICAucmVkdWNlKChhY2M6IGFueSwgY29uZmlnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGFjY1tjb25maWcuY29uZmlnS2V5XSA9IGNvbmZpZztcclxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgIH0sIHt9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb25Db25maWdzID0gW1xyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21pbkNoYXJhY3RlckNvdW50JywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1pbkNoYXJhY3RlckNvdW50ID8gU3RyaW5nKGZvcm1EYXRhLm1pbkNoYXJhY3RlckNvdW50KSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhDaGFyYWN0ZXJDb3VudCcsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhDaGFyYWN0ZXJDb3VudCA/IFN0cmluZyhmb3JtRGF0YS5tYXhDaGFyYWN0ZXJDb3VudCkgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWluaW11bU51bWJlck9mT3B0aW9uJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1pbmltdW1OdW1iZXJPZk9wdGlvbiA/IFN0cmluZyhmb3JtRGF0YS5taW5pbXVtTnVtYmVyT2ZPcHRpb24pIDogbnVsbCB9LFxyXG4gICAgICAgICAgICB7IGNvbmZpZ0tleTogJ21heGltdW1OdW1iZXJPZk9wdGlvbicsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhpbXVtTnVtYmVyT2ZPcHRpb24gPyBTdHJpbmcoZm9ybURhdGEubWF4aW11bU51bWJlck9mT3B0aW9uKSA6IG51bGwgfSxcclxuICAgICAgICAgICAgeyBjb25maWdLZXk6ICdtYXhGaWxlU2l6ZScsIGNvbmZpZ1ZhbHVlOiBmb3JtRGF0YS5tYXhGaWxlU2l6ZSA/IFN0cmluZyhmb3JtRGF0YS5tYXhGaWxlU2l6ZSkgOiBudWxsIH0sXHJcbiAgICAgICAgICAgIHsgY29uZmlnS2V5OiAnbWF4Tm9PZkZpbGVzJywgY29uZmlnVmFsdWU6IGZvcm1EYXRhLm1heE5vT2ZGaWxlcyA/IFN0cmluZyhmb3JtRGF0YS5tYXhOb09mRmlsZXMpIDogbnVsbCB9LFxyXG4gICAgICAgICAgICAvLyB7IGNvbmZpZ0tleTogJ3Zpc2liaWxpdHknLCBjb25maWdWYWx1ZTogZm9ybURhdGEudmlzaWJpbGl0eSA/ICd0cnVlJyA6ICdmYWxzZScgfVxyXG4gICAgICAgIF0ubWFwKGNvbmZpZyA9PiAoe1xyXG4gICAgICAgICAgICBpZDogZXhpc3RpbmdDb25maWdzTWFwW2NvbmZpZy5jb25maWdLZXldPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgfSkpLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZXhpc3RpbmdRdWVzdGlvbixcclxuICAgICAgICAgICAgcXVlc3Rpb25UZXh0OiBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nUXVlc3Rpb24/LnF1ZXN0aW9uVGV4dD8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uVGV4dCB8fCAnJ1xyXG4gICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgcXVlc3Rpb25TdWJUZXh0OiBmb3JtRGF0YS5xdWVzdGlvblN1YlRleHQgPyBbe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGV4aXN0aW5nUXVlc3Rpb24/LnF1ZXN0aW9uU3ViVGV4dD8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IHsgY29kZTogJ0VORycgfSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGZvcm1EYXRhLnF1ZXN0aW9uU3ViVGV4dFxyXG4gICAgICAgICAgICB9XSA6IFtdLFxyXG4gICAgICAgICAgICBxdWVzdGlvblR5cGU6IHsgY29kZTogZm9ybURhdGEucXVlc3Rpb25UeXBlIHx8ICcnIH0sXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uU3VidHlwZTogeyBjb2RlOiBmb3JtRGF0YS5xdWVzdGlvblN1YnR5cGUgfHwgZm9ybURhdGEucXVlc3Rpb25UeXBlPy5yZXBsYWNlKCdRVUVTVElPTl9UWVBFJywgJ1FVRVNUSU9OX1NVQl9UWVBFJykgfHwgJycgfSxcclxuICAgICAgICAgICAgaXNNYW5kYXRvcnk6IGZvcm1EYXRhLmlzTWFuZGF0b3J5IHx8IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0ZpbHRlckVuYWJsZWQ6IGZvcm1EYXRhLmlzRmlsdGVyRW5hYmxlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgd2VpZ2h0OiBOdW1iZXIoZm9ybURhdGEudG90YWxNYXJrcyB8fCAwKSxcclxuICAgICAgICAgICAgaGludFRleHQ6IGZvcm1EYXRhLmhpbnRUZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBtZWRpYVVybDogZm9ybURhdGEucXVlc3Rpb25NZWRpYSB8fCAnJyxcclxuICAgICAgICAgICAgcmVzcG9uc2VWYWxpZGF0aW9uOiBmb3JtRGF0YS5jdXN0b21SZWdleCB8fCAnJyxcclxuICAgICAgICAgICAgc2tpbGxDb2RlczogZm9ybURhdGEuc2tpbGxDb2Rlcz8ubWFwKChza2lsbDogYW55KSA9PiAoeyBjb2RlOiBza2lsbCwgY2xhc3NDb2RlOiBcIlJFRi5BU1NFU1NNRU5UX1FVRVNUSU9OX1NLSUxMXCIgfSkpIHx8IFtdLFxyXG4gICAgICAgICAgICBxdWVzdGlvbkNvbmZpZ3MsXHJcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb25zTGlzdDogKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9ucyA9IGV4aXN0aW5nUXVlc3Rpb24/LmRlZmF1bHRPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1PcHRpb25zID0gZm9ybURhdGEub3B0aW9ucyB8fCBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAxLiBQcm9jZXNzIGl0ZW1zIGZyb20gZm9ybURhdGEgKG5ldyBhbmQgdXBkYXRlZClcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZE9wdGlvbnMgPSBmb3JtT3B0aW9ucy5tYXAoKG9wdDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdPcHQgPSBleGlzdGluZ09wdGlvbnMuZmluZChlbyA9PiBlby5pZCA9PT0gb3B0LmlkICYmIGVvLmlkICE9PSAwKSB8fCB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXhpc3RpbmdPcHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBvcHQuaWQgfHwgMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXVpZDogZXhpc3RpbmdPcHQudXVpZCB8fCBvcHQudXVpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJObzogaW5kZXggKyAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IE51bWJlcihvcHQud2VpZ2h0IHx8IDApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1hcmtzUmVxdWlyZWQ6IG9wdC5yZW1hcmtzUmVxdWlyZWQgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBvcHQuaXNBY3RpdmUgIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oZXhpc3RpbmdPcHQub3B0aW9ucyB8fCB7fSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogb3B0Py5vcHRpb25zPy5pZCB8fCBleGlzdGluZ09wdC5vcHRpb25zPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZTogW3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZXhpc3RpbmdPcHQub3B0aW9ucz8ub3B0aW9uTmFtZT8uWzBdPy5pZCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7IGNvZGU6ICdFTkcnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogb3B0Lm9wdGlvbkxhYmVsIHx8ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkxpc3Q6IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBleGlzdGluZ09wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAyLiBJZGVudGlmeSBleGlzdGluZyBvcHRpb25zIHRoYXQgYXJlIE5PVCBpbiBmb3JtRGF0YSAocmVtb3ZlZCBieSB1c2VyKSBhbmQgbWFyayB0aGVtIGluYWN0aXZlXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtT3B0aW9uSWRzID0gbmV3IFNldChwcm9jZXNzZWRPcHRpb25zLm1hcCgobzogYW55KSA9PiBvLmlkKS5maWx0ZXIoKGlkOiBudW1iZXIpID0+IGlkICE9PSAwKSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkT3B0aW9ucyA9IGV4aXN0aW5nT3B0aW9ucy5maWx0ZXIoZW8gPT4gZW8uaWQgJiYgIWZvcm1PcHRpb25JZHMuaGFzKGVvLmlkKSkubWFwKGVvID0+ICh7IC4uLmVvLCBpc0FjdGl2ZTogZmFsc2UgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJvY2Vzc2VkT3B0aW9ucywgLi4ucmVtb3ZlZE9wdGlvbnNdO1xyXG4gICAgICAgICAgICB9KSgpLFxyXG4gICAgICAgICAgICAuLi4oIWV4aXN0aW5nUXVlc3Rpb24/LmlkICYmIHtcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LmRvbWFpbiAmJiB7IGRvbWFpbjogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8uZG9tYWluIH0pLFxyXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCAmJiB7IHRlbmFudDogdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50IH0pLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UXVlc3Rpb25EVE8ocXVlc3Rpb25EYXRhOiBBc3Nlc3NtZW50UXVlc3Rpb24pIHtcclxuICAgICAgICBjb25zdCBnZXRDb25maWcgPSAoa2V5OiBzdHJpbmcpID0+IHF1ZXN0aW9uRGF0YS5xdWVzdGlvbkNvbmZpZ3M/LmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0ga2V5KT8uY29uZmlnVmFsdWU7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBxdWVzdGlvbkRhdGEuaWQsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uVGV4dDogcXVlc3Rpb25EYXRhLnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0IHx8ICcnLFxyXG4gICAgICAgICAgICBxdWVzdGlvblN1YlRleHQ6IHF1ZXN0aW9uRGF0YS5xdWVzdGlvblN1YlRleHQ/LlswXT8udGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25UeXBlOiBxdWVzdGlvbkRhdGEucXVlc3Rpb25UeXBlPy5jb2RlIHx8ICcnLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogcXVlc3Rpb25EYXRhLmlzTWFuZGF0b3J5IHx8IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0ZpbHRlckVuYWJsZWQ6IHF1ZXN0aW9uRGF0YS5pc0ZpbHRlckVuYWJsZWQgfHwgZmFsc2UsXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IHF1ZXN0aW9uRGF0YS53ZWlnaHQgfHwgMCxcclxuICAgICAgICAgICAgaGludFRleHQ6IHF1ZXN0aW9uRGF0YS5oaW50VGV4dCB8fCAnJyxcclxuICAgICAgICAgICAgcXVlc3Rpb25NZWRpYTogcXVlc3Rpb25EYXRhLm1lZGlhVXJsIHx8ICcnLFxyXG4gICAgICAgICAgICBtaW5DaGFyYWN0ZXJDb3VudDogZ2V0Q29uZmlnKCdtaW5DaGFyYWN0ZXJDb3VudCcpID8gTnVtYmVyKGdldENvbmZpZygnbWluQ2hhcmFjdGVyQ291bnQnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhDaGFyYWN0ZXJDb3VudDogZ2V0Q29uZmlnKCdtYXhDaGFyYWN0ZXJDb3VudCcpID8gTnVtYmVyKGdldENvbmZpZygnbWF4Q2hhcmFjdGVyQ291bnQnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtaW5pbXVtTnVtYmVyT2ZPcHRpb246IGdldENvbmZpZygnbWluaW11bU51bWJlck9mT3B0aW9uJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhpbXVtTnVtYmVyT2ZPcHRpb246IGdldENvbmZpZygnbWF4aW11bU51bWJlck9mT3B0aW9uJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhpbXVtTnVtYmVyT2ZPcHRpb24nKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogZ2V0Q29uZmlnKCdtYXhGaWxlU2l6ZScpID8gTnVtYmVyKGdldENvbmZpZygnbWF4RmlsZVNpemUnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICBtYXhOb09mRmlsZXM6IGdldENvbmZpZygnbWF4Tm9PZkZpbGVzJykgPyBOdW1iZXIoZ2V0Q29uZmlnKCdtYXhOb09mRmlsZXMnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICAvLyB2aXNpYmlsaXR5OiBnZXRDb25maWcoJ3Zpc2liaWxpdHknKSA9PT0gJ3RydWUnLFxyXG4gICAgICAgICAgICBjdXN0b21SZWdleDogcXVlc3Rpb25EYXRhPy5yZXNwb25zZVZhbGlkYXRpb24sXHJcbiAgICAgICAgICAgIHNraWxsQ29kZXM6IHF1ZXN0aW9uRGF0YT8uc2tpbGxDb2Rlcz8ubWFwKChza2lsbDogYW55KSA9PiBza2lsbC5jb2RlKSB8fCBbXSxcclxuICAgICAgICAgICAgb3B0aW9uczogcXVlc3Rpb25EYXRhLmRlZmF1bHRPcHRpb25zTGlzdD8ubWFwKG9wdCA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG9wdC5pZCxcclxuICAgICAgICAgICAgICAgIHV1aWQ6IG9wdC51dWlkLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw6IG9wdC5vcHRpb25zPy5vcHRpb25OYW1lPy5bMF0/LnRleHQgfHwgJycsXHJcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IG9wdC53ZWlnaHQgfHwgMCxcclxuICAgICAgICAgICAgICAgIHJlbWFya3NSZXF1aXJlZDogb3B0LnJlbWFya3NSZXF1aXJlZCB8fCBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBvcHQuaXNBY3RpdmUgIT09IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRRdWVzdGlvbkxpc3Q6IG9wdC5jaGlsZFF1ZXN0aW9uTGlzdCB8fCBbXSxcclxuICAgICAgICAgICAgfSkpIHx8IFtdLFxyXG4gICAgICAgICAgICBjaGlsZFF1ZXN0aW9uczogcXVlc3Rpb25EYXRhPy5jaGlsZFF1ZXN0aW9ucyB8fCBbXVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVOZXdTZWN0aW9uKHNlcXVlbmNlOiBudW1iZXIpOiBRdWVzdGlvblBhcGVyU2VjdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIHFwc05hbWU6IFt7XHJcbiAgICAgICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlOiB7IGNvZGU6ICdFTkcnIH0sXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBgU2VjdGlvbiAke3NlcXVlbmNlfWBcclxuICAgICAgICAgICAgfV0sXHJcbiAgICAgICAgICAgIG9yZGVyTm86IHNlcXVlbmNlLFxyXG4gICAgICAgICAgICBzZWN0aW9uUXVlc3Rpb25zTGlzdDogW10sXHJcbiAgICAgICAgICAgIHRvdGFsTWFya3M6IDAsXHJcbiAgICAgICAgICAgIHRvdGFsUXVlc3Rpb25zOiAwLFxyXG4gICAgICAgICAgICAuLi4odGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlU2VjdGlvblF1ZXN0aW9uKHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24sIHNlY3Rpb25RdWVzdGlvbjogU2VjdGlvblF1ZXN0aW9uID0ge30pOiBTZWN0aW9uUXVlc3Rpb24ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBzZWN0aW9uUXVlc3Rpb24/LmlkIHx8IDAsXHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLFxyXG4gICAgICAgICAgICBpc01hbmRhdG9yeTogcXVlc3Rpb24/LmlzTWFuZGF0b3J5LFxyXG4gICAgICAgICAgICAuLi4oIXNlY3Rpb25RdWVzdGlvbj8uaWQgJiYgdGhpcy5kZWZhdWx0QXNzZXNzbWVudERUTz8udGVuYW50ICYmIHsgdGVuYW50OiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVRdWVzdGlvblBhcGVyRFRPKHF1ZXN0aW9uUGFwZXI6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyLCBxdWVzdGlvbkJhbms6IFJlY29yZDxudW1iZXIsIEFzc2Vzc21lbnRRdWVzdGlvbj4pOiBBc3Nlc3NtZW50UXVlc3Rpb25QYXBlciB7XHJcbiAgICAgICAgaWYgKCFxdWVzdGlvblBhcGVyKSByZXR1cm4gcXVlc3Rpb25QYXBlcjtcclxuXHJcbiAgICAgICAgaWYgKCFxdWVzdGlvblBhcGVyPy5pZCAmJiB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25QYXBlci50ZW5hbnQgPSB0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgcXVlc3Rpb25QYXBlci5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/LmZvckVhY2goKHNlY3Rpb246IGFueSwgc0luZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgc2VjdGlvbi5vcmRlck5vID0gc0luZGV4ICsgMTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzZWN0aW9uTWFya3MgPSAwO1xyXG4gICAgICAgICAgICBsZXQgc2VjdGlvblF1ZXN0aW9uc0NvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgIHNlY3Rpb24uc2VjdGlvblF1ZXN0aW9uc0xpc3Q/LmZvckVhY2goKHE6IFNlY3Rpb25RdWVzdGlvbiwgcUluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHEub3JkZXJObyA9IHFJbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbiA9IHE/LnF1ZXN0aW9uIHx8IHF1ZXN0aW9uQmFua1txPy5xdWVzdGlvbklkIHx8IC0xXTtcclxuICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbiAmJiBxLmlzQWN0aXZlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25NYXJrcyArPSBOdW1iZXIocXVlc3Rpb24ud2VpZ2h0KSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25RdWVzdGlvbnNDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHNlY3Rpb24udG90YWxNYXJrcyA9IHNlY3Rpb25NYXJrcztcclxuICAgICAgICAgICAgc2VjdGlvbi50b3RhbFF1ZXN0aW9ucyA9IHNlY3Rpb25RdWVzdGlvbnNDb3VudDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHF1ZXN0aW9uUGFwZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVBc3Nlc3NtZW50RFRPKGFzc2Vzc21lbnRJZDogbnVtYmVyLCBxdWVzdGlvblBhcGVyOiBBc3Nlc3NtZW50UXVlc3Rpb25QYXBlciwgYXNzZXNzbWVudENvbmZpZ3M/OiBDb25maWdbXSk6IEFzc2Vzc21lbnQge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiBhc3Nlc3NtZW50SWQsXHJcbiAgICAgICAgICAgIHRvdGFsbE1hcmtzOiBxdWVzdGlvblBhcGVyPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/LmZpbHRlcigoc2VjdGlvbjogYW55KSA9PiBzZWN0aW9uLmlzQWN0aXZlICE9PSBmYWxzZSkucmVkdWNlKChhY2M6IG51bWJlciwgc2VjdGlvbjogYW55KSA9PiBhY2MgKyAoc2VjdGlvbi50b3RhbE1hcmtzIHx8IDApLCAwKSB8fCAwLFxyXG4gICAgICAgICAgICAuLi4oIWFzc2Vzc21lbnRJZCAmJiB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAuLi4oYXNzZXNzbWVudENvbmZpZ3MgJiYgeyBhc3Nlc3NtZW50Q29uZmlncyB9KSxcclxuICAgICAgICAgICAgY2FjaGVFdmljdGlvbkVuYWJsZWQ6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlQXNzZXNzbWVudEluc3RhbmNlRFRPKGFzc2Vzc21lbnRJZDogbnVtYmVyLCBwcmVkZWZpbmVkQXNzZXNzbWVudEluc3RhbmNlOiBBc3Nlc3NtZW50SW5zdGFuY2UsIGR1cmF0aW9uPzogbnVtYmVyKTogQXNzZXNzbWVudEluc3RhbmNlIHtcclxuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgbGV0IG1vbnRoID0gZC5nZXRNb250aCgpO1xyXG4gICAgICAgIGxldCBkYXkgPSBkLmdldERhdGUoKTtcclxuICAgICAgICBsZXQgZW5kRGF0ZSA9IG5ldyBEYXRlKHllYXIgKyAyMCwgbW9udGgsIGRheSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGVuZERhdGU6IGVuZERhdGUsXHJcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICAgICAgYXNzZXNzbWVudDoge1xyXG4gICAgICAgICAgICAgICAgaWQ6IGFzc2Vzc21lbnRJZCxcclxuICAgICAgICAgICAgICAgIC4uLih0aGlzLmRlZmF1bHRBc3Nlc3NtZW50RFRPPy50ZW5hbnQgJiYgeyB0ZW5hbnQ6IHRoaXMuZGVmYXVsdEFzc2Vzc21lbnREVE8/LnRlbmFudCB9KVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY2hlZHVsZVN0YXR1czoge1xyXG4gICAgICAgICAgICAgICAgY29kZTogJ0FTU0VTU01FTlQuUFVCTElTSCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4ucHJlZGVmaW5lZEFzc2Vzc21lbnRJbnN0YW5jZSxcclxuICAgICAgICAgICAgLy8gdGhlIG1ha2VyJ3MgY2hvc2VuIGR1cmF0aW9uIChzZWNvbmRzKSB3aW5zIG92ZXIgYW55IHByZWRlZmluZWQgdmFsdWVcclxuICAgICAgICAgICAgLi4uKGR1cmF0aW9uICE9IG51bGwgJiYgeyBkdXJhdGlvbiB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdGNoIGZyYWdtZW50IGNhcnJ5aW5nIHRoZSBkdXJhdGlvbiBvbnRvIGFuIGFscmVhZHktY3JlYXRlZCBpbnN0YW5jZSAoYnkgaWQpLCB0byBidW5kbGUgaW50b1xyXG4gICAgICogdGhlIGFzc2Vzc21lbnQvcXVlc3Rpb24tcGFwZXIgcGF0Y2guIEVtcHR5IHVubGVzcyB0aGUgdGltZSBpbnB1dCBpcyBlbmFibGVkIGFuZCBhbiBpbnN0YW5jZSBleGlzdHMuXHJcbiAgICAgKi9cclxuICAgIGJ1aWxkSW5zdGFuY2VQYXRjaChzaG93VGltZUlucHV0OiBib29sZWFuLCBhc3Nlc3NtZW50SW5zdGFuY2VJZDogbnVtYmVyLCBkdXJhdGlvblNlY29uZHM6IG51bWJlcik6IHsgYXNzZXNzbWVudEluc3RhbmNlPzogQXNzZXNzbWVudEluc3RhbmNlIH0ge1xyXG4gICAgICAgIGlmICghc2hvd1RpbWVJbnB1dCB8fCAhYXNzZXNzbWVudEluc3RhbmNlSWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geyBhc3Nlc3NtZW50SW5zdGFuY2U6IHsgaWQ6IGFzc2Vzc21lbnRJbnN0YW5jZUlkLCBkdXJhdGlvbjogZHVyYXRpb25TZWNvbmRzIH0gfTtcclxuICAgIH1cclxufSJdfQ==
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,8 +1,8 @@
1
1
  import { HttpHeaders, HttpParams } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
- import { throwError } from 'rxjs';
4
- import { catchError, shareReplay } from 'rxjs/operators';
3
+ import { of } from 'rxjs';
5
4
  import * as controllers from '../../../shared/controllers';
5
+ import { removeKeyDeep } from '../../../shared/utils';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common/http";
8
8
  export class AssessmentMakerService {
@@ -10,39 +10,32 @@ export class AssessmentMakerService {
10
10
  var _a;
11
11
  this.http = http;
12
12
  this.assetsBaseUrl = (_a = document === null || document === void 0 ? void 0 : document.baseURI) === null || _a === void 0 ? void 0 : _a.replace(/\/$/, '');
13
- // cache the static config JSON so multiple maker instances on one page fetch it only once
14
- this.configCache = {};
15
13
  }
16
14
  getHeaders() {
17
15
  return new HttpHeaders().set('X-Library-Source', 'commons-assessment');
18
16
  }
19
17
  createParams(params) {
20
18
  let param = new HttpParams();
21
- for (const key of Object.keys(params)) {
22
- 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
+ }
23
23
  }
24
24
  return param;
25
25
  }
26
26
  getConfigJSON(fileName) {
27
- if (!this.configCache[fileName]) {
28
- this.configCache[fileName] = this.http
29
- .get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`)
30
- .pipe(
31
- // drop the cache entry on error so a later render can retry the fetch
32
- catchError((err) => { delete this.configCache[fileName]; return throwError(err); }),
33
- // share one request across all subscribers and replay the loaded config to later ones
34
- shareReplay(1));
35
- }
36
- return this.configCache[fileName];
27
+ return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);
37
28
  }
38
29
  getResponseCount(assessmentInstanceId) {
39
30
  return this.http.get(controllers.assessmentMakerController.getResponseCount + this.createParams({ assessmentInstanceId }), { headers: this.getHeaders() });
40
31
  }
41
32
  createAssessmentAndQuestionPaper(payload) {
42
- 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() });
43
35
  }
44
36
  patchAssessmentAndQuestionPaper(payload) {
45
- 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() });
46
39
  }
47
40
  createQuestion(payload) {
48
41
  return this.http.post(controllers.assessmentMakerController.createQuestion, payload, { headers: this.getHeaders() });
@@ -70,10 +63,28 @@ export class AssessmentMakerService {
70
63
  getRefDataByCode(code, params) {
71
64
  return this.http.get(controllers.refDataController.getRefDataByCode.replace('$Code', code) + this.createParams(params), { headers: this.getHeaders() });
72
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
+ }
73
84
  }
74
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 });
75
86
  AssessmentMakerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentMakerService });
76
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentMakerService, decorators: [{
77
88
  type: Injectable
78
89
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL3NlcnZpY2VzL2Fzc2Vzc21lbnQtbWFrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7OztBQUczRCxNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLFlBQ1UsSUFBZ0I7O1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFMVCxrQkFBYSxHQUFHLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE9BQU8sMENBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSwwRkFBMEY7UUFDbEYsZ0JBQVcsR0FBNEMsRUFBRSxDQUFDO0lBSTlELENBQUM7SUFFRyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsS0FBSyxHQUFHLEtBQUss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V0FBVyxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFKLENBQUM7O29IQTdFVSxzQkFBc0I7d0hBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgY29udHJvbGxlcnMgZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2NvbnRyb2xsZXJzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRNYWtlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzZXRzQmFzZVVybCA9IGRvY3VtZW50Py5iYXNlVVJJPy5yZXBsYWNlKC9cXC8kLywgJycpO1xyXG4gIC8vIGNhY2hlIHRoZSBzdGF0aWMgY29uZmlnIEpTT04gc28gbXVsdGlwbGUgbWFrZXIgaW5zdGFuY2VzIG9uIG9uZSBwYWdlIGZldGNoIGl0IG9ubHkgb25jZVxyXG4gIHByaXZhdGUgY29uZmlnQ2FjaGU6IHsgW2ZpbGVOYW1lOiBzdHJpbmddOiBPYnNlcnZhYmxlPGFueT4gfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdYLUxpYnJhcnktU291cmNlJywgJ2NvbW1vbnMtYXNzZXNzbWVudCcpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlUGFyYW1zKHBhcmFtczogYW55KTogSHR0cFBhcmFtcyB7XHJcbiAgICBsZXQgcGFyYW0gPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICBwYXJhbSA9IHBhcmFtLnNldChrZXksIHBhcmFtc1trZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbTtcclxuICB9XHJcblxyXG4gIGdldENvbmZpZ0pTT04oZmlsZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnQ2FjaGVbZmlsZU5hbWVdKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnQ2FjaGVbZmlsZU5hbWVdID0gdGhpcy5odHRwXHJcbiAgICAgICAgLmdldChgJHt0aGlzLmFzc2V0c0Jhc2VVcmx9L2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvJHtmaWxlTmFtZX0uanNvbmApXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAvLyBkcm9wIHRoZSBjYWNoZSBlbnRyeSBvbiBlcnJvciBzbyBhIGxhdGVyIHJlbmRlciBjYW4gcmV0cnkgdGhlIGZldGNoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHsgZGVsZXRlIHRoaXMuY29uZmlnQ2FjaGVbZmlsZU5hbWVdOyByZXR1cm4gdGhyb3dFcnJvcihlcnIpOyB9KSxcclxuICAgICAgICAgIC8vIHNoYXJlIG9uZSByZXF1ZXN0IGFjcm9zcyBhbGwgc3Vic2NyaWJlcnMgYW5kIHJlcGxheSB0aGUgbG9hZGVkIGNvbmZpZyB0byBsYXRlciBvbmVzXHJcbiAgICAgICAgICBzaGFyZVJlcGxheSgxKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdDYWNoZVtmaWxlTmFtZV07XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zZUNvdW50KGFzc2Vzc21lbnRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UmVzcG9uc2VDb3VudCArIHRoaXMuY3JlYXRlUGFyYW1zKHsgYXNzZXNzbWVudEluc3RhbmNlSWQgfSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5hc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlciwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuY3JlYXRlUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaFF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLnBhdGNoUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbnNCeUlkcyhwYXJhbXM6IHsgcXVlc3Rpb25JZHM6IG51bWJlcltdIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UXVlc3Rpb25zQnlJZHMsIHsgcGFyYW1zLCBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFzc2Vzc21lbnRDb250ZXh0KHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmdldEFzc2Vzc21lbnRDb250ZXh0ICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVNlY3Rpb24ocXVlc3Rpb25QYXBlcklkOiBudW1iZXIsIHNlY3Rpb25JZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZHVwbGljYXRlU2VjdGlvbj8ucmVwbGFjZSgnJEFzc2Vzc21lbnRRdWVzdGlvblBhcGVySWQnLCBxdWVzdGlvblBhcGVySWQ/LnRvU3RyaW5nKCkpPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKSwge30sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVRdWVzdGlvbihzZWN0aW9uSWQ6IG51bWJlciwgc2VjdGlvblF1ZXN0aW9uSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmR1cGxpY2F0ZVF1ZXN0aW9uPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKT8ucmVwbGFjZSgnJFNlY3Rpb25RdWVzdGlvbklkJywgc2VjdGlvblF1ZXN0aW9uSWQ/LnRvU3RyaW5nKCkpLCB7fSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZSwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlZkRhdGFCeUNvZGUoY29kZTogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoY29udHJvbGxlcnMucmVmRGF0YUNvbnRyb2xsZXIuZ2V0UmVmRGF0YUJ5Q29kZS5yZXBsYWNlKCckQ29kZScsIGNvZGUpICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcbn1cclxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL3NlcnZpY2VzL2Fzc2Vzc21lbnQtbWFrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBR3RELE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDVSxJQUFnQjs7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUhULGtCQUFhLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsT0FBTywwQ0FBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBSW5FLENBQUM7SUFFRyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQzNDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsR0FBRyxD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RUFBRSxDQUFDLENBQUM7SUFDMUosQ0FBQztJQUVELHdCQUF3QixDQUFDLE1BQVc7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2SSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsV0FBZ0MsRUFBRSxRQUFnQixxQkFBcUI7UUFDMUYsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM1QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxFQUFFLEVBQUU7Z0JBQ04sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQzdEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUEwQixXQUFXLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFO1lBQ2hHLE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDOztvSEF6RlUsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIGNvbnRyb2xsZXJzIGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb250cm9sbGVycyc7XHJcbmltcG9ydCB7IHJlbW92ZUtleURlZXAgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudE1ha2VyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhc3NldHNCYXNlVXJsID0gZG9jdW1lbnQ/LmJhc2VVUkk/LnJlcGxhY2UoL1xcLyQvLCAnJyk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ1gtTGlicmFyeS1Tb3VyY2UnLCAnY29tbW9ucy1hc3Nlc3NtZW50Jyk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVQYXJhbXMocGFyYW1zOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgIGxldCBwYXJhbSA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbXMgfHwge30pKSB7XHJcbiAgICAgIGlmIChwYXJhbXNba2V5XSAhPT0gdW5kZWZpbmVkICYmIHBhcmFtc1trZXldICE9PSBudWxsICYmIHBhcmFtc1trZXldICE9PSAnJykge1xyXG4gICAgICAgIHBhcmFtID0gcGFyYW0uc2V0KGtleSwgcGFyYW1zW2tleV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW07XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWdKU09OKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXNzZXRzQmFzZVVybH0vYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC8ke2ZpbGVOYW1lfS5qc29uYCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zZUNvdW50KGFzc2Vzc21lbnRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UmVzcG9uc2VDb3VudCArIHRoaXMuY3JlYXRlUGFyYW1zKHsgYXNzZXNzbWVudEluc3RhbmNlSWQgfSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGNsZWFuUGF5bG9hZCA9IHJlbW92ZUtleURlZXAocGF5bG9hZCwgJ3V1aWQnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBjbGVhblBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaEFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyKHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgY2xlYW5QYXlsb2FkID0gcmVtb3ZlS2V5RGVlcChwYXlsb2FkLCAndXVpZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBjbGVhblBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVRdWVzdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmNyZWF0ZVF1ZXN0aW9uLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hRdWVzdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5wYXRjaFF1ZXN0aW9uLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25zQnlJZHMocGFyYW1zOiB7IHF1ZXN0aW9uSWRzOiBudW1iZXJbXSB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmdldFF1ZXN0aW9uc0J5SWRzLCB7IHBhcmFtcywgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBc3Nlc3NtZW50Q29udGV4dChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5nZXRBc3Nlc3NtZW50Q29udGV4dCArIHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVTZWN0aW9uKHF1ZXN0aW9uUGFwZXJJZDogbnVtYmVyLCBzZWN0aW9uSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmR1cGxpY2F0ZVNlY3Rpb24/LnJlcGxhY2UoJyRBc3Nlc3NtZW50UXVlc3Rpb25QYXBlcklkJywgcXVlc3Rpb25QYXBlcklkPy50b1N0cmluZygpKT8ucmVwbGFjZSgnJFNlY3Rpb25JZCcsIHNlY3Rpb25JZD8udG9TdHJpbmcoKSksIHt9LCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlUXVlc3Rpb24oc2VjdGlvbklkOiBudW1iZXIsIHNlY3Rpb25RdWVzdGlvbklkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5kdXBsaWNhdGVRdWVzdGlvbj8ucmVwbGFjZSgnJFNlY3Rpb25JZCcsIHNlY3Rpb25JZD8udG9TdHJpbmcoKSk/LnJlcGxhY2UoJyRTZWN0aW9uUXVlc3Rpb25JZCcsIHNlY3Rpb25RdWVzdGlvbklkPy50b1N0cmluZygpKSwge30sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50SW5zdGFuY2UocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5jcmVhdGVBc3Nlc3NtZW50SW5zdGFuY2UsIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZWZEYXRhQnlDb2RlKGNvZGU6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLnJlZkRhdGFDb250cm9sbGVyLmdldFJlZkRhdGFCeUNvZGUucmVwbGFjZSgnJENvZGUnLCBjb2RlKSArIHRoaXMuY3JlYXRlUGFyYW1zKHBhcmFtcyksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbkJhbmtRdWVzdGlvbnMocGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLnF1ZXN0aW9uQmFua0NvbnRyb2xsZXIuc2VhcmNoUXVlc3Rpb25zICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrUXVlc3Rpb25zTG9ja2VkKHF1ZXN0aW9uSWRzOiAobnVtYmVyIHwgc3RyaW5nKVtdLCBzY29wZTogc3RyaW5nID0gJ0FTU0VTU01FTlRfSU5TVEFOQ0UnKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4ge1xyXG4gICAgaWYgKCFxdWVzdGlvbklkcyB8fCBxdWVzdGlvbklkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnc2NvcGUnLCBzY29wZSk7XHJcbiAgICBxdWVzdGlvbklkcy5mb3JFYWNoKGlkID0+IHtcclxuICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncXVlc3Rpb25JZHMnLCBpZC50b1N0cmluZygpLnRyaW0oKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KGNvbnRyb2xsZXJzLnF1ZXN0aW9uQmFua0NvbnRyb2xsZXIucXVlc3Rpb25zTG9ja2VkLCB7XHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuIl19