vcomply-workflow-engine 3.4.47 → 3.4.49

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.
@@ -472,10 +472,10 @@ export class CreateAssessmentContainerComponent {
472
472
  }
473
473
  }
474
474
  CreateAssessmentContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateAssessmentContainerComponent, deps: [{ token: i1.DialogService }, { token: i2.EditorService }, { token: i3.ActivatedRoute }, { token: i4.SnackBarService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
475
- CreateAssessmentContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CreateAssessmentContainerComponent, selector: "app-create-assessment-container", inputs: { openPortal: "openPortal", assessmentData: ["assessmentJSON", "assessmentData"], checkpointData: ["checkpointJSON", "checkpointData"] }, outputs: { setIsUploaded: "setIsUploaded", postAssessment: "postAssessment" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, providers: [EditorService], ngImport: i0, template: "<ng-container>\r\n <div *ngIf=\"pageMode === 'EDIT'\" class=\"create-assessment-container\" [class.full-page]=\"expandPage\">\r\n <div class=\"create-assessment-head vx-p-2 vx-pl-3 vx-d-flex vx-align-center vx-justify-between\">\r\n <div class=\"left vx-d-flex vx-align-center\" [class.with-template-btn]=\"false\">\r\n <span *ngIf=\"assessmentControlId\" class=\"id vx-fs-10 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mr-2\">{{assessmentControlId}}</span>\r\n <i *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\" class=\"icons arrow-back vx-mr-1\" (click)=\"setIsUploaded.emit(false)\">&#xe91d;</i>\r\n <span class=\"heading vx-fs-14 vx-fw-500 vx-label-txt\" [appTooltip]=\"openPortal === 'RESPONSIBILITY_CHECKPOINT' ? 'Add Checkpoints' :assessmentName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{openPortal === 'RESPONSIBILITY_CHECKPOINT' ? 'Add Checkpoints' :assessmentName}}</span>\r\n <!-- <button class=\"edit-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-d-flex vx-align-center\"><i class=\"icons\">&#xe9ba;</i></button> -->\r\n </div>\r\n <div class=\"right vx-d-flex vx-align-center\">\r\n <button *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\" class=\"page-dropdown vx-p-0 vx-pl-1 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\" appPopover (click)=\"action.popover()\" placement=\"right\">\r\n <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\" *ngIf=\"editorService.currentPageNumber > 0\">PAGE {{editorService?.currentPageNumber}}</span>\r\n <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\" *ngIf=\"editorService.currentPageNumber === -1\">Welcome Screen</span>\r\n <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\" *ngIf=\"editorService.currentPageNumber === -2\">Thankyou Screen</span>\r\n <!-- <span class=\"page-number vx-fs-11 vx-paragraph-txt\" *ngIf=\"editorService.stepIdentifier=='pagescreen'\">{{editorService?.currentPageDetails?.pageName}}</span> -->\r\n <i class=\"icons arrow vx-fs-10 vx-paragraph-txt\">&#xe9e8;</i>\r\n </button>\r\n <app-popover #action>\r\n <div class=\"page-dropdown-popup\">\r\n <ul class=\"vx-p-0 vx-m-0\">\r\n <li class=\"vx-d-flex vx-align-center\" *ngFor=\"let data of generatePageDropdown()\">\r\n <button class=\"vx-d-block vx-p-2 vx-m-0 vx-w-100\" [innerHTML]=\"data?.template\" (click)=\"pageChanged(data)\">\r\n <!-- <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\">PAGE</span>\r\n <span class=\"page-number vx-fs-11 vx-paragraph-txt\">1</span>\r\n {{data|json}} -->\r\n </button>\r\n </li>\r\n </ul>\r\n <div class=\"action-bottom vx-d-flex vx-align-center vx-justify-end vx-p-2\" >\r\n <button (click)=\"addNewPage()\" class=\"add-page vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\">ADD NEW PAGE</button>\r\n </div>\r\n </div>\r\n </app-popover>\r\n <button *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\" class=\"settings-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\" (click)=\"assessmentSettings()\"><i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe913;</i> ASSESSMENT SETTINGS</button>\r\n <button *ngIf=\"false\" class=\"template-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\"><i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe9ed;</i> SAVE AS TEMPLATE</button>\r\n </div>\r\n </div>\r\n <div class=\"create-assessment-body\">\r\n\r\n <ng-container *ngIf=\"editorService.stepIdentifier=='pagescreen'\">\r\n <div *ngIf=\"isPageEmpty()\" class=\"select-question-part\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-center\">\r\n <div class=\"question-inner vx-pl-5 vx-mb-4\">\r\n <!-- <button class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"addPageDetails()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE</button> -->\r\n <div class=\"heading vx-fs-18 vx-paragraph-txt vx-text-center vx-w-100\">Select a question type to begin:</div>\r\n <app-question-type (addQuestion)=\"editorService.addQuestion($event)\"></app-question-type>\r\n </div>\r\n </div>\r\n\r\n <div class=\"floating-bar\">\r\n <div class=\"floating-bar-container\">\r\n <div class=\"right\">\r\n <button class=\"cancel\" (click)=\"setIsUploaded.emit(false)\">Cancel</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-template #elseBlock>\r\n <div>\r\n <app-editor-loader></app-editor-loader>\r\n </div>\r\n </ng-template> -->\r\n\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!isPageEmpty() || editorService.currentPageNumber < 0\">\r\n <div class=\"editor-section\">\r\n <div class=\"editor-section-body vx-d-flex\">\r\n <app-toolkit (addQuestion)=\"editorService.addQuestion($event)\"></app-toolkit>\r\n\r\n <div class=\"editor-section-inner\">\r\n <app-welcome-thankyou *ngIf='editorService.stepIdentifier==\"welcomescreen\"' [entityData]=\"editorService?.formsPage\" [service]=\"editorService\" (deleteQuestion)=\"deleteQuestionWithValidation('welcome')\"></app-welcome-thankyou>\r\n <!-- <app-preview-welcome></app-preview-welcome> -->\r\n <ng-container *ngIf='editorService.stepIdentifier==\"pagescreen\"'>\r\n <button *ngIf='editorService.stepIdentifier==\"pagescreen\" && editorService.showAddPageOption ' class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"addPageDetails()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE</button>\r\n <app-page-header (edit)=\"addPageDetails()\" *ngIf='editorService.stepIdentifier==\"pagescreen\" && editorService.showPageDetails' [pageName]=\"editorService.currentPageDetails.pageName\" [pageDescription]=\"editorService.currentPageDetails.pageDescription\"></app-page-header>\r\n <ng-container *ngFor=\"let question of editorService.formsPage.elements;let questionIndex = index\">\r\n <ng-container *ngIf=\"question.page === editorService.currentPageNumber && editorService.stepIdentifier=='pagescreen'\">\r\n <app-editor-wrapper *ngIf=\"editorService.activeQuestion === questionIndex\" [service]=\"editorService\" [question]=\"question\" [questionIndex]=\"questionIndex\"\r\n [openPortal]=\"openPortal\"\r\n (validQuestionData)=\"checkforError($event)\"\r\n (deleteQuestion)=\"deleteQuestionWithValidation($event)\"\r\n (copyQuestion)=\"editorService.copyQuestion($event)\"></app-editor-wrapper>\r\n <app-preview-wrapper *ngIf=\"editorService.activeQuestion !== questionIndex\" [question]=\"question\" [questionIndex]=\"questionIndex\"\r\n (makeActiveQuestion)=\"editorService.activeQuestion = $event\"></app-preview-wrapper>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"next-question-area\">\r\n <button class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"openQuestion()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> NEXT QUESTION</button>\r\n <div class=\"next-question-popup vx-p-3\" *ngIf=\"hideQuestion\">\r\n <app-question-type (addQuestion)=\"editorService.addQuestion($event);closeQuestion()\"></app-question-type>\r\n </div>\r\n <div class=\"overlay\" *ngIf=\"hideQuestion\" (click)=\"closeQuestion()\"></div>\r\n </div>\r\n <button *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\" (click)=\"addNewPage()\" class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> ADD NEW PAGE</button>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"right-side-btn\" *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\">\r\n <button *ngIf=\"!expandPage\" (click)=\"clickExpand()\" class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Expand Page'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe945;</i></button>\r\n <button *ngIf=\"expandPage\" (click)=\"closeExpand()\" class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Shrink Page'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe944;</i></button>\r\n <button *ngIf=\"editorService.stepIdentifier=='pagescreen'\" (click)=\"deletePage()\" class=\"delete-btn vx-fs-14 vx-txt-red vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Delete Page'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe923;</i></button>\r\n </div>\r\n </div>\r\n <div class=\"editor-section-footer vx-d-flex vx-align-center vx-justify-center vx-mt-4\">\r\n <button (click)=\"setIsUploaded.emit(false)\" class=\"cancel-btn vx-fs-14 vx-fw-500 vx-txt-red vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">CANCEL</button>\r\n <button *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\" (click)=\"submitAfterErrorCheck('DRAFT')\" [class.disabled]=\"assessmentCurrentState === 'ACTIVE'\" class=\" white-btn vx-fs-14 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">SAVE AS DRAFT</button>\r\n <button *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\" (click)=\"submitAfterErrorCheck('ACTIVE')\" class=\" blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">PUBLISH</button>\r\n <button *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\" (click)=\"submitAfterErrorCheck('ACTIVE')\" class=\" blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">NEXT &nbsp;<i class=\"icons\">&#xe91e;</i></button>\r\n <!-- <button (click)=\"pageMode = 'PREVIEW'\" class=\"preview-btn vx-fs-20 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Preview'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xeae5;</i></button> -->\r\n <button *ngIf=\"false\" class=\"close-btn vx-fs-12 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Close'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe90d;</i></button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <!-- <app-assessment-preview-container *ngIf=\"pageMode === 'PREVIEW'\" [questionDetails]=\"editorService.formsPage\"></app-assessment-preview-container> -->\r\n</ng-container>\r\n\r\n<!-- <app-editor-loader *ngIf=\"!isLoaded\"></app-editor-loader> -->\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";.create-assessment-container{position:relative}.create-assessment-container.full-page{position:fixed;inset:0;width:100vw;height:100vh;margin:0!important;z-index:9}.create-assessment-container.full-page .create-assessment-head{border-radius:0}.create-assessment-container.full-page .create-assessment-body{border-radius:0;height:calc(100vh - 2.5rem)}.create-assessment-container.full-page .create-assessment-body .editor-section-body .right-side-btn{top:4.75rem;right:5rem}.create-assessment-container.full-page .create-assessment-body .editor-section-footer{border-radius:0}.create-assessment-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1;position:relative}.create-assessment-head:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}.create-assessment-head .left{width:calc(100% - 22rem)}.create-assessment-head .left i.arrow-back{cursor:pointer}.create-assessment-head .left .heading{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 10rem)}.create-assessment-head .left button.edit-btn{background:transparent;border:none;border-radius:0}.create-assessment-head .left.with-template-btn{width:calc(100% - 30rem)}.create-assessment-head .right button.page-dropdown{background:#FFFFFF;border-radius:.125rem;border:1px solid #BCBCBC;position:relative;height:1.5rem;width:11.5rem}.create-assessment-head .right button.page-dropdown .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.create-assessment-head .right button.page-dropdown .arrow{position:absolute;top:.375rem;right:.5rem}.create-assessment-head .right button.settings-btn{background:#1e5dd3;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-head .right button.template-btn{background:#34aa44;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-body{background:#FFFFFF;border-radius:0 0 .125rem .125rem;height:calc(100vh - 2.5rem);scrollbar-width:thin}.create-assessment-body::-webkit-scrollbar-track{background-color:#f1f1f1}.create-assessment-body::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}.create-assessment-body app-toolkit{position:sticky;top:0}.create-assessment-body .select-question-part{padding:2rem}.create-assessment-body .select-question-part .question-inner{width:69rem;height:calc(100vh - 11rem);overflow:auto;padding-right:3.75rem;position:relative;left:.625rem}.create-assessment-body .select-question-part .question-inner::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .select-question-part .question-inner .heading{margin-top:4rem;margin-bottom:2rem}.create-assessment-body .select-question-part .floating-bar-container{background:#FFFFFF;box-shadow:0 6px 12px #4681ef26;border-radius:4px;border:1px solid #f8f8f8;height:48px;padding:8px 12px;display:flex;justify-content:end;position:relative;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right{display:flex;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right .name{margin-left:15px;color:#707070;font-size:12px;font-weight:500;line-height:18px;display:flex;align-items:center;white-space:nowrap}.create-assessment-body .select-question-part .floating-bar-container .right .name span.required{color:#eb2424;font-size:14px}.create-assessment-body .select-question-part .floating-bar-container .right .name i{margin-left:3px;color:#1e5dd3;cursor:pointer}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select{margin-left:12px;width:125px;display:flex}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box input{height:32px}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box span.arrow{bottom:6px}.create-assessment-body .select-question-part .floating-bar-container .right button{border-radius:2px;height:28px;background:#1e5dd3!important;width:72px;display:flex;justify-content:center;align-items:center;cursor:pointer;color:#fff!important;text-transform:uppercase;font-size:11px;font-weight:500;border:1px solid #1e5dd3!important;padding:0;margin:0 0 0 28px}.create-assessment-body .select-question-part .floating-bar-container .right button i{margin-left:8px;font-size:16px}.create-assessment-body .select-question-part .floating-bar-container .right button:disabled{filter:grayscale(1);cursor:not-allowed;opacity:.5;pointer-events:auto}.create-assessment-body .select-question-part .floating-bar-container .right button.cancel{background:transparent!important;border:none!important;color:#eb2424!important;margin-right:0;width:auto;padding:0}.create-assessment-body .editor-section{height:100%}.create-assessment-body .editor-section-body{height:calc(100% - 5.25rem);position:relative;overflow:auto}.create-assessment-body .editor-section-body::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .editor-section-body .right-side-btn{position:fixed;top:180px;right:100px}.create-assessment-body .editor-section-body .right-side-btn button{background:#f8f8f8;border-radius:.125rem;border:none;width:1.5rem;height:1.5rem}.create-assessment-body .editor-section-inner{width:60rem;margin:0 auto;padding:2rem 0;height:100%}@media screen and (max-width: 1366px){.create-assessment-body .editor-section-inner{width:55rem!important}}.create-assessment-body .editor-section-inner .next-question-area{position:relative}.create-assessment-body .editor-section-inner .next-question-area ::ng-deep app-question-type .question-type ul li{width:10rem!important}.create-assessment-body .editor-section-inner .next-question-area .overlay{z-index:8}.create-assessment-body .editor-section-inner .next-question-popup{background:#FFFFFF;border-radius:.25rem;box-shadow:0 0 6px #1e5dd326;position:absolute;left:0;right:0;bottom:0;z-index:9}.create-assessment-body .editor-section-footer{background:#FFFFFF;border-radius:0 0 .125rem .125rem;box-shadow:0 -3px 6px #1e5dd326;height:4.25rem;position:relative}.create-assessment-body .editor-section-footer button{border-radius:.125rem;width:12.5rem;height:2.75rem;letter-spacing:1.5px}.create-assessment-body .editor-section-footer button.white-btn,.create-assessment-body .editor-section-footer button.cancel-btn{background:#FFFFFF;border:1px solid #DBDBDB}.create-assessment-body .editor-section-footer button.blue-btn{background:#1e5dd3;border:none}.create-assessment-body .editor-section-footer button.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}.create-assessment-body .editor-section-footer button.preview-btn{background:#34aa44;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}.create-assessment-body .editor-section-footer button.close-btn{background:#d93b41;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}button.page-title{background:#FFFFFF;border:1px dashed #DBDBDB;border-radius:.25rem;height:3.125rem;transition:all .3s ease-in-out}button.page-title:hover{border-color:#1e5dd3;color:#1e5dd3}.page-dropdown-popup{background:#FFFFFF;box-shadow:0 3px 6px #1c5bd140;border-radius:.25rem;width:11.5rem;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}.page-dropdown-popup ul{list-style-type:none;max-height:12rem;overflow-y:auto}.page-dropdown-popup ul li{border-bottom:1px solid #F1F1F1;list-style-type:none}.page-dropdown-popup ul li:only-child,.page-dropdown-popup ul li:last-of-type{border-bottom:none}.page-dropdown-popup ul li button{background:transparent;border:none;border-radius:0;text-align:left}.page-dropdown-popup ul li button .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.page-dropdown-popup .action-bottom{background:#f8f8f8;border-top:1px solid #F1F1F1;border-radius:0 0 .125rem .125rem}.page-dropdown-popup .action-bottom button{border-radius:.125rem;height:1.5rem}.page-dropdown-popup .action-bottom button.add-page{background:#1e5dd3;border:1px solid #1e5dd3}.page-number{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i7.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i9.PreviewWrapperComponent, selector: "app-preview-wrapper", inputs: ["question", "questionIndex"], outputs: ["makeActiveQuestion", "validQuestionData"] }, { kind: "component", type: i10.QuestionTypeComponent, selector: "app-question-type", outputs: ["addQuestion"] }, { kind: "component", type: i11.EditorWrapperComponent, selector: "app-editor-wrapper", inputs: ["openPortal", "questionIndex", "question", "GRS", "service", "editorMode"], outputs: ["validQuestionData", "deleteQuestion", "copyQuestion"] }, { kind: "component", type: i12.ToolkitComponent, selector: "app-toolkit", outputs: ["addQuestion"] }, { kind: "component", type: i13.PageHeaderComponent, selector: "app-page-header", inputs: ["pageName", "pageDescription"], outputs: ["edit"] }, { kind: "component", type: i14.WelcomeThankyouComponent, selector: "app-welcome-thankyou", inputs: ["service", "entityData"], outputs: ["deleteQuestion"] }] });
475
+ CreateAssessmentContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CreateAssessmentContainerComponent, selector: "app-create-assessment-container", inputs: { openPortal: "openPortal", assessmentData: ["assessmentJSON", "assessmentData"], checkpointData: ["checkpointJSON", "checkpointData"] }, outputs: { setIsUploaded: "setIsUploaded", postAssessment: "postAssessment" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, providers: [EditorService], ngImport: i0, template: "<ng-container>\r\n <div\r\n *ngIf=\"pageMode === 'EDIT'\"\r\n class=\"create-assessment-container\"\r\n [class.full-page]=\"expandPage\"\r\n >\r\n <div\r\n class=\"create-assessment-head vx-p-2 vx-pl-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"left vx-d-flex vx-align-center\"\r\n [class.with-template-btn]=\"false\"\r\n >\r\n <span\r\n *ngIf=\"assessmentControlId\"\r\n class=\"id vx-fs-10 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mr-2\"\r\n >{{ assessmentControlId }}</span\r\n >\r\n <i\r\n *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\"\r\n class=\"icons arrow-back vx-mr-1\"\r\n (click)=\"setIsUploaded.emit(false)\"\r\n >&#xe91d;</i\r\n >\r\n <span\r\n class=\"heading vx-fs-14 vx-fw-500 vx-label-txt\"\r\n [appTooltip]=\"\r\n openPortal === 'RESPONSIBILITY_CHECKPOINT'\r\n ? 'Add Checkpoints'\r\n : assessmentName\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n openPortal === \"RESPONSIBILITY_CHECKPOINT\"\r\n ? \"Add Checkpoints\"\r\n : assessmentName\r\n }}</span\r\n >\r\n <!-- <button class=\"edit-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-d-flex vx-align-center\"><i class=\"icons\">&#xe9ba;</i></button> -->\r\n </div>\r\n <div class=\"right vx-d-flex vx-align-center\">\r\n <button\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n class=\"page-dropdown vx-p-0 vx-pl-1 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\"\r\n appPopover\r\n (click)=\"action.popover()\"\r\n placement=\"right\"\r\n >\r\n <span\r\n class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\r\n *ngIf=\"editorService.currentPageNumber > 0\"\r\n >PAGE {{ editorService?.currentPageNumber }}</span\r\n >\r\n <span\r\n class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\r\n *ngIf=\"editorService.currentPageNumber === -1\"\r\n >Welcome Screen</span\r\n >\r\n <span\r\n class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\r\n *ngIf=\"editorService.currentPageNumber === -2\"\r\n >Thankyou Screen</span\r\n >\r\n <!-- <span class=\"page-number vx-fs-11 vx-paragraph-txt\" *ngIf=\"editorService.stepIdentifier=='pagescreen'\">{{editorService?.currentPageDetails?.pageName}}</span> -->\r\n <i class=\"icons arrow vx-fs-10 vx-paragraph-txt\">&#xe9e8;</i>\r\n </button>\r\n <app-popover #action>\r\n <div class=\"page-dropdown-popup\">\r\n <ul class=\"vx-p-0 vx-m-0\">\r\n <li\r\n class=\"vx-d-flex vx-align-center\"\r\n *ngFor=\"let data of generatePageDropdown()\"\r\n >\r\n <button\r\n class=\"vx-d-block vx-p-2 vx-m-0 vx-w-100\"\r\n [innerHTML]=\"data?.template\"\r\n (click)=\"pageChanged(data)\"\r\n >\r\n <!-- <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\">PAGE</span>\r\n <span class=\"page-number vx-fs-11 vx-paragraph-txt\">1</span>\r\n {{data|json}} -->\r\n </button>\r\n </li>\r\n </ul>\r\n <div\r\n class=\"action-bottom vx-d-flex vx-align-center vx-justify-end vx-p-2\"\r\n >\r\n <button\r\n (click)=\"addNewPage()\"\r\n class=\"add-page vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n ADD NEW PAGE\r\n </button>\r\n </div>\r\n </div>\r\n </app-popover>\r\n <button\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n class=\"settings-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\"\r\n (click)=\"assessmentSettings()\"\r\n >\r\n <i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe913;</i> ASSESSMENT\r\n SETTINGS\r\n </button>\r\n <button\r\n *ngIf=\"false\"\r\n class=\"template-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe9ed;</i> SAVE AS\r\n TEMPLATE\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"create-assessment-body\">\r\n <ng-container *ngIf=\"editorService.stepIdentifier == 'pagescreen'\">\r\n <div *ngIf=\"isPageEmpty()\" class=\"select-question-part\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-center\">\r\n <div class=\"question-inner vx-pl-5 vx-mb-4\">\r\n <!-- <button class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"addPageDetails()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE</button> -->\r\n <div\r\n class=\"heading vx-fs-18 vx-paragraph-txt vx-text-center vx-w-100\"\r\n >\r\n Select a question type to begin:\r\n </div>\r\n <app-question-type\r\n (addQuestion)=\"editorService.addQuestion($event)\"\r\n ></app-question-type>\r\n </div>\r\n </div>\r\n\r\n <div class=\"floating-bar\">\r\n <div class=\"floating-bar-container\">\r\n <div class=\"right\">\r\n <button class=\"cancel\" (click)=\"setIsUploaded.emit(false)\">\r\n Cancel\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-template #elseBlock>\r\n <div>\r\n <app-editor-loader></app-editor-loader>\r\n </div>\r\n </ng-template> -->\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!isPageEmpty() || editorService.currentPageNumber < 0\"\r\n >\r\n <div class=\"editor-section\">\r\n <div class=\"editor-section-body vx-d-flex\">\r\n <app-toolkit\r\n (addQuestion)=\"editorService.addQuestion($event)\"\r\n ></app-toolkit>\r\n\r\n <div class=\"editor-section-inner\">\r\n <app-welcome-thankyou\r\n *ngIf=\"editorService.stepIdentifier == 'welcomescreen'\"\r\n [entityData]=\"editorService?.formsPage\"\r\n [service]=\"editorService\"\r\n (deleteQuestion)=\"deleteQuestionWithValidation('welcome')\"\r\n ></app-welcome-thankyou>\r\n <!-- <app-preview-welcome></app-preview-welcome> -->\r\n <ng-container\r\n *ngIf=\"editorService.stepIdentifier == 'pagescreen'\"\r\n >\r\n <button\r\n *ngIf=\"\r\n editorService.stepIdentifier == 'pagescreen' &&\r\n editorService.showAddPageOption\r\n \"\r\n class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"\r\n (click)=\"addPageDetails()\"\r\n >\r\n <i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE\r\n </button>\r\n <app-page-header\r\n (edit)=\"addPageDetails()\"\r\n *ngIf=\"\r\n editorService.stepIdentifier == 'pagescreen' &&\r\n editorService.showPageDetails\r\n \"\r\n [pageName]=\"editorService.currentPageDetails.pageName\"\r\n [pageDescription]=\"\r\n editorService.currentPageDetails.pageDescription\r\n \"\r\n ></app-page-header>\r\n <ng-container\r\n *ngFor=\"\r\n let question of editorService.formsPage.elements;\r\n let questionIndex = index\r\n \"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n question.page === editorService.currentPageNumber &&\r\n editorService.stepIdentifier == 'pagescreen'\r\n \"\r\n >\r\n <app-editor-wrapper\r\n *ngIf=\"editorService.activeQuestion === questionIndex\"\r\n [service]=\"editorService\"\r\n [question]=\"question\"\r\n [questionIndex]=\"questionIndex\"\r\n [openPortal]=\"openPortal\"\r\n (validQuestionData)=\"checkforError($event)\"\r\n (deleteQuestion)=\"deleteQuestionWithValidation($event)\"\r\n (copyQuestion)=\"editorService.copyQuestion($event)\"\r\n ></app-editor-wrapper>\r\n <app-preview-wrapper\r\n *ngIf=\"editorService.activeQuestion !== questionIndex\"\r\n [question]=\"question\"\r\n [questionIndex]=\"questionIndex\"\r\n (makeActiveQuestion)=\"\r\n editorService.activeQuestion = $event\r\n \"\r\n ></app-preview-wrapper>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"next-question-area\">\r\n <button\r\n class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"\r\n (click)=\"openQuestion()\"\r\n >\r\n <i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> NEXT QUESTION\r\n </button>\r\n <div class=\"next-question-popup vx-p-3\" *ngIf=\"hideQuestion\">\r\n <app-question-type\r\n (addQuestion)=\"\r\n editorService.addQuestion($event); closeQuestion()\r\n \"\r\n ></app-question-type>\r\n </div>\r\n <div\r\n class=\"overlay\"\r\n *ngIf=\"hideQuestion\"\r\n (click)=\"closeQuestion()\"\r\n ></div>\r\n </div>\r\n <button\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n (click)=\"addNewPage()\"\r\n class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"\r\n >\r\n <i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> ADD NEW PAGE\r\n </button>\r\n </ng-container>\r\n </div>\r\n\r\n <div\r\n class=\"right-side-btn\"\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n >\r\n <button\r\n *ngIf=\"!expandPage\"\r\n (click)=\"clickExpand()\"\r\n class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Expand Page'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe945;</i>\r\n </button>\r\n <button\r\n *ngIf=\"expandPage\"\r\n (click)=\"closeExpand()\"\r\n class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Shrink Page'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe944;</i>\r\n </button>\r\n <button\r\n *ngIf=\"editorService.stepIdentifier == 'pagescreen'\"\r\n (click)=\"deletePage()\"\r\n class=\"delete-btn vx-fs-14 vx-txt-red vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Delete Page'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe923;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"editor-section-footer vx-d-flex vx-align-center vx-justify-center vx-mt-4\"\r\n >\r\n <button\r\n (click)=\"setIsUploaded.emit(false)\"\r\n class=\"cancel-btn vx-fs-14 vx-fw-500 vx-txt-red vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n CANCEL\r\n </button>\r\n <button\r\n *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\"\r\n (click)=\"submitAfterErrorCheck('DRAFT')\"\r\n [class.disabled]=\"assessmentCurrentState === 'ACTIVE'\"\r\n class=\"white-btn vx-fs-14 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n SAVE AS DRAFT\r\n </button>\r\n <button\r\n *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\"\r\n (click)=\"submitAfterErrorCheck('ACTIVE')\"\r\n class=\"blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n PUBLISH\r\n </button>\r\n <button\r\n *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\"\r\n (click)=\"submitAfterErrorCheck('ACTIVE')\"\r\n class=\"blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n NEXT &nbsp;<i class=\"icons\">&#xe91e;</i>\r\n </button>\r\n <!-- <button (click)=\"pageMode = 'PREVIEW'\" class=\"preview-btn vx-fs-20 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Preview'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xeae5;</i></button> -->\r\n <button\r\n *ngIf=\"false\"\r\n class=\"close-btn vx-fs-12 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Close'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- <app-assessment-preview-container *ngIf=\"pageMode === 'PREVIEW'\" [questionDetails]=\"editorService.formsPage\"></app-assessment-preview-container> -->\r\n</ng-container>\r\n\r\n<!-- <app-editor-loader *ngIf=\"!isLoaded\"></app-editor-loader> -->\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";.create-assessment-container{position:relative}.create-assessment-container.full-page{position:fixed;inset:0;width:100vw;height:100vh;margin:0!important;z-index:9}.create-assessment-container.full-page .create-assessment-head{border-radius:0}.create-assessment-container.full-page .create-assessment-body{border-radius:0;height:calc(100vh - 2.5rem)}.create-assessment-container.full-page .create-assessment-body .editor-section-body .right-side-btn{top:4.75rem;right:5rem}.create-assessment-container.full-page .create-assessment-body .editor-section-footer{border-radius:0}.create-assessment-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1;position:relative}.create-assessment-head:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}.create-assessment-head .left{width:calc(100% - 22rem)}.create-assessment-head .left i.arrow-back{cursor:pointer}.create-assessment-head .left .heading{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 10rem)}.create-assessment-head .left button.edit-btn{background:transparent;border:none;border-radius:0}.create-assessment-head .left.with-template-btn{width:calc(100% - 30rem)}.create-assessment-head .right button.page-dropdown{background:#FFFFFF;border-radius:.125rem;border:1px solid #BCBCBC;position:relative;height:1.5rem;width:11.5rem}.create-assessment-head .right button.page-dropdown .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.create-assessment-head .right button.page-dropdown .arrow{position:absolute;top:.375rem;right:.5rem}.create-assessment-head .right button.settings-btn{background:#1e5dd3;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-head .right button.template-btn{background:#34aa44;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-body{background:#FFFFFF;border-radius:0 0 .125rem .125rem;height:calc(100vh - 2.5rem);scrollbar-width:thin}.create-assessment-body::-webkit-scrollbar-track{background-color:#f1f1f1}.create-assessment-body::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}.create-assessment-body app-toolkit{position:sticky;top:0}.create-assessment-body .select-question-part{padding:2rem}.create-assessment-body .select-question-part .question-inner{width:69rem;height:calc(100vh - 11rem);overflow:auto;padding-right:3.75rem;position:relative;left:.625rem}.create-assessment-body .select-question-part .question-inner::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .select-question-part .question-inner .heading{margin-top:4rem;margin-bottom:2rem}.create-assessment-body .select-question-part .floating-bar-container{background:#FFFFFF;box-shadow:0 6px 12px #4681ef26;border-radius:4px;border:1px solid #f8f8f8;height:48px;padding:8px 12px;display:flex;justify-content:end;position:relative;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right{display:flex;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right .name{margin-left:15px;color:#707070;font-size:12px;font-weight:500;line-height:18px;display:flex;align-items:center;white-space:nowrap}.create-assessment-body .select-question-part .floating-bar-container .right .name span.required{color:#eb2424;font-size:14px}.create-assessment-body .select-question-part .floating-bar-container .right .name i{margin-left:3px;color:#1e5dd3;cursor:pointer}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select{margin-left:12px;width:125px;display:flex}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box input{height:32px}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box span.arrow{bottom:6px}.create-assessment-body .select-question-part .floating-bar-container .right button{border-radius:2px;height:28px;background:#1e5dd3!important;width:72px;display:flex;justify-content:center;align-items:center;cursor:pointer;color:#fff!important;text-transform:uppercase;font-size:11px;font-weight:500;border:1px solid #1e5dd3!important;padding:0;margin:0 0 0 28px}.create-assessment-body .select-question-part .floating-bar-container .right button i{margin-left:8px;font-size:16px}.create-assessment-body .select-question-part .floating-bar-container .right button:disabled{filter:grayscale(1);cursor:not-allowed;opacity:.5;pointer-events:auto}.create-assessment-body .select-question-part .floating-bar-container .right button.cancel{background:transparent!important;border:none!important;color:#eb2424!important;margin-right:0;width:auto;padding:0}.create-assessment-body .editor-section{height:100%}.create-assessment-body .editor-section-body{height:calc(100% - 5.25rem);position:relative;overflow:auto}.create-assessment-body .editor-section-body::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .editor-section-body .right-side-btn{position:fixed;top:180px;right:100px}.create-assessment-body .editor-section-body .right-side-btn button{background:#f8f8f8;border-radius:.125rem;border:none;width:1.5rem;height:1.5rem}.create-assessment-body .editor-section-inner{width:60rem;margin:0 auto;padding:2rem 0;height:100%}@media screen and (max-width: 1366px){.create-assessment-body .editor-section-inner{width:55rem!important}}.create-assessment-body .editor-section-inner .next-question-area{position:relative}.create-assessment-body .editor-section-inner .next-question-area ::ng-deep app-question-type .question-type ul li{width:10rem!important}.create-assessment-body .editor-section-inner .next-question-area .overlay{z-index:8}.create-assessment-body .editor-section-inner .next-question-popup{background:#FFFFFF;border-radius:.25rem;box-shadow:0 0 6px #1e5dd326;position:absolute;left:0;right:0;bottom:0;z-index:9}.create-assessment-body .editor-section-footer{background:#FFFFFF;border-radius:0 0 .125rem .125rem;box-shadow:0 -3px 6px #1e5dd326;height:4.25rem;position:relative}.create-assessment-body .editor-section-footer button{border-radius:.125rem;width:12.5rem;height:2.75rem;letter-spacing:1.5px}.create-assessment-body .editor-section-footer button.white-btn,.create-assessment-body .editor-section-footer button.cancel-btn{background:#FFFFFF;border:1px solid #DBDBDB}.create-assessment-body .editor-section-footer button.blue-btn{background:#1e5dd3;border:none}.create-assessment-body .editor-section-footer button.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}.create-assessment-body .editor-section-footer button.preview-btn{background:#34aa44;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}.create-assessment-body .editor-section-footer button.close-btn{background:#d93b41;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}button.page-title{background:#FFFFFF;border:1px dashed #DBDBDB;border-radius:.25rem;height:3.125rem;transition:all .3s ease-in-out}button.page-title:hover{border-color:#1e5dd3;color:#1e5dd3}.page-dropdown-popup{background:#FFFFFF;box-shadow:0 3px 6px #1c5bd140;border-radius:.25rem;width:11.5rem;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}.page-dropdown-popup ul{list-style-type:none;max-height:12rem;overflow-y:auto}.page-dropdown-popup ul li{border-bottom:1px solid #F1F1F1;list-style-type:none}.page-dropdown-popup ul li:only-child,.page-dropdown-popup ul li:last-of-type{border-bottom:none}.page-dropdown-popup ul li button{background:transparent;border:none;border-radius:0;text-align:left}.page-dropdown-popup ul li button .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.page-dropdown-popup .action-bottom{background:#f8f8f8;border-top:1px solid #F1F1F1;border-radius:0 0 .125rem .125rem}.page-dropdown-popup .action-bottom button{border-radius:.125rem;height:1.5rem}.page-dropdown-popup .action-bottom button.add-page{background:#1e5dd3;border:1px solid #1e5dd3}.page-number{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i7.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i9.PreviewWrapperComponent, selector: "app-preview-wrapper", inputs: ["question", "questionIndex"], outputs: ["makeActiveQuestion", "validQuestionData"] }, { kind: "component", type: i10.QuestionTypeComponent, selector: "app-question-type", outputs: ["addQuestion"] }, { kind: "component", type: i11.EditorWrapperComponent, selector: "app-editor-wrapper", inputs: ["openPortal", "questionIndex", "question", "GRS", "service", "editorMode"], outputs: ["validQuestionData", "deleteQuestion", "copyQuestion"] }, { kind: "component", type: i12.ToolkitComponent, selector: "app-toolkit", outputs: ["addQuestion"] }, { kind: "component", type: i13.PageHeaderComponent, selector: "app-page-header", inputs: ["pageName", "pageDescription"], outputs: ["edit"] }, { kind: "component", type: i14.WelcomeThankyouComponent, selector: "app-welcome-thankyou", inputs: ["service", "entityData"], outputs: ["deleteQuestion"] }] });
476
476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateAssessmentContainerComponent, decorators: [{
477
477
  type: Component,
478
- args: [{ selector: 'app-create-assessment-container', providers: [EditorService], template: "<ng-container>\r\n <div *ngIf=\"pageMode === 'EDIT'\" class=\"create-assessment-container\" [class.full-page]=\"expandPage\">\r\n <div class=\"create-assessment-head vx-p-2 vx-pl-3 vx-d-flex vx-align-center vx-justify-between\">\r\n <div class=\"left vx-d-flex vx-align-center\" [class.with-template-btn]=\"false\">\r\n <span *ngIf=\"assessmentControlId\" class=\"id vx-fs-10 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mr-2\">{{assessmentControlId}}</span>\r\n <i *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\" class=\"icons arrow-back vx-mr-1\" (click)=\"setIsUploaded.emit(false)\">&#xe91d;</i>\r\n <span class=\"heading vx-fs-14 vx-fw-500 vx-label-txt\" [appTooltip]=\"openPortal === 'RESPONSIBILITY_CHECKPOINT' ? 'Add Checkpoints' :assessmentName\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{openPortal === 'RESPONSIBILITY_CHECKPOINT' ? 'Add Checkpoints' :assessmentName}}</span>\r\n <!-- <button class=\"edit-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-d-flex vx-align-center\"><i class=\"icons\">&#xe9ba;</i></button> -->\r\n </div>\r\n <div class=\"right vx-d-flex vx-align-center\">\r\n <button *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\" class=\"page-dropdown vx-p-0 vx-pl-1 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\" appPopover (click)=\"action.popover()\" placement=\"right\">\r\n <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\" *ngIf=\"editorService.currentPageNumber > 0\">PAGE {{editorService?.currentPageNumber}}</span>\r\n <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\" *ngIf=\"editorService.currentPageNumber === -1\">Welcome Screen</span>\r\n <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\" *ngIf=\"editorService.currentPageNumber === -2\">Thankyou Screen</span>\r\n <!-- <span class=\"page-number vx-fs-11 vx-paragraph-txt\" *ngIf=\"editorService.stepIdentifier=='pagescreen'\">{{editorService?.currentPageDetails?.pageName}}</span> -->\r\n <i class=\"icons arrow vx-fs-10 vx-paragraph-txt\">&#xe9e8;</i>\r\n </button>\r\n <app-popover #action>\r\n <div class=\"page-dropdown-popup\">\r\n <ul class=\"vx-p-0 vx-m-0\">\r\n <li class=\"vx-d-flex vx-align-center\" *ngFor=\"let data of generatePageDropdown()\">\r\n <button class=\"vx-d-block vx-p-2 vx-m-0 vx-w-100\" [innerHTML]=\"data?.template\" (click)=\"pageChanged(data)\">\r\n <!-- <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\">PAGE</span>\r\n <span class=\"page-number vx-fs-11 vx-paragraph-txt\">1</span>\r\n {{data|json}} -->\r\n </button>\r\n </li>\r\n </ul>\r\n <div class=\"action-bottom vx-d-flex vx-align-center vx-justify-end vx-p-2\" >\r\n <button (click)=\"addNewPage()\" class=\"add-page vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\">ADD NEW PAGE</button>\r\n </div>\r\n </div>\r\n </app-popover>\r\n <button *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\" class=\"settings-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\" (click)=\"assessmentSettings()\"><i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe913;</i> ASSESSMENT SETTINGS</button>\r\n <button *ngIf=\"false\" class=\"template-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\"><i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe9ed;</i> SAVE AS TEMPLATE</button>\r\n </div>\r\n </div>\r\n <div class=\"create-assessment-body\">\r\n\r\n <ng-container *ngIf=\"editorService.stepIdentifier=='pagescreen'\">\r\n <div *ngIf=\"isPageEmpty()\" class=\"select-question-part\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-center\">\r\n <div class=\"question-inner vx-pl-5 vx-mb-4\">\r\n <!-- <button class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"addPageDetails()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE</button> -->\r\n <div class=\"heading vx-fs-18 vx-paragraph-txt vx-text-center vx-w-100\">Select a question type to begin:</div>\r\n <app-question-type (addQuestion)=\"editorService.addQuestion($event)\"></app-question-type>\r\n </div>\r\n </div>\r\n\r\n <div class=\"floating-bar\">\r\n <div class=\"floating-bar-container\">\r\n <div class=\"right\">\r\n <button class=\"cancel\" (click)=\"setIsUploaded.emit(false)\">Cancel</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-template #elseBlock>\r\n <div>\r\n <app-editor-loader></app-editor-loader>\r\n </div>\r\n </ng-template> -->\r\n\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!isPageEmpty() || editorService.currentPageNumber < 0\">\r\n <div class=\"editor-section\">\r\n <div class=\"editor-section-body vx-d-flex\">\r\n <app-toolkit (addQuestion)=\"editorService.addQuestion($event)\"></app-toolkit>\r\n\r\n <div class=\"editor-section-inner\">\r\n <app-welcome-thankyou *ngIf='editorService.stepIdentifier==\"welcomescreen\"' [entityData]=\"editorService?.formsPage\" [service]=\"editorService\" (deleteQuestion)=\"deleteQuestionWithValidation('welcome')\"></app-welcome-thankyou>\r\n <!-- <app-preview-welcome></app-preview-welcome> -->\r\n <ng-container *ngIf='editorService.stepIdentifier==\"pagescreen\"'>\r\n <button *ngIf='editorService.stepIdentifier==\"pagescreen\" && editorService.showAddPageOption ' class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"addPageDetails()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE</button>\r\n <app-page-header (edit)=\"addPageDetails()\" *ngIf='editorService.stepIdentifier==\"pagescreen\" && editorService.showPageDetails' [pageName]=\"editorService.currentPageDetails.pageName\" [pageDescription]=\"editorService.currentPageDetails.pageDescription\"></app-page-header>\r\n <ng-container *ngFor=\"let question of editorService.formsPage.elements;let questionIndex = index\">\r\n <ng-container *ngIf=\"question.page === editorService.currentPageNumber && editorService.stepIdentifier=='pagescreen'\">\r\n <app-editor-wrapper *ngIf=\"editorService.activeQuestion === questionIndex\" [service]=\"editorService\" [question]=\"question\" [questionIndex]=\"questionIndex\"\r\n [openPortal]=\"openPortal\"\r\n (validQuestionData)=\"checkforError($event)\"\r\n (deleteQuestion)=\"deleteQuestionWithValidation($event)\"\r\n (copyQuestion)=\"editorService.copyQuestion($event)\"></app-editor-wrapper>\r\n <app-preview-wrapper *ngIf=\"editorService.activeQuestion !== questionIndex\" [question]=\"question\" [questionIndex]=\"questionIndex\"\r\n (makeActiveQuestion)=\"editorService.activeQuestion = $event\"></app-preview-wrapper>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"next-question-area\">\r\n <button class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"openQuestion()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> NEXT QUESTION</button>\r\n <div class=\"next-question-popup vx-p-3\" *ngIf=\"hideQuestion\">\r\n <app-question-type (addQuestion)=\"editorService.addQuestion($event);closeQuestion()\"></app-question-type>\r\n </div>\r\n <div class=\"overlay\" *ngIf=\"hideQuestion\" (click)=\"closeQuestion()\"></div>\r\n </div>\r\n <button *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\" (click)=\"addNewPage()\" class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> ADD NEW PAGE</button>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"right-side-btn\" *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\">\r\n <button *ngIf=\"!expandPage\" (click)=\"clickExpand()\" class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Expand Page'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe945;</i></button>\r\n <button *ngIf=\"expandPage\" (click)=\"closeExpand()\" class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Shrink Page'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe944;</i></button>\r\n <button *ngIf=\"editorService.stepIdentifier=='pagescreen'\" (click)=\"deletePage()\" class=\"delete-btn vx-fs-14 vx-txt-red vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Delete Page'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe923;</i></button>\r\n </div>\r\n </div>\r\n <div class=\"editor-section-footer vx-d-flex vx-align-center vx-justify-center vx-mt-4\">\r\n <button (click)=\"setIsUploaded.emit(false)\" class=\"cancel-btn vx-fs-14 vx-fw-500 vx-txt-red vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">CANCEL</button>\r\n <button *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\" (click)=\"submitAfterErrorCheck('DRAFT')\" [class.disabled]=\"assessmentCurrentState === 'ACTIVE'\" class=\" white-btn vx-fs-14 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">SAVE AS DRAFT</button>\r\n <button *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\" (click)=\"submitAfterErrorCheck('ACTIVE')\" class=\" blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">PUBLISH</button>\r\n <button *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\" (click)=\"submitAfterErrorCheck('ACTIVE')\" class=\" blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\">NEXT &nbsp;<i class=\"icons\">&#xe91e;</i></button>\r\n <!-- <button (click)=\"pageMode = 'PREVIEW'\" class=\"preview-btn vx-fs-20 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Preview'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xeae5;</i></button> -->\r\n <button *ngIf=\"false\" class=\"close-btn vx-fs-12 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Close'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xe90d;</i></button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n <!-- <app-assessment-preview-container *ngIf=\"pageMode === 'PREVIEW'\" [questionDetails]=\"editorService.formsPage\"></app-assessment-preview-container> -->\r\n</ng-container>\r\n\r\n<!-- <app-editor-loader *ngIf=\"!isLoaded\"></app-editor-loader> -->\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";.create-assessment-container{position:relative}.create-assessment-container.full-page{position:fixed;inset:0;width:100vw;height:100vh;margin:0!important;z-index:9}.create-assessment-container.full-page .create-assessment-head{border-radius:0}.create-assessment-container.full-page .create-assessment-body{border-radius:0;height:calc(100vh - 2.5rem)}.create-assessment-container.full-page .create-assessment-body .editor-section-body .right-side-btn{top:4.75rem;right:5rem}.create-assessment-container.full-page .create-assessment-body .editor-section-footer{border-radius:0}.create-assessment-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1;position:relative}.create-assessment-head:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}.create-assessment-head .left{width:calc(100% - 22rem)}.create-assessment-head .left i.arrow-back{cursor:pointer}.create-assessment-head .left .heading{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 10rem)}.create-assessment-head .left button.edit-btn{background:transparent;border:none;border-radius:0}.create-assessment-head .left.with-template-btn{width:calc(100% - 30rem)}.create-assessment-head .right button.page-dropdown{background:#FFFFFF;border-radius:.125rem;border:1px solid #BCBCBC;position:relative;height:1.5rem;width:11.5rem}.create-assessment-head .right button.page-dropdown .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.create-assessment-head .right button.page-dropdown .arrow{position:absolute;top:.375rem;right:.5rem}.create-assessment-head .right button.settings-btn{background:#1e5dd3;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-head .right button.template-btn{background:#34aa44;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-body{background:#FFFFFF;border-radius:0 0 .125rem .125rem;height:calc(100vh - 2.5rem);scrollbar-width:thin}.create-assessment-body::-webkit-scrollbar-track{background-color:#f1f1f1}.create-assessment-body::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}.create-assessment-body app-toolkit{position:sticky;top:0}.create-assessment-body .select-question-part{padding:2rem}.create-assessment-body .select-question-part .question-inner{width:69rem;height:calc(100vh - 11rem);overflow:auto;padding-right:3.75rem;position:relative;left:.625rem}.create-assessment-body .select-question-part .question-inner::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .select-question-part .question-inner .heading{margin-top:4rem;margin-bottom:2rem}.create-assessment-body .select-question-part .floating-bar-container{background:#FFFFFF;box-shadow:0 6px 12px #4681ef26;border-radius:4px;border:1px solid #f8f8f8;height:48px;padding:8px 12px;display:flex;justify-content:end;position:relative;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right{display:flex;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right .name{margin-left:15px;color:#707070;font-size:12px;font-weight:500;line-height:18px;display:flex;align-items:center;white-space:nowrap}.create-assessment-body .select-question-part .floating-bar-container .right .name span.required{color:#eb2424;font-size:14px}.create-assessment-body .select-question-part .floating-bar-container .right .name i{margin-left:3px;color:#1e5dd3;cursor:pointer}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select{margin-left:12px;width:125px;display:flex}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box input{height:32px}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box span.arrow{bottom:6px}.create-assessment-body .select-question-part .floating-bar-container .right button{border-radius:2px;height:28px;background:#1e5dd3!important;width:72px;display:flex;justify-content:center;align-items:center;cursor:pointer;color:#fff!important;text-transform:uppercase;font-size:11px;font-weight:500;border:1px solid #1e5dd3!important;padding:0;margin:0 0 0 28px}.create-assessment-body .select-question-part .floating-bar-container .right button i{margin-left:8px;font-size:16px}.create-assessment-body .select-question-part .floating-bar-container .right button:disabled{filter:grayscale(1);cursor:not-allowed;opacity:.5;pointer-events:auto}.create-assessment-body .select-question-part .floating-bar-container .right button.cancel{background:transparent!important;border:none!important;color:#eb2424!important;margin-right:0;width:auto;padding:0}.create-assessment-body .editor-section{height:100%}.create-assessment-body .editor-section-body{height:calc(100% - 5.25rem);position:relative;overflow:auto}.create-assessment-body .editor-section-body::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .editor-section-body .right-side-btn{position:fixed;top:180px;right:100px}.create-assessment-body .editor-section-body .right-side-btn button{background:#f8f8f8;border-radius:.125rem;border:none;width:1.5rem;height:1.5rem}.create-assessment-body .editor-section-inner{width:60rem;margin:0 auto;padding:2rem 0;height:100%}@media screen and (max-width: 1366px){.create-assessment-body .editor-section-inner{width:55rem!important}}.create-assessment-body .editor-section-inner .next-question-area{position:relative}.create-assessment-body .editor-section-inner .next-question-area ::ng-deep app-question-type .question-type ul li{width:10rem!important}.create-assessment-body .editor-section-inner .next-question-area .overlay{z-index:8}.create-assessment-body .editor-section-inner .next-question-popup{background:#FFFFFF;border-radius:.25rem;box-shadow:0 0 6px #1e5dd326;position:absolute;left:0;right:0;bottom:0;z-index:9}.create-assessment-body .editor-section-footer{background:#FFFFFF;border-radius:0 0 .125rem .125rem;box-shadow:0 -3px 6px #1e5dd326;height:4.25rem;position:relative}.create-assessment-body .editor-section-footer button{border-radius:.125rem;width:12.5rem;height:2.75rem;letter-spacing:1.5px}.create-assessment-body .editor-section-footer button.white-btn,.create-assessment-body .editor-section-footer button.cancel-btn{background:#FFFFFF;border:1px solid #DBDBDB}.create-assessment-body .editor-section-footer button.blue-btn{background:#1e5dd3;border:none}.create-assessment-body .editor-section-footer button.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}.create-assessment-body .editor-section-footer button.preview-btn{background:#34aa44;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}.create-assessment-body .editor-section-footer button.close-btn{background:#d93b41;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}button.page-title{background:#FFFFFF;border:1px dashed #DBDBDB;border-radius:.25rem;height:3.125rem;transition:all .3s ease-in-out}button.page-title:hover{border-color:#1e5dd3;color:#1e5dd3}.page-dropdown-popup{background:#FFFFFF;box-shadow:0 3px 6px #1c5bd140;border-radius:.25rem;width:11.5rem;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}.page-dropdown-popup ul{list-style-type:none;max-height:12rem;overflow-y:auto}.page-dropdown-popup ul li{border-bottom:1px solid #F1F1F1;list-style-type:none}.page-dropdown-popup ul li:only-child,.page-dropdown-popup ul li:last-of-type{border-bottom:none}.page-dropdown-popup ul li button{background:transparent;border:none;border-radius:0;text-align:left}.page-dropdown-popup ul li button .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.page-dropdown-popup .action-bottom{background:#f8f8f8;border-top:1px solid #F1F1F1;border-radius:0 0 .125rem .125rem}.page-dropdown-popup .action-bottom button{border-radius:.125rem;height:1.5rem}.page-dropdown-popup .action-bottom button.add-page{background:#1e5dd3;border:1px solid #1e5dd3}.page-number{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}\n"] }]
478
+ args: [{ selector: 'app-create-assessment-container', providers: [EditorService], template: "<ng-container>\r\n <div\r\n *ngIf=\"pageMode === 'EDIT'\"\r\n class=\"create-assessment-container\"\r\n [class.full-page]=\"expandPage\"\r\n >\r\n <div\r\n class=\"create-assessment-head vx-p-2 vx-pl-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"left vx-d-flex vx-align-center\"\r\n [class.with-template-btn]=\"false\"\r\n >\r\n <span\r\n *ngIf=\"assessmentControlId\"\r\n class=\"id vx-fs-10 vx-fw-500 vx-label-txt vx-tt-uppercase vx-mr-2\"\r\n >{{ assessmentControlId }}</span\r\n >\r\n <i\r\n *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\"\r\n class=\"icons arrow-back vx-mr-1\"\r\n (click)=\"setIsUploaded.emit(false)\"\r\n >&#xe91d;</i\r\n >\r\n <span\r\n class=\"heading vx-fs-14 vx-fw-500 vx-label-txt\"\r\n [appTooltip]=\"\r\n openPortal === 'RESPONSIBILITY_CHECKPOINT'\r\n ? 'Add Checkpoints'\r\n : assessmentName\r\n \"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{\r\n openPortal === \"RESPONSIBILITY_CHECKPOINT\"\r\n ? \"Add Checkpoints\"\r\n : assessmentName\r\n }}</span\r\n >\r\n <!-- <button class=\"edit-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-d-flex vx-align-center\"><i class=\"icons\">&#xe9ba;</i></button> -->\r\n </div>\r\n <div class=\"right vx-d-flex vx-align-center\">\r\n <button\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n class=\"page-dropdown vx-p-0 vx-pl-1 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\"\r\n appPopover\r\n (click)=\"action.popover()\"\r\n placement=\"right\"\r\n >\r\n <span\r\n class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\r\n *ngIf=\"editorService.currentPageNumber > 0\"\r\n >PAGE {{ editorService?.currentPageNumber }}</span\r\n >\r\n <span\r\n class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\r\n *ngIf=\"editorService.currentPageNumber === -1\"\r\n >Welcome Screen</span\r\n >\r\n <span\r\n class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\"\r\n *ngIf=\"editorService.currentPageNumber === -2\"\r\n >Thankyou Screen</span\r\n >\r\n <!-- <span class=\"page-number vx-fs-11 vx-paragraph-txt\" *ngIf=\"editorService.stepIdentifier=='pagescreen'\">{{editorService?.currentPageDetails?.pageName}}</span> -->\r\n <i class=\"icons arrow vx-fs-10 vx-paragraph-txt\">&#xe9e8;</i>\r\n </button>\r\n <app-popover #action>\r\n <div class=\"page-dropdown-popup\">\r\n <ul class=\"vx-p-0 vx-m-0\">\r\n <li\r\n class=\"vx-d-flex vx-align-center\"\r\n *ngFor=\"let data of generatePageDropdown()\"\r\n >\r\n <button\r\n class=\"vx-d-block vx-p-2 vx-m-0 vx-w-100\"\r\n [innerHTML]=\"data?.template\"\r\n (click)=\"pageChanged(data)\"\r\n >\r\n <!-- <span class=\"page-label vx-fs-9 vx-fw-600 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mr-2 vx-lh-3\">PAGE</span>\r\n <span class=\"page-number vx-fs-11 vx-paragraph-txt\">1</span>\r\n {{data|json}} -->\r\n </button>\r\n </li>\r\n </ul>\r\n <div\r\n class=\"action-bottom vx-d-flex vx-align-center vx-justify-end vx-p-2\"\r\n >\r\n <button\r\n (click)=\"addNewPage()\"\r\n class=\"add-page vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n ADD NEW PAGE\r\n </button>\r\n </div>\r\n </div>\r\n </app-popover>\r\n <button\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n class=\"settings-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\"\r\n (click)=\"assessmentSettings()\"\r\n >\r\n <i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe913;</i> ASSESSMENT\r\n SETTINGS\r\n </button>\r\n <button\r\n *ngIf=\"false\"\r\n class=\"template-btn vx-fs-11 vx-fw-500 vx-txt-white vx-tt-uppercase vx-lh-6 vx-p-0 vx-pl-2 vx-pr-2 vx-m-0 vx-ml-1 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-fs-12 vx-d-flex vx-mr-1\">&#xe9ed;</i> SAVE AS\r\n TEMPLATE\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"create-assessment-body\">\r\n <ng-container *ngIf=\"editorService.stepIdentifier == 'pagescreen'\">\r\n <div *ngIf=\"isPageEmpty()\" class=\"select-question-part\">\r\n <div class=\"vx-d-flex vx-align-center vx-justify-center\">\r\n <div class=\"question-inner vx-pl-5 vx-mb-4\">\r\n <!-- <button class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center vx-w-100\" (click)=\"addPageDetails()\"><i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE</button> -->\r\n <div\r\n class=\"heading vx-fs-18 vx-paragraph-txt vx-text-center vx-w-100\"\r\n >\r\n Select a question type to begin:\r\n </div>\r\n <app-question-type\r\n (addQuestion)=\"editorService.addQuestion($event)\"\r\n ></app-question-type>\r\n </div>\r\n </div>\r\n\r\n <div class=\"floating-bar\">\r\n <div class=\"floating-bar-container\">\r\n <div class=\"right\">\r\n <button class=\"cancel\" (click)=\"setIsUploaded.emit(false)\">\r\n Cancel\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- <ng-template #elseBlock>\r\n <div>\r\n <app-editor-loader></app-editor-loader>\r\n </div>\r\n </ng-template> -->\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"!isPageEmpty() || editorService.currentPageNumber < 0\"\r\n >\r\n <div class=\"editor-section\">\r\n <div class=\"editor-section-body vx-d-flex\">\r\n <app-toolkit\r\n (addQuestion)=\"editorService.addQuestion($event)\"\r\n ></app-toolkit>\r\n\r\n <div class=\"editor-section-inner\">\r\n <app-welcome-thankyou\r\n *ngIf=\"editorService.stepIdentifier == 'welcomescreen'\"\r\n [entityData]=\"editorService?.formsPage\"\r\n [service]=\"editorService\"\r\n (deleteQuestion)=\"deleteQuestionWithValidation('welcome')\"\r\n ></app-welcome-thankyou>\r\n <!-- <app-preview-welcome></app-preview-welcome> -->\r\n <ng-container\r\n *ngIf=\"editorService.stepIdentifier == 'pagescreen'\"\r\n >\r\n <button\r\n *ngIf=\"\r\n editorService.stepIdentifier == 'pagescreen' &&\r\n editorService.showAddPageOption\r\n \"\r\n class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"\r\n (click)=\"addPageDetails()\"\r\n >\r\n <i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> PAGE TITLE\r\n </button>\r\n <app-page-header\r\n (edit)=\"addPageDetails()\"\r\n *ngIf=\"\r\n editorService.stepIdentifier == 'pagescreen' &&\r\n editorService.showPageDetails\r\n \"\r\n [pageName]=\"editorService.currentPageDetails.pageName\"\r\n [pageDescription]=\"\r\n editorService.currentPageDetails.pageDescription\r\n \"\r\n ></app-page-header>\r\n <ng-container\r\n *ngFor=\"\r\n let question of editorService.formsPage.elements;\r\n let questionIndex = index\r\n \"\r\n >\r\n <ng-container\r\n *ngIf=\"\r\n question.page === editorService.currentPageNumber &&\r\n editorService.stepIdentifier == 'pagescreen'\r\n \"\r\n >\r\n <app-editor-wrapper\r\n *ngIf=\"editorService.activeQuestion === questionIndex\"\r\n [service]=\"editorService\"\r\n [question]=\"question\"\r\n [questionIndex]=\"questionIndex\"\r\n [openPortal]=\"openPortal\"\r\n (validQuestionData)=\"checkforError($event)\"\r\n (deleteQuestion)=\"deleteQuestionWithValidation($event)\"\r\n (copyQuestion)=\"editorService.copyQuestion($event)\"\r\n ></app-editor-wrapper>\r\n <app-preview-wrapper\r\n *ngIf=\"editorService.activeQuestion !== questionIndex\"\r\n [question]=\"question\"\r\n [questionIndex]=\"questionIndex\"\r\n (makeActiveQuestion)=\"\r\n editorService.activeQuestion = $event\r\n \"\r\n ></app-preview-wrapper>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"next-question-area\">\r\n <button\r\n class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"\r\n (click)=\"openQuestion()\"\r\n >\r\n <i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> NEXT QUESTION\r\n </button>\r\n <div class=\"next-question-popup vx-p-3\" *ngIf=\"hideQuestion\">\r\n <app-question-type\r\n (addQuestion)=\"\r\n editorService.addQuestion($event); closeQuestion()\r\n \"\r\n ></app-question-type>\r\n </div>\r\n <div\r\n class=\"overlay\"\r\n *ngIf=\"hideQuestion\"\r\n (click)=\"closeQuestion()\"\r\n ></div>\r\n </div>\r\n <button\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n (click)=\"addNewPage()\"\r\n class=\"page-title vx-fs-11 vx-fw-600 vx-label-txt vx-tt-uppercase vx-p-0 vx-m-0 vx-mb-2 vx-d-flex vx-align-center vx-justify-center vx-w-100\"\r\n >\r\n <i class=\"icons vx-fs-16 vx-mr-1\">&#xe90a;</i> ADD NEW PAGE\r\n </button>\r\n </ng-container>\r\n </div>\r\n\r\n <div\r\n class=\"right-side-btn\"\r\n *ngIf=\"openPortal !== 'RESPONSIBILITY_CHECKPOINT'\"\r\n >\r\n <button\r\n *ngIf=\"!expandPage\"\r\n (click)=\"clickExpand()\"\r\n class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Expand Page'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe945;</i>\r\n </button>\r\n <button\r\n *ngIf=\"expandPage\"\r\n (click)=\"closeExpand()\"\r\n class=\"fullscreen-btn vx-fs-14 vx-txt-blue vx-p-0 vx-m-0 vx-mb-3 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Shrink Page'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe944;</i>\r\n </button>\r\n <button\r\n *ngIf=\"editorService.stepIdentifier == 'pagescreen'\"\r\n (click)=\"deletePage()\"\r\n class=\"delete-btn vx-fs-14 vx-txt-red vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Delete Page'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe923;</i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"editor-section-footer vx-d-flex vx-align-center vx-justify-center vx-mt-4\"\r\n >\r\n <button\r\n (click)=\"setIsUploaded.emit(false)\"\r\n class=\"cancel-btn vx-fs-14 vx-fw-500 vx-txt-red vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n CANCEL\r\n </button>\r\n <button\r\n *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\"\r\n (click)=\"submitAfterErrorCheck('DRAFT')\"\r\n [class.disabled]=\"assessmentCurrentState === 'ACTIVE'\"\r\n class=\"white-btn vx-fs-14 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n SAVE AS DRAFT\r\n </button>\r\n <button\r\n *ngIf=\"openPortal === 'ASSESSMENT_IMPORT'\"\r\n (click)=\"submitAfterErrorCheck('ACTIVE')\"\r\n class=\"blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n PUBLISH\r\n </button>\r\n <button\r\n *ngIf=\"openPortal === 'RESPONSIBILITY_CHECKPOINT'\"\r\n (click)=\"submitAfterErrorCheck('ACTIVE')\"\r\n class=\"blue-btn vx-fs-14 vx-fw-500 vx-txt-white vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-1 vx-mr-1 vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n NEXT &nbsp;<i class=\"icons\">&#xe91e;</i>\r\n </button>\r\n <!-- <button (click)=\"pageMode = 'PREVIEW'\" class=\"preview-btn vx-fs-20 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\" [appTooltip]=\"'Preview'\" placement=\"left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\"><i class=\"icons\">&#xeae5;</i></button> -->\r\n <button\r\n *ngIf=\"false\"\r\n class=\"close-btn vx-fs-12 vx-txt-white vx-p-0 vx-m-0 vx-d-flex vx-align-center vx-justify-center\"\r\n [appTooltip]=\"'Close'\"\r\n placement=\"left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"true\"\r\n >\r\n <i class=\"icons\">&#xe90d;</i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- <app-assessment-preview-container *ngIf=\"pageMode === 'PREVIEW'\" [questionDetails]=\"editorService.formsPage\"></app-assessment-preview-container> -->\r\n</ng-container>\r\n\r\n<!-- <app-editor-loader *ngIf=\"!isLoaded\"></app-editor-loader> -->\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";.create-assessment-container{position:relative}.create-assessment-container.full-page{position:fixed;inset:0;width:100vw;height:100vh;margin:0!important;z-index:9}.create-assessment-container.full-page .create-assessment-head{border-radius:0}.create-assessment-container.full-page .create-assessment-body{border-radius:0;height:calc(100vh - 2.5rem)}.create-assessment-container.full-page .create-assessment-body .editor-section-body .right-side-btn{top:4.75rem;right:5rem}.create-assessment-container.full-page .create-assessment-body .editor-section-footer{border-radius:0}.create-assessment-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1;position:relative}.create-assessment-head:before{background:#1E5DD3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}.create-assessment-head .left{width:calc(100% - 22rem)}.create-assessment-head .left i.arrow-back{cursor:pointer}.create-assessment-head .left .heading{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 10rem)}.create-assessment-head .left button.edit-btn{background:transparent;border:none;border-radius:0}.create-assessment-head .left.with-template-btn{width:calc(100% - 30rem)}.create-assessment-head .right button.page-dropdown{background:#FFFFFF;border-radius:.125rem;border:1px solid #BCBCBC;position:relative;height:1.5rem;width:11.5rem}.create-assessment-head .right button.page-dropdown .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.create-assessment-head .right button.page-dropdown .arrow{position:absolute;top:.375rem;right:.5rem}.create-assessment-head .right button.settings-btn{background:#1e5dd3;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-head .right button.template-btn{background:#34aa44;border-radius:.125rem;border:none;height:1.5rem}.create-assessment-body{background:#FFFFFF;border-radius:0 0 .125rem .125rem;height:calc(100vh - 2.5rem);scrollbar-width:thin}.create-assessment-body::-webkit-scrollbar-track{background-color:#f1f1f1}.create-assessment-body::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}.create-assessment-body app-toolkit{position:sticky;top:0}.create-assessment-body .select-question-part{padding:2rem}.create-assessment-body .select-question-part .question-inner{width:69rem;height:calc(100vh - 11rem);overflow:auto;padding-right:3.75rem;position:relative;left:.625rem}.create-assessment-body .select-question-part .question-inner::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .select-question-part .question-inner .heading{margin-top:4rem;margin-bottom:2rem}.create-assessment-body .select-question-part .floating-bar-container{background:#FFFFFF;box-shadow:0 6px 12px #4681ef26;border-radius:4px;border:1px solid #f8f8f8;height:48px;padding:8px 12px;display:flex;justify-content:end;position:relative;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right{display:flex;align-items:center}.create-assessment-body .select-question-part .floating-bar-container .right .name{margin-left:15px;color:#707070;font-size:12px;font-weight:500;line-height:18px;display:flex;align-items:center;white-space:nowrap}.create-assessment-body .select-question-part .floating-bar-container .right .name span.required{color:#eb2424;font-size:14px}.create-assessment-body .select-question-part .floating-bar-container .right .name i{margin-left:3px;color:#1e5dd3;cursor:pointer}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select{margin-left:12px;width:125px;display:flex}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box input{height:32px}.create-assessment-body .select-question-part .floating-bar-container .right app-cs-select .input-group .custom-select-box span.arrow{bottom:6px}.create-assessment-body .select-question-part .floating-bar-container .right button{border-radius:2px;height:28px;background:#1e5dd3!important;width:72px;display:flex;justify-content:center;align-items:center;cursor:pointer;color:#fff!important;text-transform:uppercase;font-size:11px;font-weight:500;border:1px solid #1e5dd3!important;padding:0;margin:0 0 0 28px}.create-assessment-body .select-question-part .floating-bar-container .right button i{margin-left:8px;font-size:16px}.create-assessment-body .select-question-part .floating-bar-container .right button:disabled{filter:grayscale(1);cursor:not-allowed;opacity:.5;pointer-events:auto}.create-assessment-body .select-question-part .floating-bar-container .right button.cancel{background:transparent!important;border:none!important;color:#eb2424!important;margin-right:0;width:auto;padding:0}.create-assessment-body .editor-section{height:100%}.create-assessment-body .editor-section-body{height:calc(100% - 5.25rem);position:relative;overflow:auto}.create-assessment-body .editor-section-body::-webkit-scrollbar-track{background-color:transparent}.create-assessment-body .editor-section-body .right-side-btn{position:fixed;top:180px;right:100px}.create-assessment-body .editor-section-body .right-side-btn button{background:#f8f8f8;border-radius:.125rem;border:none;width:1.5rem;height:1.5rem}.create-assessment-body .editor-section-inner{width:60rem;margin:0 auto;padding:2rem 0;height:100%}@media screen and (max-width: 1366px){.create-assessment-body .editor-section-inner{width:55rem!important}}.create-assessment-body .editor-section-inner .next-question-area{position:relative}.create-assessment-body .editor-section-inner .next-question-area ::ng-deep app-question-type .question-type ul li{width:10rem!important}.create-assessment-body .editor-section-inner .next-question-area .overlay{z-index:8}.create-assessment-body .editor-section-inner .next-question-popup{background:#FFFFFF;border-radius:.25rem;box-shadow:0 0 6px #1e5dd326;position:absolute;left:0;right:0;bottom:0;z-index:9}.create-assessment-body .editor-section-footer{background:#FFFFFF;border-radius:0 0 .125rem .125rem;box-shadow:0 -3px 6px #1e5dd326;height:4.25rem;position:relative}.create-assessment-body .editor-section-footer button{border-radius:.125rem;width:12.5rem;height:2.75rem;letter-spacing:1.5px}.create-assessment-body .editor-section-footer button.white-btn,.create-assessment-body .editor-section-footer button.cancel-btn{background:#FFFFFF;border:1px solid #DBDBDB}.create-assessment-body .editor-section-footer button.blue-btn{background:#1e5dd3;border:none}.create-assessment-body .editor-section-footer button.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}.create-assessment-body .editor-section-footer button.preview-btn{background:#34aa44;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}.create-assessment-body .editor-section-footer button.close-btn{background:#d93b41;border-radius:.125rem;border:none;width:2.75rem;height:2.5rem;position:absolute;bottom:.875rem;right:1rem}button.page-title{background:#FFFFFF;border:1px dashed #DBDBDB;border-radius:.25rem;height:3.125rem;transition:all .3s ease-in-out}button.page-title:hover{border-color:#1e5dd3;color:#1e5dd3}.page-dropdown-popup{background:#FFFFFF;box-shadow:0 3px 6px #1c5bd140;border-radius:.25rem;width:11.5rem;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}.page-dropdown-popup ul{list-style-type:none;max-height:12rem;overflow-y:auto}.page-dropdown-popup ul li{border-bottom:1px solid #F1F1F1;list-style-type:none}.page-dropdown-popup ul li:only-child,.page-dropdown-popup ul li:last-of-type{border-bottom:none}.page-dropdown-popup ul li button{background:transparent;border:none;border-radius:0;text-align:left}.page-dropdown-popup ul li button .page-label{background:#F1F1F1;border-radius:.125rem;color:#042e7d}.page-dropdown-popup .action-bottom{background:#f8f8f8;border-top:1px solid #F1F1F1;border-radius:0 0 .125rem .125rem}.page-dropdown-popup .action-bottom button{border-radius:.125rem;height:1.5rem}.page-dropdown-popup .action-bottom button.add-page{background:#1e5dd3;border:1px solid #1e5dd3}.page-number{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.disabled{opacity:.7;pointer-events:none;cursor:not-allowed}\n"] }]
479
479
  }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.EditorService }, { type: i3.ActivatedRoute }, { type: i4.SnackBarService }, { type: i3.Router }]; }, propDecorators: { openPortal: [{
480
480
  type: Input
481
481
  }], setIsUploaded: [{
@@ -492,4 +492,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
492
492
  type: HostListener,
493
493
  args: ['document:keydown.escape', ['$event']]
494
494
  }] } });
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYXNzZXNzbWVudC1lZGl0b3IvY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci9jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRUwsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDcEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFFOUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEYsTUFBTSxPQUFPLGtDQUFrQztJQStCN0MsWUFDVSxNQUFxQixFQUN0QixhQUE0QjtJQUNuQyx5Q0FBeUM7SUFDakMsS0FBcUIsRUFDckIsUUFBeUIsRUFDekIsTUFBYztRQUxkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEIsa0JBQWEsR0FBYixh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OzRCQUNWLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUzt5QkFDaEQsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2dCQUNWLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUzthQUNoRCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OytIQTdoQlUsa0NBQWtDO21IQUFsQyxrQ0FBa0MsMldBRmxDLENBQUMsYUFBYSxDQUFDLDBCQ3ZCNUIsNG9hQTBIQTsyRkRqR2Esa0NBQWtDO2tCQU45QyxTQUFTOytCQUNFLGlDQUFpQyxhQUdoQyxDQUFDLGFBQWEsQ0FBQztnTkFhakIsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRXNCLGNBQWM7c0JBQTFDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUdNLGNBQWM7c0JBQTFDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU04QixnQkFBZ0I7c0JBQXBFLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFkZFBhZ2VEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hZGQtcGFnZS1kZXRhaWxzL2FkZC1wYWdlLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3Nlc3NtZW50LXNldHRpbmdzL2Fzc2Vzc21lbnQtc2V0dGluZ3MuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L2FjdGlvbi1kaWFsb2cvZGVsZXRlL2RlbGV0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBY3RpdmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvYWN0aW9uLWRpYWxvZy9hY3RpdmUvYWN0aXZlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci5jb21wb25lbnQubGVzcyddLFxyXG4gIHByb3ZpZGVyczogW0VkaXRvclNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlQXNzZXNzbWVudENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgc2hvd0NvbGxhcHNlID0gZmFsc2U7XHJcbiAgZXhwYW5kUGFnZSA9IGZhbHNlO1xyXG4gIGhpZGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gIGFzc2Vzc21lbnRJZCA9ICcnO1xyXG4gIGFzc2Vzc21lbnROYW1lID0gJyc7XHJcbiAgYXNzZXNzbWVudENhdGVnb3J5ID0gJyc7XHJcbiAgYXNzZXNzbWVudENvbnRyb2xJZCA9ICcnO1xyXG4gIGFzc2Vzc21lbnRDdXJyZW50U3RhdGUgPSAnRFJBRlQnO1xyXG4gIHBhZ2VNb2RlOiAnRURJVCcgfCAnUFJFVklFVycgPSAnRURJVCc7XHJcbiAgaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBvcGVuUG9ydGFsOiAnQVNTRVNTTUVOVF9JTVBPUlQnIHwgJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnIHwgJycgPVxyXG4gICAgJyc7XHJcbiAgQE91dHB1dCgpIHNldElzVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHBvc3RBc3Nlc3NtZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASW5wdXQoJ2Fzc2Vzc21lbnRKU09OJykgc2V0IGFzc2Vzc21lbnREYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUFzc2Vzc21lbnQodmFsdWUpO1xyXG4gIH1cclxuICBASW5wdXQoJ2NoZWNrcG9pbnRKU09OJykgc2V0IGNoZWNrcG9pbnREYXRhKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNoZWNrcG9pbnQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyogV2hlbiB0aGUgXCJFc2NhcGVcIiBrZXkgaXMgcHJlc3NlZCwgaXQgZW1pdHMgYW4gZXZlbnQgdG8gc2V0IHRoZSB2YWx1ZSBvZiBcImlzVXBsb2FkZWRcIiB0b1xyXG4gIGZhbHNlLiBhbmQgbGVmdCBwb3B1cCB3aWxsIGNsb3NlLiAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihcclxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50XHJcbiAgKSB7XHJcbiAgICB0aGlzLnNldElzVXBsb2FkZWQuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsXHJcbiAgICAvLyBwcml2YXRlICBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHNuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hZGRQYWdlKCk7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UubnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgLy8gdGhpcy5pbml0aWFsaXplQXNzZXNzbWVudCgpO1xyXG4gIH1cclxuICB0cmlnZ2VyUHJldmlld1dpdGhWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dCgtMTApO1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gIH1cclxuICBpbml0aWFsaXplQXNzZXNzbWVudChhc3Nlc3NtZW50RGF0YTogYW55KSB7XHJcbiAgICBpZiAoYXNzZXNzbWVudERhdGEpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZSA9IGFzc2Vzc21lbnREYXRhLmFzc2Vzc21lbnREYXRhO1xyXG4gICAgICB0aGlzLmFzc2Vzc21lbnROYW1lID0gYXNzZXNzbWVudERhdGEubWV0YWRhdGEuYXNzZXNzbWVudF9uYW1lO1xyXG4gICAgICB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeSA9IGFzc2Vzc21lbnREYXRhLm1ldGFkYXRhLmNhdGVnb3J5X2FycjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVDaGVja3BvaW50KGNoZWNrcG9pbnREYXRhOiBhbnkpIHtcclxuICAgIGlmIChjaGVja3BvaW50RGF0YSAmJiBPYmplY3Qua2V5cyhjaGVja3BvaW50RGF0YSk/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZSA9IGNoZWNrcG9pbnREYXRhO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWxsUGFnZXMoKSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMgPSBbXHJcbiAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5tYXAoKGVsZTogYW55KSA9PiBlbGUucGFnZSlcclxuICAgICAgKSxcclxuICAgIF07XHJcbiAgICB0aGlzLmdldFBhZ2VOYW1lKDEpO1xyXG4gIH1cclxuXHJcbiAgYWRkUGFnZURldGFpbHMoKSB7XHJcbiAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFkZFBhZ2VEZXRhaWxzQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBwYWdlOiB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgICAgcGFnZURldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMsXHJcbiAgICAgICAgcmVmOiB0aGlzLmVkaXRvclNlcnZpY2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHBvc2l0aW9uOiAnUklHSFQnLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAnYmxhY2snLFxyXG4gICAgfSk7XHJcbiAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5nZW5lcmF0ZVBhZ2VEcm9wZG93bigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW50aXR5U2V0dGluZ3M6IGFueSA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICcnLFxyXG4gIH07XHJcblxyXG4gIGFzc2Vzc21lbnRTZXR0aW5ncygpIHtcclxuICAgIHRoaXMuZW50aXR5U2V0dGluZ3MgPSB0aGlzLmdldFNldHRpbmdzRGF0YSgpO1xyXG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBc3Nlc3NtZW50U2V0dGluZ3NDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogeyBzZXR0aW5nczogdGhpcy5lbnRpdHlTZXR0aW5ncywgc2VydmljZTogdGhpcy5lZGl0b3JTZXJ2aWNlIH0sXHJcbiAgICAgIHBvc2l0aW9uOiAnUklHSFQnLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAnYmxhY2snLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZXR0aW5nc0RhdGEoKSB7XHJcbiAgICBsZXQgc2V0dGluZ3M6IGFueSA9IHtcclxuICAgICAgcGFuZWxUaXRsZTogYEFzc2Vzc21lbnQgc2V0dGluZ3NgLFxyXG5cclxuICAgICAgc2V0dGluZ3NFbGVtZW50czogW10sXHJcbiAgICB9O1xyXG4gICAgc2V0dGluZ3Muc2V0dGluZ3NFbGVtZW50cy5wdXNoKHtcclxuICAgICAgdHlwZTogJ0FTU0VTU01FTlQnLFxyXG4gICAgICBlbnRpdHlUeXBlOiAnQVNTRVNTTUVOVCcsXHJcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgaXNFbmFibGVkOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLmFzc2Vzc21lbnRNb2RlLFxyXG4gICAgICBoZWxwaW5nVGV4dDpcclxuICAgICAgICAnWW91IGNhbiBjb25maWd1cmUgc2NvcmVzIGZvciB0aGUgcXVlc3Rpb25zIGFuZCBhbmFseXplIHRoZSByZXNwb25zZXMgc3VibWl0dGVkIGJ5IHRoZSByZXNwb25kZW50IGJhc2VkIG9uIHRoZXNlIHNjb3Jlcy4nLFxyXG4gICAgICBkZWZhdWx0U2NvcmU6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MuZGVmYXVsdFNjb3JlLFxyXG4gICAgICBuZWdhdGl2ZVNjb3JlQ3JpdGVyaWE6XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy5uZWdhdGl2ZVNjb3JlQ3JpdGVyaWEsXHJcbiAgICAgIG5lZ2F0aXZlU2NvcmU6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MubmVnYXRpdmVTY29yZSxcclxuICAgICAgd2VpZ2h0YWdlRW5hYmxlZDogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy53ZWlnaHRhZ2VFbmFibGVkLFxyXG4gICAgICBzZXR0aW5nVGl0bGU6ICdBU1NFU1NNRU5UIE1PREUnLFxyXG4gICAgICBzZXR0aW5nRW5hYmxlVGV4dDogYEVuYWJsZSBhc3Nlc3NtZW50IG1vZGUgZm9yIHRoaXMgYXNzZXNzbWVudGAsXHJcbiAgICAgIHVwZGF0ZVR5cGU6ICdMQVpZJyxcclxuICAgIH0pO1xyXG4gICAgc2V0dGluZ3Muc2V0dGluZ3NFbGVtZW50cy5wdXNoKHtcclxuICAgICAgdHlwZTogJ1JFU1BPTlNFX1NFR01FTlQnLFxyXG4gICAgICBlbnRpdHlUeXBlOiAnQVNTRVNTTUVOVCcsXHJcbiAgICAgIGhlbHBpbmdUZXh0OlxyXG4gICAgICAgICdSZXNwb25zZSBzZWdtZW50cyBsZXQgeW91IGRpdmlkZSB0aGUgcmVzcG9uc2VzIGludG8gc2VwYXJhdGUgcGFydHMgb3Igc2VjdGlvbnMgZm9yIGVhc2llciBhbmFseXNpcyBvZiBkYXRhIGFuZCBhc3Npc3QgaW4gZGVjaXNpb24gbWFraW5nLicsXHJcbiAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgaXNFbmFibGVkOlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucmVzcG9uc2VTZWdtZW50Wydpc0VuYWJsZWQnXSA/PyBmYWxzZSxcclxuICAgICAgc2V0dGluZ1RpdGxlOiAnUkVTUE9OU0UgU0VHTUVOVFMnLFxyXG4gICAgICBzZXR0aW5nRW5hYmxlVGV4dDogYENvbmZpZ3VyZSBSZXNwb25zZSBTZWdtZW50cyBmb3IgdGhpcyBhc3Nlc3NtZW50YCxcclxuICAgICAgdXBkYXRlVHlwZTogJ0xBWlknLFxyXG4gICAgICBzZWdtZW50RGF0YTogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5yZXNwb25zZVNlZ21lbnQsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBzZXR0aW5ncztcclxuICB9XHJcblxyXG4gIGNsaWNrQ29sbGFwc2UoKSB7XHJcbiAgICB0aGlzLnNob3dDb2xsYXBzZSA9ICF0aGlzLnNob3dDb2xsYXBzZTtcclxuICB9XHJcblxyXG4gIGNsaWNrRXhwYW5kKCkge1xyXG4gICAgdGhpcy5leHBhbmRQYWdlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlRXhwYW5kKCkge1xyXG4gICAgdGhpcy5leHBhbmRQYWdlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZWxldGVQYWdlKCkge1xyXG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogeyBtZXNzYWdlOiBgVGhpcyBhY3Rpb24gd2lsbCA8c3Ryb25nPnJlbW92ZTwvc3Ryb25nPiB0aGlzIHBhZ2UuYCB9LFxyXG4gICAgICBwb3NpdGlvbjogJ0NFTlRFUicsXHJcbiAgICAgIGJhY2tncm91bmQ6ICdibGFjaycsXHJcbiAgICB9KTtcclxuICAgIHJlZi5hZnRlckNsb3NlZC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlUGFnZUNvbmZpcm0odHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUGFnZUNvbmZpcm0oY29uZmlybURlbGV0ZTogYW55KSB7XHJcbiAgICBpZiAoY29uZmlybURlbGV0ZSkge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMgPSB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMuZmlsdGVyKFxyXG4gICAgICAgIChwYWdlTnVtOiBhbnkpID0+IHBhZ2VOdW0gIT09IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlclxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMgPSB0aGlzLnVwZGF0ZVBhZ2VOdW1iZXJzRm9yQWxsUGFnZXMoXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0ID1cclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5maWx0ZXIoXHJcbiAgICAgICAgICAocGFnZURldGFpbDogYW55KSA9PlxyXG4gICAgICAgICAgICBwYWdlRGV0YWlsLnBhZ2VOdW1iZXIgIT09IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlclxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0ID1cclxuICAgICAgICB0aGlzLnVwZGF0ZVBhZ2VOdW1iZXJGb3JQYWdlRGV0YWlscyhcclxuICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0XHJcbiAgICAgICAgKTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cyA9XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5maWx0ZXIoXHJcbiAgICAgICAgICAoZWxlbWVudERldGFpbDogYW55KSA9PlxyXG4gICAgICAgICAgICBlbGVtZW50RGV0YWlsLnBhZ2UgIT09IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlclxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMgPSB0aGlzLnVwZGF0ZVBhZ2VOdW1iZXJGb3JRdWVzdGlvbnMoXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50c1xyXG4gICAgICApO1xyXG4gICAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID4gMSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciAtPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0UGFnZU5hbWUodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuICAgICAgdGhpcy5jaGVja0ZvclBhZ2VEZXRhaWxzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFnZU51bWJlcnNGb3JBbGxQYWdlcyhhcnJheVRvQmVVcGRhdGVkOiBhbnkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXlUb0JlVXBkYXRlZC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaSA+PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgLSAxKSB7XHJcbiAgICAgICAgYXJyYXlUb0JlVXBkYXRlZFtpXSAtPSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXlUb0JlVXBkYXRlZDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBhZ2VOdW1iZXJGb3JQYWdlRGV0YWlscyhhcnJheVRvQmVVcGRhdGVkOiBhbnkpIHtcclxuICAgIGFycmF5VG9CZVVwZGF0ZWQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnBhZ2VOdW1iZXIgPj0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKSB7XHJcbiAgICAgICAgZWxlbWVudC5wYWdlTnVtYmVyIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFycmF5VG9CZVVwZGF0ZWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQYWdlTnVtYmVyRm9yUXVlc3Rpb25zKGFycmF5VG9CZVVwZGF0ZWQ6IGFueSkge1xyXG4gICAgYXJyYXlUb0JlVXBkYXRlZC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQucGFnZSA+PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpIHtcclxuICAgICAgICBlbGVtZW50LnBhZ2UgLT0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYXJyYXlUb0JlVXBkYXRlZDtcclxuICB9XHJcblxyXG4gIG9wZW5RdWVzdGlvbigpIHtcclxuICAgIHRoaXMuaGlkZVF1ZXN0aW9uID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlUXVlc3Rpb24oKSB7XHJcbiAgICB0aGlzLmhpZGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUXVlc3Rpb25XaXRoVmFsaWRhdGlvbihpbmRleDogYW55KSB7XHJcbiAgICBpZiAoaW5kZXggPT09ICd3ZWxjb21lJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gMTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmRlbGV0ZVF1ZXN0aW9uKGluZGV4KTtcclxuICB9XHJcblxyXG4gIGNoZWNrZm9yRXJyb3IobW9kZT86IGFueSkge1xyXG4gICAgLy8gdGhpcy5tb3JlT3B0aW9ucyA9IGZhbHNlO1xyXG4gICAgY29uc3QgZXJyb3JRdWVzdGlvbkluZGV4ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+XHJcbiAgICAgICAgZWxlbWVudC5lcnJvckFycmF5ICYmXHJcbiAgICAgICAgZWxlbWVudC5lcnJvckFycmF5ICE9PSB7fSAmJlxyXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZWxlbWVudC5lcnJvckFycmF5KS5sZW5ndGggPiAwXHJcbiAgICApO1xyXG4gICAgaWYgKGVycm9yUXVlc3Rpb25JbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmIChtb2RlID09PSAnZnVsbCcpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPVxyXG4gICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50c1tlcnJvclF1ZXN0aW9uSW5kZXhdLnBhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1vZGUgIT09ICdwYXJ0aWFsJykge1xyXG4gICAgICAgIC8vIHRoaXMuZ2V0UGFnZU5hbWUodGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gZXJyb3JRdWVzdGlvbkluZGV4O1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoZXJyb3JRdWVzdGlvbkluZGV4KTtcclxuXHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcclxuICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHNbZXJyb3JRdWVzdGlvbkluZGV4XS5uYW1lXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGlmIChxdWVzdGlvbikge1xyXG4gICAgICAgICAgICBxdWVzdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobW9kZSA9PT0gJ3NhdmUnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobW9kZSA9PT0gJ3NhdmUnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTEwO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVBhZ2VEcm9wZG93bigpIHtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPT09IHRydWUpIHtcclxuICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogLTEsXHJcbiAgICAgICAgdGVtcGxhdGU6IGA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyXCI+V2VsY29tZSBTY3JlZW48L3NwYW4+YCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3MgPT09IHRydWUpIHtcclxuICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogLTIsXHJcbiAgICAgICAgdGVtcGxhdGU6IGA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyXCI+VGhhbmsgeW91IFNjcmVlbjwvc3Bhbj5gLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IGVsZW1lbnQsXHJcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuZ2V0UGFnZU5hbWVGb3JEcm9wZG93bihlbGVtZW50KSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIGdldFBhZ2VOYW1lRm9yRHJvcGRvd24ocGFnZU51bWJlcjogYW55KSB7XHJcbiAgICBsZXQgcGFnZVZhbHVlID0gYDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXJcIj5QYWdlICR7cGFnZU51bWJlcn08L3NwYW4+YDtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucGFnZURldGFpbHNMaXN0LmZvckVhY2goKHBhZ2VEZXRhaWw6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocGFnZURldGFpbC5wYWdlTnVtYmVyID09PSBwYWdlTnVtYmVyICYmIHBhZ2VEZXRhaWwucGFnZU5hbWUgIT09ICcnKSB7XHJcbiAgICAgICAgcGFnZVZhbHVlID0gYDxzcGFuIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiPlBBR0U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlciB2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0XCI+JHtwYWdlRGV0YWlsLnBhZ2VOdW1iZXJ9PC9zcGFuPmA7XHJcbiAgICAgICAgLy9wYWdlVmFsdWUgPSBgPHNwYW4gY2xhc3M9XCJwYWdlLWxhYmVsIHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zXCI+UGFnZSA8L3NwYW4+IDxzcGFuICR7cGFnZURldGFpbC5wYWdlTnVtYmVyfTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlciB2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0XCI+ICR7cGFnZURldGFpbC5wYWdlTmFtZX08L3NwYW4+YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcGFnZVZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcGFnZUNoYW5nZWQoZXZ0OiBhbnkpIHtcclxuICAgIGlmIChldnQudmFsdWUgPT09IC0xKSB7XHJcbiAgICAgIHRoaXMuc2V0SWRlbnRpZmllcignd2VsY29tZXNjcmVlbicpO1xyXG4gICAgfSBlbHNlIGlmIChldnQudmFsdWUgPT09IC0yKSB7XHJcbiAgICAgIHRoaXMuc2V0SWRlbnRpZmllcigndGhhbmt5b3VzY3JlZW4nKTtcclxuICAgIH0gZWxzZSBpZiAoZXZ0LnZhbHVlID49IDApIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gZXZ0Py52YWx1ZTtcclxuICAgICAgdGhpcy5zZXRJZGVudGlmaWVyKCdwYWdlc2NyZWVuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRJZGVudGlmaWVyKHNjcmVlbjogYW55KSB7XHJcbiAgICB0aGlzLmNoYW5nZVRvSW5hY3RpdmUoKTtcclxuICAgIGlmIChzY3JlZW4gPT09ICd3ZWxjb21lc2NyZWVuJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXIgPSAnd2VsY29tZXNjcmVlbic7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IC0xO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjcmVlbiA9PT0gJ3RoYW5reW91c2NyZWVuJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXIgPSAndGhhbmt5b3VzY3JlZW4nO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSAtMjtcclxuICAgIH1cclxuICAgIGlmIChzY3JlZW4gPT09ICdwYWdlc2NyZWVuJykge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXIgPSAncGFnZXNjcmVlbic7XHJcbiAgICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFkZFBhZ2UoKTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9PT0gLTEgfHxcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPT09IC0yXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9XHJcbiAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWxsUGFnZXMubGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFBhZ2VOYW1lKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlTmFtZShwYWdlTnVtYmVyOiBhbnkpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMgPSB7XHJcbiAgICAgIHBhZ2VOYW1lOiAnJyxcclxuICAgICAgcGFnZU51bWJlcjogMCxcclxuICAgICAgcGFnZURlc2NyaXB0aW9uOiAnJyxcclxuICAgIH07XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5mb3JFYWNoKChwYWdlRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhZ2VEZXRhaWwucGFnZU51bWJlciA9PT0gcGFnZU51bWJlcikge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZU51bWJlciA9XHJcbiAgICAgICAgICBwYWdlRGV0YWlsLnBhZ2VOdW1iZXI7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlTmFtZSA9IHBhZ2VEZXRhaWwucGFnZU5hbWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlRGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgcGFnZURldGFpbC5wYWdlRGVzY3JpcHRpb247XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja0ZvclBhZ2VEZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICBjaGVja0ZvclBhZ2VEZXRhaWxzKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlTmFtZSA9PT0gJydcclxuICAgICkge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd0FkZFBhZ2VPcHRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd1BhZ2VEZXRhaWxzID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2hvd0FkZFBhZ2VPcHRpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlscyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUb0luYWN0aXZlKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID0gLTU7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC01KTtcclxuICB9XHJcblxyXG4gIGFkZE5ld1BhZ2UoKSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWRkUGFnZSgpO1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscyA9IHtcclxuICAgICAgcGFnZU5hbWU6ICcnLFxyXG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIsXHJcbiAgICAgIHBhZ2VEZXNjcmlwdGlvbjogJycsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2VuZXJhdGVQYWdlRHJvcGRvd24oKTtcclxuICB9XHJcblxyXG4gIGNhcGl0YWxpemVTdHJpbmcoc3RyaW5nVmFsdWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHN0cmluZ1ZhbHVlWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmdWYWx1ZS5zbGljZSgxKTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlUGFnZUNsaWNrKCkge1xyXG4gICAgLy8gdGhpcy5zaG93RGVsZXRlUG9wdXAgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaXNQYWdlRW1wdHkoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgICFbXHJcbiAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMubWFwKFxyXG4gICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBlbGVtZW50LnBhZ2VcclxuICAgICAgICAgIClcclxuICAgICAgICApLFxyXG4gICAgICBdLmluY2x1ZGVzKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcilcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN1Ym1pdEFmdGVyRXJyb3JDaGVjayhtb2RlOiBhbnkpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09PSAnd2VsY29tZXNjcmVlbicgfHxcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09PSAndGhhbmt5b3VzY3JlZW4nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gMTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgfVxyXG4gICAgLy90aGlzLnBhZ2VNb2RlID0gJ0VESVQnO1xyXG5cclxuICAgIHRoaXMudmFsaWRhdGVXZWxjb21lVGhhbmtZb3UoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmNoZWNrZm9yRXJyb3IoJ2Z1bGwnKSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2YgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5lbGVtZW50cykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhWydjaGVja2JveCcsICdkcm9wZG93bicsICdtdWx0aXBsZS1jaG9pY2UnXS5pbmNsdWRlcyhxdWVzdGlvbi50eXBlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzKSB7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuY29sb3IgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNjb3JlID0gMTtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuaXNGYWlsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBxdWVzdGlvbi5vdGhlckNvbmZpZyA9IHsgY29sb3I6ICcnLCBpc0ZhaWxlZDogZmFsc2UsIHNjb3JlOiAwIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2F2ZShtb2RlKTtcclxuICAgICAgfVxyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlV2VsY29tZVRoYW5rWW91KCkge1xyXG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlO1xyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc1dlbGNvbWUgPT09IHRydWUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHF1ZXN0aW9uLmhhc1dlbGNvbWVEZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVEZXNjcmlwdGlvbikubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZURlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHF1ZXN0aW9uLmhhc1dlbGNvbWVJbWFnZSA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVJbWFnZSkubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZUltYWdlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVEZXNjcmlwdGlvbikubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24ud2VsY29tZVRleHQpLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVJbWFnZSkubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzV2VsY29tZURlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVJbWFnZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNUaGFua3MgPT09IHRydWUpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHF1ZXN0aW9uLmhhc1RoYW5reW91RGVzY3JpcHRpb24gPT09IHRydWUgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi50aGFua3lvdURlc2NyaXB0aW9uKS5sZW5ndGggPT09IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdURlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHF1ZXN0aW9uLmhhc1RoYW5reW91SW1hZ2UgPT09IHRydWUgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi50aGFua3lvdUltYWdlKS5sZW5ndGggPT09IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdUltYWdlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91RGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91VGV4dCkubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VJbWFnZSkubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmtzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdURlc2NyaXB0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1RoYW5reW91SW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlKG1vZGU6ICdEUkFGVCcgfCAnQUNUSVZFJykge1xyXG4gICAgaWYgKG1vZGUgPT09ICdBQ1RJVkUnICYmIHRoaXMub3BlblBvcnRhbCAhPT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnKSB7XHJcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aXZlQ29tcG9uZW50LCB7XHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgbWVzc2FnZTogYE9uY2UgcHVibGlzaGVkLCB0aGlzIGFzc2Vzc21lbnQgd2lsbCBiZSBhY3RpdmUgYW5kIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBjb21wbGlhbmNlIHJlc3BvbnNpYmlsaXR5LmAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwb3NpdGlvbjogJ0NFTlRFUicsXHJcbiAgICAgICAgYmFja2dyb3VuZDogJ2JsYWNrJyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJlZi5hZnRlckNsb3NlZC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvc3RBc3Nlc3NtZW50LmVtaXQoe1xyXG4gICAgICAgICAgICAgIG1vZGU6IG1vZGUsXHJcbiAgICAgICAgICAgICAgYXNzZXNzbWVudERldGFpbHM6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudC5lbWl0KHtcclxuICAgICAgICBtb2RlOiBtb2RlLFxyXG4gICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgKm5nSWY9XCJwYWdlTW9kZSA9PT0gJ0VESVQnXCIgY2xhc3M9XCJjcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXJcIiBbY2xhc3MuZnVsbC1wYWdlXT1cImV4cGFuZFBhZ2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlLWFzc2Vzc21lbnQtaGVhZCB2eC1wLTIgdngtcGwtMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgW2NsYXNzLndpdGgtdGVtcGxhdGUtYnRuXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFzc2Vzc21lbnRDb250cm9sSWRcIiBjbGFzcz1cImlkIHZ4LWZzLTEwIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1yLTJcIj57e2Fzc2Vzc21lbnRDb250cm9sSWR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwib3BlblBvcnRhbCA9PT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCIgY2xhc3M9XCJpY29ucyBhcnJvdy1iYWNrIHZ4LW1yLTFcIiAoY2xpY2spPVwic2V0SXNVcGxvYWRlZC5lbWl0KGZhbHNlKVwiPiYjeGU5MWQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkaW5nIHZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIiBbYXBwVG9vbHRpcF09XCJvcGVuUG9ydGFsID09PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCcgPyAnQWRkIENoZWNrcG9pbnRzJyA6YXNzZXNzbWVudE5hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3tvcGVuUG9ydGFsID09PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCcgPyAnQWRkIENoZWNrcG9pbnRzJyA6YXNzZXNzbWVudE5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImVkaXQtYnRuIHZ4LWZzLTE0IHZ4LXR4dC1ibHVlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm9wZW5Qb3J0YWwgIT09ICdSRVNQT05TSUJJTElUWV9DSEVDS1BPSU5UJ1wiIGNsYXNzPVwicGFnZS1kcm9wZG93biB2eC1wLTAgdngtcGwtMSB2eC1wci0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYWN0aW9uLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxhYmVsIHZ4LWZzLTkgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbXItMiB2eC1saC0zXCIgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID4gMFwiPlBBR0Uge3tlZGl0b3JTZXJ2aWNlPy5jdXJyZW50UGFnZU51bWJlcn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiICpuZ0lmPVwiZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9PT0gLTFcIj5XZWxjb21lIFNjcmVlbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGFiZWwgdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIiAqbmdJZj1cImVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPT09IC0yXCI+VGhhbmt5b3UgU2NyZWVuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlciB2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0XCIgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyPT0ncGFnZXNjcmVlbidcIj57e2VkaXRvclNlcnZpY2U/LmN1cnJlbnRQYWdlRGV0YWlscz8ucGFnZU5hbWV9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhcnJvdyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0XCI+JiN4ZTllODs8L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjYWN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWRyb3Bkb3duLXBvcHVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LXAtMCB2eC1tLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBnZW5lcmF0ZVBhZ2VEcm9wZG93bigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ4LWQtYmxvY2sgdngtcC0yIHZ4LW0tMCB2eC13LTEwMFwiIFtpbm5lckhUTUxdPVwiZGF0YT8udGVtcGxhdGVcIiAoY2xpY2spPVwicGFnZUNoYW5nZWQoZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInBhZ2UtbGFiZWwgdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIj5QQUdFPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyIHZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHRcIj4xPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGF8anNvbn19IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1ib3R0b20gdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1wLTJcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGROZXdQYWdlKClcIiBjbGFzcz1cImFkZC1wYWdlIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wbC0yIHZ4LXByLTIgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5BREQgTkVXIFBBR0U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm9wZW5Qb3J0YWwgIT09ICdSRVNQT05TSUJJTElUWV9DSEVDS1BPSU5UJ1wiIGNsYXNzPVwic2V0dGluZ3MtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTYgdngtcC0wIHZ4LXBsLTIgdngtcHItMiB2eC1tLTAgdngtbWwtMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCIgKGNsaWNrKT1cImFzc2Vzc21lbnRTZXR0aW5ncygpXCI+PGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC1kLWZsZXggdngtbXItMVwiPiYjeGU5MTM7PC9pPiBBU1NFU1NNRU5UIFNFVFRJTkdTPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cInRlbXBsYXRlLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1saC02IHZ4LXAtMCB2eC1wbC0yIHZ4LXByLTIgdngtbS0wIHZ4LW1sLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPjxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtZC1mbGV4IHZ4LW1yLTFcIj4mI3hlOWVkOzwvaT4gU0FWRSBBUyBURU1QTEFURTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlLWFzc2Vzc21lbnQtYm9keVwiPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXI9PSdwYWdlc2NyZWVuJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUGFnZUVtcHR5KClcIiBjbGFzcz1cInNlbGVjdC1xdWVzdGlvbi1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWlubmVyIHZ4LXBsLTUgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwicGFnZS10aXRsZSB2eC1mcy0xMSB2eC1mdy02MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTEgdngtbXItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LXctMTAwXCIgKGNsaWNrKT1cImFkZFBhZ2VEZXRhaWxzKClcIj48aSBjbGFzcz1cImljb25zIHZ4LWZzLTE2IHZ4LW1yLTFcIj4mI3hlOTBhOzwvaT4gUEFHRSBUSVRMRTwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nIHZ4LWZzLTE4IHZ4LXBhcmFncmFwaC10eHQgdngtdGV4dC1jZW50ZXIgdngtdy0xMDBcIj5TZWxlY3QgYSBxdWVzdGlvbiB0eXBlIHRvIGJlZ2luOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbi10eXBlIChhZGRRdWVzdGlvbik9XCJlZGl0b3JTZXJ2aWNlLmFkZFF1ZXN0aW9uKCRldmVudClcIj48L2FwcC1xdWVzdGlvbi10eXBlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsb2F0aW5nLWJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvYXRpbmctYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbFwiIChjbGljayk9XCJzZXRJc1VwbG9hZGVkLmVtaXQoZmFsc2UpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgI2Vsc2VCbG9jaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtZWRpdG9yLWxvYWRlcj48L2FwcC1lZGl0b3ItbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUGFnZUVtcHR5KCkgfHwgZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA8IDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3Itc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3Itc2VjdGlvbi1ib2R5IHZ4LWQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRvb2xraXQgKGFkZFF1ZXN0aW9uKT1cImVkaXRvclNlcnZpY2UuYWRkUXVlc3Rpb24oJGV2ZW50KVwiPjwvYXBwLXRvb2xraXQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLXNlY3Rpb24taW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtd2VsY29tZS10aGFua3lvdSAqbmdJZj0nZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllcj09XCJ3ZWxjb21lc2NyZWVuXCInIFtlbnRpdHlEYXRhXT1cImVkaXRvclNlcnZpY2U/LmZvcm1zUGFnZVwiIFtzZXJ2aWNlXT1cImVkaXRvclNlcnZpY2VcIiAoZGVsZXRlUXVlc3Rpb24pPVwiZGVsZXRlUXVlc3Rpb25XaXRoVmFsaWRhdGlvbignd2VsY29tZScpXCI+PC9hcHAtd2VsY29tZS10aGFua3lvdT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YXBwLXByZXZpZXctd2VsY29tZT48L2FwcC1wcmV2aWV3LXdlbGNvbWU+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9J2VkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXI9PVwicGFnZXNjcmVlblwiJz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj0nZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllcj09XCJwYWdlc2NyZWVuXCIgJiYgZWRpdG9yU2VydmljZS5zaG93QWRkUGFnZU9wdGlvbiAnIGNsYXNzPVwicGFnZS10aXRsZSB2eC1mcy0xMSB2eC1mdy02MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1iLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC13LTEwMFwiIChjbGljayk9XCJhZGRQYWdlRGV0YWlscygpXCI+PGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xNiB2eC1tci0xXCI+JiN4ZTkwYTs8L2k+IFBBR0UgVElUTEU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtcGFnZS1oZWFkZXIgKGVkaXQpPVwiYWRkUGFnZURldGFpbHMoKVwiICpuZ0lmPSdlZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyPT1cInBhZ2VzY3JlZW5cIiAmJiBlZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlscycgW3BhZ2VOYW1lXT1cImVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VOYW1lXCIgW3BhZ2VEZXNjcmlwdGlvbl09XCJlZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscy5wYWdlRGVzY3JpcHRpb25cIj48L2FwcC1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzO2xldCBxdWVzdGlvbkluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24ucGFnZSA9PT0gZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciAmJiBlZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyPT0ncGFnZXNjcmVlbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lZGl0b3Itd3JhcHBlciAgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uID09PSBxdWVzdGlvbkluZGV4XCIgW3NlcnZpY2VdPVwiZWRpdG9yU2VydmljZVwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtxdWVzdGlvbkluZGV4XT1cInF1ZXN0aW9uSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3BlblBvcnRhbF09XCJvcGVuUG9ydGFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbGlkUXVlc3Rpb25EYXRhKT1cImNoZWNrZm9yRXJyb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGVRdWVzdGlvbik9XCJkZWxldGVRdWVzdGlvbldpdGhWYWxpZGF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29weVF1ZXN0aW9uKT1cImVkaXRvclNlcnZpY2UuY29weVF1ZXN0aW9uKCRldmVudClcIj48L2FwcC1lZGl0b3Itd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1wcmV2aWV3LXdyYXBwZXIgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uICE9PSBxdWVzdGlvbkluZGV4XCIgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtxdWVzdGlvbkluZGV4XT1cInF1ZXN0aW9uSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZUFjdGl2ZVF1ZXN0aW9uKT1cImVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gPSAkZXZlbnRcIj48L2FwcC1wcmV2aWV3LXdyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXh0LXF1ZXN0aW9uLWFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicGFnZS10aXRsZSB2eC1mcy0xMSB2eC1mdy02MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1iLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC13LTEwMFwiIChjbGljayk9XCJvcGVuUXVlc3Rpb24oKVwiPjxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTYgdngtbXItMVwiPiYjeGU5MGE7PC9pPiBORVhUIFFVRVNUSU9OPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5leHQtcXVlc3Rpb24tcG9wdXAgdngtcC0zXCIgKm5nSWY9XCJoaWRlUXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbi10eXBlIChhZGRRdWVzdGlvbik9XCJlZGl0b3JTZXJ2aWNlLmFkZFF1ZXN0aW9uKCRldmVudCk7Y2xvc2VRdWVzdGlvbigpXCI+PC9hcHAtcXVlc3Rpb24tdHlwZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiICpuZ0lmPVwiaGlkZVF1ZXN0aW9uXCIgKGNsaWNrKT1cImNsb3NlUXVlc3Rpb24oKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwib3BlblBvcnRhbCAhPT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCIgKGNsaWNrKT1cImFkZE5ld1BhZ2UoKVwiIGNsYXNzPVwicGFnZS10aXRsZSB2eC1mcy0xMSB2eC1mdy02MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1iLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC13LTEwMFwiPjxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTYgdngtbXItMVwiPiYjeGU5MGE7PC9pPiBBREQgTkVXIFBBR0U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXNpZGUtYnRuXCIgKm5nSWY9XCJvcGVuUG9ydGFsICE9PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZXhwYW5kUGFnZVwiIChjbGljayk9XCJjbGlja0V4cGFuZCgpXCIgY2xhc3M9XCJmdWxsc2NyZWVuLWJ0biB2eC1mcy0xNCB2eC10eHQtYmx1ZSB2eC1wLTAgdngtbS0wIHZ4LW1iLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiIFthcHBUb29sdGlwXT1cIidFeHBhbmQgUGFnZSdcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTQ1OzwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJleHBhbmRQYWdlXCIgKGNsaWNrKT1cImNsb3NlRXhwYW5kKClcIiBjbGFzcz1cImZ1bGxzY3JlZW4tYnRuIHZ4LWZzLTE0IHZ4LXR4dC1ibHVlIHZ4LXAtMCB2eC1tLTAgdngtbWItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCIgW2FwcFRvb2x0aXBdPVwiJ1NocmluayBQYWdlJ1wiIHBsYWNlbWVudD1cImxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5NDQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXI9PSdwYWdlc2NyZWVuJ1wiIChjbGljayk9XCJkZWxldGVQYWdlKClcIiBjbGFzcz1cImRlbGV0ZS1idG4gdngtZnMtMTQgdngtdHh0LXJlZCB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlIFBhZ2UnXCIgcGxhY2VtZW50PVwibGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3Itc2VjdGlvbi1mb290ZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1tdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldElzVXBsb2FkZWQuZW1pdChmYWxzZSlcIiBjbGFzcz1cImNhbmNlbC1idG4gdngtZnMtMTQgdngtZnctNTAwIHZ4LXR4dC1yZWQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtbWwtMSB2eC1tci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5DQU5DRUw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgKm5nSWY9XCJvcGVuUG9ydGFsID09PSAnQVNTRVNTTUVOVF9JTVBPUlQnXCIgKGNsaWNrKT1cInN1Ym1pdEFmdGVyRXJyb3JDaGVjaygnRFJBRlQnKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJhc3Nlc3NtZW50Q3VycmVudFN0YXRlID09PSAnQUNUSVZFJ1wiIGNsYXNzPVwiIHdoaXRlLWJ0biB2eC1mcy0xNCB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtbWwtMSB2eC1tci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5TQVZFIEFTIERSQUZUPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gICpuZ0lmPVwib3BlblBvcnRhbCA9PT0gJ0FTU0VTU01FTlRfSU1QT1JUJ1wiIChjbGljayk9XCJzdWJtaXRBZnRlckVycm9yQ2hlY2soJ0FDVElWRScpXCIgY2xhc3M9XCIgYmx1ZS1idG4gdngtZnMtMTQgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1tbC0xIHZ4LW1yLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiPlBVQkxJU0g8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm9wZW5Qb3J0YWwgPT09ICdSRVNQT05TSUJJTElUWV9DSEVDS1BPSU5UJ1wiIChjbGljayk9XCJzdWJtaXRBZnRlckVycm9yQ2hlY2soJ0FDVElWRScpXCIgY2xhc3M9XCIgYmx1ZS1idG4gdngtZnMtMTQgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1tbC0xIHZ4LW1yLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiPk5FWFQgJm5ic3A7PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWU7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKGNsaWNrKT1cInBhZ2VNb2RlID0gJ1BSRVZJRVcnXCIgY2xhc3M9XCJwcmV2aWV3LWJ0biB2eC1mcy0yMCB2eC10eHQtd2hpdGUgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCIgW2FwcFRvb2x0aXBdPVwiJ1ByZXZpZXcnXCIgcGxhY2VtZW50PVwibGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZWFlNTs8L2k+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cImNsb3NlLWJ0biB2eC1mcy0xMiB2eC10eHQtd2hpdGUgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCIgW2FwcFRvb2x0aXBdPVwiJ0Nsb3NlJ1wiIHBsYWNlbWVudD1cImxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YXBwLWFzc2Vzc21lbnQtcHJldmlldy1jb250YWluZXIgKm5nSWY9XCJwYWdlTW9kZSA9PT0gJ1BSRVZJRVcnXCIgW3F1ZXN0aW9uRGV0YWlsc109XCJlZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZVwiPjwvYXBwLWFzc2Vzc21lbnQtcHJldmlldy1jb250YWluZXI+IC0tPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjwhLS0gPGFwcC1lZGl0b3ItbG9hZGVyICpuZ0lmPVwiIWlzTG9hZGVkXCI+PC9hcHAtZWRpdG9yLWxvYWRlcj4gLS0+XHJcbiJdfQ==
495
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYXNzZXNzbWVudC1lZGl0b3IvY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL2NyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lci9jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRUwsWUFBWSxFQUNaLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDcEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFFOUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEYsTUFBTSxPQUFPLGtDQUFrQztJQStCN0MsWUFDVSxNQUFxQixFQUN0QixhQUE0QjtJQUNuQyx5Q0FBeUM7SUFDakMsS0FBcUIsRUFDckIsUUFBeUIsRUFDekIsTUFBYztRQUxkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDdEIsa0JBQWEsR0FBYixh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OzRCQUNWLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUzt5QkFDaEQsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2dCQUNWLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUzthQUNoRCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OytIQTdoQlUsa0NBQWtDO21IQUFsQyxrQ0FBa0MsMldBRmxDLENBQUMsYUFBYSxDQUFDLDBCQ3ZCNUIsMGlnQkE0VkE7MkZEblVhLGtDQUFrQztrQkFOOUMsU0FBUzsrQkFDRSxpQ0FBaUMsYUFHaEMsQ0FBQyxhQUFhLENBQUM7Z05BYWpCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVzQixjQUFjO3NCQUExQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFHTSxjQUFjO3NCQUExQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFNOEIsZ0JBQWdCO3NCQUFwRSxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPdXRwdXQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZGRQYWdlRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWRkLXBhZ2UtZGV0YWlscy9hZGQtcGFnZS1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRTZXR0aW5nc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXNzZXNzbWVudC1zZXR0aW5ncy9hc3Nlc3NtZW50LXNldHRpbmdzLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91aS1raXQvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERlbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9hY3Rpb24tZGlhbG9nL2RlbGV0ZS9kZWxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWN0aXZlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L2FjdGlvbi1kaWFsb2cvYWN0aXZlL2FjdGl2ZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnXSxcclxuICBwcm92aWRlcnM6IFtFZGl0b3JTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZUFzc2Vzc21lbnRDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHNob3dDb2xsYXBzZSA9IGZhbHNlO1xyXG4gIGV4cGFuZFBhZ2UgPSBmYWxzZTtcclxuICBoaWRlUXVlc3Rpb24gPSBmYWxzZTtcclxuICBhc3Nlc3NtZW50SWQgPSAnJztcclxuICBhc3Nlc3NtZW50TmFtZSA9ICcnO1xyXG4gIGFzc2Vzc21lbnRDYXRlZ29yeSA9ICcnO1xyXG4gIGFzc2Vzc21lbnRDb250cm9sSWQgPSAnJztcclxuICBhc3Nlc3NtZW50Q3VycmVudFN0YXRlID0gJ0RSQUZUJztcclxuICBwYWdlTW9kZTogJ0VESVQnIHwgJ1BSRVZJRVcnID0gJ0VESVQnO1xyXG4gIGlzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb3BlblBvcnRhbDogJ0FTU0VTU01FTlRfSU1QT1JUJyB8ICdSRVNQT05TSUJJTElUWV9DSEVDS1BPSU5UJyB8ICcnID1cclxuICAgICcnO1xyXG4gIEBPdXRwdXQoKSBzZXRJc1VwbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwb3N0QXNzZXNzbWVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQElucHV0KCdhc3Nlc3NtZW50SlNPTicpIHNldCBhc3Nlc3NtZW50RGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVBc3Nlc3NtZW50KHZhbHVlKTtcclxuICB9XHJcbiAgQElucHV0KCdjaGVja3BvaW50SlNPTicpIHNldCBjaGVja3BvaW50RGF0YSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDaGVja3BvaW50KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qIFdoZW4gdGhlIFwiRXNjYXBlXCIga2V5IGlzIHByZXNzZWQsIGl0IGVtaXRzIGFuIGV2ZW50IHRvIHNldCB0aGUgdmFsdWUgb2YgXCJpc1VwbG9hZGVkXCIgdG9cclxuICBmYWxzZS4gYW5kIGxlZnQgcG9wdXAgd2lsbCBjbG9zZS4gKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoXHJcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudFxyXG4gICkge1xyXG4gICAgdGhpcy5zZXRJc1VwbG9hZGVkLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLFxyXG4gICAgLy8gcHJpdmF0ZSAgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWRkUGFnZSgpO1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLm51bWJlck9mUGFnZXMoKTtcclxuICAgIC8vIHRoaXMuaW5pdGlhbGl6ZUFzc2Vzc21lbnQoKTtcclxuICB9XHJcbiAgdHJpZ2dlclByZXZpZXdXaXRoVmFsaWRhdGlvbigpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbkluZGV4Lm5leHQoLTEwKTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICB9XHJcbiAgaW5pdGlhbGl6ZUFzc2Vzc21lbnQoYXNzZXNzbWVudERhdGE6IGFueSkge1xyXG4gICAgaWYgKGFzc2Vzc21lbnREYXRhKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UgPSBhc3Nlc3NtZW50RGF0YS5hc3Nlc3NtZW50RGF0YTtcclxuICAgICAgdGhpcy5hc3Nlc3NtZW50TmFtZSA9IGFzc2Vzc21lbnREYXRhLm1ldGFkYXRhLmFzc2Vzc21lbnRfbmFtZTtcclxuICAgICAgdGhpcy5hc3Nlc3NtZW50Q2F0ZWdvcnkgPSBhc3Nlc3NtZW50RGF0YS5tZXRhZGF0YS5jYXRlZ29yeV9hcnI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplQ2hlY2twb2ludChjaGVja3BvaW50RGF0YTogYW55KSB7XHJcbiAgICBpZiAoY2hlY2twb2ludERhdGEgJiYgT2JqZWN0LmtleXMoY2hlY2twb2ludERhdGEpPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UgPSBjaGVja3BvaW50RGF0YTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFsbFBhZ2VzKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzID0gW1xyXG4gICAgICAuLi5uZXcgU2V0KFxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMubWFwKChlbGU6IGFueSkgPT4gZWxlLnBhZ2UpXHJcbiAgICAgICksXHJcbiAgICBdO1xyXG4gICAgdGhpcy5nZXRQYWdlTmFtZSgxKTtcclxuICB9XHJcblxyXG4gIGFkZFBhZ2VEZXRhaWxzKCkge1xyXG4gICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2cub3BlbihBZGRQYWdlRGV0YWlsc0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcGFnZTogdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICAgIHBhZ2VEZXRhaWxzOiB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLFxyXG4gICAgICAgIHJlZjogdGhpcy5lZGl0b3JTZXJ2aWNlLFxyXG4gICAgICB9LFxyXG4gICAgICBwb3NpdGlvbjogJ1JJR0hUJyxcclxuICAgICAgYmFja2dyb3VuZDogJ2JsYWNrJyxcclxuICAgIH0pO1xyXG4gICAgcmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2VuZXJhdGVQYWdlRHJvcGRvd24oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVudGl0eVNldHRpbmdzOiBhbnkgPSB7XHJcbiAgICBwYW5lbFRpdGxlOiAnJyxcclxuICB9O1xyXG5cclxuICBhc3Nlc3NtZW50U2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLmVudGl0eVNldHRpbmdzID0gdGhpcy5nZXRTZXR0aW5nc0RhdGEoKTtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQXNzZXNzbWVudFNldHRpbmdzQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgc2V0dGluZ3M6IHRoaXMuZW50aXR5U2V0dGluZ3MsIHNlcnZpY2U6IHRoaXMuZWRpdG9yU2VydmljZSB9LFxyXG4gICAgICBwb3NpdGlvbjogJ1JJR0hUJyxcclxuICAgICAgYmFja2dyb3VuZDogJ2JsYWNrJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2V0dGluZ3NEYXRhKCkge1xyXG4gICAgbGV0IHNldHRpbmdzOiBhbnkgPSB7XHJcbiAgICAgIHBhbmVsVGl0bGU6IGBBc3Nlc3NtZW50IHNldHRpbmdzYCxcclxuXHJcbiAgICAgIHNldHRpbmdzRWxlbWVudHM6IFtdLFxyXG4gICAgfTtcclxuICAgIHNldHRpbmdzLnNldHRpbmdzRWxlbWVudHMucHVzaCh7XHJcbiAgICAgIHR5cGU6ICdBU1NFU1NNRU5UJyxcclxuICAgICAgZW50aXR5VHlwZTogJ0FTU0VTU01FTlQnLFxyXG4gICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgIGlzRW5hYmxlZDogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5zZXR0aW5ncy5hc3Nlc3NtZW50TW9kZSxcclxuICAgICAgaGVscGluZ1RleHQ6XHJcbiAgICAgICAgJ1lvdSBjYW4gY29uZmlndXJlIHNjb3JlcyBmb3IgdGhlIHF1ZXN0aW9ucyBhbmQgYW5hbHl6ZSB0aGUgcmVzcG9uc2VzIHN1Ym1pdHRlZCBieSB0aGUgcmVzcG9uZGVudCBiYXNlZCBvbiB0aGVzZSBzY29yZXMuJyxcclxuICAgICAgZGVmYXVsdFNjb3JlOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLmRlZmF1bHRTY29yZSxcclxuICAgICAgbmVnYXRpdmVTY29yZUNyaXRlcmlhOlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3MubmVnYXRpdmVTY29yZUNyaXRlcmlhLFxyXG4gICAgICBuZWdhdGl2ZVNjb3JlOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnNldHRpbmdzLm5lZ2F0aXZlU2NvcmUsXHJcbiAgICAgIHdlaWdodGFnZUVuYWJsZWQ6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2Uuc2V0dGluZ3Mud2VpZ2h0YWdlRW5hYmxlZCxcclxuICAgICAgc2V0dGluZ1RpdGxlOiAnQVNTRVNTTUVOVCBNT0RFJyxcclxuICAgICAgc2V0dGluZ0VuYWJsZVRleHQ6IGBFbmFibGUgYXNzZXNzbWVudCBtb2RlIGZvciB0aGlzIGFzc2Vzc21lbnRgLFxyXG4gICAgICB1cGRhdGVUeXBlOiAnTEFaWScsXHJcbiAgICB9KTtcclxuICAgIHNldHRpbmdzLnNldHRpbmdzRWxlbWVudHMucHVzaCh7XHJcbiAgICAgIHR5cGU6ICdSRVNQT05TRV9TRUdNRU5UJyxcclxuICAgICAgZW50aXR5VHlwZTogJ0FTU0VTU01FTlQnLFxyXG4gICAgICBoZWxwaW5nVGV4dDpcclxuICAgICAgICAnUmVzcG9uc2Ugc2VnbWVudHMgbGV0IHlvdSBkaXZpZGUgdGhlIHJlc3BvbnNlcyBpbnRvIHNlcGFyYXRlIHBhcnRzIG9yIHNlY3Rpb25zIGZvciBlYXNpZXIgYW5hbHlzaXMgb2YgZGF0YSBhbmQgYXNzaXN0IGluIGRlY2lzaW9uIG1ha2luZy4nLFxyXG4gICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgIGlzRW5hYmxlZDpcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnJlc3BvbnNlU2VnbWVudFsnaXNFbmFibGVkJ10gPz8gZmFsc2UsXHJcbiAgICAgIHNldHRpbmdUaXRsZTogJ1JFU1BPTlNFIFNFR01FTlRTJyxcclxuICAgICAgc2V0dGluZ0VuYWJsZVRleHQ6IGBDb25maWd1cmUgUmVzcG9uc2UgU2VnbWVudHMgZm9yIHRoaXMgYXNzZXNzbWVudGAsXHJcbiAgICAgIHVwZGF0ZVR5cGU6ICdMQVpZJyxcclxuICAgICAgc2VnbWVudERhdGE6IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UucmVzcG9uc2VTZWdtZW50LFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBjbGlja0NvbGxhcHNlKCkge1xyXG4gICAgdGhpcy5zaG93Q29sbGFwc2UgPSAhdGhpcy5zaG93Q29sbGFwc2U7XHJcbiAgfVxyXG5cclxuICBjbGlja0V4cGFuZCgpIHtcclxuICAgIHRoaXMuZXhwYW5kUGFnZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZUV4cGFuZCgpIHtcclxuICAgIHRoaXMuZXhwYW5kUGFnZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUGFnZSgpIHtcclxuICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHsgbWVzc2FnZTogYFRoaXMgYWN0aW9uIHdpbGwgPHN0cm9uZz5yZW1vdmU8L3N0cm9uZz4gdGhpcyBwYWdlLmAgfSxcclxuICAgICAgcG9zaXRpb246ICdDRU5URVInLFxyXG4gICAgICBiYWNrZ3JvdW5kOiAnYmxhY2snLFxyXG4gICAgfSk7XHJcbiAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVBhZ2VDb25maXJtKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVBhZ2VDb25maXJtKGNvbmZpcm1EZWxldGU6IGFueSkge1xyXG4gICAgaWYgKGNvbmZpcm1EZWxldGUpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmZpbHRlcihcclxuICAgICAgICAocGFnZU51bTogYW55KSA9PiBwYWdlTnVtICE9PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzID0gdGhpcy51cGRhdGVQYWdlTnVtYmVyc0ZvckFsbFBhZ2VzKFxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hbGxQYWdlc1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdCA9XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QuZmlsdGVyKFxyXG4gICAgICAgICAgKHBhZ2VEZXRhaWw6IGFueSkgPT5cclxuICAgICAgICAgICAgcGFnZURldGFpbC5wYWdlTnVtYmVyICE9PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdCA9XHJcbiAgICAgICAgdGhpcy51cGRhdGVQYWdlTnVtYmVyRm9yUGFnZURldGFpbHMoXHJcbiAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdFxyXG4gICAgICAgICk7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMgPVxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMuZmlsdGVyKFxyXG4gICAgICAgICAgKGVsZW1lbnREZXRhaWw6IGFueSkgPT5cclxuICAgICAgICAgICAgZWxlbWVudERldGFpbC5wYWdlICE9PSB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXJcclxuICAgICAgICApO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzID0gdGhpcy51cGRhdGVQYWdlTnVtYmVyRm9yUXVlc3Rpb25zKFxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHNcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA+IDEpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgLT0gMTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldFBhZ2VOYW1lKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcik7XHJcbiAgICAgIHRoaXMuY2hlY2tGb3JQYWdlRGV0YWlscygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBhZ2VOdW1iZXJzRm9yQWxsUGFnZXMoYXJyYXlUb0JlVXBkYXRlZDogYW55KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5VG9CZVVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgPj0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyIC0gMSkge1xyXG4gICAgICAgIGFycmF5VG9CZVVwZGF0ZWRbaV0gLT0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycmF5VG9CZVVwZGF0ZWQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQYWdlTnVtYmVyRm9yUGFnZURldGFpbHMoYXJyYXlUb0JlVXBkYXRlZDogYW55KSB7XHJcbiAgICBhcnJheVRvQmVVcGRhdGVkLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5wYWdlTnVtYmVyID49IHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcikge1xyXG4gICAgICAgIGVsZW1lbnQucGFnZU51bWJlciAtPSAxO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnJheVRvQmVVcGRhdGVkO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFnZU51bWJlckZvclF1ZXN0aW9ucyhhcnJheVRvQmVVcGRhdGVkOiBhbnkpIHtcclxuICAgIGFycmF5VG9CZVVwZGF0ZWQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnBhZ2UgPj0gdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyKSB7XHJcbiAgICAgICAgZWxlbWVudC5wYWdlIC09IDE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFycmF5VG9CZVVwZGF0ZWQ7XHJcbiAgfVxyXG5cclxuICBvcGVuUXVlc3Rpb24oKSB7XHJcbiAgICB0aGlzLmhpZGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZVF1ZXN0aW9uKCkge1xyXG4gICAgdGhpcy5oaWRlUXVlc3Rpb24gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVF1ZXN0aW9uV2l0aFZhbGlkYXRpb24oaW5kZXg6IGFueSkge1xyXG4gICAgaWYgKGluZGV4ID09PSAnd2VsY29tZScpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNXZWxjb21lID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5kZWxldGVRdWVzdGlvbihpbmRleCk7XHJcbiAgfVxyXG5cclxuICBjaGVja2ZvckVycm9yKG1vZGU/OiBhbnkpIHtcclxuICAgIC8vIHRoaXMubW9yZU9wdGlvbnMgPSBmYWxzZTtcclxuICAgIGNvbnN0IGVycm9yUXVlc3Rpb25JbmRleCA9IHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMuZmluZEluZGV4KFxyXG4gICAgICAoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PlxyXG4gICAgICAgIGVsZW1lbnQuZXJyb3JBcnJheSAmJlxyXG4gICAgICAgIGVsZW1lbnQuZXJyb3JBcnJheSAhPT0ge30gJiZcclxuICAgICAgICBPYmplY3QudmFsdWVzKGVsZW1lbnQuZXJyb3JBcnJheSkubGVuZ3RoID4gMFxyXG4gICAgKTtcclxuICAgIGlmIChlcnJvclF1ZXN0aW9uSW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAobW9kZSA9PT0gJ2Z1bGwnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID1cclxuICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHNbZXJyb3JRdWVzdGlvbkluZGV4XS5wYWdlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtb2RlICE9PSAncGFydGlhbCcpIHtcclxuICAgICAgICAvLyB0aGlzLmdldFBhZ2VOYW1lKHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlcik7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IGVycm9yUXVlc3Rpb25JbmRleDtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KGVycm9yUXVlc3Rpb25JbmRleCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzW2Vycm9yUXVlc3Rpb25JbmRleF0ubmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAocXVlc3Rpb24pIHtcclxuICAgICAgICAgICAgcXVlc3Rpb24uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDIwMCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1vZGUgPT09ICdzYXZlJykge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG1vZGUgPT09ICdzYXZlJykge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC0xMDtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVQYWdlRHJvcGRvd24oKSB7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNXZWxjb21lID09PSB0cnVlKSB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IC0xLFxyXG4gICAgICAgIHRlbXBsYXRlOiBgPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlclwiPldlbGNvbWUgU2NyZWVuPC9zcGFuPmAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmtzID09PSB0cnVlKSB7XHJcbiAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgdmFsdWU6IC0yLFxyXG4gICAgICAgIHRlbXBsYXRlOiBgPHNwYW4gY2xhc3M9XCJwYWdlLW51bWJlclwiPlRoYW5rIHlvdSBTY3JlZW48L3NwYW4+YCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgIHZhbHVlOiBlbGVtZW50LFxyXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLmdldFBhZ2VOYW1lRm9yRHJvcGRvd24oZWxlbWVudCksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlTmFtZUZvckRyb3Bkb3duKHBhZ2VOdW1iZXI6IGFueSkge1xyXG4gICAgbGV0IHBhZ2VWYWx1ZSA9IGA8c3BhbiBjbGFzcz1cInBhZ2UtbnVtYmVyXCI+UGFnZSAke3BhZ2VOdW1iZXJ9PC9zcGFuPmA7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLnBhZ2VEZXRhaWxzTGlzdC5mb3JFYWNoKChwYWdlRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhZ2VEZXRhaWwucGFnZU51bWJlciA9PT0gcGFnZU51bWJlciAmJiBwYWdlRGV0YWlsLnBhZ2VOYW1lICE9PSAnJykge1xyXG4gICAgICAgIHBhZ2VWYWx1ZSA9IGA8c3BhbiBjbGFzcz1cInBhZ2UtbGFiZWwgdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIj5QQUdFPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXIgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiPiR7cGFnZURldGFpbC5wYWdlTnVtYmVyfTwvc3Bhbj5gO1xyXG4gICAgICAgIC8vcGFnZVZhbHVlID0gYDxzcGFuIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiPlBhZ2UgPC9zcGFuPiA8c3BhbiAke3BhZ2VEZXRhaWwucGFnZU51bWJlcn08L3NwYW4+IDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXIgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiPiAke3BhZ2VEZXRhaWwucGFnZU5hbWV9PC9zcGFuPmA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHBhZ2VWYWx1ZTtcclxuICB9XHJcblxyXG4gIHBhZ2VDaGFuZ2VkKGV2dDogYW55KSB7XHJcbiAgICBpZiAoZXZ0LnZhbHVlID09PSAtMSkge1xyXG4gICAgICB0aGlzLnNldElkZW50aWZpZXIoJ3dlbGNvbWVzY3JlZW4nKTtcclxuICAgIH0gZWxzZSBpZiAoZXZ0LnZhbHVlID09PSAtMikge1xyXG4gICAgICB0aGlzLnNldElkZW50aWZpZXIoJ3RoYW5reW91c2NyZWVuJyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2dC52YWx1ZSA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IGV2dD8udmFsdWU7XHJcbiAgICAgIHRoaXMuc2V0SWRlbnRpZmllcigncGFnZXNjcmVlbicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SWRlbnRpZmllcihzY3JlZW46IGFueSkge1xyXG4gICAgdGhpcy5jaGFuZ2VUb0luYWN0aXZlKCk7XHJcbiAgICBpZiAoc2NyZWVuID09PSAnd2VsY29tZXNjcmVlbicpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3dlbGNvbWVzY3JlZW4nO1xyXG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPSAtMTtcclxuICAgIH1cclxuICAgIGlmIChzY3JlZW4gPT09ICd0aGFua3lvdXNjcmVlbicpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3RoYW5reW91c2NyZWVuJztcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gLTI7XHJcbiAgICB9XHJcbiAgICBpZiAoc2NyZWVuID09PSAncGFnZXNjcmVlbicpIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID0gJ3BhZ2VzY3JlZW4nO1xyXG4gICAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5hZGRQYWdlKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID0gMTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPT09IC0xIHx8XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyID09PSAtMlxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPVxyXG4gICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFsbFBhZ2VzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRQYWdlTmFtZSh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnZU5hbWUocGFnZU51bWJlcjogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzID0ge1xyXG4gICAgICBwYWdlTmFtZTogJycsXHJcbiAgICAgIHBhZ2VOdW1iZXI6IDAsXHJcbiAgICAgIHBhZ2VEZXNjcmlwdGlvbjogJycsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5wYWdlRGV0YWlsc0xpc3QuZm9yRWFjaCgocGFnZURldGFpbDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChwYWdlRGV0YWlsLnBhZ2VOdW1iZXIgPT09IHBhZ2VOdW1iZXIpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VOdW1iZXIgPVxyXG4gICAgICAgICAgcGFnZURldGFpbC5wYWdlTnVtYmVyO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZU5hbWUgPSBwYWdlRGV0YWlsLnBhZ2VOYW1lO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZURlc2NyaXB0aW9uID1cclxuICAgICAgICAgIHBhZ2VEZXRhaWwucGFnZURlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tGb3JQYWdlRGV0YWlscygpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JQYWdlRGV0YWlscygpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlRGV0YWlscyA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZU5hbWUgPT09ICcnXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlscyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNob3dBZGRQYWdlT3B0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zaG93UGFnZURldGFpbHMgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVG9JbmFjdGl2ZSgpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9IC01O1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFjdGl2ZVF1ZXN0aW9uSW5kZXgubmV4dCgtNSk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdQYWdlKCkge1xyXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmFkZFBhZ2UoKTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMgPSB7XHJcbiAgICAgIHBhZ2VOYW1lOiAnJyxcclxuICAgICAgcGFnZU51bWJlcjogdGhpcy5lZGl0b3JTZXJ2aWNlLmN1cnJlbnRQYWdlTnVtYmVyLFxyXG4gICAgICBwYWdlRGVzY3JpcHRpb246ICcnLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5zaG93UGFnZURldGFpbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5zaG93QWRkUGFnZU9wdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLmdlbmVyYXRlUGFnZURyb3Bkb3duKCk7XHJcbiAgfVxyXG5cclxuICBjYXBpdGFsaXplU3RyaW5nKHN0cmluZ1ZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBzdHJpbmdWYWx1ZVswXS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nVmFsdWUuc2xpY2UoMSk7XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVBhZ2VDbGljaygpIHtcclxuICAgIC8vIHRoaXMuc2hvd0RlbGV0ZVBvcHVwID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlzUGFnZUVtcHR5KCkge1xyXG4gICAgaWYgKFxyXG4gICAgICAhW1xyXG4gICAgICAgIC4uLm5ldyBTZXQoXHJcbiAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmVsZW1lbnRzLm1hcChcclxuICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT4gZWxlbWVudC5wYWdlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKSxcclxuICAgICAgXS5pbmNsdWRlcyh0aGlzLmVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBZnRlckVycm9yQ2hlY2sobW9kZTogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb25JbmRleC5uZXh0KC0xMCk7XHJcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gPSAtMTA7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9PT0gJ3dlbGNvbWVzY3JlZW4nIHx8XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9PT0gJ3RoYW5reW91c2NyZWVuJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9IDE7XHJcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9ICdwYWdlc2NyZWVuJztcclxuICAgIH1cclxuICAgIC8vdGhpcy5wYWdlTW9kZSA9ICdFRElUJztcclxuXHJcbiAgICB0aGlzLnZhbGlkYXRlV2VsY29tZVRoYW5rWW91KCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5jaGVja2ZvckVycm9yKCdmdWxsJykpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHMpIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIVsnY2hlY2tib3gnLCAnZHJvcGRvd24nLCAnbXVsdGlwbGUtY2hvaWNlJ10uaW5jbHVkZXMocXVlc3Rpb24udHlwZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcykge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNvbG9yID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zY29yZSA9IDE7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LmlzRmFpbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcXVlc3Rpb24ub3RoZXJDb25maWcgPSB7IGNvbG9yOiAnJywgaXNGYWlsZWQ6IGZhbHNlLCBzY29yZTogMCB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNhdmUobW9kZSk7XHJcbiAgICAgIH1cclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVdlbGNvbWVUaGFua1lvdSgpIHtcclxuICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZTtcclxuICAgIGlmIChxdWVzdGlvbi5oYXNXZWxjb21lID09PSB0cnVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBxdWVzdGlvbi5oYXNXZWxjb21lRGVzY3JpcHRpb24gPT09IHRydWUgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lRGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICBxdWVzdGlvbi5oYXNXZWxjb21lSW1hZ2UgPT09IHRydWUgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lSW1hZ2UpLmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVJbWFnZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lRGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLndlbGNvbWVUZXh0KS5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi53ZWxjb21lSW1hZ2UpLmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1dlbGNvbWVEZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNXZWxjb21lSW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzVGhhbmtzID09PSB0cnVlKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBxdWVzdGlvbi5oYXNUaGFua3lvdURlc2NyaXB0aW9uID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VEZXNjcmlwdGlvbikubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmt5b3VEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICBxdWVzdGlvbi5oYXNUaGFua3lvdUltYWdlID09PSB0cnVlICYmXHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmV4dHJhY3QocXVlc3Rpb24udGhhbmt5b3VJbWFnZSkubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmt5b3VJbWFnZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi50aGFua3lvdURlc2NyaXB0aW9uKS5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZXh0cmFjdChxdWVzdGlvbi50aGFua3lvdVRleHQpLmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5leHRyYWN0KHF1ZXN0aW9uLnRoYW5reW91SW1hZ2UpLmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLmhhc1RoYW5rcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuaGFzVGhhbmt5b3VEZXNjcmlwdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZS5oYXNUaGFua3lvdUltYWdlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZShtb2RlOiAnRFJBRlQnIHwgJ0FDVElWRScpIHtcclxuICAgIGlmIChtb2RlID09PSAnQUNUSVZFJyAmJiB0aGlzLm9wZW5Qb3J0YWwgIT09ICdSRVNQT05TSUJJTElUWV9DSEVDS1BPSU5UJykge1xyXG4gICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGl2ZUNvbXBvbmVudCwge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIG1lc3NhZ2U6IGBPbmNlIHB1Ymxpc2hlZCwgdGhpcyBhc3Nlc3NtZW50IHdpbGwgYmUgYWN0aXZlIGFuZCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgY29tcGxpYW5jZSByZXNwb25zaWJpbGl0eS5gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcG9zaXRpb246ICdDRU5URVInLFxyXG4gICAgICAgIGJhY2tncm91bmQ6ICdibGFjaycsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWYuYWZ0ZXJDbG9zZWQuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudC5lbWl0KHtcclxuICAgICAgICAgICAgICBtb2RlOiBtb2RlLFxyXG4gICAgICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB0aGlzLmVkaXRvclNlcnZpY2UuZm9ybXNQYWdlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucG9zdEFzc2Vzc21lbnQuZW1pdCh7XHJcbiAgICAgICAgbW9kZTogbW9kZSxcclxuICAgICAgICBhc3Nlc3NtZW50RGV0YWlsczogdGhpcy5lZGl0b3JTZXJ2aWNlLmZvcm1zUGFnZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXI+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJwYWdlTW9kZSA9PT0gJ0VESVQnXCJcclxuICAgIGNsYXNzPVwiY3JlYXRlLWFzc2Vzc21lbnQtY29udGFpbmVyXCJcclxuICAgIFtjbGFzcy5mdWxsLXBhZ2VdPVwiZXhwYW5kUGFnZVwiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNyZWF0ZS1hc3Nlc3NtZW50LWhlYWQgdngtcC0yIHZ4LXBsLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJsZWZ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgIFtjbGFzcy53aXRoLXRlbXBsYXRlLWJ0bl09XCJmYWxzZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50Q29udHJvbElkXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWQgdngtZnMtMTAgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMlwiXHJcbiAgICAgICAgICA+e3sgYXNzZXNzbWVudENvbnRyb2xJZCB9fTwvc3BhblxyXG4gICAgICAgID5cclxuICAgICAgICA8aVxyXG4gICAgICAgICAgKm5nSWY9XCJvcGVuUG9ydGFsID09PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpY29ucyBhcnJvdy1iYWNrIHZ4LW1yLTFcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldElzVXBsb2FkZWQuZW1pdChmYWxzZSlcIlxyXG4gICAgICAgICAgPiYjeGU5MWQ7PC9pXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRpbmcgdngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiXHJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgb3BlblBvcnRhbCA9PT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXHJcbiAgICAgICAgICAgICAgPyAnQWRkIENoZWNrcG9pbnRzJ1xyXG4gICAgICAgICAgICAgIDogYXNzZXNzbWVudE5hbWVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgID57e1xyXG4gICAgICAgICAgICBvcGVuUG9ydGFsID09PSBcIlJFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlRcIlxyXG4gICAgICAgICAgICAgID8gXCJBZGQgQ2hlY2twb2ludHNcIlxyXG4gICAgICAgICAgICAgIDogYXNzZXNzbWVudE5hbWVcclxuICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImVkaXQtYnRuIHZ4LWZzLTE0IHZ4LXR4dC1ibHVlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT48L2J1dHRvbj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwib3BlblBvcnRhbCAhPT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCJcclxuICAgICAgICAgIGNsYXNzPVwicGFnZS1kcm9wZG93biB2eC1wLTAgdngtcGwtMSB2eC1wci0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgIGFwcFBvcG92ZXJcclxuICAgICAgICAgIChjbGljayk9XCJhY3Rpb24ucG9wb3ZlcigpXCJcclxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cInBhZ2UtbGFiZWwgdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPiAwXCJcclxuICAgICAgICAgICAgPlBBR0Uge3sgZWRpdG9yU2VydmljZT8uY3VycmVudFBhZ2VOdW1iZXIgfX08L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9PT0gLTFcIlxyXG4gICAgICAgICAgICA+V2VsY29tZSBTY3JlZW48L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZU51bWJlciA9PT0gLTJcIlxyXG4gICAgICAgICAgICA+VGhhbmt5b3UgU2NyZWVuPC9zcGFuXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXIgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiICpuZ0lmPVwiZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllcj09J3BhZ2VzY3JlZW4nXCI+e3tlZGl0b3JTZXJ2aWNlPy5jdXJyZW50UGFnZURldGFpbHM/LnBhZ2VOYW1lfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhcnJvdyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0XCI+JiN4ZTllODs8L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGFwcC1wb3BvdmVyICNhY3Rpb24+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1kcm9wZG93bi1wb3B1cFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJ2eC1wLTAgdngtbS0wXCI+XHJcbiAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgZ2VuZXJhdGVQYWdlRHJvcGRvd24oKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWQtYmxvY2sgdngtcC0yIHZ4LW0tMCB2eC13LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZGF0YT8udGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnZUNoYW5nZWQoZGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwicGFnZS1sYWJlbCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1yLTIgdngtbGgtM1wiPlBBR0U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1udW1iZXIgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiPjE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YXxqc29ufX0gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYm90dG9tIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtcC0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGROZXdQYWdlKClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGQtcGFnZSB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGwtMiB2eC1wci0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBBREQgTkVXIFBBR0VcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwib3BlblBvcnRhbCAhPT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCJcclxuICAgICAgICAgIGNsYXNzPVwic2V0dGluZ3MtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTYgdngtcC0wIHZ4LXBsLTIgdngtcHItMiB2eC1tLTAgdngtbWwtMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJhc3Nlc3NtZW50U2V0dGluZ3MoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC1kLWZsZXggdngtbXItMVwiPiYjeGU5MTM7PC9pPiBBU1NFU1NNRU5UXHJcbiAgICAgICAgICBTRVRUSU5HU1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZW1wbGF0ZS1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtbGgtNiB2eC1wLTAgdngtcGwtMiB2eC1wci0yIHZ4LW0tMCB2eC1tbC0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtZC1mbGV4IHZ4LW1yLTFcIj4mI3hlOWVkOzwvaT4gU0FWRSBBU1xyXG4gICAgICAgICAgVEVNUExBVEVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjcmVhdGUtYXNzZXNzbWVudC1ib2R5XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09ICdwYWdlc2NyZWVuJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1BhZ2VFbXB0eSgpXCIgY2xhc3M9XCJzZWxlY3QtcXVlc3Rpb24tcGFydFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWlubmVyIHZ4LXBsLTUgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cInBhZ2UtdGl0bGUgdngtZnMtMTEgdngtZnctNjAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1tbC0xIHZ4LW1yLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC13LTEwMFwiIChjbGljayk9XCJhZGRQYWdlRGV0YWlscygpXCI+PGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xNiB2eC1tci0xXCI+JiN4ZTkwYTs8L2k+IFBBR0UgVElUTEU8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkaW5nIHZ4LWZzLTE4IHZ4LXBhcmFncmFwaC10eHQgdngtdGV4dC1jZW50ZXIgdngtdy0xMDBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFNlbGVjdCBhIHF1ZXN0aW9uIHR5cGUgdG8gYmVnaW46XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbi10eXBlXHJcbiAgICAgICAgICAgICAgICAoYWRkUXVlc3Rpb24pPVwiZWRpdG9yU2VydmljZS5hZGRRdWVzdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9hcHAtcXVlc3Rpb24tdHlwZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvYXRpbmctYmFyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdGluZy1iYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsXCIgKGNsaWNrKT1cInNldElzVXBsb2FkZWQuZW1pdChmYWxzZSlcIj5cclxuICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1lZGl0b3ItbG9hZGVyPjwvYXBwLWVkaXRvci1sb2FkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdJZj1cIiFpc1BhZ2VFbXB0eSgpIHx8IGVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgPCAwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3Itc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRvci1zZWN0aW9uLWJvZHkgdngtZC1mbGV4XCI+XHJcbiAgICAgICAgICAgIDxhcHAtdG9vbGtpdFxyXG4gICAgICAgICAgICAgIChhZGRRdWVzdGlvbik9XCJlZGl0b3JTZXJ2aWNlLmFkZFF1ZXN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9hcHAtdG9vbGtpdD5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0b3Itc2VjdGlvbi1pbm5lclwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtd2VsY29tZS10aGFua3lvdVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09ICd3ZWxjb21lc2NyZWVuJ1wiXHJcbiAgICAgICAgICAgICAgICBbZW50aXR5RGF0YV09XCJlZGl0b3JTZXJ2aWNlPy5mb3Jtc1BhZ2VcIlxyXG4gICAgICAgICAgICAgICAgW3NlcnZpY2VdPVwiZWRpdG9yU2VydmljZVwiXHJcbiAgICAgICAgICAgICAgICAoZGVsZXRlUXVlc3Rpb24pPVwiZGVsZXRlUXVlc3Rpb25XaXRoVmFsaWRhdGlvbignd2VsY29tZScpXCJcclxuICAgICAgICAgICAgICA+PC9hcHAtd2VsY29tZS10aGFua3lvdT5cclxuICAgICAgICAgICAgICA8IS0tIDxhcHAtcHJldmlldy13ZWxjb21lPjwvYXBwLXByZXZpZXctd2VsY29tZT4gLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0b3JTZXJ2aWNlLnN0ZXBJZGVudGlmaWVyID09ICdwYWdlc2NyZWVuJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXIgPT0gJ3BhZ2VzY3JlZW4nICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yU2VydmljZS5zaG93QWRkUGFnZU9wdGlvblxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInBhZ2UtdGl0bGUgdngtZnMtMTEgdngtZnctNjAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1tYi0yIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUGFnZURldGFpbHMoKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTYgdngtbXItMVwiPiYjeGU5MGE7PC9pPiBQQUdFIFRJVExFXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcGFnZS1oZWFkZXJcclxuICAgICAgICAgICAgICAgICAgKGVkaXQpPVwiYWRkUGFnZURldGFpbHMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9PSAncGFnZXNjcmVlbicgJiZcclxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JTZXJ2aWNlLnNob3dQYWdlRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBbcGFnZU5hbWVdPVwiZWRpdG9yU2VydmljZS5jdXJyZW50UGFnZURldGFpbHMucGFnZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGFnZURlc2NyaXB0aW9uXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VEZXRhaWxzLnBhZ2VEZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvYXBwLXBhZ2UtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcXVlc3Rpb24gb2YgZWRpdG9yU2VydmljZS5mb3Jtc1BhZ2UuZWxlbWVudHM7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHF1ZXN0aW9uSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uLnBhZ2UgPT09IGVkaXRvclNlcnZpY2UuY3VycmVudFBhZ2VOdW1iZXIgJiZcclxuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclNlcnZpY2Uuc3RlcElkZW50aWZpZXIgPT0gJ3BhZ2VzY3JlZW4nXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtZWRpdG9yLXdyYXBwZXJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9PT0gcXVlc3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2VydmljZV09XCJlZGl0b3JTZXJ2aWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25JbmRleF09XCJxdWVzdGlvbkluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtvcGVuUG9ydGFsXT1cIm9wZW5Qb3J0YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbGlkUXVlc3Rpb25EYXRhKT1cImNoZWNrZm9yRXJyb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlUXVlc3Rpb24pPVwiZGVsZXRlUXVlc3Rpb25XaXRoVmFsaWRhdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjb3B5UXVlc3Rpb24pPVwiZWRpdG9yU2VydmljZS5jb3B5UXVlc3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWVkaXRvci13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcHJldmlldy13cmFwcGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRvclNlcnZpY2UuYWN0aXZlUXVlc3Rpb24gIT09IHF1ZXN0aW9uSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbkluZGV4XT1cInF1ZXN0aW9uSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1ha2VBY3RpdmVRdWVzdGlvbik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU2VydmljZS5hY3RpdmVRdWVzdGlvbiA9ICRldmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtcHJldmlldy13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5leHQtcXVlc3Rpb24tYXJlYVwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLXRpdGxlIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtbWItMiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LXctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblF1ZXN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xNiB2eC1tci0xXCI+JiN4ZTkwYTs8L2k+IE5FWFQgUVVFU1RJT05cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuZXh0LXF1ZXN0aW9uLXBvcHVwIHZ4LXAtM1wiICpuZ0lmPVwiaGlkZVF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbi10eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkUXVlc3Rpb24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvclNlcnZpY2UuYWRkUXVlc3Rpb24oJGV2ZW50KTsgY2xvc2VRdWVzdGlvbigpXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1xdWVzdGlvbi10eXBlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoaWRlUXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVF1ZXN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuUG9ydGFsICE9PSAnUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTmV3UGFnZSgpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLXRpdGxlIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtbWItMiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LXctMTAwXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xNiB2eC1tci0xXCI+JiN4ZTkwYTs8L2k+IEFERCBORVcgUEFHRVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtc2lkZS1idG5cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwib3BlblBvcnRhbCAhPT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWV4cGFuZFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrRXhwYW5kKClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmdWxsc2NyZWVuLWJ0biB2eC1mcy0xNCB2eC10eHQtYmx1ZSB2eC1wLTAgdngtbS0wIHZ4LW1iLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInRXhwYW5kIFBhZ2UnXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTk0NTs8L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJleHBhbmRQYWdlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUV4cGFuZCgpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1idG4gdngtZnMtMTQgdngtdHh0LWJsdWUgdngtcC0wIHZ4LW0tMCB2eC1tYi0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1NocmluayBQYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5NDQ7PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdG9yU2VydmljZS5zdGVwSWRlbnRpZmllciA9PSAncGFnZXNjcmVlbidcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVBhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRlbGV0ZS1idG4gdngtZnMtMTQgdngtdHh0LXJlZCB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ0RlbGV0ZSBQYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcclxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MjM7PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRvci1zZWN0aW9uLWZvb3RlciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW10LTRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldElzVXBsb2FkZWQuZW1pdChmYWxzZSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FuY2VsLWJ0biB2eC1mcy0xNCB2eC1mdy01MDAgdngtdHh0LXJlZCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1tbC0xIHZ4LW1yLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBDQU5DRUxcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5Qb3J0YWwgPT09ICdBU1NFU1NNRU5UX0lNUE9SVCdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRBZnRlckVycm9yQ2hlY2soJ0RSQUZUJylcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhc3Nlc3NtZW50Q3VycmVudFN0YXRlID09PSAnQUNUSVZFJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3aGl0ZS1idG4gdngtZnMtMTQgdngtZnctNTAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTEgdngtbXItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFNBVkUgQVMgRFJBRlRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5Qb3J0YWwgPT09ICdBU1NFU1NNRU5UX0lNUE9SVCdcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzdWJtaXRBZnRlckVycm9yQ2hlY2soJ0FDVElWRScpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJsdWUtYnRuIHZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtbWwtMSB2eC1tci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgUFVCTElTSFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwib3BlblBvcnRhbCA9PT0gJ1JFU1BPTlNJQklMSVRZX0NIRUNLUE9JTlQnXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic3VibWl0QWZ0ZXJFcnJvckNoZWNrKCdBQ1RJVkUnKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJibHVlLWJ0biB2eC1mcy0xNCB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTEgdngtbXItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIE5FWFQgJm5ic3A7PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWU7PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPCEtLSA8YnV0dG9uIChjbGljayk9XCJwYWdlTW9kZSA9ICdQUkVWSUVXJ1wiIGNsYXNzPVwicHJldmlldy1idG4gdngtZnMtMjAgdngtdHh0LXdoaXRlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiIFthcHBUb29sdGlwXT1cIidQcmV2aWV3J1wiIHBsYWNlbWVudD1cImxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhZTU7PC9pPjwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xvc2UtYnRuIHZ4LWZzLTEyIHZ4LXR4dC13aGl0ZSB2eC1wLTAgdngtbS0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidDbG9zZSdcIlxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxyXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8IS0tIDxhcHAtYXNzZXNzbWVudC1wcmV2aWV3LWNvbnRhaW5lciAqbmdJZj1cInBhZ2VNb2RlID09PSAnUFJFVklFVydcIiBbcXVlc3Rpb25EZXRhaWxzXT1cImVkaXRvclNlcnZpY2UuZm9ybXNQYWdlXCI+PC9hcHAtYXNzZXNzbWVudC1wcmV2aWV3LWNvbnRhaW5lcj4gLS0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPCEtLSA8YXBwLWVkaXRvci1sb2FkZXIgKm5nSWY9XCIhaXNMb2FkZWRcIj48L2FwcC1lZGl0b3ItbG9hZGVyPiAtLT5cclxuIl19