ax-common-ui-lib 1.0.1-beta.34-testing5 → 1.0.1-beta.34-testing6

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.
@@ -414,7 +414,7 @@ export class ImageWidgetLightboxViewComponent {
414
414
  ImageWidgetLightboxViewComponent.ɵfac = function ImageWidgetLightboxViewComponent_Factory(t) { return new (t || ImageWidgetLightboxViewComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
415
415
  ImageWidgetLightboxViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ImageWidgetLightboxViewComponent, selectors: [["lib-image-widget-lightbox-view"]], hostBindings: function ImageWidgetLightboxViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
416
416
  i0.ɵɵlistener("mousewheel", function ImageWidgetLightboxViewComponent_mousewheel_HostBindingHandler($event) { return ctx.click($event); }, false, i0.ɵɵresolveWindow);
417
- } }, outputs: { expandCanvasDialog: "expandCanvasDialog" }, decls: 25, vars: 15, consts: [["mat-dialog-content", "", 1, "light-box-container", "flex", "h-full", "flex-col", "sm:flex-row", "relative"], [1, "mat-left-container"], ["id", "annotationsCanvas", 1, "relative", "z-10", 3, "ngClass", "click"], ["canvas", ""], [3, "disabled", "click", 4, "ngIf"], [1, "lightbox-image-zoom-in-out"], ["class", "cursor-pointer eye-icon z-20", 3, "svgIcon", "click", 4, "ngIf"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "ngClass", "click"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "click"], ["class", "\n spinner-border\n animate-spin\n loaders\n ", "role", "status", 3, "ngClass", 4, "ngIf"], [1, "mat-right-container", "sm:relative", "bg-white", "customscroll", "pl-5"], [1, "sticky", "top-0", "pt-4", "bg-white", "z-10", "hidden", "sm:block"], [1, "close-icon", 3, "click"], [1, "py-4", "comments"], [1, "block", "sm:hidden", "flex", "justify-between", "sticky", "top-0", "z-10", "bg-white"], [1, "py-4", "bg-white", "commments"], [1, "block", "relative"], ["id", "close-icon", 1, "absolute", 3, "click"], ["class", "comment-box axo-font text-sm", 4, "ngIf"], ["class", "comment-box", 4, "ngIf"], [3, "disabled", "click"], [1, "lightbox-image-left-arrow", 3, "svgIcon"], [1, "lightbox-image-right-arrow", 3, "svgIcon"], [1, "cursor-pointer", "eye-icon", "z-20", 3, "svgIcon", "click"], ["role", "status", 1, "spinner-border", "animate-spin", "loaders", 3, "ngClass"], [1, "visually-hidden"], [1, "comment-box", "axo-font", "text-sm"], ["class", "comment-box-container flex gap-4 pb-4", 4, "ngFor", "ngForOf"], [1, "comment-box-container", "flex", "gap-4", "pb-4"], [1, "image-lightbox-index-wrapper"], [1, "image-lightbox-index", 3, "ngStyle", "click"], [1, "w-full", "customscroll", 3, "ngStyle", "click"], [1, "comment-box"]], template: function ImageWidgetLightboxViewComponent_Template(rf, ctx) { if (rf & 1) {
417
+ } }, outputs: { expandCanvasDialog: "expandCanvasDialog" }, decls: 25, vars: 15, consts: [["mat-dialog-content", "", 1, "light-box-container", "popup-container", "flex", "h-full", "flex-col", "sm:flex-row", "relative"], [1, "mat-left-container"], ["id", "annotationsCanvas", 1, "relative", "z-10", 3, "ngClass", "click"], ["canvas", ""], [3, "disabled", "click", 4, "ngIf"], [1, "lightbox-image-zoom-in-out"], ["class", "cursor-pointer eye-icon z-20", 3, "svgIcon", "click", 4, "ngIf"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "ngClass", "click"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "click"], ["class", "\n spinner-border\n animate-spin\n loaders\n ", "role", "status", 3, "ngClass", 4, "ngIf"], [1, "mat-right-container", "sm:relative", "bg-white", "customscroll", "pl-5"], [1, "sticky", "top-0", "pt-4", "bg-white", "z-10", "hidden", "sm:block"], [1, "close-icon", 3, "click"], [1, "py-4", "comments"], [1, "block", "sm:hidden", "flex", "justify-between", "sticky", "top-0", "z-10", "bg-white"], [1, "py-4", "bg-white", "commments"], [1, "block", "relative"], ["id", "close-icon", 1, "absolute", 3, "click"], ["class", "comment-box axo-font text-sm", 4, "ngIf"], ["class", "comment-box", 4, "ngIf"], [3, "disabled", "click"], [1, "lightbox-image-left-arrow", 3, "svgIcon"], [1, "lightbox-image-right-arrow", 3, "svgIcon"], [1, "cursor-pointer", "eye-icon", "z-20", 3, "svgIcon", "click"], ["role", "status", 1, "spinner-border", "animate-spin", "loaders", 3, "ngClass"], [1, "visually-hidden"], [1, "comment-box", "axo-font", "text-sm"], ["class", "comment-box-container flex gap-4 pb-4", 4, "ngFor", "ngForOf"], [1, "comment-box-container", "flex", "gap-4", "pb-4"], [1, "image-lightbox-index-wrapper"], [1, "image-lightbox-index", 3, "ngStyle", "click"], [1, "w-full", "customscroll", 3, "ngStyle", "click"], [1, "comment-box"]], template: function ImageWidgetLightboxViewComponent_Template(rf, ctx) { if (rf & 1) {
418
418
  i0.ɵɵelementStart(0, "div", 0);
419
419
  i0.ɵɵelementStart(1, "div", 1);
420
420
  i0.ɵɵelementStart(2, "canvas", 2, 3);
@@ -484,7 +484,7 @@ ImageWidgetLightboxViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
484
484
  } }, directives: [i2.NgClass, i3.DefaultClassDirective, i2.NgIf, i4.MatIcon, i2.NgForOf, i2.NgStyle, i3.DefaultStyleDirective, i5.MatCard], styles: ["lib-image-widget-lightbox-view .light-box-container{height:100%;width:100%}lib-image-widget-lightbox-view .mat-left-container{position:relative;flex:70%;width:70%;display:flex;justify-content:center;align-items:center;background-color:#10172b}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-left-arrow{position:absolute;top:50%;left:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-right-arrow{position:absolute;top:50%;right:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .loaders{display:inline-block;width:2rem;height:2rem;border-width:4px;border-radius:100%;color:#a855f7;position:absolute;inset:50%;z-index:0}lib-image-widget-lightbox-view .mat-right-container{width:30%;flex:30%}lib-image-widget-lightbox-view .mat-right-container #close-icon{right:0;top:0;font-size:16px}lib-image-widget-lightbox-view .mat-right-container .comment-box-container{font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper{display:flex;height:3.374rem;align-items:center}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper .image-lightbox-index{height:1.313rem;min-width:1.313rem;min-height:1.313rem;text-align:center;border-radius:100%;font-size:12px;font-weight:600;color:#fff;line-height:1.413rem}lib-image-widget-lightbox-view .mat-right-container .comment-box-container mat-card{background:#F2F4FA;border:none;box-shadow:none!important;font-size:.8rem;font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view #annotationsCanvas{max-width:100%}lib-image-widget-lightbox-view .mat-card{min-width:auto}@media only screen and (max-width: 600px){lib-image-widget-lightbox-view .mat-left-container{flex:100%;width:100%}lib-image-widget-lightbox-view .mat-right-container{flex:100%;width:100%}lib-image-widget-lightbox-view #close-icon{top:.5rem!important}}lib-image-widget-lightbox-view .comments{font-size:1rem;cursor:default}lib-image-widget-lightbox-view .lightbox-image-zoom-in-out{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;grid-row-gap:.5rem;row-gap:.5rem;justify-content:center;align-items:center;margin-right:.4rem;margin-bottom:.6rem}lib-image-widget-lightbox-view .comment-box{cursor:default}.cdk-overlay-pane:not(:has(.light-box-container)){height:auto!important;width:auto!important}.mat-dialog-container:has(.light-box-container){height:100%!important;width:100%!important;max-height:100%!important;max-width:100%!important}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #dc2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"], encapsulation: 2 });
485
485
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImageWidgetLightboxViewComponent, [{
486
486
  type: Component,
487
- args: [{ selector: 'lib-image-widget-lightbox-view', encapsulation: ViewEncapsulation.None, template: "<div mat-dialog-content class=\"light-box-container flex h-full flex-col sm:flex-row relative\">\n<div class=\"mat-left-container\">\n <canvas id=\"annotationsCanvas\" (click)=\"onCanvasClick($event)\" #canvas class=\"relative z-10\" [ngClass]=\"{'opacity-50': !imageLoaded}\">\n\n </canvas>\n <button *ngIf=\"!disablePreviousButton && imageLoaded\" (click)=\"showPreviousImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-left-arrow\" [svgIcon]=\"'axo_left_arrow'\" ></mat-icon></button>\n <button *ngIf=\"!disableNextButton && imageLoaded\" (click)=\"showNextImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-right-arrow\" [svgIcon]=\"'axo_right_arrow'\" ></mat-icon></button>\n <div class=\"lightbox-image-zoom-in-out\">\n <mat-icon *ngIf=\"isImageWithAnnotations\" (click)=\"showImageWithoutAnnotations()\" [svgIcon]=\"showImage ?'axo_anotation_show':'axo_anotation_hide'\" class=\"cursor-pointer eye-icon z-20\"></mat-icon>\n <mat-icon (click)=\"expandCanvas()\" [svgIcon]=\"isCanvasExpanded ?'axo_img_compress':'axo_fullscreen'\" class=\"cursor-pointer z-20\" [ngClass]=\"{'expand': isCanvasExpanded}\"></mat-icon>\n <mat-icon (click)=\"imageZoomIn()\" [svgIcon]=\"'axo_zoom_in'\" class=\"cursor-pointer z-20\"></mat-icon>\n <mat-icon (click)=\"imageZoomOut()\"[svgIcon]=\"'axo_zoom_out'\" class=\"cursor-pointer z-20\"></mat-icon>\n </div>\n <div class=\"\n spinner-border\n animate-spin\n loaders\n \" role=\"status\" *ngIf=\"!imageLoaded\" [ngClass]=\"{'z-50': !imageLoaded}\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n</div>\n\n <div class=\"mat-right-container sm:relative bg-white customscroll pl-5\">\n <div class=\"sticky top-0 pt-4 bg-white z-10 hidden sm:block\">\n <button class=\"close-icon\" (click)=\"closeDialog()\"></button>\n <div class=\"py-4 comments\">Comments</div>\n </div>\n <div class=\"block sm:hidden flex justify-between sticky top-0 z-10 bg-white\">\n <div class=\"py-4 bg-white commments\">Comments</div>\n <div class=\"block relative\">\n <mat-icon id=\"close-icon\" (click)=\"closeDialog()\" class=\"absolute\">close</mat-icon> \n </div>\n \n </div>\n <div class=\"comment-box axo-font text-sm\" *ngIf=\"annotation?.annotations.length\">\n <div class=\"comment-box-container flex gap-4 pb-4\" *ngFor=\"let item of annotation?.annotations; let i= index\">\n <div class=\"image-lightbox-index-wrapper\">\n <div class=\"image-lightbox-index\" [ngStyle]=\"{'background-color': item.color ,'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{i+1}}</div>\n </div>\n <mat-card class=\"w-full customscroll\" [ngStyle]=\"{'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{item.notes}}</mat-card> \n </div>\n </div>\n <div class=\"comment-box\" *ngIf=\"annotation?.annotations.length === 0 || annotation?.annotations === null\">No comments available\n \n </div>\n </div>\n</div>\n", styles: ["lib-image-widget-lightbox-view .light-box-container{height:100%;width:100%}lib-image-widget-lightbox-view .mat-left-container{position:relative;flex:70%;width:70%;display:flex;justify-content:center;align-items:center;background-color:#10172b}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-left-arrow{position:absolute;top:50%;left:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-right-arrow{position:absolute;top:50%;right:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .loaders{display:inline-block;width:2rem;height:2rem;border-width:4px;border-radius:100%;color:#a855f7;position:absolute;inset:50%;z-index:0}lib-image-widget-lightbox-view .mat-right-container{width:30%;flex:30%}lib-image-widget-lightbox-view .mat-right-container #close-icon{right:0;top:0;font-size:16px}lib-image-widget-lightbox-view .mat-right-container .comment-box-container{font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper{display:flex;height:3.374rem;align-items:center}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper .image-lightbox-index{height:1.313rem;min-width:1.313rem;min-height:1.313rem;text-align:center;border-radius:100%;font-size:12px;font-weight:600;color:#fff;line-height:1.413rem}lib-image-widget-lightbox-view .mat-right-container .comment-box-container mat-card{background:#F2F4FA;border:none;box-shadow:none!important;font-size:.8rem;font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view #annotationsCanvas{max-width:100%}lib-image-widget-lightbox-view .mat-card{min-width:auto}@media only screen and (max-width: 600px){lib-image-widget-lightbox-view .mat-left-container{flex:100%;width:100%}lib-image-widget-lightbox-view .mat-right-container{flex:100%;width:100%}lib-image-widget-lightbox-view #close-icon{top:.5rem!important}}lib-image-widget-lightbox-view .comments{font-size:1rem;cursor:default}lib-image-widget-lightbox-view .lightbox-image-zoom-in-out{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;grid-row-gap:.5rem;row-gap:.5rem;justify-content:center;align-items:center;margin-right:.4rem;margin-bottom:.6rem}lib-image-widget-lightbox-view .comment-box{cursor:default}.cdk-overlay-pane:not(:has(.light-box-container)){height:auto!important;width:auto!important}.mat-dialog-container:has(.light-box-container){height:100%!important;width:100%!important;max-height:100%!important;max-width:100%!important}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #dc2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"] }]
487
+ args: [{ selector: 'lib-image-widget-lightbox-view', encapsulation: ViewEncapsulation.None, template: "<div mat-dialog-content class=\"light-box-container popup-container flex h-full flex-col sm:flex-row relative\">\n<div class=\"mat-left-container\">\n <canvas id=\"annotationsCanvas\" (click)=\"onCanvasClick($event)\" #canvas class=\"relative z-10\" [ngClass]=\"{'opacity-50': !imageLoaded}\">\n\n </canvas>\n <button *ngIf=\"!disablePreviousButton && imageLoaded\" (click)=\"showPreviousImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-left-arrow\" [svgIcon]=\"'axo_left_arrow'\" ></mat-icon></button>\n <button *ngIf=\"!disableNextButton && imageLoaded\" (click)=\"showNextImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-right-arrow\" [svgIcon]=\"'axo_right_arrow'\" ></mat-icon></button>\n <div class=\"lightbox-image-zoom-in-out\">\n <mat-icon *ngIf=\"isImageWithAnnotations\" (click)=\"showImageWithoutAnnotations()\" [svgIcon]=\"showImage ?'axo_anotation_show':'axo_anotation_hide'\" class=\"cursor-pointer eye-icon z-20\"></mat-icon>\n <mat-icon (click)=\"expandCanvas()\" [svgIcon]=\"isCanvasExpanded ?'axo_img_compress':'axo_fullscreen'\" class=\"cursor-pointer z-20\" [ngClass]=\"{'expand': isCanvasExpanded}\"></mat-icon>\n <mat-icon (click)=\"imageZoomIn()\" [svgIcon]=\"'axo_zoom_in'\" class=\"cursor-pointer z-20\"></mat-icon>\n <mat-icon (click)=\"imageZoomOut()\"[svgIcon]=\"'axo_zoom_out'\" class=\"cursor-pointer z-20\"></mat-icon>\n </div>\n <div class=\"\n spinner-border\n animate-spin\n loaders\n \" role=\"status\" *ngIf=\"!imageLoaded\" [ngClass]=\"{'z-50': !imageLoaded}\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n</div>\n\n <div class=\"mat-right-container sm:relative bg-white customscroll pl-5\">\n <div class=\"sticky top-0 pt-4 bg-white z-10 hidden sm:block\">\n <button class=\"close-icon\" (click)=\"closeDialog()\"></button>\n <div class=\"py-4 comments\">Comments</div>\n </div>\n <div class=\"block sm:hidden flex justify-between sticky top-0 z-10 bg-white\">\n <div class=\"py-4 bg-white commments\">Comments</div>\n <div class=\"block relative\">\n <mat-icon id=\"close-icon\" (click)=\"closeDialog()\" class=\"absolute\">close</mat-icon> \n </div>\n \n </div>\n <div class=\"comment-box axo-font text-sm\" *ngIf=\"annotation?.annotations.length\">\n <div class=\"comment-box-container flex gap-4 pb-4\" *ngFor=\"let item of annotation?.annotations; let i= index\">\n <div class=\"image-lightbox-index-wrapper\">\n <div class=\"image-lightbox-index\" [ngStyle]=\"{'background-color': item.color ,'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{i+1}}</div>\n </div>\n <mat-card class=\"w-full customscroll\" [ngStyle]=\"{'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{item.notes}}</mat-card> \n </div>\n </div>\n <div class=\"comment-box\" *ngIf=\"annotation?.annotations.length === 0 || annotation?.annotations === null\">No comments available\n \n </div>\n </div>\n</div>\n", styles: ["lib-image-widget-lightbox-view .light-box-container{height:100%;width:100%}lib-image-widget-lightbox-view .mat-left-container{position:relative;flex:70%;width:70%;display:flex;justify-content:center;align-items:center;background-color:#10172b}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-left-arrow{position:absolute;top:50%;left:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-right-arrow{position:absolute;top:50%;right:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .loaders{display:inline-block;width:2rem;height:2rem;border-width:4px;border-radius:100%;color:#a855f7;position:absolute;inset:50%;z-index:0}lib-image-widget-lightbox-view .mat-right-container{width:30%;flex:30%}lib-image-widget-lightbox-view .mat-right-container #close-icon{right:0;top:0;font-size:16px}lib-image-widget-lightbox-view .mat-right-container .comment-box-container{font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper{display:flex;height:3.374rem;align-items:center}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper .image-lightbox-index{height:1.313rem;min-width:1.313rem;min-height:1.313rem;text-align:center;border-radius:100%;font-size:12px;font-weight:600;color:#fff;line-height:1.413rem}lib-image-widget-lightbox-view .mat-right-container .comment-box-container mat-card{background:#F2F4FA;border:none;box-shadow:none!important;font-size:.8rem;font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view #annotationsCanvas{max-width:100%}lib-image-widget-lightbox-view .mat-card{min-width:auto}@media only screen and (max-width: 600px){lib-image-widget-lightbox-view .mat-left-container{flex:100%;width:100%}lib-image-widget-lightbox-view .mat-right-container{flex:100%;width:100%}lib-image-widget-lightbox-view #close-icon{top:.5rem!important}}lib-image-widget-lightbox-view .comments{font-size:1rem;cursor:default}lib-image-widget-lightbox-view .lightbox-image-zoom-in-out{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;grid-row-gap:.5rem;row-gap:.5rem;justify-content:center;align-items:center;margin-right:.4rem;margin-bottom:.6rem}lib-image-widget-lightbox-view .comment-box{cursor:default}.cdk-overlay-pane:not(:has(.light-box-container)){height:auto!important;width:auto!important}.mat-dialog-container:has(.light-box-container){height:100%!important;width:100%!important;max-height:100%!important;max-width:100%!important}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #dc2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"] }]
488
488
  }], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
489
489
  type: Inject,
490
490
  args: [MAT_DIALOG_DATA]
@@ -494,4 +494,4 @@ ImageWidgetLightboxViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
494
494
  type: HostListener,
495
495
  args: ['window:mousewheel', ['$event']]
496
496
  }] }); })();
497
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9mb3JtLW9iamVjdC9mb3JtLW9iamVjdC12aWV3L2Zvcm0tb2JqZWN0LXdpZGdldHMvaW1hZ2Utd2lkZ2V0LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9mb3JtLW9iamVjdC9mb3JtLW9iamVjdC12aWV3L2Zvcm0tb2JqZWN0LXdpZGdldHMvaW1hZ2Utd2lkZ2V0LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFhLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7OztJQ0c1RCxrQ0FBOEc7SUFBeEQsZ0xBQVMsMEJBQW1CLElBQUM7SUFBMkIsK0JBQXFGO0lBQUEsaUJBQVM7OztJQUF4SCw4Q0FBeUI7SUFBNkMsZUFBNEI7SUFBNUIsMENBQTRCOzs7O0lBQ3RMLGtDQUF3RztJQUFyRCxpTEFBUyxzQkFBZSxJQUFDO0lBQTRCLCtCQUF1RjtJQUFBLGlCQUFTOzs7SUFBMUgsOENBQXlCO0lBQThDLGVBQTZCO0lBQTdCLDJDQUE2Qjs7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QWEsSUFBQztRQUFDLGlCQUFTO1FBQzVELGdDQUEyQjtRQUFBLHlCQUFRO1FBQUEsaUJBQU07UUFDM0MsaUJBQU07UUFDTixnQ0FBNkU7UUFDM0UsZ0NBQXFDO1FBQUEseUJBQVE7UUFBQSxpQkFBTTtRQUNuRCxnQ0FBNEI7UUFDMUIscUNBQW1FO1FBQXpDLGdIQUFTLGlCQUFhLElBQUM7UUFBa0Isc0JBQUs7UUFBQSxpQkFBVztRQUNyRixpQkFBTTtRQUVSLGlCQUFNO1FBQ04sb0ZBT007UUFDTixvRkFFTTtRQUNSLGlCQUFNO1FBQ1IsaUJBQU07O1FBNUMyRixlQUF3QztRQUF4Qyx1RUFBd0M7UUFHOUgsZUFBMkM7UUFBM0Msb0VBQTJDO1FBQzNDLGVBQXdDO1FBQXhDLGdFQUF3QztRQUVwQyxlQUE0QjtRQUE1QixpREFBNEI7UUFDSixlQUFpRTtRQUFqRSxzRkFBaUUsOERBQUE7UUFDbEUsZUFBeUI7UUFBekIsdUNBQXlCO1FBQ3hCLGVBQTBCO1FBQTFCLHdDQUEwQjtRQU01QyxlQUFrQjtRQUFsQix1Q0FBa0I7UUFpQlEsZ0JBQW9DO1FBQXBDLHdGQUFvQztRQVFyRCxlQUE4RTtRQUE5RSx5S0FBOEU7O3VGRC9CL0YsZ0NBQWdDO2NBTjVDLFNBQVM7MkJBQ0UsZ0NBQWdDLGlCQUczQixpQkFBaUIsQ0FBQyxJQUFJOztzQkFvQ2xDLE1BQU07dUJBQUMsZUFBZTt3QkFMZixrQkFBa0I7a0JBQTNCLE1BQU07WUF3RFAsS0FBSztrQkFESixZQUFZO21CQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQXhvVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9heG8tdXRpbHMvYXhvLXV0aWxzJztcbmltcG9ydCB7IEFubm90YXRpb25WYWx1ZSB9IGZyb20gJy4uL2ltYWdlLWFubm90YXRpb24tZGF0YS1kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS13aWRnZXQtbGlnaHRib3gtdmlldy5jb21wb25lbnQuc2NzcycsICcuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXMvc3R5bGVzLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZVdpZGdldExpZ2h0Ym94Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFubm90YXRpb25WYWx1ZURhdGE6IEFycmF5PEFubm90YXRpb25WYWx1ZT47XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIHNlbGVjdGVkSW1hZ2VJZDogbnVtYmVyO1xuICBkaXNhYmxlTmV4dEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNhYmxlUHJldmlvdXNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBbm5vdGF0aW9uU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYW5ub3RhdGlvbjogQW5ub3RhdGlvblZhbHVlO1xuICBjdHg7XG4gIHNlbGVjdGVkQW5ub3RhdGlvbkluZGV4OiBudW1iZXI7XG4gIGN1cnJlbnRBbm5vdGF0aW9uTnVtYmVyOiBudW1iZXI7XG4gIHNob3dJbWFnZTogYm9vbGVhbiA9IHRydWU7XG4gIGFubm90YXRpb25zSW1hZ2VPcmlnaW5hbDogYW55O1xuICBzY2FsZTogbnVtYmVyID0gMC4yO1xuICBzY2FsZU11bHRpcGxpZXI6IG51bWJlciA9IDAuODtcbiAgc3RhcnREcmFnT2Zmc2V0ID0geyB4OiAwLCB5OiAwIH07XG4gIG1vdXNlRG93biA9IGZhbHNlO1xuICB0cmFuc2xhdGVQb3M6IGFueSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbiAgbW91c2VQb3NpdGlvbjogYW55O1xuICBkaWFsb2c6IE1hdERpYWxvZztcbiAgaXNDYW52YXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICByYXRpbzogbnVtYmVyO1xuICBjZW50ZXJTaGlmdF94OiBudW1iZXI7XG4gIGNlbnRlclNoaWZ0X3k6IG51bWJlcjtcbiAgaXNJbWFnZVdpdGhBbm5vdGF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBleHBhbmRDYW52YXNEaWFsb2cgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpbWFnZUxvYWRlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8SW1hZ2VXaWRnZXRMaWdodGJveFZpZXdDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgYW5ub3RhdGlvbkRhdGE6IGFueVxuICApIHsgfVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhID0gdGhpcy5hbm5vdGF0aW9uRGF0YS52aWV3cmVzLmZpZWxkLnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZUlkID0gdGhpcy5hbm5vdGF0aW9uRGF0YS5zZWxlY3RlZEltYWdlSWQ7XG4gICAgdGhpcy5hbm5vdGF0aW9uID0gdGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhLmZpbmQoKGFubm90YXRpb24sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRJbWFnZUlkO1xuICAgIH0pO1xuICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdGhpcy5zZWxlY3RlZEltYWdlSWQgPT09IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlTmV4dEJ1dHRvbiA9IHRoaXMuc2VsZWN0ZWRJbWFnZUlkID09PSAodGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhLmxlbmd0aCAtIDEgKT8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhbm5vdGF0aW9uc0NhbnZhc1wiKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5jYW52YXMud2lkdGggPSB0aGlzLmNhbnZhcy5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSB0aGlzLmNhbnZhcy5vZmZzZXRIZWlnaHQ7XG4gICAgdGhpcy5jdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHRoaXMuc2V0SW1hZ2VGb3JBbm5vdGF0aW9uKHRydWUpO1xuXG5cbiAgICAvLyBhZGQgZXZlbnQgbGlzdGVuZXJzIHRvIGhhbmRsZSBzY3JlZW4gZHJhZ1xuICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgKGV2dCkgPT4ge1xuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xuICAgICAgdGhpcy5zdGFydERyYWdPZmZzZXQueCA9IGV2dC5jbGllbnRYIC0gdGhpcy50cmFuc2xhdGVQb3MueDtcbiAgICAgIHRoaXMuc3RhcnREcmFnT2Zmc2V0LnkgPSBldnQuY2xpZW50WSAtIHRoaXMudHJhbnNsYXRlUG9zLnk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCAoZXZ0KSA9PiB7XG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3ZlclwiLCAoZXZ0KSA9PiB7XG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsIChldnQpID0+IHtcbiAgICAgIHRoaXMubW91c2VEb3duID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIChldnQpID0+IHtcbiAgICAgIGlmICh0aGlzLm1vdXNlRG93bikge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVBvcy54ID0gZXZ0LmNsaWVudFggLSB0aGlzLnN0YXJ0RHJhZ09mZnNldC54O1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVBvcy55ID0gZXZ0LmNsaWVudFkgLSB0aGlzLnN0YXJ0RHJhZ09mZnNldC55O1xuICAgICAgICB0aGlzLnJlbmRlckltYWdlT25DYW52YXModGhpcy5hbm5vdGF0aW9uLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXdoZWVsJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQpOiB2b2lkIHtcbiAgICB2YXIgZGVsdGEgPSBldmVudC53aGVlbERlbHRhID8gZXZlbnQud2hlZWxEZWx0YSAvIDQwIDogZXZlbnQuZGV0YWlsID8gLWV2ZW50LmRldGFpbCA6IDA7XG4gICAgaWYgKGRlbHRhKSB0aGlzLnpvb21JbWFnZShkZWx0YSk7XG4gIH1cblxuICB6b29tSW1hZ2UoZGVsdGEpIHtcbiAgICBpZiAoZGVsdGEgPT0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZGVsdGEgPiAwKSB7XG4gICAgICB0aGlzLnNjYWxlIC89IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNjYWxlICo9IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlckltYWdlT25DYW52YXModGhpcy5hbm5vdGF0aW9uLCBmYWxzZSk7XG4gIH1cblxuICBzZXRJbWFnZUZvckFubm90YXRpb24oaXNGaXJzdFRpbWVSZW5kZXIpIHtcbiAgICB0aGlzLmFubm90YXRpb24gPSB0aGlzLmFubm90YXRpb25WYWx1ZURhdGEuZmluZCgoYW5ub3RhdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEltYWdlSWQ7XG4gICAgfSk7XG4gICAgdGhpcy5pc0ltYWdlV2l0aEFubm90YXRpb25zID0gdGhpcy5hbm5vdGF0aW9uPy5hbm5vdGF0aW9ucz8ubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLmFubm90YXRpb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFubm90YXRpb24uaW1hZ2UgPSBBeG9VdGlscy5yZW1vdmVTbGFzaEZyb21JbWFnZVVybCh0aGlzLmFubm90YXRpb24uaW1hZ2UpO1xuICAgICAgaWYgKCF0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuZHJhd0ltYWdlKHRoaXMuYW5ub3RhdGlvbiwgaXNGaXJzdFRpbWVSZW5kZXIpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubm90YXRpb24/LmFubm90YXRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkQW5ub3RhdGlvbiA9IHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5maW5kKChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEFubm90YXRpb25JbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgPSB0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbkluZGV4O1xuICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKHNlbGVjdGVkQW5ub3RhdGlvbiwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgc2hvd1ByZXZpb3VzSW1hZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbWFnZUlkID49IDApIHtcbiAgICAgIHRoaXMuaXNBbm5vdGF0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2VJZCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlSWQgPSB0aGlzLnNlbGVjdGVkSW1hZ2VJZCAtIDE7XG4gICAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdGhpcy5zZWxlY3RlZEltYWdlSWQgPT09IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRJbWFnZUZvckFubm90YXRpb24odHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2FibGVQcmV2aW91c0J1dHRvbiA9IHRoaXMuc2VsZWN0ZWRJbWFnZUlkID09PSAwID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd05leHRJbWFnZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEltYWdlSWQgPCB0aGlzLmFubm90YXRpb25WYWx1ZURhdGEubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2VJZCA9IHRoaXMuc2VsZWN0ZWRJbWFnZUlkICsgMTtcbiAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSB0aGlzLnNlbGVjdGVkSW1hZ2VJZCA9PT0gKHRoaXMuYW5ub3RhdGlvblZhbHVlRGF0YS5sZW5ndGggLSAxKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEltYWdlRm9yQW5ub3RhdGlvbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBkcmF3SW1hZ2UoYW5ub3RhdGlvbjogQW5ub3RhdGlvblZhbHVlLCBpc0ZpcnN0VGltZVJlbmRlcikge1xuICAgIGlmIChhbm5vdGF0aW9uKSB7XG4gICAgICB0aGlzLmltYWdlTG9hZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbCA9IG5ldyBJbWFnZSgpO1xuICAgICAgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwuc3JjID0gdGhpcy5hbm5vdGF0aW9uRGF0YS5iYXNlVXJsICsgYW5ub3RhdGlvbi5pbWFnZTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnNJbWFnZU9yaWdpbmFsLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbGUgPSBNYXRoLm1pbih0aGlzLmNhbnZhcy53aWR0aCAvIHRoaXMuYW5ub3RhdGlvbnNJbWFnZU9yaWdpbmFsLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQgLyB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5oZWlnaHQpO1xuICAgICAgICB0aGlzLnJlbmRlckltYWdlT25DYW52YXMoYW5ub3RhdGlvbiwgaXNGaXJzdFRpbWVSZW5kZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlckltYWdlT25DYW52YXMoYW5ub3RhdGlvbiwgaXNGaXJzdFRpbWVSZW5kZXIpIHtcbiAgICBpZiAoaXNGaXJzdFRpbWVSZW5kZXIpIHtcbiAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgICAgIHRoaXMuY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgIHRoaXMuY3R4LnNhdmUoKTtcbiAgICAgIHZhciBjdHhDYW52YXMgPSB0aGlzLmN0eC5jYW52YXM7XG4gICAgICB2YXIgaFJhdGlvID0gY3R4Q2FudmFzLndpZHRoIC8gdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbFdpZHRoO1xuICAgICAgdmFyIHZSYXRpbyA9IGN0eENhbnZhcy5oZWlnaHQgLyB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsSGVpZ2h0O1xuICAgICAgdmFyIHJhdGlvID0gTWF0aC5taW4oaFJhdGlvLCB2UmF0aW8pO1xuICAgICAgdmFyIGNlbnRlclNoaWZ0X3ggPSAoY3R4Q2FudmFzLndpZHRoIC0gdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbFdpZHRoICogcmF0aW8pIC8gMjtcbiAgICAgIHZhciBjZW50ZXJTaGlmdF95ID0gKGN0eENhbnZhcy5oZWlnaHQgLSB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsSGVpZ2h0ICogcmF0aW8pIC8gMjtcbiAgICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbCwgMCwgMCwgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbFdpZHRoLCB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsSGVpZ2h0LCBjZW50ZXJTaGlmdF94LCBjZW50ZXJTaGlmdF95LCB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsV2lkdGggKiByYXRpbywgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbEhlaWdodCAqIHJhdGlvKTtcbiAgICAgIHRoaXMudHJhbnNsYXRlUG9zID0geyB4OiBjZW50ZXJTaGlmdF94LCB5OiBjZW50ZXJTaGlmdF95IH07XG4gICAgICB0aGlzLmN0eC50cmFuc2xhdGUodGhpcy50cmFuc2xhdGVQb3MueCwgdGhpcy50cmFuc2xhdGVQb3MueSk7XG4gICAgICB0aGlzLmN0eC5zY2FsZSh0aGlzLnNjYWxlLCB0aGlzLnNjYWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9sZXQgcmVjdCA9IHRoaXMuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgLy9pZihyZWN0LmxlZnQgPj0gdGhpcy50cmFuc2xhdGVQb3MueCAmJiByZWN0LnRvcCA+PSB0aGlzLnRyYW5zbGF0ZVBvcy55KSB7XG4gICAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgICAgICAgdGhpcy5jdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZSh0aGlzLnRyYW5zbGF0ZVBvcy54LCB0aGlzLnRyYW5zbGF0ZVBvcy55KTtcbiAgICAgICAgdGhpcy5jdHguc2NhbGUodGhpcy5zY2FsZSwgdGhpcy5zY2FsZSk7XG4gICAgICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbCwgMCwgMCwgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwud2lkdGgsIHRoaXMuYW5ub3RhdGlvbnNJbWFnZU9yaWdpbmFsLmhlaWdodCk7XG4gICAgICAvL31cblxuICAgICAgXG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dJbWFnZSAmJiBhbm5vdGF0aW9uPy5hbm5vdGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGFubm90YXRpb24uYW5ub3RhdGlvbnMuZm9yRWFjaCgoYW5ub3RhdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA9IGluZGV4O1xuICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24sIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG4gIH1cblxuICBjbG9zZURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gIH1cblxuICBkcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uRGF0YSwgaXNIaWdobGlnaHRlZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dJbWFnZSAmJiBhbm5vdGF0aW9uRGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIHZhciBjZW50ZXJYO1xuICAgICAgdmFyIGNlbnRlclk7XG4gICAgICBhbm5vdGF0aW9uRGF0YS5wYXRoLmZvckVhY2goKHBhdGhWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAocGF0aFZhbHVlLnR5cGUgPT0gXCJtXCIpIHtcbiAgICAgICAgICB2YXIgc3RhcnRpbmdfcG9pbnQgPSBbXTtcbiAgICAgICAgICBzdGFydGluZ19wb2ludCA9IHBhdGhWYWx1ZS5wb2ludHMuc3BsaXQoJywnKTtcbiAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oc3RhcnRpbmdfcG9pbnRbMF0sIHN0YXJ0aW5nX3BvaW50WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocGF0aFZhbHVlLnR5cGUgPT0gXCJxXCIpIHtcbiAgICAgICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgICAgIHBvaW50cyA9IHBhdGhWYWx1ZS5wb2ludHMuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGlmICghY2VudGVyWCAmJiAhY2VudGVyWSkge1xuICAgICAgICAgICAgICBjZW50ZXJYID0gcG9pbnRzWzBdO1xuICAgICAgICAgICAgICBjZW50ZXJZID0gcG9pbnRzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdHgucXVhZHJhdGljQ3VydmVUbyhwb2ludHNbMF0sIHBvaW50c1sxXSwgcG9pbnRzWzJdLCBwb2ludHNbM10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjZW50ZXJYID0gY2VudGVyWCArIDE1O1xuICAgICAgY2VudGVyWSA9IGNlbnRlclkgLSAxNTtcbiAgICAgIGlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9PT0gdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IGZhbHNlOiBpc0hpZ2hsaWdodGVkO1xuICAgICAgdmFyIHJhbmRvbUNvbG9yID0gaXNIaWdobGlnaHRlZCA/IFwiYmx1ZVwiIDogYW5ub3RhdGlvbkRhdGEuY29sb3IgIT0gbnVsbCA/IGFubm90YXRpb25EYXRhLmNvbG9yIDogdGhpcy5nZXRSYW5kb21Db2xvcigpO1xuICAgICAgYW5ub3RhdGlvbkRhdGEuY29sb3IgPSByYW5kb21Db2xvciA9PT0gXCJibHVlXCIgPyBhbm5vdGF0aW9uRGF0YS5jb2xvciA6IHJhbmRvbUNvbG9yO1xuICAgICAgdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPSBpc0hpZ2hsaWdodGVkP3RoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXI6dGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQ7XG4gICAgICB0aGlzLmN0eC5zdHJva2VTdHlsZSA9IHJhbmRvbUNvbG9yO1xuICAgICAgdGhpcy5jdHgubGluZVdpZHRoID0gNTtcbiAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIHRoaXMuY3R4LmFyYyhjZW50ZXJYLCBjZW50ZXJZLCA3LCAwLCAyICogTWF0aC5QSSk7XG4gICAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSByYW5kb21Db2xvcjtcbiAgICAgIHRoaXMuY3R4LmZpbGwoKTtcbiAgICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgICB0aGlzLmN0eC50ZXh0QWxpZ24gPSBcImNlbnRlclwiO1xuICAgICAgdGhpcy5jdHgudGV4dEJhc2VsaW5lID0gXCJtaWRkbGVcIjtcbiAgICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICB0aGlzLmN0eC5mb250U2l6ZSA9ICcxMnB4IEFyaWFsJztcbiAgICAgIHRoaXMuY3R4LmZpbGxUZXh0KHRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgKyAxLCBjZW50ZXJYLCBjZW50ZXJZKVxuICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTtcbiAgICB9XG4gIH1cblxuICBzaG93SW1hZ2VXaXRob3V0QW5ub3RhdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93SW1hZ2UgPSAhdGhpcy5zaG93SW1hZ2U7XG4gICAgdGhpcy5kcmF3SW1hZ2UodGhpcy5hbm5vdGF0aW9uLCBmYWxzZSk7XG4gIH1cblxuICBzZWxlY3RBbm5vdGF0aW9uKHNlbGVjdGVkSW5kZXgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEltYWdlSWQgPj0gMCkge1xuICAgICAgdGhpcy5hbm5vdGF0aW9uID0gdGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhLmZpbmQoKGFubm90YXRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEltYWdlSWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbkluZGV4ID0gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA9IGluZGV4O1xuICAgICAgICB0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbkluZGV4ICYmIHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgaXNIaWdobGlnaHRlZCA9IHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID09PXRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgPyBmYWxzZTp0cnVlO1xuICAgICAgICAgIHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID0gdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPT09dGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IG51bGw6dGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQ7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5kcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uLCBpc0hpZ2hsaWdodGVkKTtcbiAgICAgICAgfVxuICAgICAgIGVsc2UgaWYgKHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24sIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DYW52YXNDbGljayhldmVudCkge1xuICAgIHRoaXMuaXNBbm5vdGF0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBsZXQgcmVjdCA9IHRoaXMuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMubW91c2VQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LnBhZ2VYIC0gcmVjdC5sZWZ0LFxuICAgICAgeTogZXZlbnQucGFnZVkgLSByZWN0LnRvcFxuICAgIH1cbiAgICB0aGlzLmdldFNlbGVjdGVkQ29tbWVudCgpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb21tZW50KCkge1xuICAgIHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgdmFyIGZyYW1lID0gYW5ub3RhdGlvbi5mcmFtZS5zcGxpdChcIixcIik7XG4gICAgICB2YXIgcGFyc2VkRnJhbWUgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgaW4gZnJhbWUpIHtcbiAgICAgICAgcGFyc2VkRnJhbWVbaV0gPSBwYXJzZUZsb2F0KGZyYW1lW2ldKSAqIHRoaXMuc2NhbGU7XG4gICAgICB9XG4gICAgICBsZXQgc2VsZWN0ZWRQdCA9IHtcbiAgICAgICAgeDogdGhpcy5tb3VzZVBvc2l0aW9uLnggLSB0aGlzLnRyYW5zbGF0ZVBvcy54LFxuICAgICAgICB5OiB0aGlzLm1vdXNlUG9zaXRpb24ueSAtIHRoaXMudHJhbnNsYXRlUG9zLnlcbiAgICAgIH07XG4gICAgICB0aGlzLmN1cnJlbnRBbm5vdGF0aW9uTnVtYmVyID0gaW5kZXg7XG4gICAgICBpZiAoc2VsZWN0ZWRQdC54ID4gcGFyc2VkRnJhbWVbMF0gJiYgc2VsZWN0ZWRQdC54IDwgcGFyc2VkRnJhbWVbMl0gJiYgc2VsZWN0ZWRQdC55ID4gcGFyc2VkRnJhbWVbMV0gJiYgc2VsZWN0ZWRQdC55IDwgcGFyc2VkRnJhbWVbM10pIHtcbiAgICAgICAgdGhpcy5pc0Fubm90YXRpb25TZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9uSW5kZXggPSBpbmRleDtcbiAgICAgICAgdmFyIGlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9PT0gdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IGZhbHNlOnRydWU7XG4gICAgICAgIHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID0gdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPT09dGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IG51bGw6dGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQ7XG4gICAgICAgIHRoaXMuZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbiwgaXNIaWdobGlnaHRlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9IHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID09PXRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgPyBudWxsOnRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkO1xuICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24sIGZhbHNlKVxuICAgICAgfTtcbiAgICB9XG4gICAgKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAgKiBHZW5lcmF0ZSByYW5kb20gY29sb3IgZXhjZXB0IGJsdWUgYW5kIHdoaXRlXG4gICAgKi9cbiAgZ2V0UmFuZG9tQ29sb3IoKSB7XG4gICAgdmFyIGxldHRlcnMgPSAnMDEyMzQ1Njc4OUFCQ0RFRic7XG4gICAgdmFyIGNvbG9yID0gJyMnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICBjb2xvciArPSBsZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KV07XG4gICAgfVxuICAgIGlmIChjb2xvciA9PT0gXCIjMDAwMEZGXCIgfHwgY29sb3IgPT09IFwiI0ZGRkZGRlwiKSB7XG4gICAgICB0aGlzLmdldFJhbmRvbUNvbG9yKCk7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG5cbiAgLyoqXG4gICAgICogICBab29tIGluIGltYWdlIGNhbnZhcyBvbiBjbGljayBldmVudFxuICAqL1xuICBpbWFnZVpvb21JbigpIHtcbiAgICB0aGlzLnNjYWxlIC89IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIHRoaXMucmVuZGVySW1hZ2VPbkNhbnZhcyh0aGlzLmFubm90YXRpb24sIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgICAqICAgWm9vbSBvdXQgaW1hZ2UgY2FudmFzIG9uIGNsaWNrIGV2ZW50XG4gICovXG4gIGltYWdlWm9vbU91dCgpIHtcbiAgICB0aGlzLnNjYWxlICo9IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIHRoaXMucmVuZGVySW1hZ2VPbkNhbnZhcyh0aGlzLmFubm90YXRpb24sIGZhbHNlKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAgKiAgRXhwYW5kIGltYWdlIGNhbnZhcyBvbiBjbGlja1xuICovXG4gIGV4cGFuZENhbnZhcygpIHtcbiAgICB0aGlzLmlzQ2FudmFzRXhwYW5kZWQgPSAhdGhpcy5pc0NhbnZhc0V4cGFuZGVkO1xuICAgIGlmICh0aGlzLmlzQ2FudmFzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUoJzEwMHZ3JywgJzEwMHZoJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUoJzgwdncnLCAnODB2aCcpO1xuICAgIH1cbiAgfVxuXG5cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibGlnaHQtYm94LWNvbnRhaW5lciBmbGV4IGgtZnVsbCBmbGV4LWNvbCBzbTpmbGV4LXJvdyByZWxhdGl2ZVwiPlxuPGRpdiBjbGFzcz1cIm1hdC1sZWZ0LWNvbnRhaW5lclwiPlxuICAgIDxjYW52YXMgaWQ9XCJhbm5vdGF0aW9uc0NhbnZhc1wiIChjbGljayk9XCJvbkNhbnZhc0NsaWNrKCRldmVudClcIiAjY2FudmFzIGNsYXNzPVwicmVsYXRpdmUgei0xMFwiIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS01MCc6ICFpbWFnZUxvYWRlZH1cIj5cblxuICAgIDwvY2FudmFzPlxuICA8YnV0dG9uICpuZ0lmPVwiIWRpc2FibGVQcmV2aW91c0J1dHRvbiAmJiBpbWFnZUxvYWRlZFwiIChjbGljayk9XCJzaG93UHJldmlvdXNJbWFnZSgpXCIgW2Rpc2FibGVkXT1cIiFpbWFnZUxvYWRlZFwiPjxtYXQtaWNvbiBjbGFzcz1cImxpZ2h0Ym94LWltYWdlLWxlZnQtYXJyb3dcIiBbc3ZnSWNvbl09XCInYXhvX2xlZnRfYXJyb3cnXCIgPjwvbWF0LWljb24+PC9idXR0b24+XG4gIDxidXR0b24gKm5nSWY9XCIhZGlzYWJsZU5leHRCdXR0b24gICYmIGltYWdlTG9hZGVkXCIgKGNsaWNrKT1cInNob3dOZXh0SW1hZ2UoKVwiICBbZGlzYWJsZWRdPVwiIWltYWdlTG9hZGVkXCI+PG1hdC1pY29uIGNsYXNzPVwibGlnaHRib3gtaW1hZ2UtcmlnaHQtYXJyb3dcIiBbc3ZnSWNvbl09XCInYXhvX3JpZ2h0X2Fycm93J1wiID48L21hdC1pY29uPjwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwibGlnaHRib3gtaW1hZ2Utem9vbS1pbi1vdXRcIj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpc0ltYWdlV2l0aEFubm90YXRpb25zXCIgKGNsaWNrKT1cInNob3dJbWFnZVdpdGhvdXRBbm5vdGF0aW9ucygpXCIgW3N2Z0ljb25dPVwic2hvd0ltYWdlID8nYXhvX2Fub3RhdGlvbl9zaG93JzonYXhvX2Fub3RhdGlvbl9oaWRlJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZXllLWljb24gei0yMFwiPjwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uIChjbGljayk9XCJleHBhbmRDYW52YXMoKVwiIFtzdmdJY29uXT1cImlzQ2FudmFzRXhwYW5kZWQgPydheG9faW1nX2NvbXByZXNzJzonYXhvX2Z1bGxzY3JlZW4nXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB6LTIwXCIgW25nQ2xhc3NdPVwieydleHBhbmQnOiBpc0NhbnZhc0V4cGFuZGVkfVwiPjwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uIChjbGljayk9XCJpbWFnZVpvb21JbigpXCIgW3N2Z0ljb25dPVwiJ2F4b196b29tX2luJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgei0yMFwiPjwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uICAoY2xpY2spPVwiaW1hZ2Vab29tT3V0KClcIltzdmdJY29uXT1cIidheG9fem9vbV9vdXQnXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB6LTIwXCI+PC9tYXQtaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJcbiAgICAgIHNwaW5uZXItYm9yZGVyXG4gICAgICBhbmltYXRlLXNwaW5cbiAgICAgIGxvYWRlcnNcbiAgICBcIiByb2xlPVwic3RhdHVzXCIgKm5nSWY9XCIhaW1hZ2VMb2FkZWRcIiBbbmdDbGFzc109XCJ7J3otNTAnOiAhaW1hZ2VMb2FkZWR9XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibWF0LXJpZ2h0LWNvbnRhaW5lciBzbTpyZWxhdGl2ZSBiZy13aGl0ZSBjdXN0b21zY3JvbGwgcGwtNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdGlja3kgdG9wLTAgcHQtNCBiZy13aGl0ZSB6LTEwIGhpZGRlbiBzbTpibG9ja1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWljb25cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPjwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cInB5LTQgY29tbWVudHNcIj5Db21tZW50czwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJibG9jayBzbTpoaWRkZW4gZmxleCBqdXN0aWZ5LWJldHdlZW4gc3RpY2t5IHRvcC0wIHotMTAgYmctd2hpdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJweS00IGJnLXdoaXRlIGNvbW1tZW50c1wiPkNvbW1lbnRzPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgcmVsYXRpdmVcIj5cbiAgICAgICAgPG1hdC1pY29uIGlkPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCIgY2xhc3M9XCJhYnNvbHV0ZVwiPmNsb3NlPC9tYXQtaWNvbj4gIFxuICAgICAgPC9kaXY+XG4gICAgXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYm94IGF4by1mb250IHRleHQtc21cIiAqbmdJZj1cImFubm90YXRpb24/LmFubm90YXRpb25zLmxlbmd0aFwiPlxuICAgICAgPGRpdiAgY2xhc3M9XCJjb21tZW50LWJveC1jb250YWluZXIgZmxleCBnYXAtNCBwYi00XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnM7IGxldCBpPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtbGlnaHRib3gtaW5kZXgtd3JhcHBlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1saWdodGJveC1pbmRleFwiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0uY29sb3IgLCdib3JkZXInOiAoaXNBbm5vdGF0aW9uU2VsZWN0ZWQgJiYgaSA9PT0gc2VsZWN0ZWRBbm5vdGF0aW9uSW5kZXggJiYgcHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID09PSBzZWxlY3RlZEFubm90YXRpb25JbmRleCkgPycxcHggc29saWQgIzAwMDBGRic6Jyd9XCIgKGNsaWNrKT1cInNlbGVjdEFubm90YXRpb24oaSlcIj57e2krMX19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJ3LWZ1bGwgY3VzdG9tc2Nyb2xsXCIgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogKGlzQW5ub3RhdGlvblNlbGVjdGVkICYmIGkgPT09IHNlbGVjdGVkQW5ub3RhdGlvbkluZGV4ICYmIHByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9PT0gc2VsZWN0ZWRBbm5vdGF0aW9uSW5kZXgpID8nMXB4IHNvbGlkICMwMDAwRkYnOicnfVwiIChjbGljayk9XCJzZWxlY3RBbm5vdGF0aW9uKGkpXCI+e3tpdGVtLm5vdGVzfX08L21hdC1jYXJkPiAgXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1ib3hcIiAqbmdJZj1cImFubm90YXRpb24/LmFubm90YXRpb25zLmxlbmd0aCA9PT0gMCB8fCBhbm5vdGF0aW9uPy5hbm5vdGF0aW9ucyA9PT0gbnVsbFwiPk5vIGNvbW1lbnRzIGF2YWlsYWJsZVxuICAgICAgXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
497
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9mb3JtLW9iamVjdC9mb3JtLW9iamVjdC12aWV3L2Zvcm0tb2JqZWN0LXdpZGdldHMvaW1hZ2Utd2lkZ2V0LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9mb3JtLW9iamVjdC9mb3JtLW9iamVjdC12aWV3L2Zvcm0tb2JqZWN0LXdpZGdldHMvaW1hZ2Utd2lkZ2V0LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcvaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFhLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7OztJQ0c1RCxrQ0FBOEc7SUFBeEQsZ0xBQVMsMEJBQW1CLElBQUM7SUFBMkIsK0JBQXFGO0lBQUEsaUJBQVM7OztJQUF4SCw4Q0FBeUI7SUFBNkMsZUFBNEI7SUFBNUIsMENBQTRCOzs7O0lBQ3RMLGtDQUF3RztJQUFyRCxpTEFBUyxzQkFBZSxJQUFDO0lBQTRCLCtCQUF1RjtJQUFBLGlCQUFTOzs7SUFBMUgsOENBQXlCO0lBQThDLGVBQTZCO0lBQTdCLDJDQUE2Qjs7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QWEsSUFBQztRQUFDLGlCQUFTO1FBQzVELGdDQUEyQjtRQUFBLHlCQUFRO1FBQUEsaUJBQU07UUFDM0MsaUJBQU07UUFDTixnQ0FBNkU7UUFDM0UsZ0NBQXFDO1FBQUEseUJBQVE7UUFBQSxpQkFBTTtRQUNuRCxnQ0FBNEI7UUFDMUIscUNBQW1FO1FBQXpDLGdIQUFTLGlCQUFhLElBQUM7UUFBa0Isc0JBQUs7UUFBQSxpQkFBVztRQUNyRixpQkFBTTtRQUVSLGlCQUFNO1FBQ04sb0ZBT007UUFDTixvRkFFTTtRQUNSLGlCQUFNO1FBQ1IsaUJBQU07O1FBNUMyRixlQUF3QztRQUF4Qyx1RUFBd0M7UUFHOUgsZUFBMkM7UUFBM0Msb0VBQTJDO1FBQzNDLGVBQXdDO1FBQXhDLGdFQUF3QztRQUVwQyxlQUE0QjtRQUE1QixpREFBNEI7UUFDSixlQUFpRTtRQUFqRSxzRkFBaUUsOERBQUE7UUFDbEUsZUFBeUI7UUFBekIsdUNBQXlCO1FBQ3hCLGVBQTBCO1FBQTFCLHdDQUEwQjtRQU01QyxlQUFrQjtRQUFsQix1Q0FBa0I7UUFpQlEsZ0JBQW9DO1FBQXBDLHdGQUFvQztRQVFyRCxlQUE4RTtRQUE5RSx5S0FBOEU7O3VGRC9CL0YsZ0NBQWdDO2NBTjVDLFNBQVM7MkJBQ0UsZ0NBQWdDLGlCQUczQixpQkFBaUIsQ0FBQyxJQUFJOztzQkFvQ2xDLE1BQU07dUJBQUMsZUFBZTt3QkFMZixrQkFBa0I7a0JBQTNCLE1BQU07WUF3RFAsS0FBSztrQkFESixZQUFZO21CQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQXhvVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9heG8tdXRpbHMvYXhvLXV0aWxzJztcbmltcG9ydCB7IEFubm90YXRpb25WYWx1ZSB9IGZyb20gJy4uL2ltYWdlLWFubm90YXRpb24tZGF0YS1kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2Utd2lkZ2V0LWxpZ2h0Ym94LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS13aWRnZXQtbGlnaHRib3gtdmlldy5jb21wb25lbnQuc2NzcycsICcuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZXMvc3R5bGVzLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZVdpZGdldExpZ2h0Ym94Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFubm90YXRpb25WYWx1ZURhdGE6IEFycmF5PEFubm90YXRpb25WYWx1ZT47XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIHNlbGVjdGVkSW1hZ2VJZDogbnVtYmVyO1xuICBkaXNhYmxlTmV4dEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNhYmxlUHJldmlvdXNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBbm5vdGF0aW9uU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYW5ub3RhdGlvbjogQW5ub3RhdGlvblZhbHVlO1xuICBjdHg7XG4gIHNlbGVjdGVkQW5ub3RhdGlvbkluZGV4OiBudW1iZXI7XG4gIGN1cnJlbnRBbm5vdGF0aW9uTnVtYmVyOiBudW1iZXI7XG4gIHNob3dJbWFnZTogYm9vbGVhbiA9IHRydWU7XG4gIGFubm90YXRpb25zSW1hZ2VPcmlnaW5hbDogYW55O1xuICBzY2FsZTogbnVtYmVyID0gMC4yO1xuICBzY2FsZU11bHRpcGxpZXI6IG51bWJlciA9IDAuODtcbiAgc3RhcnREcmFnT2Zmc2V0ID0geyB4OiAwLCB5OiAwIH07XG4gIG1vdXNlRG93biA9IGZhbHNlO1xuICB0cmFuc2xhdGVQb3M6IGFueSA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbiAgbW91c2VQb3NpdGlvbjogYW55O1xuICBkaWFsb2c6IE1hdERpYWxvZztcbiAgaXNDYW52YXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICByYXRpbzogbnVtYmVyO1xuICBjZW50ZXJTaGlmdF94OiBudW1iZXI7XG4gIGNlbnRlclNoaWZ0X3k6IG51bWJlcjtcbiAgaXNJbWFnZVdpdGhBbm5vdGF0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBleHBhbmRDYW52YXNEaWFsb2cgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpbWFnZUxvYWRlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8SW1hZ2VXaWRnZXRMaWdodGJveFZpZXdDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgYW5ub3RhdGlvbkRhdGE6IGFueVxuICApIHsgfVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhID0gdGhpcy5hbm5vdGF0aW9uRGF0YS52aWV3cmVzLmZpZWxkLnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZUlkID0gdGhpcy5hbm5vdGF0aW9uRGF0YS5zZWxlY3RlZEltYWdlSWQ7XG4gICAgdGhpcy5hbm5vdGF0aW9uID0gdGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhLmZpbmQoKGFubm90YXRpb24sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRJbWFnZUlkO1xuICAgIH0pO1xuICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdGhpcy5zZWxlY3RlZEltYWdlSWQgPT09IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlTmV4dEJ1dHRvbiA9IHRoaXMuc2VsZWN0ZWRJbWFnZUlkID09PSAodGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhLmxlbmd0aCAtIDEgKT8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhbm5vdGF0aW9uc0NhbnZhc1wiKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5jYW52YXMud2lkdGggPSB0aGlzLmNhbnZhcy5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSB0aGlzLmNhbnZhcy5vZmZzZXRIZWlnaHQ7XG4gICAgdGhpcy5jdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHRoaXMuc2V0SW1hZ2VGb3JBbm5vdGF0aW9uKHRydWUpO1xuXG5cbiAgICAvLyBhZGQgZXZlbnQgbGlzdGVuZXJzIHRvIGhhbmRsZSBzY3JlZW4gZHJhZ1xuICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgKGV2dCkgPT4ge1xuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xuICAgICAgdGhpcy5zdGFydERyYWdPZmZzZXQueCA9IGV2dC5jbGllbnRYIC0gdGhpcy50cmFuc2xhdGVQb3MueDtcbiAgICAgIHRoaXMuc3RhcnREcmFnT2Zmc2V0LnkgPSBldnQuY2xpZW50WSAtIHRoaXMudHJhbnNsYXRlUG9zLnk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCAoZXZ0KSA9PiB7XG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3ZlclwiLCAoZXZ0KSA9PiB7XG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsIChldnQpID0+IHtcbiAgICAgIHRoaXMubW91c2VEb3duID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIChldnQpID0+IHtcbiAgICAgIGlmICh0aGlzLm1vdXNlRG93bikge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVBvcy54ID0gZXZ0LmNsaWVudFggLSB0aGlzLnN0YXJ0RHJhZ09mZnNldC54O1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVBvcy55ID0gZXZ0LmNsaWVudFkgLSB0aGlzLnN0YXJ0RHJhZ09mZnNldC55O1xuICAgICAgICB0aGlzLnJlbmRlckltYWdlT25DYW52YXModGhpcy5hbm5vdGF0aW9uLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXdoZWVsJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQpOiB2b2lkIHtcbiAgICB2YXIgZGVsdGEgPSBldmVudC53aGVlbERlbHRhID8gZXZlbnQud2hlZWxEZWx0YSAvIDQwIDogZXZlbnQuZGV0YWlsID8gLWV2ZW50LmRldGFpbCA6IDA7XG4gICAgaWYgKGRlbHRhKSB0aGlzLnpvb21JbWFnZShkZWx0YSk7XG4gIH1cblxuICB6b29tSW1hZ2UoZGVsdGEpIHtcbiAgICBpZiAoZGVsdGEgPT0gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZGVsdGEgPiAwKSB7XG4gICAgICB0aGlzLnNjYWxlIC89IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNjYWxlICo9IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlckltYWdlT25DYW52YXModGhpcy5hbm5vdGF0aW9uLCBmYWxzZSk7XG4gIH1cblxuICBzZXRJbWFnZUZvckFubm90YXRpb24oaXNGaXJzdFRpbWVSZW5kZXIpIHtcbiAgICB0aGlzLmFubm90YXRpb24gPSB0aGlzLmFubm90YXRpb25WYWx1ZURhdGEuZmluZCgoYW5ub3RhdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEltYWdlSWQ7XG4gICAgfSk7XG4gICAgdGhpcy5pc0ltYWdlV2l0aEFubm90YXRpb25zID0gdGhpcy5hbm5vdGF0aW9uPy5hbm5vdGF0aW9ucz8ubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLmFubm90YXRpb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFubm90YXRpb24uaW1hZ2UgPSBBeG9VdGlscy5yZW1vdmVTbGFzaEZyb21JbWFnZVVybCh0aGlzLmFubm90YXRpb24uaW1hZ2UpO1xuICAgICAgaWYgKCF0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuZHJhd0ltYWdlKHRoaXMuYW5ub3RhdGlvbiwgaXNGaXJzdFRpbWVSZW5kZXIpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmFubm90YXRpb24/LmFubm90YXRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkQW5ub3RhdGlvbiA9IHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5maW5kKChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEFubm90YXRpb25JbmRleDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgPSB0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbkluZGV4O1xuICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKHNlbGVjdGVkQW5ub3RhdGlvbiwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgc2hvd1ByZXZpb3VzSW1hZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbWFnZUlkID49IDApIHtcbiAgICAgIHRoaXMuaXNBbm5vdGF0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2VJZCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlSWQgPSB0aGlzLnNlbGVjdGVkSW1hZ2VJZCAtIDE7XG4gICAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gdGhpcy5zZWxlY3RlZEltYWdlSWQgPT09IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZXRJbWFnZUZvckFubm90YXRpb24odHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2FibGVQcmV2aW91c0J1dHRvbiA9IHRoaXMuc2VsZWN0ZWRJbWFnZUlkID09PSAwID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd05leHRJbWFnZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEltYWdlSWQgPCB0aGlzLmFubm90YXRpb25WYWx1ZURhdGEubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2VJZCA9IHRoaXMuc2VsZWN0ZWRJbWFnZUlkICsgMTtcbiAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSB0aGlzLnNlbGVjdGVkSW1hZ2VJZCA9PT0gKHRoaXMuYW5ub3RhdGlvblZhbHVlRGF0YS5sZW5ndGggLSAxKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzQnV0dG9uID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEltYWdlRm9yQW5ub3RhdGlvbih0cnVlKTtcbiAgICB9XG4gIH1cblxuICBkcmF3SW1hZ2UoYW5ub3RhdGlvbjogQW5ub3RhdGlvblZhbHVlLCBpc0ZpcnN0VGltZVJlbmRlcikge1xuICAgIGlmIChhbm5vdGF0aW9uKSB7XG4gICAgICB0aGlzLmltYWdlTG9hZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbCA9IG5ldyBJbWFnZSgpO1xuICAgICAgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwuc3JjID0gdGhpcy5hbm5vdGF0aW9uRGF0YS5iYXNlVXJsICsgYW5ub3RhdGlvbi5pbWFnZTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnNJbWFnZU9yaWdpbmFsLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbGUgPSBNYXRoLm1pbih0aGlzLmNhbnZhcy53aWR0aCAvIHRoaXMuYW5ub3RhdGlvbnNJbWFnZU9yaWdpbmFsLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQgLyB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5oZWlnaHQpO1xuICAgICAgICB0aGlzLnJlbmRlckltYWdlT25DYW52YXMoYW5ub3RhdGlvbiwgaXNGaXJzdFRpbWVSZW5kZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlckltYWdlT25DYW52YXMoYW5ub3RhdGlvbiwgaXNGaXJzdFRpbWVSZW5kZXIpIHtcbiAgICBpZiAoaXNGaXJzdFRpbWVSZW5kZXIpIHtcbiAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgICAgIHRoaXMuY3R4LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgIHRoaXMuY3R4LnNhdmUoKTtcbiAgICAgIHZhciBjdHhDYW52YXMgPSB0aGlzLmN0eC5jYW52YXM7XG4gICAgICB2YXIgaFJhdGlvID0gY3R4Q2FudmFzLndpZHRoIC8gdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbFdpZHRoO1xuICAgICAgdmFyIHZSYXRpbyA9IGN0eENhbnZhcy5oZWlnaHQgLyB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsSGVpZ2h0O1xuICAgICAgdmFyIHJhdGlvID0gTWF0aC5taW4oaFJhdGlvLCB2UmF0aW8pO1xuICAgICAgdmFyIGNlbnRlclNoaWZ0X3ggPSAoY3R4Q2FudmFzLndpZHRoIC0gdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbFdpZHRoICogcmF0aW8pIC8gMjtcbiAgICAgIHZhciBjZW50ZXJTaGlmdF95ID0gKGN0eENhbnZhcy5oZWlnaHQgLSB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsSGVpZ2h0ICogcmF0aW8pIC8gMjtcbiAgICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbCwgMCwgMCwgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbFdpZHRoLCB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsSGVpZ2h0LCBjZW50ZXJTaGlmdF94LCBjZW50ZXJTaGlmdF95LCB0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbC5uYXR1cmFsV2lkdGggKiByYXRpbywgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwubmF0dXJhbEhlaWdodCAqIHJhdGlvKTtcbiAgICAgIHRoaXMudHJhbnNsYXRlUG9zID0geyB4OiBjZW50ZXJTaGlmdF94LCB5OiBjZW50ZXJTaGlmdF95IH07XG4gICAgICB0aGlzLmN0eC50cmFuc2xhdGUodGhpcy50cmFuc2xhdGVQb3MueCwgdGhpcy50cmFuc2xhdGVQb3MueSk7XG4gICAgICB0aGlzLmN0eC5zY2FsZSh0aGlzLnNjYWxlLCB0aGlzLnNjYWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy9sZXQgcmVjdCA9IHRoaXMuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgLy9pZihyZWN0LmxlZnQgPj0gdGhpcy50cmFuc2xhdGVQb3MueCAmJiByZWN0LnRvcCA+PSB0aGlzLnRyYW5zbGF0ZVBvcy55KSB7XG4gICAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgICAgICAgdGhpcy5jdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgICAgIHRoaXMuY3R4LnRyYW5zbGF0ZSh0aGlzLnRyYW5zbGF0ZVBvcy54LCB0aGlzLnRyYW5zbGF0ZVBvcy55KTtcbiAgICAgICAgdGhpcy5jdHguc2NhbGUodGhpcy5zY2FsZSwgdGhpcy5zY2FsZSk7XG4gICAgICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLmFubm90YXRpb25zSW1hZ2VPcmlnaW5hbCwgMCwgMCwgdGhpcy5hbm5vdGF0aW9uc0ltYWdlT3JpZ2luYWwud2lkdGgsIHRoaXMuYW5ub3RhdGlvbnNJbWFnZU9yaWdpbmFsLmhlaWdodCk7XG4gICAgICAvL31cblxuICAgICAgXG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dJbWFnZSAmJiBhbm5vdGF0aW9uPy5hbm5vdGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGFubm90YXRpb24uYW5ub3RhdGlvbnMuZm9yRWFjaCgoYW5ub3RhdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA9IGluZGV4O1xuICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24sIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG4gIH1cblxuICBjbG9zZURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gIH1cblxuICBkcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uRGF0YSwgaXNIaWdobGlnaHRlZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dJbWFnZSAmJiBhbm5vdGF0aW9uRGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIHZhciBjZW50ZXJYO1xuICAgICAgdmFyIGNlbnRlclk7XG4gICAgICBhbm5vdGF0aW9uRGF0YS5wYXRoLmZvckVhY2goKHBhdGhWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAocGF0aFZhbHVlLnR5cGUgPT0gXCJtXCIpIHtcbiAgICAgICAgICB2YXIgc3RhcnRpbmdfcG9pbnQgPSBbXTtcbiAgICAgICAgICBzdGFydGluZ19wb2ludCA9IHBhdGhWYWx1ZS5wb2ludHMuc3BsaXQoJywnKTtcbiAgICAgICAgICB0aGlzLmN0eC5tb3ZlVG8oc3RhcnRpbmdfcG9pbnRbMF0sIHN0YXJ0aW5nX3BvaW50WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocGF0aFZhbHVlLnR5cGUgPT0gXCJxXCIpIHtcbiAgICAgICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgICAgIHBvaW50cyA9IHBhdGhWYWx1ZS5wb2ludHMuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGlmICghY2VudGVyWCAmJiAhY2VudGVyWSkge1xuICAgICAgICAgICAgICBjZW50ZXJYID0gcG9pbnRzWzBdO1xuICAgICAgICAgICAgICBjZW50ZXJZID0gcG9pbnRzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdHgucXVhZHJhdGljQ3VydmVUbyhwb2ludHNbMF0sIHBvaW50c1sxXSwgcG9pbnRzWzJdLCBwb2ludHNbM10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjZW50ZXJYID0gY2VudGVyWCArIDE1O1xuICAgICAgY2VudGVyWSA9IGNlbnRlclkgLSAxNTtcbiAgICAgIGlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9PT0gdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IGZhbHNlOiBpc0hpZ2hsaWdodGVkO1xuICAgICAgdmFyIHJhbmRvbUNvbG9yID0gaXNIaWdobGlnaHRlZCA/IFwiYmx1ZVwiIDogYW5ub3RhdGlvbkRhdGEuY29sb3IgIT0gbnVsbCA/IGFubm90YXRpb25EYXRhLmNvbG9yIDogdGhpcy5nZXRSYW5kb21Db2xvcigpO1xuICAgICAgYW5ub3RhdGlvbkRhdGEuY29sb3IgPSByYW5kb21Db2xvciA9PT0gXCJibHVlXCIgPyBhbm5vdGF0aW9uRGF0YS5jb2xvciA6IHJhbmRvbUNvbG9yO1xuICAgICAgdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPSBpc0hpZ2hsaWdodGVkP3RoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXI6dGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQ7XG4gICAgICB0aGlzLmN0eC5zdHJva2VTdHlsZSA9IHJhbmRvbUNvbG9yO1xuICAgICAgdGhpcy5jdHgubGluZVdpZHRoID0gNTtcbiAgICAgIHRoaXMuY3R4LnN0cm9rZSgpO1xuICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICB0aGlzLmN0eC5iZWdpblBhdGgoKTtcbiAgICAgIHRoaXMuY3R4LmFyYyhjZW50ZXJYLCBjZW50ZXJZLCA3LCAwLCAyICogTWF0aC5QSSk7XG4gICAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSByYW5kb21Db2xvcjtcbiAgICAgIHRoaXMuY3R4LmZpbGwoKTtcbiAgICAgIHRoaXMuY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgdGhpcy5jdHguYmVnaW5QYXRoKCk7XG4gICAgICB0aGlzLmN0eC50ZXh0QWxpZ24gPSBcImNlbnRlclwiO1xuICAgICAgdGhpcy5jdHgudGV4dEJhc2VsaW5lID0gXCJtaWRkbGVcIjtcbiAgICAgIHRoaXMuY3R4LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICB0aGlzLmN0eC5mb250U2l6ZSA9ICcxMnB4IEFyaWFsJztcbiAgICAgIHRoaXMuY3R4LmZpbGxUZXh0KHRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgKyAxLCBjZW50ZXJYLCBjZW50ZXJZKVxuICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7XG4gICAgICB0aGlzLmN0eC5jbG9zZVBhdGgoKTtcbiAgICB9XG4gIH1cblxuICBzaG93SW1hZ2VXaXRob3V0QW5ub3RhdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93SW1hZ2UgPSAhdGhpcy5zaG93SW1hZ2U7XG4gICAgdGhpcy5kcmF3SW1hZ2UodGhpcy5hbm5vdGF0aW9uLCBmYWxzZSk7XG4gIH1cblxuICBzZWxlY3RBbm5vdGF0aW9uKHNlbGVjdGVkSW5kZXgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEltYWdlSWQgPj0gMCkge1xuICAgICAgdGhpcy5hbm5vdGF0aW9uID0gdGhpcy5hbm5vdGF0aW9uVmFsdWVEYXRhLmZpbmQoKGFubm90YXRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5zZWxlY3RlZEltYWdlSWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbkluZGV4ID0gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA9IGluZGV4O1xuICAgICAgICB0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbkluZGV4ICYmIHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmlzQW5ub3RhdGlvblNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgaXNIaWdobGlnaHRlZCA9IHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID09PXRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgPyBmYWxzZTp0cnVlO1xuICAgICAgICAgIHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID0gdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPT09dGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IG51bGw6dGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQ7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhpcy5kcmF3QW5ub3RhdGlvbihhbm5vdGF0aW9uLCBpc0hpZ2hsaWdodGVkKTtcbiAgICAgICAgfVxuICAgICAgIGVsc2UgaWYgKHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24sIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DYW52YXNDbGljayhldmVudCkge1xuICAgIHRoaXMuaXNBbm5vdGF0aW9uU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBsZXQgcmVjdCA9IHRoaXMuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMubW91c2VQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LnBhZ2VYIC0gcmVjdC5sZWZ0LFxuICAgICAgeTogZXZlbnQucGFnZVkgLSByZWN0LnRvcFxuICAgIH1cbiAgICB0aGlzLmdldFNlbGVjdGVkQ29tbWVudCgpO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDb21tZW50KCkge1xuICAgIHRoaXMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucy5mb3JFYWNoKChhbm5vdGF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgdmFyIGZyYW1lID0gYW5ub3RhdGlvbi5mcmFtZS5zcGxpdChcIixcIik7XG4gICAgICB2YXIgcGFyc2VkRnJhbWUgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgaW4gZnJhbWUpIHtcbiAgICAgICAgcGFyc2VkRnJhbWVbaV0gPSBwYXJzZUZsb2F0KGZyYW1lW2ldKSAqIHRoaXMuc2NhbGU7XG4gICAgICB9XG4gICAgICBsZXQgc2VsZWN0ZWRQdCA9IHtcbiAgICAgICAgeDogdGhpcy5tb3VzZVBvc2l0aW9uLnggLSB0aGlzLnRyYW5zbGF0ZVBvcy54LFxuICAgICAgICB5OiB0aGlzLm1vdXNlUG9zaXRpb24ueSAtIHRoaXMudHJhbnNsYXRlUG9zLnlcbiAgICAgIH07XG4gICAgICB0aGlzLmN1cnJlbnRBbm5vdGF0aW9uTnVtYmVyID0gaW5kZXg7XG4gICAgICBpZiAoc2VsZWN0ZWRQdC54ID4gcGFyc2VkRnJhbWVbMF0gJiYgc2VsZWN0ZWRQdC54IDwgcGFyc2VkRnJhbWVbMl0gJiYgc2VsZWN0ZWRQdC55ID4gcGFyc2VkRnJhbWVbMV0gJiYgc2VsZWN0ZWRQdC55IDwgcGFyc2VkRnJhbWVbM10pIHtcbiAgICAgICAgdGhpcy5pc0Fubm90YXRpb25TZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9uSW5kZXggPSBpbmRleDtcbiAgICAgICAgdmFyIGlzSGlnaGxpZ2h0ZWQgPSB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9PT0gdGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IGZhbHNlOnRydWU7XG4gICAgICAgIHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID0gdGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPT09dGhpcy5jdXJyZW50QW5ub3RhdGlvbk51bWJlciA/IG51bGw6dGhpcy5wcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQ7XG4gICAgICAgIHRoaXMuZHJhd0Fubm90YXRpb24oYW5ub3RhdGlvbiwgaXNIaWdobGlnaHRlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9IHRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkID09PXRoaXMuY3VycmVudEFubm90YXRpb25OdW1iZXIgPyBudWxsOnRoaXMucHJldmlvdXNseVNlbGVjdGVkQW5ub3RhdGlvbklkO1xuICAgICAgICB0aGlzLmRyYXdBbm5vdGF0aW9uKGFubm90YXRpb24sIGZhbHNlKVxuICAgICAgfTtcbiAgICB9XG4gICAgKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAgKiBHZW5lcmF0ZSByYW5kb20gY29sb3IgZXhjZXB0IGJsdWUgYW5kIHdoaXRlXG4gICAgKi9cbiAgZ2V0UmFuZG9tQ29sb3IoKSB7XG4gICAgdmFyIGxldHRlcnMgPSAnMDEyMzQ1Njc4OUFCQ0RFRic7XG4gICAgdmFyIGNvbG9yID0gJyMnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICBjb2xvciArPSBsZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KV07XG4gICAgfVxuICAgIGlmIChjb2xvciA9PT0gXCIjMDAwMEZGXCIgfHwgY29sb3IgPT09IFwiI0ZGRkZGRlwiKSB7XG4gICAgICB0aGlzLmdldFJhbmRvbUNvbG9yKCk7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuXG5cbiAgLyoqXG4gICAgICogICBab29tIGluIGltYWdlIGNhbnZhcyBvbiBjbGljayBldmVudFxuICAqL1xuICBpbWFnZVpvb21JbigpIHtcbiAgICB0aGlzLnNjYWxlIC89IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIHRoaXMucmVuZGVySW1hZ2VPbkNhbnZhcyh0aGlzLmFubm90YXRpb24sIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgICAqICAgWm9vbSBvdXQgaW1hZ2UgY2FudmFzIG9uIGNsaWNrIGV2ZW50XG4gICovXG4gIGltYWdlWm9vbU91dCgpIHtcbiAgICB0aGlzLnNjYWxlICo9IHRoaXMuc2NhbGVNdWx0aXBsaWVyO1xuICAgIHRoaXMucmVuZGVySW1hZ2VPbkNhbnZhcyh0aGlzLmFubm90YXRpb24sIGZhbHNlKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAgKiAgRXhwYW5kIGltYWdlIGNhbnZhcyBvbiBjbGlja1xuICovXG4gIGV4cGFuZENhbnZhcygpIHtcbiAgICB0aGlzLmlzQ2FudmFzRXhwYW5kZWQgPSAhdGhpcy5pc0NhbnZhc0V4cGFuZGVkO1xuICAgIGlmICh0aGlzLmlzQ2FudmFzRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUoJzEwMHZ3JywgJzEwMHZoJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLnVwZGF0ZVNpemUoJzgwdncnLCAnODB2aCcpO1xuICAgIH1cbiAgfVxuXG5cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibGlnaHQtYm94LWNvbnRhaW5lciBwb3B1cC1jb250YWluZXIgZmxleCBoLWZ1bGwgZmxleC1jb2wgc206ZmxleC1yb3cgcmVsYXRpdmVcIj5cbjxkaXYgY2xhc3M9XCJtYXQtbGVmdC1jb250YWluZXJcIj5cbiAgICA8Y2FudmFzIGlkPVwiYW5ub3RhdGlvbnNDYW52YXNcIiAoY2xpY2spPVwib25DYW52YXNDbGljaygkZXZlbnQpXCIgI2NhbnZhcyBjbGFzcz1cInJlbGF0aXZlIHotMTBcIiBbbmdDbGFzc109XCJ7J29wYWNpdHktNTAnOiAhaW1hZ2VMb2FkZWR9XCI+XG5cbiAgICA8L2NhbnZhcz5cbiAgPGJ1dHRvbiAqbmdJZj1cIiFkaXNhYmxlUHJldmlvdXNCdXR0b24gJiYgaW1hZ2VMb2FkZWRcIiAoY2xpY2spPVwic2hvd1ByZXZpb3VzSW1hZ2UoKVwiIFtkaXNhYmxlZF09XCIhaW1hZ2VMb2FkZWRcIj48bWF0LWljb24gY2xhc3M9XCJsaWdodGJveC1pbWFnZS1sZWZ0LWFycm93XCIgW3N2Z0ljb25dPVwiJ2F4b19sZWZ0X2Fycm93J1wiID48L21hdC1pY29uPjwvYnV0dG9uPlxuICA8YnV0dG9uICpuZ0lmPVwiIWRpc2FibGVOZXh0QnV0dG9uICAmJiBpbWFnZUxvYWRlZFwiIChjbGljayk9XCJzaG93TmV4dEltYWdlKClcIiAgW2Rpc2FibGVkXT1cIiFpbWFnZUxvYWRlZFwiPjxtYXQtaWNvbiBjbGFzcz1cImxpZ2h0Ym94LWltYWdlLXJpZ2h0LWFycm93XCIgW3N2Z0ljb25dPVwiJ2F4b19yaWdodF9hcnJvdydcIiA+PC9tYXQtaWNvbj48L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cImxpZ2h0Ym94LWltYWdlLXpvb20taW4tb3V0XCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaXNJbWFnZVdpdGhBbm5vdGF0aW9uc1wiIChjbGljayk9XCJzaG93SW1hZ2VXaXRob3V0QW5ub3RhdGlvbnMoKVwiIFtzdmdJY29uXT1cInNob3dJbWFnZSA/J2F4b19hbm90YXRpb25fc2hvdyc6J2F4b19hbm90YXRpb25faGlkZSdcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGV5ZS1pY29uIHotMjBcIj48L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiZXhwYW5kQ2FudmFzKClcIiBbc3ZnSWNvbl09XCJpc0NhbnZhc0V4cGFuZGVkID8nYXhvX2ltZ19jb21wcmVzcyc6J2F4b19mdWxsc2NyZWVuJ1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgei0yMFwiIFtuZ0NsYXNzXT1cInsnZXhwYW5kJzogaXNDYW52YXNFeHBhbmRlZH1cIj48L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiaW1hZ2Vab29tSW4oKVwiIFtzdmdJY29uXT1cIidheG9fem9vbV9pbidcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHotMjBcIj48L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiAgKGNsaWNrKT1cImltYWdlWm9vbU91dCgpXCJbc3ZnSWNvbl09XCInYXhvX3pvb21fb3V0J1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgei0yMFwiPjwvbWF0LWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiXG4gICAgICBzcGlubmVyLWJvcmRlclxuICAgICAgYW5pbWF0ZS1zcGluXG4gICAgICBsb2FkZXJzXG4gICAgXCIgcm9sZT1cInN0YXR1c1wiICpuZ0lmPVwiIWltYWdlTG9hZGVkXCIgW25nQ2xhc3NdPVwieyd6LTUwJzogIWltYWdlTG9hZGVkfVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1hdC1yaWdodC1jb250YWluZXIgc206cmVsYXRpdmUgYmctd2hpdGUgY3VzdG9tc2Nyb2xsIHBsLTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RpY2t5IHRvcC0wIHB0LTQgYmctd2hpdGUgei0xMCBoaWRkZW4gc206YmxvY2tcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj48L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJweS00IGNvbW1lbnRzXCI+Q29tbWVudHM8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgc206aGlkZGVuIGZsZXgganVzdGlmeS1iZXR3ZWVuIHN0aWNreSB0b3AtMCB6LTEwIGJnLXdoaXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHktNCBiZy13aGl0ZSBjb21tbWVudHNcIj5Db21tZW50czwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJsb2NrIHJlbGF0aXZlXCI+XG4gICAgICAgIDxtYXQtaWNvbiBpZD1cImNsb3NlLWljb25cIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiIGNsYXNzPVwiYWJzb2x1dGVcIj5jbG9zZTwvbWF0LWljb24+ICBcbiAgICAgIDwvZGl2PlxuICAgIFxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWJveCBheG8tZm9udCB0ZXh0LXNtXCIgKm5nSWY9XCJhbm5vdGF0aW9uPy5hbm5vdGF0aW9ucy5sZW5ndGhcIj5cbiAgICAgIDxkaXYgIGNsYXNzPVwiY29tbWVudC1ib3gtY29udGFpbmVyIGZsZXggZ2FwLTQgcGItNFwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFubm90YXRpb24/LmFubm90YXRpb25zOyBsZXQgaT0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWxpZ2h0Ym94LWluZGV4LXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtbGlnaHRib3gtaW5kZXhcIiBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiBpdGVtLmNvbG9yICwnYm9yZGVyJzogKGlzQW5ub3RhdGlvblNlbGVjdGVkICYmIGkgPT09IHNlbGVjdGVkQW5ub3RhdGlvbkluZGV4ICYmIHByZXZpb3VzbHlTZWxlY3RlZEFubm90YXRpb25JZCA9PT0gc2VsZWN0ZWRBbm5vdGF0aW9uSW5kZXgpID8nMXB4IHNvbGlkICMwMDAwRkYnOicnfVwiIChjbGljayk9XCJzZWxlY3RBbm5vdGF0aW9uKGkpXCI+e3tpKzF9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwidy1mdWxsIGN1c3RvbXNjcm9sbFwiICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IChpc0Fubm90YXRpb25TZWxlY3RlZCAmJiBpID09PSBzZWxlY3RlZEFubm90YXRpb25JbmRleCAmJiBwcmV2aW91c2x5U2VsZWN0ZWRBbm5vdGF0aW9uSWQgPT09IHNlbGVjdGVkQW5ub3RhdGlvbkluZGV4KSA/JzFweCBzb2xpZCAjMDAwMEZGJzonJ31cIiAoY2xpY2spPVwic2VsZWN0QW5ub3RhdGlvbihpKVwiPnt7aXRlbS5ub3Rlc319PC9tYXQtY2FyZD4gIFxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYm94XCIgKm5nSWY9XCJhbm5vdGF0aW9uPy5hbm5vdGF0aW9ucy5sZW5ndGggPT09IDAgfHwgYW5ub3RhdGlvbj8uYW5ub3RhdGlvbnMgPT09IG51bGxcIj5ObyBjb21tZW50cyBhdmFpbGFibGVcbiAgICAgIFxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -71,11 +71,13 @@ export class WidgetsService {
71
71
  let previousCount = this.previousIdentifiersMap[response];
72
72
  const currResponse = response;
73
73
  if (previousCount !== undefined) {
74
- const count = parseInt(response.split('_')[1], 10);
75
- response = response.split('_')[0];
74
+ const result = this.extractParts(response);
75
+ const count = result.number;
76
+ response = result.base;
76
77
  const n = previousCount + count;
77
78
  previousCount++;
78
- response = `${response}_${n}`;
79
+ if (!Number.isNaN(count) && count > 0)
80
+ response = `${response}_${n}`;
79
81
  }
80
82
  else {
81
83
  previousCount = 0;
@@ -97,6 +99,16 @@ export class WidgetsService {
97
99
  throw error;
98
100
  });
99
101
  }
102
+ extractParts(input) {
103
+ const match = input.match(/^(.*)_(\d+)$/);
104
+ if (match) {
105
+ return {
106
+ base: match[1],
107
+ number: parseInt(match[2], 10)
108
+ };
109
+ }
110
+ return { base: input, number: null };
111
+ }
100
112
  // Function to check if the identifier is valid
101
113
  isValidIdentifier(identifier) {
102
114
  // Add your validation logic here, for example:
@@ -153,4 +165,4 @@ WidgetsService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: WidgetsSe
153
165
  providedIn: 'root'
154
166
  }]
155
167
  }], function () { return [{ type: i1.HttpClient }, { type: i2.CommonLibConfigurationService }, { type: i3.ClipboardService }, { type: i4.FormBuilderMasterService }]; }, null); })();
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9zY3VscHRvci1saWIvd2lkZ2V0cy93aWRnZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7QUFNMUcsTUFBTSxPQUFPLGNBQWM7SUFZekI7O09BRUc7SUFDSCxZQUNVLFdBQXVCLEVBQ3ZCLGVBQThDLEVBQzlDLGdCQUFrQyxFQUNsQyx5QkFBbUQ7UUFIbkQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsb0JBQWUsR0FBZixlQUFlLENBQStCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQWpCNUMsNEJBQXVCLEdBQUcsa0JBQWtCLENBQUM7UUFDOUQscUJBQWdCLEdBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2Ryx3Q0FBd0M7UUFDeEMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxJQUFJ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QUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFMUQsSUFBRyxhQUFhLEVBQUM7WUFDZixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUE7U0FDbEM7SUFFSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLENBQUMsMEJBQTBCO1FBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsdUJBQXVCO1FBRWhELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU1RCxJQUFJLGFBQWEsRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDMUM7UUFFRCxnRUFBZ0U7UUFDaEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztJQUM3QyxDQUFDOzs0RUEzSlUsY0FBYztvRUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24tbGliLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi8uLi9mb3Jtcy9wYWdlL3dpZGdldHMvd2lkZ2V0JztcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NsaXBib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyTWFzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NjdWxwdG9yL2Zvcm0tYnVpbGRlci1tYXN0ZXIvZm9ybS1idWlsZGVyLW1hc3Rlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBJREVOVElGSUVSU19TVE9SQUdFX0tFWSA9ICdpZGVudGlmaWVyc0FycmF5JztcbiAgaWRlbnRpZmllcnNBcnJheTogQXJyYXk8c3RyaW5nPiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5JREVOVElGSUVSU19TVE9SQUdFX0tFWSkpIHx8IFtdO1xuICAvLyBpZGVudGlmaWVyc0FycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIF93aWRnZXREZWxldGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0PigpO1xuICBfd2lkZ2V0Q29weUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxXaWRnZXQ+KCk7XG4gIF93aWRnZXRDdXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0PigpO1xuICBfd2lkZ2V0UGFzdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0PigpO1xuICBfd2lkZ2V0UGFzdGVBSUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxXaWRnZXQ+KCk7XG4gIHByaXZhdGUgaXNQYXN0aW5nQUk6IGJvb2xlYW4gPSBmYWxzZTsgLy8gQWRkIGEgZmxhZyB0byB0cmFjayBwYXN0aW5nIHN0YXRlXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29tbW9uTGliQ29uZmlnOiBDb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXJNYXN0ZXJTZXJ2aWNlOiBGb3JtQnVpbGRlck1hc3RlclNlcnZpY2VcbiAgKSB7IH1cblxuICAgIC8vIGxvY2Fsc3Ryb3JhZ2UgZm9yIGlkZW50aWZpZXJzQXJyYXlcbiAgICBwcml2YXRlIHVwZGF0ZUlkZW50aWZpZXJzU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSURFTlRJRklFUlNfU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMuaWRlbnRpZmllcnNBcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgKiBVcGRhdGUgaWRlbnRpZmllcnNBcnJheSBhZnRlciBkZWxldGluZyBhIHdpZGdldFxuICAgKiBAcGFyYW0gZGVsZXRlZElkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlbGV0ZWQgd2lkZ2V0XG4gICAqL1xuICB1cGRhdGVJZGVudGlmaWVyc0FmdGVyRGVsZXRlKGRlbGV0ZWRJZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgZGVsZXRlZCBpZGVudGlmaWVyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmlkZW50aWZpZXJzQXJyYXkuaW5kZXhPZihkZWxldGVkSWRlbnRpZmllcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBpZGVudGlmaWVyIGZyb20gdGhlIGFycmF5XG4gICAgICB0aGlzLmlkZW50aWZpZXJzQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIC8vIFVwZGF0ZSBsb2NhbFN0b3JhZ2VcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSURFTlRJRklFUlNfU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMuaWRlbnRpZmllcnNBcnJheSkpO1xuICAgIH1cbiAgfVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKiBAcGFyYW0gZm9ybUlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIHByZXZpb3VzSWRlbnRpZmllcnNNYXA6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTsgLy8gU3RvcmVzIHRoZSBsYXN0IGluY3JlbWVudCBmb3IgZWFjaCBiYXNlIGlkZW50aWZpZXJcblxuICBnZXRVbmlxdWVJZGVudGlmaWVyKGlkZW50aWZpZXI6IHN0cmluZywgZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMuaWRlbnRpZmllcnNBcnJheT0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLklERU5USUZJRVJTX1NUT1JBR0VfS0VZKSk7XG4gICAgXG4gICAgaWYodGhpcy5pZGVudGlmaWVyc0FycmF5PT09bnVsbClcbiAgICB0aGlzLmlkZW50aWZpZXJzQXJyYXkgPSB0aGlzLl9mb3JtQnVpbGRlck1hc3RlclNlcnZpY2UuZ2V0SWRlbnRpZmVyQXJyYXkoKTtcblxuICAgIGNvbnN0IGZvcm1EYXRhID0ge1xuICAgICAgJ2N1cnJlbnRfaWQnOiBpZGVudGlmaWVyLFxuICAgICAgJ2Zvcm1faWQnOiBmb3JtSWQsXG4gICAgICAnb3RoZXJfaWRzJzogdGhpcy5pZGVudGlmaWVyc0FycmF5XG4gICAgfTtcbiAgXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdDxzdHJpbmc+KGAke3RoaXMuY29tbW9uTGliQ29uZmlnLmF4b25hdG9yWDFVcmx9Z2V0VW5pcXVlSWRlbnRpZmllci9gLCBmb3JtRGF0YSkudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkSWRlbnRpZmllcihyZXNwb25zZSkpIHtcbiAgICAgICAgICAvLyBVc2UgYSBsb2NhbCB2YXJpYWJsZSB0byBhdm9pZCByZXBlYXRlZCBvYmplY3QgYWNjZXNzXG4gICAgICAgICAgbGV0IHByZXZpb3VzQ291bnQgPSB0aGlzLnByZXZpb3VzSWRlbnRpZmllcnNNYXBbcmVzcG9uc2VdO1xuICAgICAgICAgIGNvbnN0IGN1cnJSZXNwb25zZT1yZXNwb25zZTtcbiAgICAgICAgICBpZiAocHJldmlvdXNDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjb3VudD1wYXJzZUludChyZXNwb25zZS5zcGxpdCgnXycpWzFdLDEwKTtcblxuICAgICAgICAgICAgcmVzcG9uc2U9cmVzcG9uc2Uuc3BsaXQoJ18nKVswXTtcbiAgICAgICAgICAgIGNvbnN0IG49cHJldmlvdXNDb3VudCtjb3VudDtcbiAgICAgICAgICAgIHByZXZpb3VzQ291bnQrKztcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYCR7cmVzcG9uc2V9XyR7bn1gO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c0NvdW50ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnByZXZpb3VzSWRlbnRpZmllcnNNYXBbY3VyclJlc3BvbnNlXSA9IHByZXZpb3VzQ291bnQ7XG4gICAgICAgICAgdGhpcy5pZGVudGlmaWVyc0FycmF5LnB1c2gocmVzcG9uc2UpO1xuXG4gICAgICAgICAgLy8gQ29uc2lkZXIgYmF0Y2hpbmcgdXBkYXRlcyB0byBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICB0aGlzLnVwZGF0ZUlkZW50aWZpZXJzU3RvcmFnZSgpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdVbmlxdWUgaWRlbnRpZmllcjonLCByZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgaWRlbnRpZmllciByZWNlaXZlZDonLCByZXNwb25zZSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGlkZW50aWZpZXIgcmVjZWl2ZWQnKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHVuaXF1ZSBpZGVudGlmaWVyOicsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfVxuICBcbiAgXG4gIC8vIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBpZGVudGlmaWVyIGlzIHZhbGlkXG4gIGlzVmFsaWRJZGVudGlmaWVyKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIEFkZCB5b3VyIHZhbGlkYXRpb24gbG9naWMgaGVyZSwgZm9yIGV4YW1wbGU6XG4gICAgcmV0dXJuIC9eW2EtekEtWjAtOV9dKyQvLnRlc3QoaWRlbnRpZmllcik7XG4gIH1cbiAgICAvKipcbiAgICAgKnRvIGVtaXQgd2lkZ2V0IGNsaWNrIGV2ZW50IG9uIHdpZGdldCBEZWxldGUgY2xpY2tcbiAgICAgKlxuICAgICAqIEBwYXJhbSB3aWRnZXRcbiAgICAgKi9cbiAgIHdpZGdldERlbGV0ZUV2ZW50KHdpZGdldDogV2lkZ2V0KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVJZGVudGlmaWVyc0FmdGVyRGVsZXRlKHdpZGdldC5pZGVudGlmaWVyKTtcbiAgICB0aGlzLl93aWRnZXREZWxldGVFdmVudC5lbWl0KHdpZGdldCk7XG4gIH1cbiAgXG4gIHdpZGdldENvcHlFdmVudCh3aWRnZXQ6IFdpZGdldCk6IHZvaWQge1xuICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jb3B5V2lkZ2V0KHdpZGdldCk7XG4gICAgY29uc29sZS5sb2coJ1dpZGdldCBjb3BpZWQ6Jywgd2lkZ2V0KTtcbiAgfVxuXG4gIHdpZGdldEN1dEV2ZW50KHdpZGdldDogV2lkZ2V0KTogdm9pZCB7XG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmN1dFdpZGdldCh3aWRnZXQpO1xuICAgIHRoaXMuX3dpZGdldEN1dEV2ZW50LmVtaXQod2lkZ2V0KTtcbiAgfVxuXG4gIHdpZGdldFBhc3RlRXZlbnQoKSA6IHZvaWQge1xuICAgIGNvbnN0IHdpZGdldFRvUGFzdGUgPSB0aGlzLmNsaXBib2FyZFNlcnZpY2UucGFzdGVXaWRnZXQoKTtcblxuICAgIGlmKHdpZGdldFRvUGFzdGUpe1xuICAgICAgdGhpcy5fd2lkZ2V0UGFzdGVFdmVudC5lbWl0KHdpZGdldFRvUGFzdGUpO1xuICAgIH0gIGVsc2V7XG4gICAgICBjb25zb2xlLmxvZygnTm8gV2lkZ2V0IHRvIHBhc3RlJylcbiAgICB9XG4gICBcbiAgfVxuXG4gIHdpZGdldFBhc3RlQUlFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1Bhc3RpbmdBSSkgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIHBhc3Rlc1xuICAgIHRoaXMuaXNQYXN0aW5nQUkgPSB0cnVlOyAvLyBTZXQgdGhlIGZsYWcgdG8gdHJ1ZVxuXG4gICAgY29uc3Qgd2lkZ2V0VG9QYXN0ZSA9IHRoaXMuY2xpcGJvYXJkU2VydmljZS5wYXN0ZVdpZGdldEFJKCk7XG5cbiAgICBpZiAod2lkZ2V0VG9QYXN0ZSkge1xuICAgICAgdGhpcy5fd2lkZ2V0UGFzdGVBSUV2ZW50LmVtaXQod2lkZ2V0VG9QYXN0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBBSSBXaWRnZXQgdG8gcGFzdGVlZWVlJyk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdGhlIGZsYWcgYWZ0ZXIgYSBzaG9ydCBkZWxheSB0byBhbGxvdyBmb3IgYW5vdGhlciBwYXN0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc1Bhc3RpbmdBSSA9IGZhbHNlO1xuICAgIH0sIDEwMCk7IC8vIEFkanVzdCB0aGUgdGltZW91dCBhcyBuZWNlc3NhcnlcbiAgfVxuICBcbn1cbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9zY3VscHRvci1saWIvd2lkZ2V0cy93aWRnZXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7QUFNMUcsTUFBTSxPQUFPLGNBQWM7SUFZekI7O09BRUc7SUFDSCxZQUNVLFdBQXVCLEVBQ3ZCLGVBQThDLEVBQzlDLGdCQUFrQyxFQUNsQyx5QkFBbUQ7UUFIbkQsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsb0JBQWUsR0FBZixlQUFlLENBQStCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEwQjtRQWpCNUMsNEJBQXVCLEdBQUcsa0JBQWtCLENBQUM7UUFDOUQscUJBQWdCLEdBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2Ryx3Q0FBd0M7UUFDeEMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxJQUFJ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QUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztJQUM3QyxDQUFDOzs0RUF0S1UsY0FBYztvRUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO3VGQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTGliQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24tbGliLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi8uLi9mb3Jtcy9wYWdlL3dpZGdldHMvd2lkZ2V0JztcbmltcG9ydCB7IENsaXBib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NsaXBib2FyZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyTWFzdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NjdWxwdG9yL2Zvcm0tYnVpbGRlci1tYXN0ZXIvZm9ybS1idWlsZGVyLW1hc3Rlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBJREVOVElGSUVSU19TVE9SQUdFX0tFWSA9ICdpZGVudGlmaWVyc0FycmF5JztcbiAgaWRlbnRpZmllcnNBcnJheTogQXJyYXk8c3RyaW5nPiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5JREVOVElGSUVSU19TVE9SQUdFX0tFWSkpIHx8IFtdO1xuICAvLyBpZGVudGlmaWVyc0FycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIF93aWRnZXREZWxldGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0PigpO1xuICBfd2lkZ2V0Q29weUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxXaWRnZXQ+KCk7XG4gIF93aWRnZXRDdXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0PigpO1xuICBfd2lkZ2V0UGFzdGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V2lkZ2V0PigpO1xuICBfd2lkZ2V0UGFzdGVBSUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxXaWRnZXQ+KCk7XG4gIHByaXZhdGUgaXNQYXN0aW5nQUk6IGJvb2xlYW4gPSBmYWxzZTsgLy8gQWRkIGEgZmxhZyB0byB0cmFjayBwYXN0aW5nIHN0YXRlXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29tbW9uTGliQ29uZmlnOiBDb21tb25MaWJDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfZm9ybUJ1aWxkZXJNYXN0ZXJTZXJ2aWNlOiBGb3JtQnVpbGRlck1hc3RlclNlcnZpY2VcbiAgKSB7IH1cblxuICAgIC8vIGxvY2Fsc3Ryb3JhZ2UgZm9yIGlkZW50aWZpZXJzQXJyYXlcbiAgICBwcml2YXRlIHVwZGF0ZUlkZW50aWZpZXJzU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSURFTlRJRklFUlNfU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMuaWRlbnRpZmllcnNBcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgKiBVcGRhdGUgaWRlbnRpZmllcnNBcnJheSBhZnRlciBkZWxldGluZyBhIHdpZGdldFxuICAgKiBAcGFyYW0gZGVsZXRlZElkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRlbGV0ZWQgd2lkZ2V0XG4gICAqL1xuICB1cGRhdGVJZGVudGlmaWVyc0FmdGVyRGVsZXRlKGRlbGV0ZWRJZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiB0aGUgZGVsZXRlZCBpZGVudGlmaWVyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmlkZW50aWZpZXJzQXJyYXkuaW5kZXhPZihkZWxldGVkSWRlbnRpZmllcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBpZGVudGlmaWVyIGZyb20gdGhlIGFycmF5XG4gICAgICB0aGlzLmlkZW50aWZpZXJzQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIC8vIFVwZGF0ZSBsb2NhbFN0b3JhZ2VcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuSURFTlRJRklFUlNfU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMuaWRlbnRpZmllcnNBcnJheSkpO1xuICAgIH1cbiAgfVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaWRlbnRpZmllclxuICAgKiBAcGFyYW0gZm9ybUlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIHByZXZpb3VzSWRlbnRpZmllcnNNYXA6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTsgLy8gU3RvcmVzIHRoZSBsYXN0IGluY3JlbWVudCBmb3IgZWFjaCBiYXNlIGlkZW50aWZpZXJcblxuICBnZXRVbmlxdWVJZGVudGlmaWVyKGlkZW50aWZpZXI6IHN0cmluZywgZm9ybUlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMuaWRlbnRpZmllcnNBcnJheT0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLklERU5USUZJRVJTX1NUT1JBR0VfS0VZKSk7XG4gICAgXG4gICAgaWYodGhpcy5pZGVudGlmaWVyc0FycmF5PT09bnVsbClcbiAgICB0aGlzLmlkZW50aWZpZXJzQXJyYXkgPSB0aGlzLl9mb3JtQnVpbGRlck1hc3RlclNlcnZpY2UuZ2V0SWRlbnRpZmVyQXJyYXkoKTtcblxuICAgIGNvbnN0IGZvcm1EYXRhID0ge1xuICAgICAgJ2N1cnJlbnRfaWQnOiBpZGVudGlmaWVyLFxuICAgICAgJ2Zvcm1faWQnOiBmb3JtSWQsXG4gICAgICAnb3RoZXJfaWRzJzogdGhpcy5pZGVudGlmaWVyc0FycmF5XG4gICAgfTtcbiAgXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdDxzdHJpbmc+KGAke3RoaXMuY29tbW9uTGliQ29uZmlnLmF4b25hdG9yWDFVcmx9Z2V0VW5pcXVlSWRlbnRpZmllci9gLCBmb3JtRGF0YSkudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkSWRlbnRpZmllcihyZXNwb25zZSkpIHtcbiAgICAgICAgICAvLyBVc2UgYSBsb2NhbCB2YXJpYWJsZSB0byBhdm9pZCByZXBlYXRlZCBvYmplY3QgYWNjZXNzXG4gICAgICAgICAgbGV0IHByZXZpb3VzQ291bnQgPSB0aGlzLnByZXZpb3VzSWRlbnRpZmllcnNNYXBbcmVzcG9uc2VdO1xuICAgICAgICAgIGNvbnN0IGN1cnJSZXNwb25zZT1yZXNwb25zZTtcbiAgICAgICAgICBpZiAocHJldmlvdXNDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ9dGhpcy5leHRyYWN0UGFydHMocmVzcG9uc2UpO1xuICAgICAgICAgICAgY29uc3QgY291bnQ9cmVzdWx0Lm51bWJlcjtcbiAgICAgICAgICAgIHJlc3BvbnNlPXJlc3VsdC5iYXNlO1xuICAgICAgICAgICAgY29uc3Qgbj1wcmV2aW91c0NvdW50K2NvdW50O1xuICAgICAgICAgICAgcHJldmlvdXNDb3VudCsrO1xuICAgICAgICAgICAgaWYoIU51bWJlci5pc05hTihjb3VudCkmJiBjb3VudD4wKVxuICAgICAgICAgICAgcmVzcG9uc2UgPSBgJHtyZXNwb25zZX1fJHtufWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByZXZpb3VzQ291bnQgPSAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucHJldmlvdXNJZGVudGlmaWVyc01hcFtjdXJyUmVzcG9uc2VdID0gcHJldmlvdXNDb3VudDtcbiAgICAgICAgICB0aGlzLmlkZW50aWZpZXJzQXJyYXkucHVzaChyZXNwb25zZSk7XG5cbiAgICAgICAgICAvLyBDb25zaWRlciBiYXRjaGluZyB1cGRhdGVzIHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICAgIHRoaXMudXBkYXRlSWRlbnRpZmllcnNTdG9yYWdlKCk7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1VuaXF1ZSBpZGVudGlmaWVyOicsIHJlc3BvbnNlKTtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBpZGVudGlmaWVyIHJlY2VpdmVkOicsIHJlc3BvbnNlKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaWRlbnRpZmllciByZWNlaXZlZCcpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdW5pcXVlIGlkZW50aWZpZXI6JywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG4gIFxuICBleHRyYWN0UGFydHMoaW5wdXQ6IHN0cmluZyk6IHsgYmFzZTogc3RyaW5nOyBudW1iZXI6IG51bWJlciB8IG51bGwgfSB7XG4gICAgY29uc3QgbWF0Y2ggPSBpbnB1dC5tYXRjaCgvXiguKilfKFxcZCspJC8pOyBcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhc2U6IG1hdGNoWzFdLCBcbiAgICAgICAgbnVtYmVyOiBwYXJzZUludChtYXRjaFsyXSwgMTApIFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYmFzZTogaW5wdXQsIG51bWJlcjogbnVsbCB9OyBcbiAgfVxuICBcbiAgLy8gRnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGlkZW50aWZpZXIgaXMgdmFsaWRcbiAgaXNWYWxpZElkZW50aWZpZXIoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQWRkIHlvdXIgdmFsaWRhdGlvbiBsb2dpYyBoZXJlLCBmb3IgZXhhbXBsZTpcbiAgICByZXR1cm4gL15bYS16QS1aMC05X10rJC8udGVzdChpZGVudGlmaWVyKTtcbiAgfVxuICAgIC8qKlxuICAgICAqdG8gZW1pdCB3aWRnZXQgY2xpY2sgZXZlbnQgb24gd2lkZ2V0IERlbGV0ZSBjbGlja1xuICAgICAqXG4gICAgICogQHBhcmFtIHdpZGdldFxuICAgICAqL1xuICAgd2lkZ2V0RGVsZXRlRXZlbnQod2lkZ2V0OiBXaWRnZXQpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUlkZW50aWZpZXJzQWZ0ZXJEZWxldGUod2lkZ2V0LmlkZW50aWZpZXIpO1xuICAgIHRoaXMuX3dpZGdldERlbGV0ZUV2ZW50LmVtaXQod2lkZ2V0KTtcbiAgfVxuICBcbiAgd2lkZ2V0Q29weUV2ZW50KHdpZGdldDogV2lkZ2V0KTogdm9pZCB7XG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNvcHlXaWRnZXQod2lkZ2V0KTtcbiAgICBjb25zb2xlLmxvZygnV2lkZ2V0IGNvcGllZDonLCB3aWRnZXQpO1xuICB9XG5cbiAgd2lkZ2V0Q3V0RXZlbnQod2lkZ2V0OiBXaWRnZXQpOiB2b2lkIHtcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY3V0V2lkZ2V0KHdpZGdldCk7XG4gICAgdGhpcy5fd2lkZ2V0Q3V0RXZlbnQuZW1pdCh3aWRnZXQpO1xuICB9XG5cbiAgd2lkZ2V0UGFzdGVFdmVudCgpIDogdm9pZCB7XG4gICAgY29uc3Qgd2lkZ2V0VG9QYXN0ZSA9IHRoaXMuY2xpcGJvYXJkU2VydmljZS5wYXN0ZVdpZGdldCgpO1xuXG4gICAgaWYod2lkZ2V0VG9QYXN0ZSl7XG4gICAgICB0aGlzLl93aWRnZXRQYXN0ZUV2ZW50LmVtaXQod2lkZ2V0VG9QYXN0ZSk7XG4gICAgfSAgZWxzZXtcbiAgICAgIGNvbnNvbGUubG9nKCdObyBXaWRnZXQgdG8gcGFzdGUnKVxuICAgIH1cbiAgIFxuICB9XG5cbiAgd2lkZ2V0UGFzdGVBSUV2ZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUGFzdGluZ0FJKSByZXR1cm47IC8vIFByZXZlbnQgbXVsdGlwbGUgcGFzdGVzXG4gICAgdGhpcy5pc1Bhc3RpbmdBSSA9IHRydWU7IC8vIFNldCB0aGUgZmxhZyB0byB0cnVlXG5cbiAgICBjb25zdCB3aWRnZXRUb1Bhc3RlID0gdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLnBhc3RlV2lkZ2V0QUkoKTtcblxuICAgIGlmICh3aWRnZXRUb1Bhc3RlKSB7XG4gICAgICB0aGlzLl93aWRnZXRQYXN0ZUFJRXZlbnQuZW1pdCh3aWRnZXRUb1Bhc3RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ05vIEFJIFdpZGdldCB0byBwYXN0ZWVlZWUnKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCB0aGUgZmxhZyBhZnRlciBhIHNob3J0IGRlbGF5IHRvIGFsbG93IGZvciBhbm90aGVyIHBhc3RlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlzUGFzdGluZ0FJID0gZmFsc2U7XG4gICAgfSwgMTAwKTsgLy8gQWRqdXN0IHRoZSB0aW1lb3V0IGFzIG5lY2Vzc2FyeVxuICB9XG4gIFxufVxuIl19
@@ -50597,11 +50597,13 @@ class WidgetsService {
50597
50597
  let previousCount = this.previousIdentifiersMap[response];
50598
50598
  const currResponse = response;
50599
50599
  if (previousCount !== undefined) {
50600
- const count = parseInt(response.split('_')[1], 10);
50601
- response = response.split('_')[0];
50600
+ const result = this.extractParts(response);
50601
+ const count = result.number;
50602
+ response = result.base;
50602
50603
  const n = previousCount + count;
50603
50604
  previousCount++;
50604
- response = `${response}_${n}`;
50605
+ if (!Number.isNaN(count) && count > 0)
50606
+ response = `${response}_${n}`;
50605
50607
  }
50606
50608
  else {
50607
50609
  previousCount = 0;
@@ -50623,6 +50625,16 @@ class WidgetsService {
50623
50625
  throw error;
50624
50626
  });
50625
50627
  }
50628
+ extractParts(input) {
50629
+ const match = input.match(/^(.*)_(\d+)$/);
50630
+ if (match) {
50631
+ return {
50632
+ base: match[1],
50633
+ number: parseInt(match[2], 10)
50634
+ };
50635
+ }
50636
+ return { base: input, number: null };
50637
+ }
50626
50638
  // Function to check if the identifier is valid
50627
50639
  isValidIdentifier(identifier) {
50628
50640
  // Add your validation logic here, for example:
@@ -60568,7 +60580,7 @@ ImageWidgetLightboxViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
60568
60580
  if (rf & 1) {
60569
60581
  i0.ɵɵlistener("mousewheel", function ImageWidgetLightboxViewComponent_mousewheel_HostBindingHandler($event) { return ctx.click($event); }, false, i0.ɵɵresolveWindow);
60570
60582
  }
60571
- }, outputs: { expandCanvasDialog: "expandCanvasDialog" }, decls: 25, vars: 15, consts: [["mat-dialog-content", "", 1, "light-box-container", "flex", "h-full", "flex-col", "sm:flex-row", "relative"], [1, "mat-left-container"], ["id", "annotationsCanvas", 1, "relative", "z-10", 3, "ngClass", "click"], ["canvas", ""], [3, "disabled", "click", 4, "ngIf"], [1, "lightbox-image-zoom-in-out"], ["class", "cursor-pointer eye-icon z-20", 3, "svgIcon", "click", 4, "ngIf"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "ngClass", "click"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "click"], ["class", "\n spinner-border\n animate-spin\n loaders\n ", "role", "status", 3, "ngClass", 4, "ngIf"], [1, "mat-right-container", "sm:relative", "bg-white", "customscroll", "pl-5"], [1, "sticky", "top-0", "pt-4", "bg-white", "z-10", "hidden", "sm:block"], [1, "close-icon", 3, "click"], [1, "py-4", "comments"], [1, "block", "sm:hidden", "flex", "justify-between", "sticky", "top-0", "z-10", "bg-white"], [1, "py-4", "bg-white", "commments"], [1, "block", "relative"], ["id", "close-icon", 1, "absolute", 3, "click"], ["class", "comment-box axo-font text-sm", 4, "ngIf"], ["class", "comment-box", 4, "ngIf"], [3, "disabled", "click"], [1, "lightbox-image-left-arrow", 3, "svgIcon"], [1, "lightbox-image-right-arrow", 3, "svgIcon"], [1, "cursor-pointer", "eye-icon", "z-20", 3, "svgIcon", "click"], ["role", "status", 1, "spinner-border", "animate-spin", "loaders", 3, "ngClass"], [1, "visually-hidden"], [1, "comment-box", "axo-font", "text-sm"], ["class", "comment-box-container flex gap-4 pb-4", 4, "ngFor", "ngForOf"], [1, "comment-box-container", "flex", "gap-4", "pb-4"], [1, "image-lightbox-index-wrapper"], [1, "image-lightbox-index", 3, "ngStyle", "click"], [1, "w-full", "customscroll", 3, "ngStyle", "click"], [1, "comment-box"]], template: function ImageWidgetLightboxViewComponent_Template(rf, ctx) {
60583
+ }, outputs: { expandCanvasDialog: "expandCanvasDialog" }, decls: 25, vars: 15, consts: [["mat-dialog-content", "", 1, "light-box-container", "popup-container", "flex", "h-full", "flex-col", "sm:flex-row", "relative"], [1, "mat-left-container"], ["id", "annotationsCanvas", 1, "relative", "z-10", 3, "ngClass", "click"], ["canvas", ""], [3, "disabled", "click", 4, "ngIf"], [1, "lightbox-image-zoom-in-out"], ["class", "cursor-pointer eye-icon z-20", 3, "svgIcon", "click", 4, "ngIf"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "ngClass", "click"], [1, "cursor-pointer", "z-20", 3, "svgIcon", "click"], ["class", "\n spinner-border\n animate-spin\n loaders\n ", "role", "status", 3, "ngClass", 4, "ngIf"], [1, "mat-right-container", "sm:relative", "bg-white", "customscroll", "pl-5"], [1, "sticky", "top-0", "pt-4", "bg-white", "z-10", "hidden", "sm:block"], [1, "close-icon", 3, "click"], [1, "py-4", "comments"], [1, "block", "sm:hidden", "flex", "justify-between", "sticky", "top-0", "z-10", "bg-white"], [1, "py-4", "bg-white", "commments"], [1, "block", "relative"], ["id", "close-icon", 1, "absolute", 3, "click"], ["class", "comment-box axo-font text-sm", 4, "ngIf"], ["class", "comment-box", 4, "ngIf"], [3, "disabled", "click"], [1, "lightbox-image-left-arrow", 3, "svgIcon"], [1, "lightbox-image-right-arrow", 3, "svgIcon"], [1, "cursor-pointer", "eye-icon", "z-20", 3, "svgIcon", "click"], ["role", "status", 1, "spinner-border", "animate-spin", "loaders", 3, "ngClass"], [1, "visually-hidden"], [1, "comment-box", "axo-font", "text-sm"], ["class", "comment-box-container flex gap-4 pb-4", 4, "ngFor", "ngForOf"], [1, "comment-box-container", "flex", "gap-4", "pb-4"], [1, "image-lightbox-index-wrapper"], [1, "image-lightbox-index", 3, "ngStyle", "click"], [1, "w-full", "customscroll", 3, "ngStyle", "click"], [1, "comment-box"]], template: function ImageWidgetLightboxViewComponent_Template(rf, ctx) {
60572
60584
  if (rf & 1) {
60573
60585
  i0.ɵɵelementStart(0, "div", 0);
60574
60586
  i0.ɵɵelementStart(1, "div", 1);
@@ -60642,7 +60654,7 @@ ImageWidgetLightboxViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
60642
60654
  (function () {
60643
60655
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImageWidgetLightboxViewComponent, [{
60644
60656
  type: Component,
60645
- args: [{ selector: 'lib-image-widget-lightbox-view', encapsulation: ViewEncapsulation.None, template: "<div mat-dialog-content class=\"light-box-container flex h-full flex-col sm:flex-row relative\">\n<div class=\"mat-left-container\">\n <canvas id=\"annotationsCanvas\" (click)=\"onCanvasClick($event)\" #canvas class=\"relative z-10\" [ngClass]=\"{'opacity-50': !imageLoaded}\">\n\n </canvas>\n <button *ngIf=\"!disablePreviousButton && imageLoaded\" (click)=\"showPreviousImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-left-arrow\" [svgIcon]=\"'axo_left_arrow'\" ></mat-icon></button>\n <button *ngIf=\"!disableNextButton && imageLoaded\" (click)=\"showNextImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-right-arrow\" [svgIcon]=\"'axo_right_arrow'\" ></mat-icon></button>\n <div class=\"lightbox-image-zoom-in-out\">\n <mat-icon *ngIf=\"isImageWithAnnotations\" (click)=\"showImageWithoutAnnotations()\" [svgIcon]=\"showImage ?'axo_anotation_show':'axo_anotation_hide'\" class=\"cursor-pointer eye-icon z-20\"></mat-icon>\n <mat-icon (click)=\"expandCanvas()\" [svgIcon]=\"isCanvasExpanded ?'axo_img_compress':'axo_fullscreen'\" class=\"cursor-pointer z-20\" [ngClass]=\"{'expand': isCanvasExpanded}\"></mat-icon>\n <mat-icon (click)=\"imageZoomIn()\" [svgIcon]=\"'axo_zoom_in'\" class=\"cursor-pointer z-20\"></mat-icon>\n <mat-icon (click)=\"imageZoomOut()\"[svgIcon]=\"'axo_zoom_out'\" class=\"cursor-pointer z-20\"></mat-icon>\n </div>\n <div class=\"\n spinner-border\n animate-spin\n loaders\n \" role=\"status\" *ngIf=\"!imageLoaded\" [ngClass]=\"{'z-50': !imageLoaded}\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n</div>\n\n <div class=\"mat-right-container sm:relative bg-white customscroll pl-5\">\n <div class=\"sticky top-0 pt-4 bg-white z-10 hidden sm:block\">\n <button class=\"close-icon\" (click)=\"closeDialog()\"></button>\n <div class=\"py-4 comments\">Comments</div>\n </div>\n <div class=\"block sm:hidden flex justify-between sticky top-0 z-10 bg-white\">\n <div class=\"py-4 bg-white commments\">Comments</div>\n <div class=\"block relative\">\n <mat-icon id=\"close-icon\" (click)=\"closeDialog()\" class=\"absolute\">close</mat-icon> \n </div>\n \n </div>\n <div class=\"comment-box axo-font text-sm\" *ngIf=\"annotation?.annotations.length\">\n <div class=\"comment-box-container flex gap-4 pb-4\" *ngFor=\"let item of annotation?.annotations; let i= index\">\n <div class=\"image-lightbox-index-wrapper\">\n <div class=\"image-lightbox-index\" [ngStyle]=\"{'background-color': item.color ,'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{i+1}}</div>\n </div>\n <mat-card class=\"w-full customscroll\" [ngStyle]=\"{'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{item.notes}}</mat-card> \n </div>\n </div>\n <div class=\"comment-box\" *ngIf=\"annotation?.annotations.length === 0 || annotation?.annotations === null\">No comments available\n \n </div>\n </div>\n</div>\n", styles: ["lib-image-widget-lightbox-view .light-box-container{height:100%;width:100%}lib-image-widget-lightbox-view .mat-left-container{position:relative;flex:70%;width:70%;display:flex;justify-content:center;align-items:center;background-color:#10172b}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-left-arrow{position:absolute;top:50%;left:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-right-arrow{position:absolute;top:50%;right:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .loaders{display:inline-block;width:2rem;height:2rem;border-width:4px;border-radius:100%;color:#a855f7;position:absolute;inset:50%;z-index:0}lib-image-widget-lightbox-view .mat-right-container{width:30%;flex:30%}lib-image-widget-lightbox-view .mat-right-container #close-icon{right:0;top:0;font-size:16px}lib-image-widget-lightbox-view .mat-right-container .comment-box-container{font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper{display:flex;height:3.374rem;align-items:center}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper .image-lightbox-index{height:1.313rem;min-width:1.313rem;min-height:1.313rem;text-align:center;border-radius:100%;font-size:12px;font-weight:600;color:#fff;line-height:1.413rem}lib-image-widget-lightbox-view .mat-right-container .comment-box-container mat-card{background:#F2F4FA;border:none;box-shadow:none!important;font-size:.8rem;font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view #annotationsCanvas{max-width:100%}lib-image-widget-lightbox-view .mat-card{min-width:auto}@media only screen and (max-width: 600px){lib-image-widget-lightbox-view .mat-left-container{flex:100%;width:100%}lib-image-widget-lightbox-view .mat-right-container{flex:100%;width:100%}lib-image-widget-lightbox-view #close-icon{top:.5rem!important}}lib-image-widget-lightbox-view .comments{font-size:1rem;cursor:default}lib-image-widget-lightbox-view .lightbox-image-zoom-in-out{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;grid-row-gap:.5rem;row-gap:.5rem;justify-content:center;align-items:center;margin-right:.4rem;margin-bottom:.6rem}lib-image-widget-lightbox-view .comment-box{cursor:default}.cdk-overlay-pane:not(:has(.light-box-container)){height:auto!important;width:auto!important}.mat-dialog-container:has(.light-box-container){height:100%!important;width:100%!important;max-height:100%!important;max-width:100%!important}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #dc2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"] }]
60657
+ args: [{ selector: 'lib-image-widget-lightbox-view', encapsulation: ViewEncapsulation.None, template: "<div mat-dialog-content class=\"light-box-container popup-container flex h-full flex-col sm:flex-row relative\">\n<div class=\"mat-left-container\">\n <canvas id=\"annotationsCanvas\" (click)=\"onCanvasClick($event)\" #canvas class=\"relative z-10\" [ngClass]=\"{'opacity-50': !imageLoaded}\">\n\n </canvas>\n <button *ngIf=\"!disablePreviousButton && imageLoaded\" (click)=\"showPreviousImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-left-arrow\" [svgIcon]=\"'axo_left_arrow'\" ></mat-icon></button>\n <button *ngIf=\"!disableNextButton && imageLoaded\" (click)=\"showNextImage()\" [disabled]=\"!imageLoaded\"><mat-icon class=\"lightbox-image-right-arrow\" [svgIcon]=\"'axo_right_arrow'\" ></mat-icon></button>\n <div class=\"lightbox-image-zoom-in-out\">\n <mat-icon *ngIf=\"isImageWithAnnotations\" (click)=\"showImageWithoutAnnotations()\" [svgIcon]=\"showImage ?'axo_anotation_show':'axo_anotation_hide'\" class=\"cursor-pointer eye-icon z-20\"></mat-icon>\n <mat-icon (click)=\"expandCanvas()\" [svgIcon]=\"isCanvasExpanded ?'axo_img_compress':'axo_fullscreen'\" class=\"cursor-pointer z-20\" [ngClass]=\"{'expand': isCanvasExpanded}\"></mat-icon>\n <mat-icon (click)=\"imageZoomIn()\" [svgIcon]=\"'axo_zoom_in'\" class=\"cursor-pointer z-20\"></mat-icon>\n <mat-icon (click)=\"imageZoomOut()\"[svgIcon]=\"'axo_zoom_out'\" class=\"cursor-pointer z-20\"></mat-icon>\n </div>\n <div class=\"\n spinner-border\n animate-spin\n loaders\n \" role=\"status\" *ngIf=\"!imageLoaded\" [ngClass]=\"{'z-50': !imageLoaded}\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n</div>\n\n <div class=\"mat-right-container sm:relative bg-white customscroll pl-5\">\n <div class=\"sticky top-0 pt-4 bg-white z-10 hidden sm:block\">\n <button class=\"close-icon\" (click)=\"closeDialog()\"></button>\n <div class=\"py-4 comments\">Comments</div>\n </div>\n <div class=\"block sm:hidden flex justify-between sticky top-0 z-10 bg-white\">\n <div class=\"py-4 bg-white commments\">Comments</div>\n <div class=\"block relative\">\n <mat-icon id=\"close-icon\" (click)=\"closeDialog()\" class=\"absolute\">close</mat-icon> \n </div>\n \n </div>\n <div class=\"comment-box axo-font text-sm\" *ngIf=\"annotation?.annotations.length\">\n <div class=\"comment-box-container flex gap-4 pb-4\" *ngFor=\"let item of annotation?.annotations; let i= index\">\n <div class=\"image-lightbox-index-wrapper\">\n <div class=\"image-lightbox-index\" [ngStyle]=\"{'background-color': item.color ,'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{i+1}}</div>\n </div>\n <mat-card class=\"w-full customscroll\" [ngStyle]=\"{'border': (isAnnotationSelected && i === selectedAnnotationIndex && previouslySelectedAnnotationId === selectedAnnotationIndex) ?'1px solid #0000FF':''}\" (click)=\"selectAnnotation(i)\">{{item.notes}}</mat-card> \n </div>\n </div>\n <div class=\"comment-box\" *ngIf=\"annotation?.annotations.length === 0 || annotation?.annotations === null\">No comments available\n \n </div>\n </div>\n</div>\n", styles: ["lib-image-widget-lightbox-view .light-box-container{height:100%;width:100%}lib-image-widget-lightbox-view .mat-left-container{position:relative;flex:70%;width:70%;display:flex;justify-content:center;align-items:center;background-color:#10172b}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-left-arrow{position:absolute;top:50%;left:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .lightbox-image-right-arrow{position:absolute;top:50%;right:1rem;cursor:pointer;z-index:20}lib-image-widget-lightbox-view .mat-left-container .loaders{display:inline-block;width:2rem;height:2rem;border-width:4px;border-radius:100%;color:#a855f7;position:absolute;inset:50%;z-index:0}lib-image-widget-lightbox-view .mat-right-container{width:30%;flex:30%}lib-image-widget-lightbox-view .mat-right-container #close-icon{right:0;top:0;font-size:16px}lib-image-widget-lightbox-view .mat-right-container .comment-box-container{font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper{display:flex;height:3.374rem;align-items:center}lib-image-widget-lightbox-view .mat-right-container .comment-box-container .image-lightbox-index-wrapper .image-lightbox-index{height:1.313rem;min-width:1.313rem;min-height:1.313rem;text-align:center;border-radius:100%;font-size:12px;font-weight:600;color:#fff;line-height:1.413rem}lib-image-widget-lightbox-view .mat-right-container .comment-box-container mat-card{background:#F2F4FA;border:none;box-shadow:none!important;font-size:.8rem;font-family:Open Sans,Arial,sans-serif}lib-image-widget-lightbox-view #annotationsCanvas{max-width:100%}lib-image-widget-lightbox-view .mat-card{min-width:auto}@media only screen and (max-width: 600px){lib-image-widget-lightbox-view .mat-left-container{flex:100%;width:100%}lib-image-widget-lightbox-view .mat-right-container{flex:100%;width:100%}lib-image-widget-lightbox-view #close-icon{top:.5rem!important}}lib-image-widget-lightbox-view .comments{font-size:1rem;cursor:default}lib-image-widget-lightbox-view .lightbox-image-zoom-in-out{position:absolute;bottom:0;right:0;display:flex;flex-direction:column;grid-row-gap:.5rem;row-gap:.5rem;justify-content:center;align-items:center;margin-right:.4rem;margin-bottom:.6rem}lib-image-widget-lightbox-view .comment-box{cursor:default}.cdk-overlay-pane:not(:has(.light-box-container)){height:auto!important;width:auto!important}.mat-dialog-container:has(.light-box-container){height:100%!important;width:100%!important;max-height:100%!important;max-width:100%!important}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #dc2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"] }]
60646
60658
  }], function () {
60647
60659
  return [{ type: i1$5.MatDialogRef }, { type: undefined, decorators: [{
60648
60660
  type: Inject,