bpm-core 0.0.72 → 0.0.73

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.
@@ -232,7 +232,7 @@ export class ServiceHeaderComponent {
232
232
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ServiceHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CoreService }, { token: i1.CoreI18nService }, { token: i1.FeedBackService }, { token: i2.MatDialog }, { token: i1.SidenavService }, { token: i3.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
233
233
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: ServiceHeaderComponent, isStandalone: true, selector: "core-service-header", inputs: { form: "form", showHistory: "showHistory", isLoading: "isLoading", isReadOnly: "isReadOnly", showApprovalHistory: "showApprovalHistory", approvalHistory: "approvalHistory", creationDate: "creationDate", formTitle: "formTitle", section: "section", serviceFaq: "serviceFaq" }, providers: [FeedBackService,
234
234
  { provide: MAT_DIALOG_DATA, useValue: {} },
235
- ], ngImport: i0, template: "@if (form?.header?.status?.['key'] === 'NEW') {\r\n <section\r\n class=\"main-sidenav main-sidenav-full mb-4\"\r\n\r\n >\r\n <div class=\"sidenav-title\">\r\n <div class=\"d-flex align-items-center gap-3 w-100\">\r\n <!-- <ds-button icon class=\"rotate-arrow\" size=\"small\" (click)=\"goBack()\" *ngIf=\"!isInMobileApp() && showBack\">\r\n <ds-icon icon=\"arrow-right\" class=\"fs-19 fc-black\"></ds-icon>\r\n </ds-button>-->\r\n\r\n <!-- <h3 class=\"flex-grow-0\">\r\n {{ formTitle }}\r\n </h3>-->\r\n\r\n <section>\r\n <p class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-1\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </p>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 flex-grow-1\">\r\n @if (serviceFaq.length) {\r\n <ds-button size=\"small\" icon>\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n </ds-button>\r\n }\r\n <!-- <ds-button size=\"small\" icon (click)=\"openWorkflow()\">\r\n <ds-icon icon=\"bell-2-o\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button> -->\r\n @if (!isReadOnly) {\r\n <ds-button size=\"small\" icon (click)=\"showPreviousRequests()\">\r\n <ds-icon icon=\"clock\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- <header class=\"mb-4 mt-4 d-flex align-items-center justify-content-between align-items-end gap-2\">\r\n <section>\r\n <h6 class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-0\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </h6>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n </header>-->\r\n} @else {\r\n\r\n <div class=\"w-100\">\r\n <section class=\"request-main-info {{statusClass(form?.header?.status?.['key'])}}\">\r\n <section class=\"request-info\">\r\n <div class=\"request-info--body\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n <h4 class=\"fs-22 fs-md-16 fc-black fw-medium mb-0 flex-grow-1 line-height-1-2\">\r\n {{ formTitle }}\r\n </h4>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 request-info--status-action\">\r\n <div class=\"d-inline-flex flex-column align-items-end\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- <ds-button\r\n *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback =='true'|| form?.inboxItem?.hasFeedback=='true')\"\r\n square icon size=\"small\">\r\n <ds-icon icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\">\r\n &lt;!&ndash; [ngClass]=\"{'fc-green':feedBackIcon == 'feedbackResponded' , 'fc-red': feedBackIcon == 'respondToFeedback' , 'fc-yellow': feedBackIcon == 'waitingFeedback'}\"&ndash;&gt;\r\n </ds-icon>\r\n </ds-button>-->\r\n <!-- history-->\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"request-info--footer\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <div\r\n class=\"d-flex align-items-center flex-wrap flex-grow-1 gap-1 gap-sm-2 line-height-1 request-info--header__details\">\r\n <span\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\"\r\n class=\"fs-12 fw-medium d-none d-sm-inline-block\">{{ coreService.getShortName(form?.header?.['requesterName']) }}</span>\r\n <span class=\"fs-20\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ form?.header?.formId }}</span>\r\n <span class=\"fs-20\" *ngIf=\"creationDate\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ creationDate }}</span>\r\n </div>\r\n </div>\r\n </section>\r\n </section>\r\n\r\n </div>\r\n\r\n\r\n <!--<ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 my-2\">\r\n <ds-button\r\n *ngIf=\"form?.inboxItem && !form.sections[form.sections.length -1].header.readOnly && !isLoading\"\r\n square\r\n icon\r\n size=\"small\"\r\n [matMenuTriggerFor]=\"menu\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon\r\n [ngClass]=\"{'fc-purple' : (flagPriority === '0' || flagPriority === null),'fc-yellow' : flagPriority === '1','fc-green' : flagPriority === '2','fc-coral' : flagPriority === '3'}\"\r\n icon=\"flag-o\" class=\"fs-20 fs-md-17 fc-purple\">\r\n </ds-icon>\r\n </ds-button>\r\n <mat-menu #menu=\"matMenu\" panelClass=\"action-menu\">\r\n <button mat-menu-item (click)=\"setFlagPriority('0')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-purple fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('1')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-yellow fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('2')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-green fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('3')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n </mat-menu>\r\n\r\n <ng-content></ng-content>\r\n </div>\r\n <header class=\"service-header bc-white p-3 p-sm-4 py-4 gap-3 {{statusClass(form?.header?.status?.['key'])}}\">\r\n\r\n <div class=\"service-header-icon\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 d-flex flex-column flex-sm-row align-items-sm-center gap-2\">\r\n <div class=\"flex-grow-1\">\r\n <h1 class=\"fs-20 fs-md-16 fw-bold fc-black header-title m-0\">{{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n <div class=\"header-user d-flex align-items-sm-center gap-2 mt-sm-1\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <span\r\n class=\"fs-12 text-truncate d-sm-block cursor-pointer\" (click)=\"showUserInfo()\"\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ coreService.getShortName(form?.header?.requesterName) }}</span>\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ form?.header?.formId }}</span>\r\n @if (creationDate) {\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-14\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ creationDate }}</span>\r\n }\r\n </div>\r\n\r\n </div>\r\n <div class=\"header-actions d-flex flex-row flex-sm-column justify-content-between justify-content-sm-center gap-2 mt-2 mt-sm-0\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-end gap-2\">\r\n &lt;!&ndash; feedback&ndash;&gt;\r\n &lt;!&ndash; *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback ==='true'|| form?.inboxItem?.hasFeedback==='true') && !isLoading\"&ndash;&gt;\r\n &lt;!&ndash; <ds-button\r\n square icon size=\"small\" (click)=\"feedback()\">\r\n <ds-icon\r\n icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\"\r\n [ngClass]=\"{'fc-green':feedBackIcon === 'feedbackResponded' , 'fc-red': feedBackIcon === 'respondToFeedback' , 'fc-yellow': feedBackIcon === 'waitingFeedback'}\">\r\n </ds-icon>\r\n </ds-button>&ndash;&gt;\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n @if (showApprovalHistory) {\r\n <ng-container>\r\n <ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\" [satPopoverAnchor]=\"workflow\"\r\n #workflowAnchor=\"satPopoverAnchor\" (click)=\"workflowAnchor.popover.open()\">\r\n <slot name=\"prefix\">\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n </slot>\r\n </ds-button>\r\n <sat-popover\r\n #workflow [anchor]=\"workflowAnchor\" [hasBackdrop]=\"true\" verticalAlign=\"below\"\r\n horizontalAlign=\"end\">\r\n <div class=\"default-popover p-3\" style=\"min-width: 330px;\">\r\n <ds-approvals *ngIf=\"approvalHistory\" class=\"popover-approvals\" approvalsData=\"{{approvals}}\">\r\n </ds-approvals>\r\n </div>\r\n </sat-popover>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </header>\r\n </ng-container>-->\r\n}\r\n", styles: [".loading-width{min-width:100px;width:40px;flex-grow:1}.request-main-info{--item-bg: var(--light-gray);--item-fc: var(--black);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.warning{--item-bg: var(--yellow);--status-container-bc: #fff8d9;--status-container-brc: var(--yellow)}.request-main-info.pending{--item-bg: #eff0f1;--status-container-bc: #e8ebec;--status-container-brc: #c8ced1}.request-main-info.expired{--item-bg: var(--dark-gray);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.success{--item-bg: var(--green);--status-container-bc: #e6f9f4;--status-container-brc: var(--green)}.request-main-info.info{--item-bg: var(--sea-light);--status-container-bc: #fff8d9;--status-container-brc: var(--sea-light)}.request-main-info.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.request-main-info.orange,.request-main-info.send_back{--item-bg: var(--orange);--status-container-bc: #fff0eb;--status-container-brc: var(--orange)}.request-info{border-radius:0;box-shadow:var(--box-shadow);background-color:var(--white);border-top:5px solid var(--item-bg)}.request-info--footer{padding:20px 24px;min-height:45px;display:flex;align-items:center;gap:.75rem;border-top:1px solid var(--light-gray)}@media (max-width: 578px){.request-info--footer{padding:.3rem 1rem}}.request-info--footer__details{color:var(--item-fc)}.request-info--body{padding:2rem;display:flex;align-items:center;gap:.75rem;background-color:#fff}@media (max-width: 578px){.request-info--body{padding:1rem;flex-direction:column;align-items:stretch}}.request-info--body figure{min-width:30px;width:30px;text-align:center}.request-info--body figure svg{width:100%}@media (max-width: 578px){.request-info--status-action{justify-content:space-between}}.request-info--history{margin-top:-.5rem}.request-info--comment{background-color:#fff0eb;color:var(--orange);border-radius:0 0 4px 4px}.status-container{min-height:40px;padding:.5rem 1rem;display:flex;flex-direction:column;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.status-container.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.status-container ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;--default-size: 25px}@media (min-width: 768px){.status-container ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}.circle-status::part(base){--status-radius: 50%;--status-size: 19px;--status-fs: 100%}ds-button[square]::part(base){--btn-padding: 0;--default-size-sm: 30px}.send-back-container{background-color:#fff0eb;color:var(--orange);padding:.5rem;border-radius:4px}object,iframe,embed{height:79vh}::ng-deep .history-popup{--popup-width: 100vw;--popup-max-width: 100vw;--popup-radius: 15px 15px 0 0;position:absolute!important;bottom:0}:host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .main-sidenav.main-sidenav-full .sidenav-title{border-bottom:transparent!important}:host .main-sidenav .sidenav-title{background-color:transparent!important}:host .main-sidenav{height:60px;min-height:10px!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
235
+ ], ngImport: i0, template: "@if (form?.header?.status?.['key'] === 'NEW') {\r\n <section\r\n class=\"main-sidenav main-sidenav-full mb-4\"\r\n\r\n >\r\n <div class=\"sidenav-title\">\r\n <div class=\"d-flex align-items-center gap-3 w-100\">\r\n <!-- <ds-button icon class=\"rotate-arrow\" size=\"small\" (click)=\"goBack()\" *ngIf=\"!isInMobileApp() && showBack\">\r\n <ds-icon icon=\"arrow-right\" class=\"fs-19 fc-black\"></ds-icon>\r\n </ds-button>-->\r\n\r\n <!-- <h3 class=\"flex-grow-0\">\r\n {{ formTitle }}\r\n </h3>-->\r\n\r\n <section>\r\n <p class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-1\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </p>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 flex-grow-1\">\r\n @if (serviceFaq.length) {\r\n <ds-button size=\"small\" icon>\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n </ds-button>\r\n }\r\n <!-- <ds-button size=\"small\" icon (click)=\"openWorkflow()\">\r\n <ds-icon icon=\"bell-2-o\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button> -->\r\n @if (!isReadOnly) {\r\n <ds-button size=\"small\" icon (click)=\"showPreviousRequests()\">\r\n <ds-icon icon=\"clock\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- <header class=\"mb-4 mt-4 d-flex align-items-center justify-content-between align-items-end gap-2\">\r\n <section>\r\n <h6 class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-0\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </h6>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n </header>-->\r\n} @else {\r\n\r\n <div class=\"w-100\">\r\n <section class=\"request-main-info {{statusClass(form?.header?.status?.['key'])}}\">\r\n <section class=\"request-info\">\r\n <div class=\"request-info--body\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n <h4 class=\"fs-22 fs-md-16 fc-black fw-medium mb-0 flex-grow-1 line-height-1-2\">\r\n {{ formTitle }}\r\n </h4>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 request-info--status-action\">\r\n <div class=\"d-inline-flex flex-column align-items-end\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- <ds-button\r\n *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback =='true'|| form?.inboxItem?.hasFeedback=='true')\"\r\n square icon size=\"small\">\r\n <ds-icon icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\">\r\n &lt;!&ndash; [ngClass]=\"{'fc-green':feedBackIcon == 'feedbackResponded' , 'fc-red': feedBackIcon == 'respondToFeedback' , 'fc-yellow': feedBackIcon == 'waitingFeedback'}\"&ndash;&gt;\r\n </ds-icon>\r\n </ds-button>-->\r\n <!-- history-->\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"request-info--footer\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <div\r\n class=\"d-flex align-items-center flex-wrap flex-grow-1 gap-1 gap-sm-2 line-height-1 request-info--header__details\">\r\n <span\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\"\r\n class=\"fs-12 fw-medium d-none d-sm-inline-block\">{{ coreService.getShortName(form?.header?.['requesterName']) }}</span>\r\n <span class=\"fs-20\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ form?.header?.formId }}</span>\r\n <span class=\"fs-20\" *ngIf=\"creationDate\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ creationDate }}</span>\r\n </div>\r\n </div>\r\n </section>\r\n </section>\r\n\r\n </div>\r\n\r\n\r\n <!--<ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 my-2\">\r\n <ds-button\r\n *ngIf=\"form?.inboxItem && !form.sections[form.sections.length -1].header.readOnly && !isLoading\"\r\n square\r\n icon\r\n size=\"small\"\r\n [matMenuTriggerFor]=\"menu\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon\r\n [ngClass]=\"{'fc-purple' : (flagPriority === '0' || flagPriority === null),'fc-yellow' : flagPriority === '1','fc-green' : flagPriority === '2','fc-coral' : flagPriority === '3'}\"\r\n icon=\"flag-o\" class=\"fs-20 fs-md-17 fc-purple\">\r\n </ds-icon>\r\n </ds-button>\r\n <mat-menu #menu=\"matMenu\" panelClass=\"action-menu\">\r\n <button mat-menu-item (click)=\"setFlagPriority('0')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-purple fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('1')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-yellow fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('2')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-green fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('3')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n </mat-menu>\r\n\r\n <ng-content></ng-content>\r\n </div>\r\n <header class=\"service-header bc-white p-3 p-sm-4 py-4 gap-3 {{statusClass(form?.header?.status?.['key'])}}\">\r\n\r\n <div class=\"service-header-icon\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 d-flex flex-column flex-sm-row align-items-sm-center gap-2\">\r\n <div class=\"flex-grow-1\">\r\n <h1 class=\"fs-20 fs-md-16 fw-bold fc-black header-title m-0\">{{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n <div class=\"header-user d-flex align-items-sm-center gap-2 mt-sm-1\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <span\r\n class=\"fs-12 text-truncate d-sm-block cursor-pointer\" (click)=\"showUserInfo()\"\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ coreService.getShortName(form?.header?.requesterName) }}</span>\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ form?.header?.formId }}</span>\r\n @if (creationDate) {\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-14\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ creationDate }}</span>\r\n }\r\n </div>\r\n\r\n </div>\r\n <div class=\"header-actions d-flex flex-row flex-sm-column justify-content-between justify-content-sm-center gap-2 mt-2 mt-sm-0\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-end gap-2\">\r\n &lt;!&ndash; feedback&ndash;&gt;\r\n &lt;!&ndash; *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback ==='true'|| form?.inboxItem?.hasFeedback==='true') && !isLoading\"&ndash;&gt;\r\n &lt;!&ndash; <ds-button\r\n square icon size=\"small\" (click)=\"feedback()\">\r\n <ds-icon\r\n icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\"\r\n [ngClass]=\"{'fc-green':feedBackIcon === 'feedbackResponded' , 'fc-red': feedBackIcon === 'respondToFeedback' , 'fc-yellow': feedBackIcon === 'waitingFeedback'}\">\r\n </ds-icon>\r\n </ds-button>&ndash;&gt;\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n @if (showApprovalHistory) {\r\n <ng-container>\r\n <ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\" [satPopoverAnchor]=\"workflow\"\r\n #workflowAnchor=\"satPopoverAnchor\" (click)=\"workflowAnchor.popover.open()\">\r\n <slot name=\"prefix\">\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n </slot>\r\n </ds-button>\r\n <sat-popover\r\n #workflow [anchor]=\"workflowAnchor\" [hasBackdrop]=\"true\" verticalAlign=\"below\"\r\n horizontalAlign=\"end\">\r\n <div class=\"default-popover p-3\" style=\"min-width: 330px;\">\r\n <ds-approvals *ngIf=\"approvalHistory\" class=\"popover-approvals\" approvalsData=\"{{approvals}}\">\r\n </ds-approvals>\r\n </div>\r\n </sat-popover>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </header>\r\n </ng-container>-->\r\n}\r\n", styles: [".loading-width{min-width:100px;width:40px;flex-grow:1}.request-main-info{--item-bg: var(--light-gray);--item-fc: var(--black);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.warning{--item-bg: var(--yellow);--status-container-bc: #fff8d9;--status-container-brc: var(--yellow)}.request-main-info.pending{--item-bg: #eff0f1;--status-container-bc: #e8ebec;--status-container-brc: #c8ced1}.request-main-info.expired{--item-bg: var(--dark-gray);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.success{--item-bg: var(--green);--status-container-bc: #e6f9f4;--status-container-brc: var(--green)}.request-main-info.info{--item-bg: var(--sea-light);--status-container-bc: #fff8d9;--status-container-brc: var(--sea-light)}.request-main-info.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.request-main-info.orange,.request-main-info.send_back{--item-bg: var(--orange);--status-container-bc: #fff0eb;--status-container-brc: var(--orange)}.request-info{border-radius:0;box-shadow:var(--box-shadow);background-color:var(--white);border-top:5px solid var(--item-bg)}.request-info--footer{padding:20px 24px;min-height:45px;display:flex;align-items:center;gap:.75rem;border-top:1px solid var(--light-gray)}@media (max-width: 578px){.request-info--footer{padding:.3rem 1rem}}.request-info--footer__details{color:var(--item-fc)}.request-info--body{padding:2rem;display:flex;align-items:center;gap:.75rem;background-color:#fff}@media (max-width: 578px){.request-info--body{padding:1rem;flex-direction:column;align-items:stretch}}.request-info--body figure{min-width:30px;width:30px;text-align:center}.request-info--body figure svg{width:100%}@media (max-width: 578px){.request-info--status-action{justify-content:space-between}}.request-info--history{margin-top:-.5rem}.request-info--comment{background-color:#fff0eb;color:var(--orange);border-radius:0 0 4px 4px}.status-container{min-height:40px;padding:.5rem 1rem;display:flex;flex-direction:column;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.status-container.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.status-container ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;--default-size: 25px}@media (min-width: 768px){.status-container ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}.circle-status::part(base){--status-radius: 50%;--status-size: 19px;--status-fs: 100%}ds-button[square]::part(base){--btn-padding: 0;--default-size-sm: 30px}.send-back-container{background-color:#fff0eb;color:var(--orange);padding:.5rem;border-radius:4px}object,iframe,embed{height:79vh}::ng-deep .history-popup{--popup-width: 100vw;--popup-max-width: 100vw;--popup-radius: 15px 15px 0 0;position:absolute!important;bottom:0}:host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .main-sidenav.main-sidenav-full .sidenav-title{border-bottom:transparent!important}:host .main-sidenav .sidenav-title{background-color:transparent!important}:host .main-sidenav{height:60px;min-height:10px!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
236
236
  }
237
237
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ServiceHeaderComponent, decorators: [{
238
238
  type: Component,
@@ -246,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
246
246
  MatMenuItem
247
247
  ], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [FeedBackService,
248
248
  { provide: MAT_DIALOG_DATA, useValue: {} },
249
- ], template: "@if (form?.header?.status?.['key'] === 'NEW') {\r\n <section\r\n class=\"main-sidenav main-sidenav-full mb-4\"\r\n\r\n >\r\n <div class=\"sidenav-title\">\r\n <div class=\"d-flex align-items-center gap-3 w-100\">\r\n <!-- <ds-button icon class=\"rotate-arrow\" size=\"small\" (click)=\"goBack()\" *ngIf=\"!isInMobileApp() && showBack\">\r\n <ds-icon icon=\"arrow-right\" class=\"fs-19 fc-black\"></ds-icon>\r\n </ds-button>-->\r\n\r\n <!-- <h3 class=\"flex-grow-0\">\r\n {{ formTitle }}\r\n </h3>-->\r\n\r\n <section>\r\n <p class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-1\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </p>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 flex-grow-1\">\r\n @if (serviceFaq.length) {\r\n <ds-button size=\"small\" icon>\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n </ds-button>\r\n }\r\n <!-- <ds-button size=\"small\" icon (click)=\"openWorkflow()\">\r\n <ds-icon icon=\"bell-2-o\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button> -->\r\n @if (!isReadOnly) {\r\n <ds-button size=\"small\" icon (click)=\"showPreviousRequests()\">\r\n <ds-icon icon=\"clock\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- <header class=\"mb-4 mt-4 d-flex align-items-center justify-content-between align-items-end gap-2\">\r\n <section>\r\n <h6 class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-0\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </h6>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n </header>-->\r\n} @else {\r\n\r\n <div class=\"w-100\">\r\n <section class=\"request-main-info {{statusClass(form?.header?.status?.['key'])}}\">\r\n <section class=\"request-info\">\r\n <div class=\"request-info--body\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n <h4 class=\"fs-22 fs-md-16 fc-black fw-medium mb-0 flex-grow-1 line-height-1-2\">\r\n {{ formTitle }}\r\n </h4>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 request-info--status-action\">\r\n <div class=\"d-inline-flex flex-column align-items-end\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- <ds-button\r\n *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback =='true'|| form?.inboxItem?.hasFeedback=='true')\"\r\n square icon size=\"small\">\r\n <ds-icon icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\">\r\n &lt;!&ndash; [ngClass]=\"{'fc-green':feedBackIcon == 'feedbackResponded' , 'fc-red': feedBackIcon == 'respondToFeedback' , 'fc-yellow': feedBackIcon == 'waitingFeedback'}\"&ndash;&gt;\r\n </ds-icon>\r\n </ds-button>-->\r\n <!-- history-->\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"request-info--footer\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <div\r\n class=\"d-flex align-items-center flex-wrap flex-grow-1 gap-1 gap-sm-2 line-height-1 request-info--header__details\">\r\n <span\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\"\r\n class=\"fs-12 fw-medium d-none d-sm-inline-block\">{{ coreService.getShortName(form?.header?.['requesterName']) }}</span>\r\n <span class=\"fs-20\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ form?.header?.formId }}</span>\r\n <span class=\"fs-20\" *ngIf=\"creationDate\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ creationDate }}</span>\r\n </div>\r\n </div>\r\n </section>\r\n </section>\r\n\r\n </div>\r\n\r\n\r\n <!--<ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 my-2\">\r\n <ds-button\r\n *ngIf=\"form?.inboxItem && !form.sections[form.sections.length -1].header.readOnly && !isLoading\"\r\n square\r\n icon\r\n size=\"small\"\r\n [matMenuTriggerFor]=\"menu\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon\r\n [ngClass]=\"{'fc-purple' : (flagPriority === '0' || flagPriority === null),'fc-yellow' : flagPriority === '1','fc-green' : flagPriority === '2','fc-coral' : flagPriority === '3'}\"\r\n icon=\"flag-o\" class=\"fs-20 fs-md-17 fc-purple\">\r\n </ds-icon>\r\n </ds-button>\r\n <mat-menu #menu=\"matMenu\" panelClass=\"action-menu\">\r\n <button mat-menu-item (click)=\"setFlagPriority('0')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-purple fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('1')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-yellow fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('2')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-green fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('3')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n </mat-menu>\r\n\r\n <ng-content></ng-content>\r\n </div>\r\n <header class=\"service-header bc-white p-3 p-sm-4 py-4 gap-3 {{statusClass(form?.header?.status?.['key'])}}\">\r\n\r\n <div class=\"service-header-icon\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 d-flex flex-column flex-sm-row align-items-sm-center gap-2\">\r\n <div class=\"flex-grow-1\">\r\n <h1 class=\"fs-20 fs-md-16 fw-bold fc-black header-title m-0\">{{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n <div class=\"header-user d-flex align-items-sm-center gap-2 mt-sm-1\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <span\r\n class=\"fs-12 text-truncate d-sm-block cursor-pointer\" (click)=\"showUserInfo()\"\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ coreService.getShortName(form?.header?.requesterName) }}</span>\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ form?.header?.formId }}</span>\r\n @if (creationDate) {\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-14\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ creationDate }}</span>\r\n }\r\n </div>\r\n\r\n </div>\r\n <div class=\"header-actions d-flex flex-row flex-sm-column justify-content-between justify-content-sm-center gap-2 mt-2 mt-sm-0\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-end gap-2\">\r\n &lt;!&ndash; feedback&ndash;&gt;\r\n &lt;!&ndash; *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback ==='true'|| form?.inboxItem?.hasFeedback==='true') && !isLoading\"&ndash;&gt;\r\n &lt;!&ndash; <ds-button\r\n square icon size=\"small\" (click)=\"feedback()\">\r\n <ds-icon\r\n icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\"\r\n [ngClass]=\"{'fc-green':feedBackIcon === 'feedbackResponded' , 'fc-red': feedBackIcon === 'respondToFeedback' , 'fc-yellow': feedBackIcon === 'waitingFeedback'}\">\r\n </ds-icon>\r\n </ds-button>&ndash;&gt;\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n @if (showApprovalHistory) {\r\n <ng-container>\r\n <ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\" [satPopoverAnchor]=\"workflow\"\r\n #workflowAnchor=\"satPopoverAnchor\" (click)=\"workflowAnchor.popover.open()\">\r\n <slot name=\"prefix\">\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n </slot>\r\n </ds-button>\r\n <sat-popover\r\n #workflow [anchor]=\"workflowAnchor\" [hasBackdrop]=\"true\" verticalAlign=\"below\"\r\n horizontalAlign=\"end\">\r\n <div class=\"default-popover p-3\" style=\"min-width: 330px;\">\r\n <ds-approvals *ngIf=\"approvalHistory\" class=\"popover-approvals\" approvalsData=\"{{approvals}}\">\r\n </ds-approvals>\r\n </div>\r\n </sat-popover>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </header>\r\n </ng-container>-->\r\n}\r\n", styles: [".loading-width{min-width:100px;width:40px;flex-grow:1}.request-main-info{--item-bg: var(--light-gray);--item-fc: var(--black);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.warning{--item-bg: var(--yellow);--status-container-bc: #fff8d9;--status-container-brc: var(--yellow)}.request-main-info.pending{--item-bg: #eff0f1;--status-container-bc: #e8ebec;--status-container-brc: #c8ced1}.request-main-info.expired{--item-bg: var(--dark-gray);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.success{--item-bg: var(--green);--status-container-bc: #e6f9f4;--status-container-brc: var(--green)}.request-main-info.info{--item-bg: var(--sea-light);--status-container-bc: #fff8d9;--status-container-brc: var(--sea-light)}.request-main-info.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.request-main-info.orange,.request-main-info.send_back{--item-bg: var(--orange);--status-container-bc: #fff0eb;--status-container-brc: var(--orange)}.request-info{border-radius:0;box-shadow:var(--box-shadow);background-color:var(--white);border-top:5px solid var(--item-bg)}.request-info--footer{padding:20px 24px;min-height:45px;display:flex;align-items:center;gap:.75rem;border-top:1px solid var(--light-gray)}@media (max-width: 578px){.request-info--footer{padding:.3rem 1rem}}.request-info--footer__details{color:var(--item-fc)}.request-info--body{padding:2rem;display:flex;align-items:center;gap:.75rem;background-color:#fff}@media (max-width: 578px){.request-info--body{padding:1rem;flex-direction:column;align-items:stretch}}.request-info--body figure{min-width:30px;width:30px;text-align:center}.request-info--body figure svg{width:100%}@media (max-width: 578px){.request-info--status-action{justify-content:space-between}}.request-info--history{margin-top:-.5rem}.request-info--comment{background-color:#fff0eb;color:var(--orange);border-radius:0 0 4px 4px}.status-container{min-height:40px;padding:.5rem 1rem;display:flex;flex-direction:column;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.status-container.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.status-container ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;--default-size: 25px}@media (min-width: 768px){.status-container ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}.circle-status::part(base){--status-radius: 50%;--status-size: 19px;--status-fs: 100%}ds-button[square]::part(base){--btn-padding: 0;--default-size-sm: 30px}.send-back-container{background-color:#fff0eb;color:var(--orange);padding:.5rem;border-radius:4px}object,iframe,embed{height:79vh}::ng-deep .history-popup{--popup-width: 100vw;--popup-max-width: 100vw;--popup-radius: 15px 15px 0 0;position:absolute!important;bottom:0}:host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .main-sidenav.main-sidenav-full .sidenav-title{border-bottom:transparent!important}:host .main-sidenav .sidenav-title{background-color:transparent!important}:host .main-sidenav{height:60px;min-height:10px!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
249
+ ], template: "@if (form?.header?.status?.['key'] === 'NEW') {\r\n <section\r\n class=\"main-sidenav main-sidenav-full mb-4\"\r\n\r\n >\r\n <div class=\"sidenav-title\">\r\n <div class=\"d-flex align-items-center gap-3 w-100\">\r\n <!-- <ds-button icon class=\"rotate-arrow\" size=\"small\" (click)=\"goBack()\" *ngIf=\"!isInMobileApp() && showBack\">\r\n <ds-icon icon=\"arrow-right\" class=\"fs-19 fc-black\"></ds-icon>\r\n </ds-button>-->\r\n\r\n <!-- <h3 class=\"flex-grow-0\">\r\n {{ formTitle }}\r\n </h3>-->\r\n\r\n <section>\r\n <p class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-1\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </p>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 flex-grow-1\">\r\n @if (serviceFaq.length) {\r\n <ds-button size=\"small\" icon>\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n </ds-button>\r\n }\r\n <!-- <ds-button size=\"small\" icon (click)=\"openWorkflow()\">\r\n <ds-icon icon=\"bell-2-o\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button> -->\r\n @if (!isReadOnly) {\r\n <ds-button size=\"small\" icon (click)=\"showPreviousRequests()\">\r\n <ds-icon icon=\"clock\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </ds-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- <header class=\"mb-4 mt-4 d-flex align-items-center justify-content-between align-items-end gap-2\">\r\n <section>\r\n <h6 class=\"fs-14 fs-md-12 fw-normal fc-dark-gray mb-0\">\r\n {{ i18n.translate('Hello') }}\r\n {{ coreService.getShortName(form?.header?.requesterName) }}, {{ i18n.translate('welcomeBack') }}!\r\n </h6>\r\n <h1 class=\"fs-26 fs-md-20 fw-bold fc-black d-flex align-items-center gap-2 mb-1\">\r\n {{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n </section>\r\n </header>-->\r\n} @else {\r\n\r\n <div class=\"w-100\">\r\n <section class=\"request-main-info {{statusClass(form?.header?.status?.['key'])}}\">\r\n <section class=\"request-info\">\r\n <div class=\"request-info--body\">\r\n <div class=\"d-flex align-items-center gap-2 flex-grow-1\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n <h4 class=\"fs-22 fs-md-16 fc-black fw-medium mb-0 flex-grow-1 line-height-1-2\">\r\n {{ formTitle }}\r\n </h4>\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2 request-info--status-action\">\r\n <div class=\"d-inline-flex flex-column align-items-end\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n </div>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- <ds-button\r\n *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback =='true'|| form?.inboxItem?.hasFeedback=='true')\"\r\n square icon size=\"small\">\r\n <ds-icon icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\">\r\n &lt;!&ndash; [ngClass]=\"{'fc-green':feedBackIcon == 'feedbackResponded' , 'fc-red': feedBackIcon == 'respondToFeedback' , 'fc-yellow': feedBackIcon == 'waitingFeedback'}\"&ndash;&gt;\r\n </ds-icon>\r\n </ds-button>-->\r\n <!-- history-->\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"request-info--footer\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <div\r\n class=\"d-flex align-items-center flex-wrap flex-grow-1 gap-1 gap-sm-2 line-height-1 request-info--header__details\">\r\n <span\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\"\r\n class=\"fs-12 fw-medium d-none d-sm-inline-block\">{{ coreService.getShortName(form?.header?.['requesterName']) }}</span>\r\n <span class=\"fs-20\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ form?.header?.formId }}</span>\r\n <span class=\"fs-20\" *ngIf=\"creationDate\">&#8226;</span>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\"> {{ creationDate }}</span>\r\n </div>\r\n </div>\r\n </section>\r\n </section>\r\n\r\n </div>\r\n\r\n\r\n <!--<ng-container>\r\n <div class=\"d-flex align-items-center justify-content-end gap-2 my-2\">\r\n <ds-button\r\n *ngIf=\"form?.inboxItem && !form.sections[form.sections.length -1].header.readOnly && !isLoading\"\r\n square\r\n icon\r\n size=\"small\"\r\n [matMenuTriggerFor]=\"menu\"\r\n class=\"icon-btn-shadow\">\r\n <ds-icon\r\n [ngClass]=\"{'fc-purple' : (flagPriority === '0' || flagPriority === null),'fc-yellow' : flagPriority === '1','fc-green' : flagPriority === '2','fc-coral' : flagPriority === '3'}\"\r\n icon=\"flag-o\" class=\"fs-20 fs-md-17 fc-purple\">\r\n </ds-icon>\r\n </ds-button>\r\n <mat-menu #menu=\"matMenu\" panelClass=\"action-menu\">\r\n <button mat-menu-item (click)=\"setFlagPriority('0')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-purple fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('1')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-yellow fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('2')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-green fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n <button mat-menu-item (click)=\"setFlagPriority('3')\">\r\n <ds-icon icon=\"flag-o\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </button>\r\n </mat-menu>\r\n\r\n <ng-content></ng-content>\r\n </div>\r\n <header class=\"service-header bc-white p-3 p-sm-4 py-4 gap-3 {{statusClass(form?.header?.status?.['key'])}}\">\r\n\r\n <div class=\"service-header-icon\">\r\n <img\r\n alt=\"\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMjkiIHZpZXdCb3g9IjAgMCAzMCAyOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjEgMEg0LjlDMi4yIDAgMCAyLjIgMCA0LjlWMjguNkgyNS4xQzI3LjggMjguNiAzMCAyNi40IDMwIDIzLjdWNC45QzMwIDIuMiAyNy44IDAgMjUuMSAwWk0yIDQuOUMyIDMuMyAzLjMgMiA0LjkgMkgyNS4xQzI2LjcgMiAyOCAzLjMgMjggNC45VjIzLjdDMjggMjUuMyAyNi43IDI2LjYgMjUuMSAyNi42SDJWNC45Wk0xMS41IDYuM0M3LjEgNi4zIDMuNSA5LjkgMy41IDE0LjNDMy41IDE4LjcgNy4xIDIyLjMgMTEuNSAyMi4zQzE1LjkgMjIuMyAxOS41IDE4LjcgMTkuNSAxNC4zQzE5LjUgOS45IDE1LjkgNi4zIDExLjUgNi4zWk0xNS4xIDE5QzE0LjEgMTkuOCAxMi44IDIwLjIgMTEuNSAyMC4yQzEwLjIgMjAuMiA4LjkgMTkuOCA3LjkgMTlDOC43IDE3LjcgMTAgMTcgMTEuNSAxN0MxMyAxNyAxNC40IDE3LjggMTUuMSAxOVpNMTMuMSAxMy40QzEzLjEgMTQuMyAxMi40IDE1IDExLjUgMTVDMTAuNiAxNSA5LjkgMTQuMyA5LjkgMTMuNEM5LjkgMTIuNSAxMC42IDExLjggMTEuNSAxMS44QzEyLjQgMTEuOCAxMy4xIDEyLjUgMTMuMSAxMy40Wk0xNS4xIDEzLjRDMTUuMSAxMS40IDEzLjUgOS44IDExLjUgOS44QzkuNSA5LjggNy45IDExLjQgNy45IDEzLjRDNy45IDE0LjIgOC4yIDE1IDguNyAxNS43QzcuOCAxNi4xIDcuMSAxNi44IDYuNSAxNy42QzUuOCAxNi42IDUuNSAxNS41IDUuNSAxNC4zQzUuNSAxMSA4LjIgOC4zIDExLjUgOC4zQzE0LjggOC4zIDE3LjUgMTEgMTcuNSAxNC4zQzE3LjUgMTUuNSAxNy4yIDE2LjYgMTYuNSAxNy42QzE1LjkgMTYuOCAxNS4yIDE2LjIgMTQuMyAxNS43QzE0LjggMTUuMSAxNS4xIDE0LjIgMTUuMSAxMy40Wk0yMSA5LjFDMjEgOC42IDIxLjQgOC4xIDIyIDguMUgyNS41QzI2IDguMSAyNi41IDguNSAyNi41IDkuMUMyNi41IDkuNiAyNi4xIDEwLjEgMjUuNSAxMC4xSDIyQzIxLjQgMTAuMSAyMSA5LjYgMjEgOS4xWk0yMSAxMi41QzIxIDEyIDIxLjQgMTEuNSAyMiAxMS41SDI1LjVDMjYgMTEuNSAyNi41IDExLjkgMjYuNSAxMi41QzI2LjUgMTMgMjYuMSAxMy41IDI1LjUgMTMuNUgyMkMyMS40IDEzLjUgMjEgMTMuMSAyMSAxMi41Wk0yMSAxNkMyMSAxNS41IDIxLjQgMTUgMjIgMTVIMjUuNUMyNiAxNSAyNi41IDE1LjQgMjYuNSAxNkMyNi41IDE2LjUgMjYuMSAxNyAyNS41IDE3SDIyQzIxLjQgMTcgMjEgMTYuNiAyMSAxNlpNMjUuNSAyMC41SDIyQzIxLjUgMjAuNSAyMSAyMC4xIDIxIDE5LjVDMjEgMTguOSAyMS40IDE4LjUgMjIgMTguNUgyNS41QzI2IDE4LjUgMjYuNSAxOC45IDI2LjUgMTkuNUMyNi41IDIwLjEgMjYuMSAyMC41IDI1LjUgMjAuNVoiIGZpbGw9IiNGRjM3NUUiLz4KPC9zdmc+Cg==\"/>\r\n </div>\r\n\r\n <div class=\"flex-grow-1 d-flex flex-column flex-sm-row align-items-sm-center gap-2\">\r\n <div class=\"flex-grow-1\">\r\n <h1 class=\"fs-20 fs-md-16 fw-bold fc-black header-title m-0\">{{ formTitle }}\r\n @if (serviceFaq.length) {\r\n <ds-icon icon=\"info\" class=\"fs-22 fc-dark-gray cursor-pointer\" (click)=\"openFaq()\">\r\n </ds-icon>\r\n }\r\n </h1>\r\n <div class=\"header-user d-flex align-items-sm-center gap-2 mt-sm-1\">\r\n @if (!isLoading) {\r\n <ds-avatar\r\n image=\"{{form?.header?.requesterPhoto}}\" size=\"xx-small\"\r\n class=\"d-inline-flex cursor-pointer\" (click)=\"showUserInfo()\"></ds-avatar>\r\n }\r\n <span\r\n class=\"fs-12 text-truncate d-sm-block cursor-pointer\" (click)=\"showUserInfo()\"\r\n [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ coreService.getShortName(form?.header?.requesterName) }}</span>\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-12\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ form?.header?.formId }}</span>\r\n @if (creationDate) {\r\n <mat-divider class=\"divider circle mx-2 d-none d-sm-block\"></mat-divider>\r\n <span class=\"fs-14\" [ngClass]=\"{'loading-bg loading-width': isLoading}\">{{ creationDate }}</span>\r\n }\r\n </div>\r\n\r\n </div>\r\n <div class=\"header-actions d-flex flex-row flex-sm-column justify-content-between justify-content-sm-center gap-2 mt-2 mt-sm-0\">\r\n @if (!isLoading) {\r\n <ds-status\r\n status=\"{{statusClass(form?.header?.status?.['key'])}}\" class=\"header-status\">{{ form?.header?.status?.['value'] }}\r\n </ds-status>\r\n }\r\n <div class=\"d-flex align-items-center justify-content-end gap-2\">\r\n &lt;!&ndash; feedback&ndash;&gt;\r\n &lt;!&ndash; *ngIf=\"form?.inboxItem && (form?.inboxItem?.canRequestFeedback ==='true'|| form?.inboxItem?.hasFeedback==='true') && !isLoading\"&ndash;&gt;\r\n &lt;!&ndash; <ds-button\r\n square icon size=\"small\" (click)=\"feedback()\">\r\n <ds-icon\r\n icon=\"chat-o\" class=\"fs-20 fs-md-17 fc-coral\"\r\n [ngClass]=\"{'fc-green':feedBackIcon === 'feedbackResponded' , 'fc-red': feedBackIcon === 'respondToFeedback' , 'fc-yellow': feedBackIcon === 'waitingFeedback'}\">\r\n </ds-icon>\r\n </ds-button>&ndash;&gt;\r\n <ds-button\r\n *ngIf=\"form?.commentsDrop?.length > 0 && !isLoading\" square icon size=\"small\"\r\n (click)=\"onCommentsFormClick()\" class=\"has-comments\">\r\n <ds-icon icon=\"clock\" class=\"fc-coral fs-20 fs-md-17\"></ds-icon>\r\n </ds-button>\r\n @if (showApprovalHistory) {\r\n <ng-container>\r\n <ds-button\r\n color=\"white\" shape=\"text\" square size=\"small\" [satPopoverAnchor]=\"workflow\"\r\n #workflowAnchor=\"satPopoverAnchor\" (click)=\"workflowAnchor.popover.open()\">\r\n <slot name=\"prefix\">\r\n <ds-icon icon=\"workflow\" class=\"fs-24\"></ds-icon>\r\n </slot>\r\n </ds-button>\r\n <sat-popover\r\n #workflow [anchor]=\"workflowAnchor\" [hasBackdrop]=\"true\" verticalAlign=\"below\"\r\n horizontalAlign=\"end\">\r\n <div class=\"default-popover p-3\" style=\"min-width: 330px;\">\r\n <ds-approvals *ngIf=\"approvalHistory\" class=\"popover-approvals\" approvalsData=\"{{approvals}}\">\r\n </ds-approvals>\r\n </div>\r\n </sat-popover>\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </header>\r\n </ng-container>-->\r\n}\r\n", styles: [".loading-width{min-width:100px;width:40px;flex-grow:1}.request-main-info{--item-bg: var(--light-gray);--item-fc: var(--black);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.warning{--item-bg: var(--yellow);--status-container-bc: #fff8d9;--status-container-brc: var(--yellow)}.request-main-info.pending{--item-bg: #eff0f1;--status-container-bc: #e8ebec;--status-container-brc: #c8ced1}.request-main-info.expired{--item-bg: var(--dark-gray);--status-container-bc: #e8ebec;--status-container-brc: var(--dark-gray)}.request-main-info.success{--item-bg: var(--green);--status-container-bc: #e6f9f4;--status-container-brc: var(--green)}.request-main-info.info{--item-bg: var(--sea-light);--status-container-bc: #fff8d9;--status-container-brc: var(--sea-light)}.request-main-info.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.request-main-info.orange,.request-main-info.send_back{--item-bg: var(--orange);--status-container-bc: #fff0eb;--status-container-brc: var(--orange)}.request-info{border-radius:0;box-shadow:var(--box-shadow);background-color:var(--white);border-top:5px solid var(--item-bg)}.request-info--footer{padding:20px 24px;min-height:45px;display:flex;align-items:center;gap:.75rem;border-top:1px solid var(--light-gray)}@media (max-width: 578px){.request-info--footer{padding:.3rem 1rem}}.request-info--footer__details{color:var(--item-fc)}.request-info--body{padding:2rem;display:flex;align-items:center;gap:.75rem;background-color:#fff}@media (max-width: 578px){.request-info--body{padding:1rem;flex-direction:column;align-items:stretch}}.request-info--body figure{min-width:30px;width:30px;text-align:center}.request-info--body figure svg{width:100%}@media (max-width: 578px){.request-info--status-action{justify-content:space-between}}.request-info--history{margin-top:-.5rem}.request-info--comment{background-color:#fff0eb;color:var(--orange);border-radius:0 0 4px 4px}.status-container{min-height:40px;padding:.5rem 1rem;display:flex;flex-direction:column;justify-content:center;gap:.5rem;margin-bottom:1.5rem}.status-container.danger{--item-bg: var(--red);--status-container-bc: #fae9ec;--status-container-brc: var(--red)}.status-container ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;--default-size: 25px}@media (min-width: 768px){.status-container ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}.circle-status::part(base){--status-radius: 50%;--status-size: 19px;--status-fs: 100%}ds-button[square]::part(base){--btn-padding: 0;--default-size-sm: 30px}.send-back-container{background-color:#fff0eb;color:var(--orange);padding:.5rem;border-radius:4px}object,iframe,embed{height:79vh}::ng-deep .history-popup{--popup-width: 100vw;--popup-max-width: 100vw;--popup-radius: 15px 15px 0 0;position:absolute!important;bottom:0}:host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .main-sidenav.main-sidenav-full .sidenav-title{border-bottom:transparent!important}:host .main-sidenav .sidenav-title{background-color:transparent!important}:host .main-sidenav{height:60px;min-height:10px!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{min-width:var(--default-size, 45px)!important;width:var(--default-size, 45px)!important;height:var(--default-size, 45px)!important;padding:var(--avatar-padding, 0)!important;background-color:var(--avatar-bg, white);color:var(--avatar-color, black)!important;border:var(--avatar-border, 0)!important;border-radius:var(--avatar-radius, 50%)!important;margin:var(--avatar-margin, 0)!important;--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
250
250
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.CoreService }, { type: i1.CoreI18nService }, { type: i1.FeedBackService }, { type: i2.MatDialog }, { type: i1.SidenavService }, { type: i3.ToastrService }], propDecorators: { form: [{
251
251
  type: Input
252
252
  }], showHistory: [{
@@ -268,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
268
268
  }], serviceFaq: [{
269
269
  type: Input
270
270
  }] } });
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvc2VydmljZS1oZWFkZXIvc2VydmljZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvc2VydmljZS1oZWFkZXIvc2VydmljZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxLQUFLLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUErQixlQUFlLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFDaEcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENB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dEIsQ0FBQyxlQUFlO3dCQUN6QixFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBQztxQkFDekM7NlBBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRGVzdHJveVJlZiwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybSwgU2VjdGlvbn0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCAqIGFzIENvbnN0YW50cyBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBGZWVkQmFja1NlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7UHJvZmlsZVNlY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHtGZWVkYmFja1NlY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL2ZlZWRiYWNrLXNlY3Rpb24vZmVlZGJhY2stc2VjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQge01hdERpdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQge01hdE1lbnUsIE1hdE1lbnVJdGVtLCBNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7RmFxU2lkZW5hdkNvbXBvbmVudH0gZnJvbSAnLi4vZmFxLXNpZGVuYXYvZmFxLXNpZGVuYXYuY29tcG9uZW50JztcclxuaW1wb3J0IHtBY3Rpdml0aWVzQ29tcG9uZW50fSBmcm9tICcuLi9hY3Rpdml0aWVzL2FjdGl2aXRpZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtmb3JtYXR9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQge1ByZXZpb3VzUmVxdWVzdHNDb21wb25lbnR9IGZyb20gXCIuLi9wcmV2aW91cy1yZXF1ZXN0cy9wcmV2aW91cy1yZXF1ZXN0cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuY29uc3QgU3RhdHVzTWFwID0ge1xyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURURdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX0NBTkNFTExFRF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNUXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5TRUNUSU9OX1NUQVRVU19VTlNBVElTRklFRF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19QRU5ESU5HXToge2NsYXNzOiAnd2FybmluZycsIGljb246ICdjbG9jayd9LFxyXG4gICdkZWZhdWx0Jzoge2NsYXNzOiAnc3VjY2VzcycsIGljb246ICdjaGVjayd9XHJcbn1cclxuXHJcbmludGVyZmFjZSBBcHByb3ZhbEhpc3RvcnlJdGVtIHtcclxuICBhcHByb3Zlcjoge1xyXG4gICAgcGVyc29uTmFtZTogc3RyaW5nO1xyXG4gICAgcGVyc29uRW1haWw6IHN0cmluZztcclxuICB9O1xyXG4gIHBvc2l0aW9uVHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtc2VydmljZS1oZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTWF0RGl2aWRlcixcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51SXRlbVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW0ZlZWRCYWNrU2VydmljZSxcclxuICAgIHtwcm92aWRlOiBNQVRfRElBTE9HX0RBVEEsIHVzZVZhbHVlOiB7fX0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VydmljZUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgc2hvd0hpc3RvcnkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0FwcHJvdmFsSGlzdG9yeSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwcHJvdmFsSGlzdG9yeTogYW55O1xyXG4gIEBJbnB1dCgpIGNyZWF0aW9uRGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZvcm1UaXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQElucHV0KCkgc2VydmljZUZhcTogYW55W10gPSBbXTtcclxuICBhcHByb3ZhbHM6IGFueVtdID0gW107XHJcbiAgZmxhZ1ByaW9yaXR5OiBzdHJpbmc7XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBmZWVkQmFja1NlcnZpY2U6IEZlZWRCYWNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0QXBwcm92YWxIaXN0b3J5KHRoaXMuYXBwcm92YWxIaXN0b3J5KTtcclxuICAgIGlmICh0aGlzLmZvcm0/LmhlYWRlcj8uY3JlYXRpb25EYXRlKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRpb25EYXRlID0gZm9ybWF0KG5ldyBEYXRlKHRoaXMuZm9ybT8uaGVhZGVyPy5jcmVhdGlvbkRhdGUpLCBcImRkL01NL3l5eXkgaGg6bW06c3NcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBjb21tZW50cyBmb3JtLlxyXG4gICAqIFJldHJpZXZlcyBjb21tZW50cyBmcm9tIHRoZSBmb3JtLCB0cmFuc2Zvcm1zIHRoZW0sIGFuZCB1cGRhdGVzIGFjdGl2aXRpZXMgaW4gdGhlIGNvcmUgc2VydmljZS5cclxuICAgKiBGaW5hbGx5LCBwdWJsaXNoZXMgYW4gJ29wZW4nIGV2ZW50IHRvIHRoZSBzaWRlbmF2IHNlcnZpY2UgdG8gb3BlbiB0aGUgQWN0aXZpdGllc0NvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgb25Db21tZW50c0Zvcm1DbGljaygpIHtcclxuICAgIGNvbnN0IGZvcm1Db21tZW50czogYW55ID0gdGhpcy5mb3JtLmNvbW1lbnRzRHJvcDtcclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29tbWVudHMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBmb3JtQ29tbWVudHMpIHtcclxuICAgICAgdHJhbnNmb3JtZWRDb21tZW50cy5wdXNoKHRoaXMudHJhbnNmb3JtQ29tbWVudEl0ZW0oY29tbWVudCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb3JlU2VydmljZS5hY3Rpdml0aWVzID0gdHJhbnNmb3JtZWRDb21tZW50cztcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UucHVibGlzaCgnb3BlbicsIEFjdGl2aXRpZXNDb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyBhIGNvbW1lbnQgaXRlbSBpbnRvIGEgZGlmZmVyZW50IGZvcm1hdCBmb3IgZGlzcGxheS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtIC0gVGhlIG9yaWdpbmFsIGNvbW1lbnQgaXRlbSB0byB0cmFuc2Zvcm0uXHJcbiAgICogQHJldHVybiB7T2JqZWN0fSAtIFRoZSB0cmFuc2Zvcm1lZCBjb21tZW50IGl0ZW0gd2l0aCBzcGVjaWZpYyBwcm9wZXJ0aWVzIGluY2x1ZGluZyBuYW1lLCB0aXRsZSwgaW1hZ2UsIGRhdGUsIHRpbWUsIGNvbW1lbnQsIGFuZCBhdHRhY2htZW50cy5cclxuICAgKi9cclxuICBwcml2YXRlIHRyYW5zZm9ybUNvbW1lbnRJdGVtKGl0ZW0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IGl0ZW1bJ2VtcGxveWVlTmFtZSddLFxyXG4gICAgICB0aXRsZTogaXRlbS5qb2JQb3NpdGlvbixcclxuICAgICAgaW1hZ2U6IGl0ZW1bJ3Byb2ZpbGVQaWN0dXJlJ10sXHJcbiAgICAgIGRhdGU6IGZvcm1hdChuZXcgRGF0ZShpdGVtWydjb21tZW50RGF0ZSddKSwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgdGltZTogZm9ybWF0KG5ldyBEYXRlKGl0ZW1bJ2NvbW1lbnREYXRlJ10pLCAnaDptbSBhJyksXHJcbiAgICAgIGNvbW1lbnQ6IGl0ZW1bJ2NvbW1lbnRCb2R5J10sXHJcbiAgICAgIGF0dGFjaG1lbnRzOiBpdGVtWydhdHRhY2htZW50J11cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyBhIGRpYWxvZyBmb3IgcHJvdmlkaW5nIGZlZWRiYWNrLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBmZWVkYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nLm9wZW4oRmVlZGJhY2tTZWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnbWFpbi1wb3B1cCddLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcHJvZmlsZTogdGhpcy5mb3JtLnByb2ZpbGVJbmZvRHJvcCxcclxuICAgICAgICBpbmJveEl0ZW06IHRoaXMuZm9ybS5pbmJveEl0ZW0sXHJcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgc2lkZW5hdiB3aXRoIHVzZXIgcHJvZmlsZSBpbmZvcm1hdGlvbiBpZiBub3QgYWxyZWFkeSBsb2FkaW5nLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBzaG93VXNlckluZm8oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGF0YSA9IHRoaXMuZm9ybT8ucHJvZmlsZUluZm9Ecm9wO1xyXG4gICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnB1Ymxpc2goJ29wZW4nLCBQcm9maWxlU2VjdGlvbkNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHByaW9yaXR5IGZsYWcgZm9yIHRoZSBpbmJveCBpdGVtIHdpdGggdGhlIHByb3ZpZGVkIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIElEIG9mIHRoZSBwcmlvcml0eSBmbGFnIHRvIGJlIHNldCBmb3IgdGhlIGluYm94IGl0ZW0uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBzZXRGbGFnUHJpb3JpdHkoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5mbGFnUHJpb3JpdHkgPSBpZDtcclxuICAgIHRoaXMuZm9ybS5pbmJveEl0ZW0uZmxhZ1ByaW9yaXR5ID0gaWQ7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvU2V0RmxhZ1ByaW9yaXR5KGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBzZXQgZmxhZyBwcmlvcml0eSBmb3IgYSBzcGVjaWZpYyBpZGVudGlmaWVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkZW50aWZpZXIgb2YgdGhlIGZsYWcgdG8gc2V0IHByaW9yaXR5IGZvci5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHN1YnNjcmliZVRvU2V0RmxhZ1ByaW9yaXR5KGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuY29yZVNlcnZpY2Uuc2V0RmxhZ1ByaW9yaXR5KGlkKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHRoaXMuaTE4bi50cmFuc2xhdGUoJ2ZsYWdTdGF0dXNVcGRhdGVkJykpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIENTUyBjbGFzcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlucHV0IHN0YXR1cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXMgLSBUaGUgc3RhdHVzIGZvciB3aGljaCB0aGUgQ1NTIGNsYXNzIGlzIG5lZWRlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIENTUyBjbGFzcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBzdGF0dXMuXHJcbiAgICovXHJcbiAgc3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gc3RhdHVzID0gc3RhdHVzID8gc3RhdHVzLnRvTG93ZXJDYXNlKCkgOiAnJztcclxuICAgIGxldCBzdGF0dXNTdHJhdGVneSA9IFN0YXR1c01hcFtzdGF0dXNdIHx8IFN0YXR1c01hcFsnZGVmYXVsdCddO1xyXG4gICAgcmV0dXJuIHN0YXR1c1N0cmF0ZWd5LmNsYXNzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIEZBUSBzaWRlIG5hdmlnYXRpb24uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBvcGVuRmFxKCkge1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgRmFxU2lkZW5hdkNvbXBvbmVudCwgJ2VuZCcsICdvdmVyJywgdGhpcy5zZXJ2aWNlRmFxKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhcHByb3ZhbCBoaXN0b3J5IGluZm9ybWF0aW9uIGZvciBlYWNoIGFwcHJvdmFsIGl0ZW0gaW4gdGhlIHByb3ZpZGVkIGFycmF5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBcHByb3ZhbEhpc3RvcnlJdGVtW119IGFwcHJvdmFsSGlzdG9yeSAtIFRoZSBhcnJheSBjb250YWluaW5nIGFwcHJvdmFsIGhpc3RvcnkgaXRlbXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfSAtIFRoaXMgbWV0aG9kIGRvZXMgbm90IHJldHVybiBhbnkgdmFsdWUuIEl0IHVwZGF0ZXMgdGhlIGludGVybmFsICdhcHByb3ZhbHMnIGFycmF5LlxyXG4gICAqL1xyXG4gIGdldEFwcHJvdmFsSGlzdG9yeShhcHByb3ZhbEhpc3Rvcnk6IEFwcHJvdmFsSGlzdG9yeUl0ZW1bXSkge1xyXG4gICAgYXBwcm92YWxIaXN0b3J5Py5mb3JFYWNoKChhcHByb3ZhbEl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBhcHByb3ZhbFN0YXR1cyA9IHRoaXMuZ2V0QXBwcm92YWxTdGF0dXMoaW5kZXgpO1xyXG4gICAgICBsZXQgYXBwcm92YWxTdGF0dXNMYWJlbCA9IHRoaXMuZ2V0QXBwcm92YWxTdGF0dXNMYWJlbChpbmRleCk7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBpZDogaW5kZXggKyAxLFxyXG4gICAgICAgIG5hbWU6IGFwcHJvdmFsSXRlbS5hcHByb3Zlci5wZXJzb25OYW1lLFxyXG4gICAgICAgIHRpdGxlOiBhcHByb3ZhbEl0ZW0ucG9zaXRpb25UeXBlLFxyXG4gICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlVXJsKGFwcHJvdmFsSXRlbS5hcHByb3Zlci5wZXJzb25FbWFpbCksXHJcbiAgICAgICAgc3RhdHVzOiBhcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICBzdGF0dXNMYWJlbDogYXBwcm92YWxTdGF0dXNMYWJlbCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcHByb3ZhbHMucHVzaChvYmopO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGFwcHJvdmFsIHN0YXR1cyBmb3IgYSBzcGVjaWZpYyBzZWN0aW9uIGluIHRoZSBmb3JtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBzZWN0aW9uIGZvciB3aGljaCB0aGUgYXBwcm92YWwgc3RhdHVzIGlzIHJlcXVpcmVkLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGFwcHJvdmFsIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIHNlY3Rpb24uIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBzZWN0aW9uIGRvZXMgbm90IGV4aXN0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QXBwcm92YWxTdGF0dXMoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RhdHVzID0gJyc7XHJcbiAgICBpZiAodGhpcy5mb3JtLnNlY3Rpb25zW2luZGV4ICsgMV0pIHtcclxuICAgICAgc3RhdHVzID0gdGhpcy5zdGF0dXNDbGFzcyh0aGlzLmZvcm0uc2VjdGlvbnNbaW5kZXggKyAxXS5ib2R5LmRldGFpbHMuZGVjaXNpb24ua2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGFwcHJvdmFsIHN0YXR1cyBsYWJlbCBmcm9tIHRoZSBmb3JtIHNlY3Rpb24gYmFzZWQgb24gdGhlIGdpdmVuIGluZGV4LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBmb3JtIHNlY3Rpb24gZm9yIHdoaWNoIHRoZSBhcHByb3ZhbCBzdGF0dXMgbGFiZWwgd2lsbCBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgYXBwcm92YWwgc3RhdHVzIGxhYmVsIHJldHJpZXZlZCBmcm9tIHRoZSBzcGVjaWZpZWQgZm9ybSBzZWN0aW9uLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QXBwcm92YWxTdGF0dXNMYWJlbChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdGF0dXNMYWJlbCA9ICcnO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5zZWN0aW9uc1tpbmRleCArIDFdKSB7XHJcbiAgICAgIHN0YXR1c0xhYmVsID0gdGhpcy5mb3JtLnNlY3Rpb25zW2luZGV4ICsgMV0uYm9keS5kZXRhaWxzLmRlY2lzaW9uLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXR1c0xhYmVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBVUkwgb2YgdGhlIHVzZXIncyBwb3J0cmFpdCBpbWFnZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZW1haWwuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW1haWwgLSBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciBmb3Igd2hvbSB0aGUgcG9ydHJhaXQgVVJMIGlzIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIFVSTCB1c2VkIHRvIGZldGNoIHRoZSB1c2VyJ3MgcG9ydHJhaXQgaW1hZ2UuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRJbWFnZVVybChlbWFpbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnL2dyb3VwL2ktZ2F0ZS93bS1icG0vZm9ybXMvLS9wcm94eS9wb3J0cmFpdD9lbWFpbD0nICsgZW1haWw7XHJcbiAgfVxyXG5cclxuICBzaG93UHJldmlvdXNSZXF1ZXN0cygpIHtcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UucHVibGlzaCgnb3BlbicsIFByZXZpb3VzUmVxdWVzdHNDb21wb25lbnQpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddID09PSAnTkVXJykge1xyXG4gIDxzZWN0aW9uXHJcbiAgICBjbGFzcz1cIm1haW4tc2lkZW5hdiBtYWluLXNpZGVuYXYtZnVsbCBtYi00XCJcclxuXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdGl0bGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgdy0xMDBcIj5cclxuICAgICAgICA8IS0tIDxkcy1idXR0b24gaWNvbiBjbGFzcz1cInJvdGF0ZS1hcnJvd1wiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJnb0JhY2soKVwiICpuZ0lmPVwiIWlzSW5Nb2JpbGVBcHAoKSAmJiBzaG93QmFja1wiPlxyXG4gICAgICAgICAgIDxkcy1pY29uIGljb249XCJhcnJvdy1yaWdodFwiIGNsYXNzPVwiZnMtMTkgZmMtYmxhY2tcIj48L2RzLWljb24+XHJcbiAgICAgICAgIDwvZHMtYnV0dG9uPi0tPlxyXG5cclxuICAgICAgICA8IS0tICA8aDMgY2xhc3M9XCJmbGV4LWdyb3ctMFwiPlxyXG4gICAgICAgICAgICB7eyBmb3JtVGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+LS0+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJmcy0xNCBmcy1tZC0xMiBmdy1ub3JtYWwgZmMtZGFyay1ncmF5IG1iLTFcIj5cclxuICAgICAgICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ0hlbGxvJykgfX1cclxuICAgICAgICAgICAge3sgY29yZVNlcnZpY2UuZ2V0U2hvcnROYW1lKGZvcm0/LmhlYWRlcj8ucmVxdWVzdGVyTmFtZSkgfX0sIHt7IGkxOG4udHJhbnNsYXRlKCd3ZWxjb21lQmFjaycpIH19IVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPGgxIGNsYXNzPVwiZnMtMjYgZnMtbWQtMjAgZnctYm9sZCBmYy1ibGFjayBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAge3sgZm9ybVRpdGxlIH19XHJcbiAgICAgICAgICAgIEBpZiAoc2VydmljZUZhcS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiaW5mb1wiIGNsYXNzPVwiZnMtMjIgZmMtZGFyay1ncmF5IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9wZW5GYXEoKVwiPlxyXG4gICAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9oMT5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBnYXAtMiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgQGlmIChzZXJ2aWNlRmFxLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZHMtYnV0dG9uIHNpemU9XCJzbWFsbFwiIGljb24+XHJcbiAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTIyIGZjLWRhcmstZ3JheSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvcGVuRmFxKClcIj5cclxuICAgICAgICAgICAgICA8L2RzLWljb24+XHJcbiAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPCEtLSA8ZHMtYnV0dG9uIHNpemU9XCJzbWFsbFwiIGljb24gKGNsaWNrKT1cIm9wZW5Xb3JrZmxvdygpXCI+XHJcbiAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJiZWxsLTItb1wiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgICBAaWYgKCFpc1JlYWRPbmx5KSB7XHJcbiAgICAgICAgICAgIDxkcy1idXR0b24gc2l6ZT1cInNtYWxsXCIgaWNvbiAoY2xpY2spPVwic2hvd1ByZXZpb3VzUmVxdWVzdHMoKVwiPlxyXG4gICAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJjbG9ja1wiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPCEtLSAgPGhlYWRlciBjbGFzcz1cIm1iLTQgbXQtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWVuZCBnYXAtMlwiPlxyXG4gICAgICA8c2VjdGlvbj5cclxuICAgICAgICA8aDYgY2xhc3M9XCJmcy0xNCBmcy1tZC0xMiBmdy1ub3JtYWwgZmMtZGFyay1ncmF5IG1iLTBcIj5cclxuICAgICAgICAgIHt7IGkxOG4udHJhbnNsYXRlKCdIZWxsbycpIH19XHJcbiAgICAgICAgICB7eyBjb3JlU2VydmljZS5nZXRTaG9ydE5hbWUoZm9ybT8uaGVhZGVyPy5yZXF1ZXN0ZXJOYW1lKSB9fSwge3sgaTE4bi50cmFuc2xhdGUoJ3dlbGNvbWVCYWNrJykgfX0hXHJcbiAgICAgICAgPC9oNj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJmcy0yNiBmcy1tZC0yMCBmdy1ib2xkIGZjLWJsYWNrIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxyXG4gICAgICAgICAge3sgZm9ybVRpdGxlIH19XHJcbiAgICAgICAgICBAaWYgKHNlcnZpY2VGYXEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJpbmZvXCIgY2xhc3M9XCJmcy0yMiBmYy1kYXJrLWdyYXkgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib3BlbkZhcSgpXCI+XHJcbiAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2gxPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L2hlYWRlcj4tLT5cclxufSBAZWxzZSB7XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJyZXF1ZXN0LW1haW4taW5mbyAge3tzdGF0dXNDbGFzcyhmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSl9fVwiPlxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInJlcXVlc3QtaW5mb1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0LWluZm8tLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU16QWlJR2hsYVdkb2REMGlNamtpSUhacFpYZENiM2c5SWpBZ01DQXpNQ0F5T1NJZ1ptbHNiRDBpYm05dVpTSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNEtQSEJoZEdnZ1pEMGlUVEkxTGpFZ01FZzBMamxETWk0eUlEQWdNQ0F5TGpJZ01DQTBMamxXTWpndU5rZ3lOUzR4UXpJM0xqZ2dNamd1TmlBek1DQXlOaTQwSURNd0lESXpMamRXTkM0NVF6TXdJREl1TWlBeU55NDRJREFnTWpVdU1TQXdXazB5SURRdU9VTXlJRE11TXlBekxqTWdNaUEwTGprZ01rZ3lOUzR4UXpJMkxqY2dNaUF5T0NBekxqTWdNamdnTkM0NVZqSXpMamRETWpnZ01qVXVNeUF5Tmk0M0lESTJMallnTWpVdU1TQXlOaTQyU0RKV05DNDVXazB4TVM0MUlEWXVNME0zTGpFZ05pNHpJRE11TlNBNUxqa2dNeTQxSURFMExqTkRNeTQxSURFNExqY2dOeTR4SURJeUxqTWdNVEV1TlNBeU1pNHpRekUxTGprZ01qSXVNeUF4T1M0MUlERTRMamNnTVRrdU5TQXhOQzR6UXpFNUxqVWdPUzQ1SURFMUxqa2dOaTR6SURFeExqVWdOaTR6V2sweE5TNHhJREU1UXpFMExqRWdNVGt1T0NBeE1pNDRJREl3TGpJZ01URXVOU0F5TUM0eVF6RXdMaklnTWpBdU1pQTRMamtnTVRrdU9DQTNMamtnTVRsRE9DNDNJREUzTGpjZ01UQWdNVGNnTVRFdU5TQXhOME14TXlBeE55QXhOQzQwSURFM0xqZ2dNVFV1TVNBeE9WcE5NVE11TVNBeE15NDBRekV6TGpFZ01UUXVNeUF4TWk0MElERTFJREV4TGpVZ01UVkRNVEF1TmlBeE5TQTVMamtnTVRRdU15QTVMamtnTVRNdU5FTTVMamtnTVRJdU5TQXhNQzQySURFeExqZ2dNVEV1TlNBeE1TNDRRekV5TGpRZ01URXVPQ0F4TXk0eElERXlMalVnTVRNdU1TQXhNeTQwV2sweE5TNHhJREV6TGpSRE1UVXVNU0F4TVM0MElERXpMalVnT1M0NElERXhMalVnT1M0NFF6a3VOU0E1TGpnZ055NDVJREV4TGpRZ055NDVJREV6TGpSRE55NDVJREUwTGpJZ09DNHlJREUxSURndU55QXhOUzQzUXpjdU9DQXhOaTR4SURjdU1TQXhOaTQ0SURZdU5TQXhOeTQyUXpVdU9DQXhOaTQySURVdU5TQXhOUzQxSURVdU5TQXhOQzR6UXpVdU5TQXhNU0E0TGpJZ09DNHpJREV4TGpVZ09DNHpRekUwTGpnZ09DNHpJREUzTGpVZ01URWdNVGN1TlNBeE5DNHpRekUzTGpVZ01UVXVOU0F4Tnk0eUlERTJMallnTVRZdU5TQXhOeTQyUXpFMUxqa2dNVFl1T0NBeE5TNHlJREUyTGpJZ01UUXVNeUF4TlM0M1F6RTBMamdnTVRVdU1TQXhOUzR4SURFMExqSWdNVFV1TVNBeE15NDBXazB5TVNBNUxqRkRNakVnT0M0MklESXhMalFnT0M0eElESXlJRGd1TVVneU5TNDFRekkySURndU1TQXlOaTQxSURndU5TQXlOaTQxSURrdU1VTXlOaTQxSURrdU5pQXlOaTR4SURFd0xqRWdNalV1TlNBeE1DNHhTREl5UXpJeExqUWdNVEF1TVNBeU1TQTVMallnTWpFZ09TNHhXazB5TVNBeE1pNDFRekl4SURFeUlESXhMalFnTVRFdU5TQXlNaUF4TVM0MVNESTFMalZETWpZZ01URXVOU0F5Tmk0MUlERXhMamtnTWpZdU5TQXhNaTQxUXpJMkxqVWdNVE1nTWpZdU1TQXhNeTQxSURJMUxqVWdNVE11TlVneU1rTXlNUzQwSURFekxqVWdNakVnTVRNdU1TQXlNU0F4TWk0MVdrMHlNU0F4TmtNeU1TQXhOUzQxSURJeExqUWdNVFVnTWpJZ01UVklNalV1TlVNeU5pQXhOU0F5Tmk0MUlERTFMalFnTWpZdU5TQXhOa015Tmk0MUlERTJMalVnTWpZdU1TQXhOeUF5TlM0MUlERTNTREl5UXpJeExqUWdNVGNnTWpFZ01UWXVOaUF5TVNBeE5scE5NalV1TlNBeU1DNDFTREl5UXpJeExqVWdNakF1TlNBeU1TQXlNQzR4SURJeElERTVMalZETWpFZ01UZ3VPU0F5TVM0MElERTRMalVnTWpJZ01UZ3VOVWd5TlM0MVF6STJJREU0TGpVZ01qWXVOU0F4T0M0NUlESTJMalVnTVRrdU5VTXlOaTQxSURJd0xqRWdNall1TVNBeU1DNDFJREkxTGpVZ01qQXVOVm9pSUdacGJHdzlJaU5HUmpNM05VVWlMejRLUEM5emRtYytDZz09XCIvPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJmcy0yMiBmcy1tZC0xNiBmYy1ibGFjayBmdy1tZWRpdW0gbWItMCBmbGV4LWdyb3ctMSBsaW5lLWhlaWdodC0xLTJcIj5cclxuICAgICAgICAgICAgICB7eyBmb3JtVGl0bGUgfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcmVxdWVzdC1pbmZvLS1zdGF0dXMtYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgIEBpZiAoIWlzTG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgPGRzLXN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKGZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddKX19XCIgY2xhc3M9XCJoZWFkZXItc3RhdHVzXCI+e3sgZm9ybT8uaGVhZGVyPy5zdGF0dXM/LlsndmFsdWUnXSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICA8IS0tIDxkcy1idXR0b25cclxuICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0/LmluYm94SXRlbSAmJiAoZm9ybT8uaW5ib3hJdGVtPy5jYW5SZXF1ZXN0RmVlZGJhY2sgPT0ndHJ1ZSd8fCBmb3JtPy5pbmJveEl0ZW0/Lmhhc0ZlZWRiYWNrPT0ndHJ1ZScpXCJcclxuICAgICAgICAgICAgICAgICBzcXVhcmUgaWNvbiBzaXplPVwic21hbGxcIj5cclxuICAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiY2hhdC1vXCIgY2xhc3M9XCJmcy0yMCBmcy1tZC0xNyBmYy1jb3JhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgJmx0OyEmbmRhc2g7ICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmYy1ncmVlbic6ZmVlZEJhY2tJY29uID09ICdmZWVkYmFja1Jlc3BvbmRlZCcgLCAnZmMtcmVkJzogZmVlZEJhY2tJY29uID09ICdyZXNwb25kVG9GZWVkYmFjaycgLCAnZmMteWVsbG93JzogZmVlZEJhY2tJY29uID09ICd3YWl0aW5nRmVlZGJhY2snfVwiJm5kYXNoOyZndDtcclxuICAgICAgICAgICAgICAgICA8L2RzLWljb24+XHJcbiAgICAgICAgICAgICAgIDwvZHMtYnV0dG9uPi0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gaGlzdG9yeS0tPlxyXG4gICAgICAgICAgICAgIDxkcy1idXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybT8uY29tbWVudHNEcm9wPy5sZW5ndGggPiAwICYmICFpc0xvYWRpbmdcIiBzcXVhcmUgaWNvbiBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29tbWVudHNGb3JtQ2xpY2soKVwiIGNsYXNzPVwiaGFzLWNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiY2xvY2tcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTIwIGZzLW1kLTE3XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVlc3QtaW5mby0tZm9vdGVyXCI+XHJcbiAgICAgICAgICBAaWYgKCFpc0xvYWRpbmcpIHtcclxuICAgICAgICAgICAgPGRzLWF2YXRhclxyXG4gICAgICAgICAgICAgIGltYWdlPVwie3tmb3JtPy5oZWFkZXI/LnJlcXVlc3RlclBob3RvfX1cIiBzaXplPVwieHgtc21hbGxcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93VXNlckluZm8oKVwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIGZsZXgtZ3Jvdy0xIGdhcC0xIGdhcC1zbS0yIGxpbmUtaGVpZ2h0LTEgcmVxdWVzdC1pbmZvLS1oZWFkZXJfX2RldGFpbHNcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvYWRpbmctYmcgbG9hZGluZy13aWR0aCc6IGlzTG9hZGluZ31cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtMTIgZnctbWVkaXVtIGQtbm9uZSBkLXNtLWlubGluZS1ibG9ja1wiPnt7IGNvcmVTZXJ2aWNlLmdldFNob3J0TmFtZShmb3JtPy5oZWFkZXI/LlsncmVxdWVzdGVyTmFtZSddKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0yMFwiPiYjODIyNjs8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmctYmcgbG9hZGluZy13aWR0aCc6IGlzTG9hZGluZ31cIj4ge3sgZm9ybT8uaGVhZGVyPy5mb3JtSWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMjBcIiAqbmdJZj1cImNyZWF0aW9uRGF0ZVwiPiYjODIyNjs8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmctYmcgbG9hZGluZy13aWR0aCc6IGlzTG9hZGluZ31cIj4ge3sgY3JlYXRpb25EYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8IS0tPG5nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTIgbXktMlwiPlxyXG4gICAgICA8ZHMtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJmb3JtPy5pbmJveEl0ZW0gJiYgIWZvcm0uc2VjdGlvbnNbZm9ybS5zZWN0aW9ucy5sZW5ndGggLTFdLmhlYWRlci5yZWFkT25seSAmJiAhaXNMb2FkaW5nXCJcclxuICAgICAgICBzcXVhcmVcclxuICAgICAgICBpY29uXHJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXHJcbiAgICAgICAgY2xhc3M9XCJpY29uLWJ0bi1zaGFkb3dcIj5cclxuICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydmYy1wdXJwbGUnIDogKGZsYWdQcmlvcml0eSA9PT0gJzAnIHx8ICBmbGFnUHJpb3JpdHkgPT09IG51bGwpLCdmYy15ZWxsb3cnIDogZmxhZ1ByaW9yaXR5ID09PSAnMScsJ2ZjLWdyZWVuJyA6IGZsYWdQcmlvcml0eSA9PT0gJzInLCdmYy1jb3JhbCcgOiBmbGFnUHJpb3JpdHkgPT09ICczJ31cIlxyXG4gICAgICAgICAgaWNvbj1cImZsYWctb1wiIGNsYXNzPVwiZnMtMjAgZnMtbWQtMTcgZmMtcHVycGxlXCI+XHJcbiAgICAgICAgPC9kcy1pY29uPlxyXG4gICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIHBhbmVsQ2xhc3M9XCJhY3Rpb24tbWVudVwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0RmxhZ1ByaW9yaXR5KCcwJylcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJmbGFnLW9cIiBjbGFzcz1cImZjLXB1cnBsZSBmcy0yMCBmcy1tZC0xN1wiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldEZsYWdQcmlvcml0eSgnMScpXCI+XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiZmxhZy1vXCIgY2xhc3M9XCJmYy15ZWxsb3cgZnMtMjAgZnMtbWQtMTdcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRGbGFnUHJpb3JpdHkoJzInKVwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZsYWctb1wiIGNsYXNzPVwiZmMtZ3JlZW4gZnMtMjAgZnMtbWQtMTdcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRGbGFnUHJpb3JpdHkoJzMnKVwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZsYWctb1wiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjAgZnMtbWQtMTdcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcblxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJzZXJ2aWNlLWhlYWRlciBiYy13aGl0ZSBwLTMgcC1zbS00IHB5LTQgZ2FwLTMge3tzdGF0dXNDbGFzcyhmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSl9fVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtaGVhZGVyLWljb25cIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgc3JjPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTXpBaUlHaGxhV2RvZEQwaU1qa2lJSFpwWlhkQ2IzZzlJakFnTUNBek1DQXlPU0lnWm1sc2JEMGlibTl1WlNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0S1BIQmhkR2dnWkQwaVRUSTFMakVnTUVnMExqbERNaTR5SURBZ01DQXlMaklnTUNBMExqbFdNamd1TmtneU5TNHhRekkzTGpnZ01qZ3VOaUF6TUNBeU5pNDBJRE13SURJekxqZFdOQzQ1UXpNd0lESXVNaUF5Tnk0NElEQWdNalV1TVNBd1drMHlJRFF1T1VNeUlETXVNeUF6TGpNZ01pQTBMamtnTWtneU5TNHhRekkyTGpjZ01pQXlPQ0F6TGpNZ01qZ2dOQzQ1VmpJekxqZERNamdnTWpVdU15QXlOaTQzSURJMkxqWWdNalV1TVNBeU5pNDJTREpXTkM0NVdrMHhNUzQxSURZdU0wTTNMakVnTmk0eklETXVOU0E1TGprZ015NDFJREUwTGpORE15NDFJREU0TGpjZ055NHhJREl5TGpNZ01URXVOU0F5TWk0elF6RTFMamtnTWpJdU15QXhPUzQxSURFNExqY2dNVGt1TlNBeE5DNHpRekU1TGpVZ09TNDVJREUxTGprZ05pNHpJREV4TGpVZ05pNHpXazB4TlM0eElERTVRekUwTGpFZ01Ua3VPQ0F4TWk0NElESXdMaklnTVRFdU5TQXlNQzR5UXpFd0xqSWdNakF1TWlBNExqa2dNVGt1T0NBM0xqa2dNVGxET0M0M0lERTNMamNnTVRBZ01UY2dNVEV1TlNBeE4wTXhNeUF4TnlBeE5DNDBJREUzTGpnZ01UVXVNU0F4T1ZwTk1UTXVNU0F4TXk0MFF6RXpMakVnTVRRdU15QXhNaTQwSURFMUlERXhMalVnTVRWRE1UQXVOaUF4TlNBNUxqa2dNVFF1TXlBNUxqa2dNVE11TkVNNUxqa2dNVEl1TlNBeE1DNDJJREV4TGpnZ01URXVOU0F4TVM0NFF6RXlMalFnTVRFdU9DQXhNeTR4SURFeUxqVWdNVE11TVNBeE15NDBXazB4TlM0eElERXpMalJETVRVdU1TQXhNUzQwSURFekxqVWdPUzQ0SURFeExqVWdPUzQ0UXprdU5TQTVMamdnTnk0NUlERXhMalFnTnk0NUlERXpMalJETnk0NUlERTBMaklnT0M0eUlERTFJRGd1TnlBeE5TNDNRemN1T0NBeE5pNHhJRGN1TVNBeE5pNDRJRFl1TlNBeE55NDJRelV1T0NBeE5pNDJJRFV1TlNBeE5TNDFJRFV1TlNBeE5DNHpRelV1TlNBeE1TQTRMaklnT0M0eklERXhMalVnT0M0elF6RTBMamdnT0M0eklERTNMalVnTVRFZ01UY3VOU0F4TkM0elF6RTNMalVnTVRVdU5TQXhOeTR5SURFMkxqWWdNVFl1TlNBeE55NDJRekUxTGprZ01UWXVPQ0F4TlM0eUlERTJMaklnTVRRdU15QXhOUzQzUXpFMExqZ2dNVFV1TVNBeE5TNHhJREUwTGpJZ01UVXVNU0F4TXk0MFdrMHlNU0E1TGpGRE1qRWdPQzQySURJeExqUWdPQzR4SURJeUlEZ3VNVWd5TlM0MVF6STJJRGd1TVNBeU5pNDFJRGd1TlNBeU5pNDFJRGt1TVVNeU5pNDFJRGt1TmlBeU5pNHhJREV3TGpFZ01qVXVOU0F4TUM0eFNESXlRekl4TGpRZ01UQXVNU0F5TVNBNUxqWWdNakVnT1M0eFdrMHlNU0F4TWk0MVF6SXhJREV5SURJeExqUWdNVEV1TlNBeU1pQXhNUzQxU0RJMUxqVkRNallnTVRFdU5TQXlOaTQxSURFeExqa2dNall1TlNBeE1pNDFRekkyTGpVZ01UTWdNall1TVNBeE15NDFJREkxTGpVZ01UTXVOVWd5TWtNeU1TNDBJREV6TGpVZ01qRWdNVE11TVNBeU1TQXhNaTQxV2sweU1TQXhOa015TVNBeE5TNDFJREl4TGpRZ01UVWdNaklnTVRWSU1qVXVOVU15TmlBeE5TQXlOaTQxSURFMUxqUWdNall1TlNBeE5rTXlOaTQxSURFMkxqVWdNall1TVNBeE55QXlOUzQxSURFM1NESXlRekl4TGpRZ01UY2dNakVnTVRZdU5pQXlNU0F4TmxwTk1qVXVOU0F5TUM0MVNESXlRekl4TGpVZ01qQXVOU0F5TVNBeU1DNHhJREl4SURFNUxqVkRNakVnTVRndU9TQXlNUzQwSURFNExqVWdNaklnTVRndU5VZ3lOUzQxUXpJMklERTRMalVnTWpZdU5TQXhPQzQ1SURJMkxqVWdNVGt1TlVNeU5pNDFJREl3TGpFZ01qWXVNU0F5TUM0MUlESTFMalVnTWpBdU5Wb2lJR1pwYkd3OUlpTkdSak0zTlVVaUx6NEtQQzl6ZG1jK0NnPT1cIi8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNtLXJvdyBhbGlnbi1pdGVtcy1zbS1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxoMSBjbGFzcz1cImZzLTIwIGZzLW1kLTE2IGZ3LWJvbGQgZmMtYmxhY2sgaGVhZGVyLXRpdGxlIG0tMFwiPnt7IGZvcm1UaXRsZSB9fVxyXG4gICAgICAgICAgICBAaWYgKHNlcnZpY2VGYXEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTIyIGZjLWRhcmstZ3JheSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvcGVuRmFxKClcIj5cclxuICAgICAgICAgICAgICA8L2RzLWljb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXVzZXIgZC1mbGV4IGFsaWduLWl0ZW1zLXNtLWNlbnRlciBnYXAtMiBtdC1zbS0xXCI+XHJcbiAgICAgICAgICAgIEBpZiAoIWlzTG9hZGluZykge1xyXG4gICAgICAgICAgICAgIDxkcy1hdmF0YXJcclxuICAgICAgICAgICAgICAgIGltYWdlPVwie3tmb3JtPy5oZWFkZXI/LnJlcXVlc3RlclBob3RvfX1cIiBzaXplPVwieHgtc21hbGxcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dVc2VySW5mbygpXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImZzLTEyIHRleHQtdHJ1bmNhdGUgZC1zbS1ibG9jayBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93VXNlckluZm8oKVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsb2FkaW5nLWJnIGxvYWRpbmctd2lkdGgnOiBpc0xvYWRpbmd9XCI+e3sgY29yZVNlcnZpY2UuZ2V0U2hvcnROYW1lKGZvcm0/LmhlYWRlcj8ucmVxdWVzdGVyTmFtZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cImRpdmlkZXIgY2lyY2xlIG14LTIgZC1ub25lIGQtc20tYmxvY2tcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyXCIgW25nQ2xhc3NdPVwieydsb2FkaW5nLWJnIGxvYWRpbmctd2lkdGgnOiBpc0xvYWRpbmd9XCI+e3sgZm9ybT8uaGVhZGVyPy5mb3JtSWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZiAoY3JlYXRpb25EYXRlKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwiZGl2aWRlciBjaXJjbGUgbXgtMiBkLW5vbmUgZC1zbS1ibG9ja1wiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNFwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZy1iZyBsb2FkaW5nLXdpZHRoJzogaXNMb2FkaW5nfVwiPnt7IGNyZWF0aW9uRGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYWN0aW9ucyBkLWZsZXggZmxleC1yb3cgZmxleC1zbS1jb2x1bW4ganVzdGlmeS1jb250ZW50LWJldHdlZW4ganVzdGlmeS1jb250ZW50LXNtLWNlbnRlciBnYXAtMiBtdC0yIG10LXNtLTBcIj5cclxuICAgICAgICAgIEBpZiAoIWlzTG9hZGluZykge1xyXG4gICAgICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICAgICAgc3RhdHVzPVwie3tzdGF0dXNDbGFzcyhmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSl9fVwiIGNsYXNzPVwiaGVhZGVyLXN0YXR1c1wiPnt7IGZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ3ZhbHVlJ10gfX1cclxuICAgICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICZsdDshJm5kYXNoOyBmZWVkYmFjayZuZGFzaDsmZ3Q7XHJcbiAgICAgICAgICAgICZsdDshJm5kYXNoOyAgICAgICAgICAgICpuZ0lmPVwiZm9ybT8uaW5ib3hJdGVtICYmIChmb3JtPy5pbmJveEl0ZW0/LmNhblJlcXVlc3RGZWVkYmFjayA9PT0ndHJ1ZSd8fCBmb3JtPy5pbmJveEl0ZW0/Lmhhc0ZlZWRiYWNrPT09J3RydWUnKSAmJiAhaXNMb2FkaW5nXCImbmRhc2g7Jmd0O1xyXG4gICAgICAgICAgICAmbHQ7ISZuZGFzaDsgIDxkcy1idXR0b25cclxuICAgICAgICAgICAgICAgIHNxdWFyZSBpY29uIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJmZWVkYmFjaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgICAgICAgICBpY29uPVwiY2hhdC1vXCIgY2xhc3M9XCJmcy0yMCBmcy1tZC0xNyBmYy1jb3JhbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZmMtZ3JlZW4nOmZlZWRCYWNrSWNvbiA9PT0gJ2ZlZWRiYWNrUmVzcG9uZGVkJyAsICdmYy1yZWQnOiBmZWVkQmFja0ljb24gPT09ICdyZXNwb25kVG9GZWVkYmFjaycgLCAnZmMteWVsbG93JzogZmVlZEJhY2tJY29uID09PSAnd2FpdGluZ0ZlZWRiYWNrJ31cIj5cclxuICAgICAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICA8L2RzLWJ1dHRvbj4mbmRhc2g7Jmd0O1xyXG4gICAgICAgICAgICA8ZHMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtPy5jb21tZW50c0Ryb3A/Lmxlbmd0aCA+IDAgJiYgIWlzTG9hZGluZ1wiIHNxdWFyZSBpY29uIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29tbWVudHNGb3JtQ2xpY2soKVwiIGNsYXNzPVwiaGFzLWNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImNsb2NrXCIgY2xhc3M9XCJmYy1jb3JhbCBmcy0yMCBmcy1tZC0xN1wiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0FwcHJvdmFsSGlzdG9yeSkge1xyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwid2hpdGVcIiBzaGFwZT1cInRleHRcIiBzcXVhcmUgc2l6ZT1cInNtYWxsXCIgW3NhdFBvcG92ZXJBbmNob3JdPVwid29ya2Zsb3dcIlxyXG4gICAgICAgICAgICAgICAgICAjd29ya2Zsb3dBbmNob3I9XCJzYXRQb3BvdmVyQW5jaG9yXCIgKGNsaWNrKT1cIndvcmtmbG93QW5jaG9yLnBvcG92ZXIub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwid29ya2Zsb3dcIiBjbGFzcz1cImZzLTI0XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgICAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxzYXQtcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAjd29ya2Zsb3cgW2FuY2hvcl09XCJ3b3JrZmxvd0FuY2hvclwiIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImJlbG93XCJcclxuICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LXBvcG92ZXIgcC0zXCIgc3R5bGU9XCJtaW4td2lkdGg6IDMzMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkcy1hcHByb3ZhbHMgKm5nSWY9XCJhcHByb3ZhbEhpc3RvcnlcIiBjbGFzcz1cInBvcG92ZXItYXBwcm92YWxzXCIgYXBwcm92YWxzRGF0YT1cInt7YXBwcm92YWxzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2RzLWFwcHJvdmFscz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NhdC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9oZWFkZXI+XHJcbiAgPC9uZy1jb250YWluZXI+LS0+XHJcbn1cclxuIl19
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvc2VydmljZS1oZWFkZXIvc2VydmljZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvc2VydmljZS1oZWFkZXIvc2VydmljZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxLQUFLLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDcEUsT0FBTyxFQUErQixlQUFlLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFDaEcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFaEUsTUFBTSxTQUFTLEdBQUc7SUFDaEIsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztJQUNsRSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO0lBQ25FLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUM7SUFDaEUsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQztJQUN4RSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO0lBQ2hFLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUM7SUFDbEUsU0FBUyxFQUFFLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDO0NBQzdDLENBQUE7QUE2QkQsTUFBTSxPQUFPLHNCQUFzQjtJQWlCZDtJQUNWO0lBQ0E7SUFBd0M7SUFDOUI7SUFBb0M7SUFDcEM7SUFwQlYsSUFBSSxDQUFPO0lBQ1gsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNwQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLGVBQWUsQ0FBTTtJQUNyQixZQUFZLENBQVM7SUFDckIsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBVTtJQUNqQixVQUFVLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdEIsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFHaEMsWUFDbUIsS0FBd0IsRUFDbEMsV0FBd0IsRUFDeEIsSUFBcUIsRUFBbUIsZUFBZ0MsRUFDOUQsTUFBaUIsRUFBbUIsY0FBOEIsRUFDbEUsY0FBNkI7UUFKN0IsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDbEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBbUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlELFdBQU0sR0FBTixNQUFNLENBQVc7UUFBbUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2xFLG1CQUFjLEdBQWQsY0FBYyxDQUFlO0lBQzdDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxtQkFBbUI7UUFDakIsTUFBTSxZQUFZLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDakQsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDL0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNuQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLG9CQUFvQixDQUFDLElBQUk7UUFDL0IsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVztZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDO1lBQ3pELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO1lBQ3JELE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUN6QyxVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDMUIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7Z0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQzlCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNoQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUM7WUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxFQUFVO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDBCQUEwQixDQUFDLEVBQVU7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN2QyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3BDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDeEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLE1BQWM7UUFDeEIsK0NBQStDO1FBQy9DLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsT0FBTyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxrQkFBa0IsQ0FBQyxlQUFzQztRQUN2RCxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQy9DLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RCxNQUFNLEdBQUcsR0FBRztnQkFDVixFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVTtnQkFDdEMsS0FBSyxFQUFFLFlBQVksQ0FBQyxZQUFZO2dCQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztnQkFDMUQsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFdBQVcsRUFBRSxtQkFBbUI7YUFDakMsQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsS0FBYTtRQUNyQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHNCQUFzQixDQUFDLEtBQWE7UUFDMUMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDMUUsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFdBQVcsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sb0RBQW9ELEdBQUcsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDakUsQ0FBQzt1R0FuTlUsc0JBQXNCOzJGQUF0QixzQkFBc0IsOFZBSnRCLENBQUMsZUFBZTtZQUN6QixFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBQztTQUN6QywwQkNyREgsZytlQStPQSx1M0xEck1JLElBQUksNEZBQ0osZ0JBQWdCLCtCQUdoQixPQUFPOzsyRkFTRSxzQkFBc0I7a0JBbkJsQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsV0FBVztxQkFDWixXQUNRLENBQUMsc0JBQXNCLENBQUMsYUFDdEIsQ0FBQyxlQUFlO3dCQUN6QixFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBQztxQkFDekM7NlBBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgRGVzdHJveVJlZiwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybSwgU2VjdGlvbn0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCAqIGFzIENvbnN0YW50cyBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2UsIENvcmVTZXJ2aWNlLCBGZWVkQmFja1NlcnZpY2UsIFNpZGVuYXZTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7UHJvZmlsZVNlY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHtGZWVkYmFja1NlY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL2ZlZWRiYWNrLXNlY3Rpb24vZmVlZGJhY2stc2VjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQge01hdERpdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQge01hdE1lbnUsIE1hdE1lbnVJdGVtLCBNYXRNZW51VHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7RmFxU2lkZW5hdkNvbXBvbmVudH0gZnJvbSAnLi4vZmFxLXNpZGVuYXYvZmFxLXNpZGVuYXYuY29tcG9uZW50JztcclxuaW1wb3J0IHtBY3Rpdml0aWVzQ29tcG9uZW50fSBmcm9tICcuLi9hY3Rpdml0aWVzL2FjdGl2aXRpZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtmb3JtYXR9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQge1ByZXZpb3VzUmVxdWVzdHNDb21wb25lbnR9IGZyb20gXCIuLi9wcmV2aW91cy1yZXF1ZXN0cy9wcmV2aW91cy1yZXF1ZXN0cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuY29uc3QgU3RhdHVzTWFwID0ge1xyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURURdOiB7Y2xhc3M6ICdkYW5nZXInLCBpY29uOiAnY2xvc2UnfSxcclxuICBbQ29uc3RhbnRzLkZPUk1fU1RBVFVTX0NBTkNFTExFRF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNUXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5TRUNUSU9OX1NUQVRVU19VTlNBVElTRklFRF06IHtjbGFzczogJ2RhbmdlcicsIGljb246ICdjbG9zZSd9LFxyXG4gIFtDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMXToge2NsYXNzOiAnZGFuZ2VyJywgaWNvbjogJ2Nsb3NlJ30sXHJcbiAgW0NvbnN0YW50cy5GT1JNX1NUQVRVU19QRU5ESU5HXToge2NsYXNzOiAnd2FybmluZycsIGljb246ICdjbG9jayd9LFxyXG4gICdkZWZhdWx0Jzoge2NsYXNzOiAnc3VjY2VzcycsIGljb246ICdjaGVjayd9XHJcbn1cclxuXHJcbmludGVyZmFjZSBBcHByb3ZhbEhpc3RvcnlJdGVtIHtcclxuICBhcHByb3Zlcjoge1xyXG4gICAgcGVyc29uTmFtZTogc3RyaW5nO1xyXG4gICAgcGVyc29uRW1haWw6IHN0cmluZztcclxuICB9O1xyXG4gIHBvc2l0aW9uVHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtc2VydmljZS1oZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXJ2aWNlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VydmljZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nSWYsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTWF0RGl2aWRlcixcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51SXRlbVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW0ZlZWRCYWNrU2VydmljZSxcclxuICAgIHtwcm92aWRlOiBNQVRfRElBTE9HX0RBVEEsIHVzZVZhbHVlOiB7fX0sXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VydmljZUhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgc2hvd0hpc3RvcnkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0FwcHJvdmFsSGlzdG9yeSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwcHJvdmFsSGlzdG9yeTogYW55O1xyXG4gIEBJbnB1dCgpIGNyZWF0aW9uRGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGZvcm1UaXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQElucHV0KCkgc2VydmljZUZhcTogYW55W10gPSBbXTtcclxuICBhcHByb3ZhbHM6IGFueVtdID0gW107XHJcbiAgZmxhZ1ByaW9yaXR5OiBzdHJpbmc7XHJcbiAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBmZWVkQmFja1NlcnZpY2U6IEZlZWRCYWNrU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgcmVhZG9ubHkgc2lkZW5hdlNlcnZpY2U6IFNpZGVuYXZTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0QXBwcm92YWxIaXN0b3J5KHRoaXMuYXBwcm92YWxIaXN0b3J5KTtcclxuICAgIGlmICh0aGlzLmZvcm0/LmhlYWRlcj8uY3JlYXRpb25EYXRlKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRpb25EYXRlID0gZm9ybWF0KG5ldyBEYXRlKHRoaXMuZm9ybT8uaGVhZGVyPy5jcmVhdGlvbkRhdGUpLCBcImRkL01NL3l5eXkgaGg6bW06c3NcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBjb21tZW50cyBmb3JtLlxyXG4gICAqIFJldHJpZXZlcyBjb21tZW50cyBmcm9tIHRoZSBmb3JtLCB0cmFuc2Zvcm1zIHRoZW0sIGFuZCB1cGRhdGVzIGFjdGl2aXRpZXMgaW4gdGhlIGNvcmUgc2VydmljZS5cclxuICAgKiBGaW5hbGx5LCBwdWJsaXNoZXMgYW4gJ29wZW4nIGV2ZW50IHRvIHRoZSBzaWRlbmF2IHNlcnZpY2UgdG8gb3BlbiB0aGUgQWN0aXZpdGllc0NvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3ZvaWR9XHJcbiAgICovXHJcbiAgb25Db21tZW50c0Zvcm1DbGljaygpIHtcclxuICAgIGNvbnN0IGZvcm1Db21tZW50czogYW55ID0gdGhpcy5mb3JtLmNvbW1lbnRzRHJvcDtcclxuICAgIGNvbnN0IHRyYW5zZm9ybWVkQ29tbWVudHMgPSBbXTtcclxuICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBmb3JtQ29tbWVudHMpIHtcclxuICAgICAgdHJhbnNmb3JtZWRDb21tZW50cy5wdXNoKHRoaXMudHJhbnNmb3JtQ29tbWVudEl0ZW0oY29tbWVudCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb3JlU2VydmljZS5hY3Rpdml0aWVzID0gdHJhbnNmb3JtZWRDb21tZW50cztcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UucHVibGlzaCgnb3BlbicsIEFjdGl2aXRpZXNDb21wb25lbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyBhIGNvbW1lbnQgaXRlbSBpbnRvIGEgZGlmZmVyZW50IGZvcm1hdCBmb3IgZGlzcGxheS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVtIC0gVGhlIG9yaWdpbmFsIGNvbW1lbnQgaXRlbSB0byB0cmFuc2Zvcm0uXHJcbiAgICogQHJldHVybiB7T2JqZWN0fSAtIFRoZSB0cmFuc2Zvcm1lZCBjb21tZW50IGl0ZW0gd2l0aCBzcGVjaWZpYyBwcm9wZXJ0aWVzIGluY2x1ZGluZyBuYW1lLCB0aXRsZSwgaW1hZ2UsIGRhdGUsIHRpbWUsIGNvbW1lbnQsIGFuZCBhdHRhY2htZW50cy5cclxuICAgKi9cclxuICBwcml2YXRlIHRyYW5zZm9ybUNvbW1lbnRJdGVtKGl0ZW0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IGl0ZW1bJ2VtcGxveWVlTmFtZSddLFxyXG4gICAgICB0aXRsZTogaXRlbS5qb2JQb3NpdGlvbixcclxuICAgICAgaW1hZ2U6IGl0ZW1bJ3Byb2ZpbGVQaWN0dXJlJ10sXHJcbiAgICAgIGRhdGU6IGZvcm1hdChuZXcgRGF0ZShpdGVtWydjb21tZW50RGF0ZSddKSwgJ3l5eXktTU0tZGQnKSxcclxuICAgICAgdGltZTogZm9ybWF0KG5ldyBEYXRlKGl0ZW1bJ2NvbW1lbnREYXRlJ10pLCAnaDptbSBhJyksXHJcbiAgICAgIGNvbW1lbnQ6IGl0ZW1bJ2NvbW1lbnRCb2R5J10sXHJcbiAgICAgIGF0dGFjaG1lbnRzOiBpdGVtWydhdHRhY2htZW50J11cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyBhIGRpYWxvZyBmb3IgcHJvdmlkaW5nIGZlZWRiYWNrLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBmZWVkYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nLm9wZW4oRmVlZGJhY2tTZWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnbWFpbi1wb3B1cCddLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcHJvZmlsZTogdGhpcy5mb3JtLnByb2ZpbGVJbmZvRHJvcCxcclxuICAgICAgICBpbmJveEl0ZW06IHRoaXMuZm9ybS5pbmJveEl0ZW0sXHJcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgc2lkZW5hdiB3aXRoIHVzZXIgcHJvZmlsZSBpbmZvcm1hdGlvbiBpZiBub3QgYWxyZWFkeSBsb2FkaW5nLlxyXG4gICAqXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBzaG93VXNlckluZm8oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNMb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UuZGF0YSA9IHRoaXMuZm9ybT8ucHJvZmlsZUluZm9Ecm9wO1xyXG4gICAgICB0aGlzLnNpZGVuYXZTZXJ2aWNlLnB1Ymxpc2goJ29wZW4nLCBQcm9maWxlU2VjdGlvbkNvbXBvbmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHByaW9yaXR5IGZsYWcgZm9yIHRoZSBpbmJveCBpdGVtIHdpdGggdGhlIHByb3ZpZGVkIElELlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIElEIG9mIHRoZSBwcmlvcml0eSBmbGFnIHRvIGJlIHNldCBmb3IgdGhlIGluYm94IGl0ZW0uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBzZXRGbGFnUHJpb3JpdHkoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5mbGFnUHJpb3JpdHkgPSBpZDtcclxuICAgIHRoaXMuZm9ybS5pbmJveEl0ZW0uZmxhZ1ByaW9yaXR5ID0gaWQ7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvU2V0RmxhZ1ByaW9yaXR5KGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBzZXQgZmxhZyBwcmlvcml0eSBmb3IgYSBzcGVjaWZpYyBpZGVudGlmaWVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gVGhlIGlkZW50aWZpZXIgb2YgdGhlIGZsYWcgdG8gc2V0IHByaW9yaXR5IGZvci5cclxuICAgKiBAcmV0dXJuIHt2b2lkfVxyXG4gICAqL1xyXG4gIHN1YnNjcmliZVRvU2V0RmxhZ1ByaW9yaXR5KGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuY29yZVNlcnZpY2Uuc2V0RmxhZ1ByaW9yaXR5KGlkKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKHRoaXMuaTE4bi50cmFuc2xhdGUoJ2ZsYWdTdGF0dXNVcGRhdGVkJykpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIENTUyBjbGFzcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlucHV0IHN0YXR1cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0dXMgLSBUaGUgc3RhdHVzIGZvciB3aGljaCB0aGUgQ1NTIGNsYXNzIGlzIG5lZWRlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIENTUyBjbGFzcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBzdGF0dXMuXHJcbiAgICovXHJcbiAgc3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gc3RhdHVzID0gc3RhdHVzID8gc3RhdHVzLnRvTG93ZXJDYXNlKCkgOiAnJztcclxuICAgIGxldCBzdGF0dXNTdHJhdGVneSA9IFN0YXR1c01hcFtzdGF0dXNdIHx8IFN0YXR1c01hcFsnZGVmYXVsdCddO1xyXG4gICAgcmV0dXJuIHN0YXR1c1N0cmF0ZWd5LmNsYXNzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIEZBUSBzaWRlIG5hdmlnYXRpb24uXHJcbiAgICogQHJldHVybiB7dm9pZH1cclxuICAgKi9cclxuICBvcGVuRmFxKCkge1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgRmFxU2lkZW5hdkNvbXBvbmVudCwgJ2VuZCcsICdvdmVyJywgdGhpcy5zZXJ2aWNlRmFxKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhcHByb3ZhbCBoaXN0b3J5IGluZm9ybWF0aW9uIGZvciBlYWNoIGFwcHJvdmFsIGl0ZW0gaW4gdGhlIHByb3ZpZGVkIGFycmF5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBcHByb3ZhbEhpc3RvcnlJdGVtW119IGFwcHJvdmFsSGlzdG9yeSAtIFRoZSBhcnJheSBjb250YWluaW5nIGFwcHJvdmFsIGhpc3RvcnkgaXRlbXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHt2b2lkfSAtIFRoaXMgbWV0aG9kIGRvZXMgbm90IHJldHVybiBhbnkgdmFsdWUuIEl0IHVwZGF0ZXMgdGhlIGludGVybmFsICdhcHByb3ZhbHMnIGFycmF5LlxyXG4gICAqL1xyXG4gIGdldEFwcHJvdmFsSGlzdG9yeShhcHByb3ZhbEhpc3Rvcnk6IEFwcHJvdmFsSGlzdG9yeUl0ZW1bXSkge1xyXG4gICAgYXBwcm92YWxIaXN0b3J5Py5mb3JFYWNoKChhcHByb3ZhbEl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCBhcHByb3ZhbFN0YXR1cyA9IHRoaXMuZ2V0QXBwcm92YWxTdGF0dXMoaW5kZXgpO1xyXG4gICAgICBsZXQgYXBwcm92YWxTdGF0dXNMYWJlbCA9IHRoaXMuZ2V0QXBwcm92YWxTdGF0dXNMYWJlbChpbmRleCk7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBpZDogaW5kZXggKyAxLFxyXG4gICAgICAgIG5hbWU6IGFwcHJvdmFsSXRlbS5hcHByb3Zlci5wZXJzb25OYW1lLFxyXG4gICAgICAgIHRpdGxlOiBhcHByb3ZhbEl0ZW0ucG9zaXRpb25UeXBlLFxyXG4gICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlVXJsKGFwcHJvdmFsSXRlbS5hcHByb3Zlci5wZXJzb25FbWFpbCksXHJcbiAgICAgICAgc3RhdHVzOiBhcHByb3ZhbFN0YXR1cyxcclxuICAgICAgICBzdGF0dXNMYWJlbDogYXBwcm92YWxTdGF0dXNMYWJlbCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5hcHByb3ZhbHMucHVzaChvYmopO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGFwcHJvdmFsIHN0YXR1cyBmb3IgYSBzcGVjaWZpYyBzZWN0aW9uIGluIHRoZSBmb3JtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBzZWN0aW9uIGZvciB3aGljaCB0aGUgYXBwcm92YWwgc3RhdHVzIGlzIHJlcXVpcmVkLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGFwcHJvdmFsIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIHNlY3Rpb24uIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBzZWN0aW9uIGRvZXMgbm90IGV4aXN0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QXBwcm92YWxTdGF0dXMoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RhdHVzID0gJyc7XHJcbiAgICBpZiAodGhpcy5mb3JtLnNlY3Rpb25zW2luZGV4ICsgMV0pIHtcclxuICAgICAgc3RhdHVzID0gdGhpcy5zdGF0dXNDbGFzcyh0aGlzLmZvcm0uc2VjdGlvbnNbaW5kZXggKyAxXS5ib2R5LmRldGFpbHMuZGVjaXNpb24ua2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGFwcHJvdmFsIHN0YXR1cyBsYWJlbCBmcm9tIHRoZSBmb3JtIHNlY3Rpb24gYmFzZWQgb24gdGhlIGdpdmVuIGluZGV4LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBmb3JtIHNlY3Rpb24gZm9yIHdoaWNoIHRoZSBhcHByb3ZhbCBzdGF0dXMgbGFiZWwgd2lsbCBiZSByZXRyaWV2ZWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgYXBwcm92YWwgc3RhdHVzIGxhYmVsIHJldHJpZXZlZCBmcm9tIHRoZSBzcGVjaWZpZWQgZm9ybSBzZWN0aW9uLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0QXBwcm92YWxTdGF0dXNMYWJlbChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdGF0dXNMYWJlbCA9ICcnO1xyXG4gICAgaWYgKHRoaXMuZm9ybS5zZWN0aW9uc1tpbmRleCArIDFdKSB7XHJcbiAgICAgIHN0YXR1c0xhYmVsID0gdGhpcy5mb3JtLnNlY3Rpb25zW2luZGV4ICsgMV0uYm9keS5kZXRhaWxzLmRlY2lzaW9uLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXR1c0xhYmVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBVUkwgb2YgdGhlIHVzZXIncyBwb3J0cmFpdCBpbWFnZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZW1haWwuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW1haWwgLSBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciBmb3Igd2hvbSB0aGUgcG9ydHJhaXQgVVJMIGlzIHRvIGJlIHJldHJpZXZlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IC0gVGhlIFVSTCB1c2VkIHRvIGZldGNoIHRoZSB1c2VyJ3MgcG9ydHJhaXQgaW1hZ2UuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRJbWFnZVVybChlbWFpbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAnL2dyb3VwL2ktZ2F0ZS93bS1icG0vZm9ybXMvLS9wcm94eS9wb3J0cmFpdD9lbWFpbD0nICsgZW1haWw7XHJcbiAgfVxyXG5cclxuICBzaG93UHJldmlvdXNSZXF1ZXN0cygpIHtcclxuICAgIHRoaXMuc2lkZW5hdlNlcnZpY2UucHVibGlzaCgnb3BlbicsIFByZXZpb3VzUmVxdWVzdHNDb21wb25lbnQpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKGZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddID09PSAnTkVXJykge1xyXG4gIDxzZWN0aW9uXHJcbiAgICBjbGFzcz1cIm1haW4tc2lkZW5hdiBtYWluLXNpZGVuYXYtZnVsbCBtYi00XCJcclxuXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdGl0bGVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgdy0xMDBcIj5cclxuICAgICAgICA8IS0tIDxkcy1idXR0b24gaWNvbiBjbGFzcz1cInJvdGF0ZS1hcnJvd1wiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJnb0JhY2soKVwiICpuZ0lmPVwiIWlzSW5Nb2JpbGVBcHAoKSAmJiBzaG93QmFja1wiPlxyXG4gICAgICAgICAgIDxkcy1pY29uIGljb249XCJhcnJvdy1yaWdodFwiIGNsYXNzPVwiZnMtMTkgZmMtYmxhY2tcIj48L2RzLWljb24+XHJcbiAgICAgICAgIDwvZHMtYnV0dG9uPi0tPlxyXG5cclxuICAgICAgICA8IS0tICA8aDMgY2xhc3M9XCJmbGV4LWdyb3ctMFwiPlxyXG4gICAgICAgICAgICB7eyBmb3JtVGl0bGUgfX1cclxuICAgICAgICAgIDwvaDM+LS0+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJmcy0xNCBmcy1tZC0xMiBmdy1ub3JtYWwgZmMtZGFyay1ncmF5IG1iLTFcIj5cclxuICAgICAgICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ0hlbGxvJykgfX1cclxuICAgICAgICAgICAge3sgY29yZVNlcnZpY2UuZ2V0U2hvcnROYW1lKGZvcm0/LmhlYWRlcj8ucmVxdWVzdGVyTmFtZSkgfX0sIHt7IGkxOG4udHJhbnNsYXRlKCd3ZWxjb21lQmFjaycpIH19IVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPGgxIGNsYXNzPVwiZnMtMjYgZnMtbWQtMjAgZnctYm9sZCBmYy1ibGFjayBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAge3sgZm9ybVRpdGxlIH19XHJcbiAgICAgICAgICAgIEBpZiAoc2VydmljZUZhcS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiaW5mb1wiIGNsYXNzPVwiZnMtMjIgZmMtZGFyay1ncmF5IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9wZW5GYXEoKVwiPlxyXG4gICAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9oMT5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBnYXAtMiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgQGlmIChzZXJ2aWNlRmFxLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZHMtYnV0dG9uIHNpemU9XCJzbWFsbFwiIGljb24+XHJcbiAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTIyIGZjLWRhcmstZ3JheSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvcGVuRmFxKClcIj5cclxuICAgICAgICAgICAgICA8L2RzLWljb24+XHJcbiAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPCEtLSA8ZHMtYnV0dG9uIHNpemU9XCJzbWFsbFwiIGljb24gKGNsaWNrKT1cIm9wZW5Xb3JrZmxvdygpXCI+XHJcbiAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJiZWxsLTItb1wiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8L2RzLWJ1dHRvbj4gLS0+XHJcbiAgICAgICAgICBAaWYgKCFpc1JlYWRPbmx5KSB7XHJcbiAgICAgICAgICAgIDxkcy1idXR0b24gc2l6ZT1cInNtYWxsXCIgaWNvbiAoY2xpY2spPVwic2hvd1ByZXZpb3VzUmVxdWVzdHMoKVwiPlxyXG4gICAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJjbG9ja1wiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIj48L2RzLWljb24+XHJcbiAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPCEtLSAgPGhlYWRlciBjbGFzcz1cIm1iLTQgbXQtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWVuZCBnYXAtMlwiPlxyXG4gICAgICA8c2VjdGlvbj5cclxuICAgICAgICA8aDYgY2xhc3M9XCJmcy0xNCBmcy1tZC0xMiBmdy1ub3JtYWwgZmMtZGFyay1ncmF5IG1iLTBcIj5cclxuICAgICAgICAgIHt7IGkxOG4udHJhbnNsYXRlKCdIZWxsbycpIH19XHJcbiAgICAgICAgICB7eyBjb3JlU2VydmljZS5nZXRTaG9ydE5hbWUoZm9ybT8uaGVhZGVyPy5yZXF1ZXN0ZXJOYW1lKSB9fSwge3sgaTE4bi50cmFuc2xhdGUoJ3dlbGNvbWVCYWNrJykgfX0hXHJcbiAgICAgICAgPC9oNj5cclxuICAgICAgICA8aDEgY2xhc3M9XCJmcy0yNiBmcy1tZC0yMCBmdy1ib2xkIGZjLWJsYWNrIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxyXG4gICAgICAgICAge3sgZm9ybVRpdGxlIH19XHJcbiAgICAgICAgICBAaWYgKHNlcnZpY2VGYXEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJpbmZvXCIgY2xhc3M9XCJmcy0yMiBmYy1kYXJrLWdyYXkgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib3BlbkZhcSgpXCI+XHJcbiAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2gxPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L2hlYWRlcj4tLT5cclxufSBAZWxzZSB7XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJyZXF1ZXN0LW1haW4taW5mbyAge3tzdGF0dXNDbGFzcyhmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSl9fVwiPlxyXG4gICAgICA8c2VjdGlvbiBjbGFzcz1cInJlcXVlc3QtaW5mb1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0LWluZm8tLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjNhV1IwYUQwaU16QWlJR2hsYVdkb2REMGlNamtpSUhacFpYZENiM2c5SWpBZ01DQXpNQ0F5T1NJZ1ptbHNiRDBpYm05dVpTSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNEtQSEJoZEdnZ1pEMGlUVEkxTGpFZ01FZzBMamxETWk0eUlEQWdNQ0F5TGpJZ01DQTBMamxXTWpndU5rZ3lOUzR4UXpJM0xqZ2dNamd1TmlBek1DQXlOaTQwSURNd0lESXpMamRXTkM0NVF6TXdJREl1TWlBeU55NDRJREFnTWpVdU1TQXdXazB5SURRdU9VTXlJRE11TXlBekxqTWdNaUEwTGprZ01rZ3lOUzR4UXpJMkxqY2dNaUF5T0NBekxqTWdNamdnTkM0NVZqSXpMamRETWpnZ01qVXVNeUF5Tmk0M0lESTJMallnTWpVdU1TQXlOaTQyU0RKV05DNDVXazB4TVM0MUlEWXVNME0zTGpFZ05pNHpJRE11TlNBNUxqa2dNeTQxSURFMExqTkRNeTQxSURFNExqY2dOeTR4SURJeUxqTWdNVEV1TlNBeU1pNHpRekUxTGprZ01qSXVNeUF4T1M0MUlERTRMamNnTVRrdU5TQXhOQzR6UXpFNUxqVWdPUzQ1SURFMUxqa2dOaTR6SURFeExqVWdOaTR6V2sweE5TNHhJREU1UXpFMExqRWdNVGt1T0NBeE1pNDRJREl3TGpJZ01URXVOU0F5TUM0eVF6RXdMaklnTWpBdU1pQTRMamtnTVRrdU9DQTNMamtnTVRsRE9DNDNJREUzTGpjZ01UQWdNVGNnTVRFdU5TQXhOME14TXlBeE55QXhOQzQwSURFM0xqZ2dNVFV1TVNBeE9WcE5NVE11TVNBeE15NDBRekV6TGpFZ01UUXVNeUF4TWk0MElERTFJREV4TGpVZ01UVkRNVEF1TmlBeE5TQTVMamtnTVRRdU15QTVMamtnTVRNdU5FTTVMamtnTVRJdU5TQXhNQzQySURFeExqZ2dNVEV1TlNBeE1TNDRRekV5TGpRZ01URXVPQ0F4TXk0eElERXlMalVnTVRNdU1TQXhNeTQwV2sweE5TNHhJREV6TGpSRE1UVXVNU0F4TVM0MElERXpMalVnT1M0NElERXhMalVnT1M0NFF6a3VOU0E1TGpnZ055NDVJREV4TGpRZ055NDVJREV6TGpSRE55NDVJREUwTGpJZ09DNHlJREUxSURndU55QXhOUzQzUXpjdU9DQXhOaTR4SURjdU1TQXhOaTQ0SURZdU5TQXhOeTQyUXpVdU9DQXhOaTQySURVdU5TQXhOUzQxSURVdU5TQXhOQzR6UXpVdU5TQXhNU0E0TGpJZ09DNHpJREV4TGpVZ09DNHpRekUwTGpnZ09DNHpJREUzTGpVZ01URWdNVGN1TlNBeE5DNHpRekUzTGpVZ01UVXVOU0F4Tnk0eUlERTJMallnTVRZdU5TQXhOeTQyUXpFMUxqa2dNVFl1T0NBeE5TNHlJREUyTGpJZ01UUXVNeUF4TlM0M1F6RTBMamdnTVRVdU1TQXhOUzR4SURFMExqSWdNVFV1TVNBeE15NDBXazB5TVNBNUxqRkRNakVnT0M0MklESXhMalFnT0M0eElESXlJRGd1TVVneU5TNDFRekkySURndU1TQXlOaTQxSURndU5TQXlOaTQxSURrdU1VTXlOaTQxSURrdU5pQXlOaTR4SURFd0xqRWdNalV1TlNBeE1DNHhTREl5UXpJeExqUWdNVEF1TVNBeU1TQTVMallnTWpFZ09TNHhXazB5TVNBeE1pNDFRekl4SURFeUlESXhMalFnTVRFdU5TQXlNaUF4TVM0MVNESTFMalZETWpZZ01URXVOU0F5Tmk0MUlERXhMamtnTWpZdU5TQXhNaTQxUXpJMkxqVWdNVE1nTWpZdU1TQXhNeTQxSURJMUxqVWdNVE11TlVneU1rTXlNUzQwSURFekxqVWdNakVnTVRNdU1TQXlNU0F4TWk0MVdrMHlNU0F4TmtNeU1TQXhOUzQxSURJeExqUWdNVFVnTWpJZ01UVklNalV1TlVNeU5pQXhOU0F5Tmk0MUlERTFMalFnTWpZdU5TQXhOa015Tmk0MUlERTJMalVnTWpZdU1TQXhOeUF5TlM0MUlERTNTREl5UXpJeExqUWdNVGNnTWpFZ01UWXVOaUF5TVNBeE5scE5NalV1TlNBeU1DNDFTREl5UXpJeExqVWdNakF1TlNBeU1TQXlNQzR4SURJeElERTVMalZETWpFZ01UZ3VPU0F5TVM0MElERTRMalVnTWpJZ01UZ3VOVWd5TlM0MVF6STJJREU0TGpVZ01qWXVOU0F4T0M0NUlESTJMalVnTVRrdU5VTXlOaTQxSURJd0xqRWdNall1TVNBeU1DNDFJREkxTGpVZ01qQXVOVm9pSUdacGJHdzlJaU5HUmpNM05VVWlMejRLUEM5emRtYytDZz09XCIvPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJmcy0yMiBmcy1tZC0xNiBmYy1ibGFjayBmdy1tZWRpdW0gbWItMCBmbGV4LWdyb3ctMSBsaW5lLWhlaWdodC0xLTJcIj5cclxuICAgICAgICAgICAgICB7eyBmb3JtVGl0bGUgfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcmVxdWVzdC1pbmZvLS1zdGF0dXMtYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgIEBpZiAoIWlzTG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgPGRzLXN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKGZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddKX19XCIgY2xhc3M9XCJoZWFkZXItc3RhdHVzXCI+e3sgZm9ybT8uaGVhZGVyPy5zdGF0dXM/LlsndmFsdWUnXSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICA8IS0tIDxkcy1idXR0b25cclxuICAgICAgICAgICAgICAgICAqbmdJZj1cImZvcm0/LmluYm94SXRlbSAmJiAoZm9ybT8uaW5ib3hJdGVtPy5jYW5SZXF1ZXN0RmVlZGJhY2sgPT0ndHJ1ZSd8fCBmb3JtPy5pbmJveEl0ZW0/Lmhhc0ZlZWRiYWNrPT0ndHJ1ZScpXCJcclxuICAgICAgICAgICAgICAgICBzcXVhcmUgaWNvbiBzaXplPVwic21hbGxcIj5cclxuICAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiY2hhdC1vXCIgY2xhc3M9XCJmcy0yMCBmcy1tZC0xNyBmYy1jb3JhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgJmx0OyEmbmRhc2g7ICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmYy1ncmVlbic6ZmVlZEJhY2tJY29uID09ICdmZWVkYmFja1Jlc3BvbmRlZCcgLCAnZmMtcmVkJzogZmVlZEJhY2tJY29uID09ICdyZXNwb25kVG9GZWVkYmFjaycgLCAnZmMteWVsbG93JzogZmVlZEJhY2tJY29uID09ICd3YWl0aW5nRmVlZGJhY2snfVwiJm5kYXNoOyZndDtcclxuICAgICAgICAgICAgICAgICA8L2RzLWljb24+XHJcbiAgICAgICAgICAgICAgIDwvZHMtYnV0dG9uPi0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gaGlzdG9yeS0tPlxyXG4gICAgICAgICAgICAgIDxkcy1idXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybT8uY29tbWVudHNEcm9wPy5sZW5ndGggPiAwICYmICFpc0xvYWRpbmdcIiBzcXVhcmUgaWNvbiBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29tbWVudHNGb3JtQ2xpY2soKVwiIGNsYXNzPVwiaGFzLWNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiY2xvY2tcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTIwIGZzLW1kLTE3XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVlc3QtaW5mby0tZm9vdGVyXCI+XHJcbiAgICAgICAgICBAaWYgKCFpc0xvYWRpbmcpIHtcclxuICAgICAgICAgICAgPGRzLWF2YXRhclxyXG4gICAgICAgICAgICAgIGltYWdlPVwie3tmb3JtPy5oZWFkZXI/LnJlcXVlc3RlclBob3RvfX1cIiBzaXplPVwieHgtc21hbGxcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93VXNlckluZm8oKVwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIGZsZXgtZ3Jvdy0xIGdhcC0xIGdhcC1zbS0yIGxpbmUtaGVpZ2h0LTEgcmVxdWVzdC1pbmZvLS1oZWFkZXJfX2RldGFpbHNcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvYWRpbmctYmcgbG9hZGluZy13aWR0aCc6IGlzTG9hZGluZ31cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtMTIgZnctbWVkaXVtIGQtbm9uZSBkLXNtLWlubGluZS1ibG9ja1wiPnt7IGNvcmVTZXJ2aWNlLmdldFNob3J0TmFtZShmb3JtPy5oZWFkZXI/LlsncmVxdWVzdGVyTmFtZSddKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0yMFwiPiYjODIyNjs8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmctYmcgbG9hZGluZy13aWR0aCc6IGlzTG9hZGluZ31cIj4ge3sgZm9ybT8uaGVhZGVyPy5mb3JtSWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMjBcIiAqbmdJZj1cImNyZWF0aW9uRGF0ZVwiPiYjODIyNjs8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTJcIiBbbmdDbGFzc109XCJ7J2xvYWRpbmctYmcgbG9hZGluZy13aWR0aCc6IGlzTG9hZGluZ31cIj4ge3sgY3JlYXRpb25EYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8IS0tPG5nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTIgbXktMlwiPlxyXG4gICAgICA8ZHMtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJmb3JtPy5pbmJveEl0ZW0gJiYgIWZvcm0uc2VjdGlvbnNbZm9ybS5zZWN0aW9ucy5sZW5ndGggLTFdLmhlYWRlci5yZWFkT25seSAmJiAhaXNMb2FkaW5nXCJcclxuICAgICAgICBzcXVhcmVcclxuICAgICAgICBpY29uXHJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXHJcbiAgICAgICAgY2xhc3M9XCJpY29uLWJ0bi1zaGFkb3dcIj5cclxuICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydmYy1wdXJwbGUnIDogKGZsYWdQcmlvcml0eSA9PT0gJzAnIHx8ICBmbGFnUHJpb3JpdHkgPT09IG51bGwpLCdmYy15ZWxsb3cnIDogZmxhZ1ByaW9yaXR5ID09PSAnMScsJ2ZjLWdyZWVuJyA6IGZsYWdQcmlvcml0eSA9PT0gJzInLCdmYy1jb3JhbCcgOiBmbGFnUHJpb3JpdHkgPT09ICczJ31cIlxyXG4gICAgICAgICAgaWNvbj1cImZsYWctb1wiIGNsYXNzPVwiZnMtMjAgZnMtbWQtMTcgZmMtcHVycGxlXCI+XHJcbiAgICAgICAgPC9kcy1pY29uPlxyXG4gICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIHBhbmVsQ2xhc3M9XCJhY3Rpb24tbWVudVwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2V0RmxhZ1ByaW9yaXR5KCcwJylcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJmbGFnLW9cIiBjbGFzcz1cImZjLXB1cnBsZSBmcy0yMCBmcy1tZC0xN1wiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNldEZsYWdQcmlvcml0eSgnMScpXCI+XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwiZmxhZy1vXCIgY2xhc3M9XCJmYy15ZWxsb3cgZnMtMjAgZnMtbWQtMTdcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRGbGFnUHJpb3JpdHkoJzInKVwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZsYWctb1wiIGNsYXNzPVwiZmMtZ3JlZW4gZnMtMjAgZnMtbWQtMTdcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzZXRGbGFnUHJpb3JpdHkoJzMnKVwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImZsYWctb1wiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjAgZnMtbWQtMTdcIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcblxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJzZXJ2aWNlLWhlYWRlciBiYy13aGl0ZSBwLTMgcC1zbS00IHB5LTQgZ2FwLTMge3tzdGF0dXNDbGFzcyhmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSl9fVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlcnZpY2UtaGVhZGVyLWljb25cIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgc3JjPVwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTXpBaUlHaGxhV2RvZEQwaU1qa2lJSFpwWlhkQ2IzZzlJakFnTUNBek1DQXlPU0lnWm1sc2JEMGlibTl1WlNJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWo0S1BIQmhkR2dnWkQwaVRUSTFMakVnTUVnMExqbERNaTR5SURBZ01DQXlMaklnTUNBMExqbFdNamd1TmtneU5TNHhRekkzTGpnZ01qZ3VOaUF6TUNBeU5pNDBJRE13SURJekxqZFdOQzQ1UXpNd0lESXVNaUF5Tnk0NElEQWdNalV1TVNBd1drMHlJRFF1T1VNeUlETXVNeUF6TGpNZ01pQTBMamtnTWtneU5TNHhRekkyTGpjZ01pQXlPQ0F6TGpNZ01qZ2dOQzQ1VmpJekxqZERNamdnTWpVdU15QXlOaTQzSURJMkxqWWdNalV1TVNBeU5pNDJTREpXTkM0NVdrMHhNUzQxSURZdU0wTTNMakVnTmk0eklETXVOU0E1TGprZ015NDFJREUwTGpORE15NDFJREU0TGpjZ055NHhJREl5TGpNZ01URXVOU0F5TWk0elF6RTFMamtnTWpJdU15QXhPUzQxSURFNExqY2dNVGt1TlNBeE5DNHpRekU1TGpVZ09TNDVJREUxTGprZ05pNHpJREV4TGpVZ05pNHpXazB4TlM0eElERTVRekUwTGpFZ01Ua3VPQ0F4TWk0NElESXdMaklnTVRFdU5TQXlNQzR5UXpFd0xqSWdNakF1TWlBNExqa2dNVGt1T0NBM0xqa2dNVGxET0M0M0lERTNMamNnTVRBZ01UY2dNVEV1TlNBeE4wTXhNeUF4TnlBeE5DNDBJREUzTGpnZ01UVXVNU0F4T1ZwTk1UTXVNU0F4TXk0MFF6RXpMakVnTVRRdU15QXhNaTQwSURFMUlERXhMalVnTVRWRE1UQXVOaUF4TlNBNUxqa2dNVFF1TXlBNUxqa2dNVE11TkVNNUxqa2dNVEl1TlNBeE1DNDJJREV4TGpnZ01URXVOU0F4TVM0NFF6RXlMalFnTVRFdU9DQXhNeTR4SURFeUxqVWdNVE11TVNBeE15NDBXazB4TlM0eElERXpMalJETVRVdU1TQXhNUzQwSURFekxqVWdPUzQ0SURFeExqVWdPUzQ0UXprdU5TQTVMamdnTnk0NUlERXhMalFnTnk0NUlERXpMalJETnk0NUlERTBMaklnT0M0eUlERTFJRGd1TnlBeE5TNDNRemN1T0NBeE5pNHhJRGN1TVNBeE5pNDRJRFl1TlNBeE55NDJRelV1T0NBeE5pNDJJRFV1TlNBeE5TNDFJRFV1TlNBeE5DNHpRelV1TlNBeE1TQTRMaklnT0M0eklERXhMalVnT0M0elF6RTBMamdnT0M0eklERTNMalVnTVRFZ01UY3VOU0F4TkM0elF6RTNMalVnTVRVdU5TQXhOeTR5SURFMkxqWWdNVFl1TlNBeE55NDJRekUxTGprZ01UWXVPQ0F4TlM0eUlERTJMaklnTVRRdU15QXhOUzQzUXpFMExqZ2dNVFV1TVNBeE5TNHhJREUwTGpJZ01UVXVNU0F4TXk0MFdrMHlNU0E1TGpGRE1qRWdPQzQySURJeExqUWdPQzR4SURJeUlEZ3VNVWd5TlM0MVF6STJJRGd1TVNBeU5pNDFJRGd1TlNBeU5pNDFJRGt1TVVNeU5pNDFJRGt1TmlBeU5pNHhJREV3TGpFZ01qVXVOU0F4TUM0eFNESXlRekl4TGpRZ01UQXVNU0F5TVNBNUxqWWdNakVnT1M0eFdrMHlNU0F4TWk0MVF6SXhJREV5SURJeExqUWdNVEV1TlNBeU1pQXhNUzQxU0RJMUxqVkRNallnTVRFdU5TQXlOaTQxSURFeExqa2dNall1TlNBeE1pNDFRekkyTGpVZ01UTWdNall1TVNBeE15NDFJREkxTGpVZ01UTXVOVWd5TWtNeU1TNDBJREV6TGpVZ01qRWdNVE11TVNBeU1TQXhNaTQxV2sweU1TQXhOa015TVNBeE5TNDFJREl4TGpRZ01UVWdNaklnTVRWSU1qVXVOVU15TmlBeE5TQXlOaTQxSURFMUxqUWdNall1TlNBeE5rTXlOaTQxSURFMkxqVWdNall1TVNBeE55QXlOUzQxSURFM1NESXlRekl4TGpRZ01UY2dNakVnTVRZdU5pQXlNU0F4TmxwTk1qVXVOU0F5TUM0MVNESXlRekl4TGpVZ01qQXVOU0F5TVNBeU1DNHhJREl4SURFNUxqVkRNakVnTVRndU9TQXlNUzQwSURFNExqVWdNaklnTVRndU5VZ3lOUzQxUXpJMklERTRMalVnTWpZdU5TQXhPQzQ1SURJMkxqVWdNVGt1TlVNeU5pNDFJREl3TGpFZ01qWXVNU0F5TUM0MUlESTFMalVnTWpBdU5Wb2lJR1pwYkd3OUlpTkdSak0zTlVVaUx6NEtQQzl6ZG1jK0NnPT1cIi8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNtLXJvdyBhbGlnbi1pdGVtcy1zbS1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgIDxoMSBjbGFzcz1cImZzLTIwIGZzLW1kLTE2IGZ3LWJvbGQgZmMtYmxhY2sgaGVhZGVyLXRpdGxlIG0tMFwiPnt7IGZvcm1UaXRsZSB9fVxyXG4gICAgICAgICAgICBAaWYgKHNlcnZpY2VGYXEubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImZzLTIyIGZjLWRhcmstZ3JheSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvcGVuRmFxKClcIj5cclxuICAgICAgICAgICAgICA8L2RzLWljb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXVzZXIgZC1mbGV4IGFsaWduLWl0ZW1zLXNtLWNlbnRlciBnYXAtMiBtdC1zbS0xXCI+XHJcbiAgICAgICAgICAgIEBpZiAoIWlzTG9hZGluZykge1xyXG4gICAgICAgICAgICAgIDxkcy1hdmF0YXJcclxuICAgICAgICAgICAgICAgIGltYWdlPVwie3tmb3JtPy5oZWFkZXI/LnJlcXVlc3RlclBob3RvfX1cIiBzaXplPVwieHgtc21hbGxcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNob3dVc2VySW5mbygpXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cImZzLTEyIHRleHQtdHJ1bmNhdGUgZC1zbS1ibG9jayBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzaG93VXNlckluZm8oKVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsb2FkaW5nLWJnIGxvYWRpbmctd2lkdGgnOiBpc0xvYWRpbmd9XCI+e3sgY29yZVNlcnZpY2UuZ2V0U2hvcnROYW1lKGZvcm0/LmhlYWRlcj8ucmVxdWVzdGVyTmFtZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxtYXQtZGl2aWRlciBjbGFzcz1cImRpdmlkZXIgY2lyY2xlIG14LTIgZC1ub25lIGQtc20tYmxvY2tcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyXCIgW25nQ2xhc3NdPVwieydsb2FkaW5nLWJnIGxvYWRpbmctd2lkdGgnOiBpc0xvYWRpbmd9XCI+e3sgZm9ybT8uaGVhZGVyPy5mb3JtSWQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIEBpZiAoY3JlYXRpb25EYXRlKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwiZGl2aWRlciBjaXJjbGUgbXgtMiBkLW5vbmUgZC1zbS1ibG9ja1wiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNFwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZy1iZyBsb2FkaW5nLXdpZHRoJzogaXNMb2FkaW5nfVwiPnt7IGNyZWF0aW9uRGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYWN0aW9ucyBkLWZsZXggZmxleC1yb3cgZmxleC1zbS1jb2x1bW4ganVzdGlmeS1jb250ZW50LWJldHdlZW4ganVzdGlmeS1jb250ZW50LXNtLWNlbnRlciBnYXAtMiBtdC0yIG10LXNtLTBcIj5cclxuICAgICAgICAgIEBpZiAoIWlzTG9hZGluZykge1xyXG4gICAgICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICAgICAgc3RhdHVzPVwie3tzdGF0dXNDbGFzcyhmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSl9fVwiIGNsYXNzPVwiaGVhZGVyLXN0YXR1c1wiPnt7IGZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ3ZhbHVlJ10gfX1cclxuICAgICAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICZsdDshJm5kYXNoOyBmZWVkYmFjayZuZGFzaDsmZ3Q7XHJcbiAgICAgICAgICAgICZsdDshJm5kYXNoOyAgICAgICAgICAgICpuZ0lmPVwiZm9ybT8uaW5ib3hJdGVtICYmIChmb3JtPy5pbmJveEl0ZW0/LmNhblJlcXVlc3RGZWVkYmFjayA9PT0ndHJ1ZSd8fCBmb3JtPy5pbmJveEl0ZW0/Lmhhc0ZlZWRiYWNrPT09J3RydWUnKSAmJiAhaXNMb2FkaW5nXCImbmRhc2g7Jmd0O1xyXG4gICAgICAgICAgICAmbHQ7ISZuZGFzaDsgIDxkcy1idXR0b25cclxuICAgICAgICAgICAgICAgIHNxdWFyZSBpY29uIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJmZWVkYmFjaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvblxyXG4gICAgICAgICAgICAgICAgICBpY29uPVwiY2hhdC1vXCIgY2xhc3M9XCJmcy0yMCBmcy1tZC0xNyBmYy1jb3JhbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZmMtZ3JlZW4nOmZlZWRCYWNrSWNvbiA9PT0gJ2ZlZWRiYWNrUmVzcG9uZGVkJyAsICdmYy1yZWQnOiBmZWVkQmFja0ljb24gPT09ICdyZXNwb25kVG9GZWVkYmFjaycgLCAnZmMteWVsbG93JzogZmVlZEJhY2tJY29uID09PSAnd2FpdGluZ0ZlZWRiYWNrJ31cIj5cclxuICAgICAgICAgICAgICAgIDwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICA8L2RzLWJ1dHRvbj4mbmRhc2g7Jmd0O1xyXG4gICAgICAgICAgICA8ZHMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtPy5jb21tZW50c0Ryb3A/Lmxlbmd0aCA+IDAgJiYgIWlzTG9hZGluZ1wiIHNxdWFyZSBpY29uIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29tbWVudHNGb3JtQ2xpY2soKVwiIGNsYXNzPVwiaGFzLWNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgPGRzLWljb24gaWNvbj1cImNsb2NrXCIgY2xhc3M9XCJmYy1jb3JhbCBmcy0yMCBmcy1tZC0xN1wiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0FwcHJvdmFsSGlzdG9yeSkge1xyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZHMtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwid2hpdGVcIiBzaGFwZT1cInRleHRcIiBzcXVhcmUgc2l6ZT1cInNtYWxsXCIgW3NhdFBvcG92ZXJBbmNob3JdPVwid29ya2Zsb3dcIlxyXG4gICAgICAgICAgICAgICAgICAjd29ya2Zsb3dBbmNob3I9XCJzYXRQb3BvdmVyQW5jaG9yXCIgKGNsaWNrKT1cIndvcmtmbG93QW5jaG9yLnBvcG92ZXIub3BlbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwid29ya2Zsb3dcIiBjbGFzcz1cImZzLTI0XCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L3Nsb3Q+XHJcbiAgICAgICAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxzYXQtcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAjd29ya2Zsb3cgW2FuY2hvcl09XCJ3b3JrZmxvd0FuY2hvclwiIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImJlbG93XCJcclxuICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LXBvcG92ZXIgcC0zXCIgc3R5bGU9XCJtaW4td2lkdGg6IDMzMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkcy1hcHByb3ZhbHMgKm5nSWY9XCJhcHByb3ZhbEhpc3RvcnlcIiBjbGFzcz1cInBvcG92ZXItYXBwcm92YWxzXCIgYXBwcm92YWxzRGF0YT1cInt7YXBwcm92YWxzfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2RzLWFwcHJvdmFscz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NhdC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9oZWFkZXI+XHJcbiAgPC9uZy1jb250YWluZXI+LS0+XHJcbn1cclxuIl19