@uiapplib/ngx-ui-web-lib 0.0.7 → 0.0.8

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.
@@ -199,7 +199,7 @@ function WeeklyWorkSearchJournalComponent_div_1_Template(rf, ctx) { if (rf & 1)
199
199
  i0.ɵɵadvance(5);
200
200
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(6, 6, "work.search.journal.heading", ctx_r1.dynamicParam));
201
201
  i0.ɵɵadvance(2);
202
- i0.ɵɵproperty("ngIf", !ctx_r1.isWaitingWeekServed);
202
+ i0.ɵɵproperty("ngIf", ctx_r1.isMS() && !ctx_r1.isWaitingWeekServed);
203
203
  i0.ɵɵadvance(1);
204
204
  i0.ɵɵproperty("ngIf", ctx_r1.isMS() && ctx_r1.isWorkSearchWaived && ctx_r1.isWaitingWeekServed);
205
205
  i0.ɵɵadvance(1);
@@ -388,7 +388,7 @@ export class WeeklyWorkSearchJournalComponent extends BasePage {
388
388
  }
389
389
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WeeklyWorkSearchJournalComponent, [{
390
390
  type: Component,
391
- args: [{ selector: 'app-weekly-work-search-journal', template: "<div *ngIf=\"!isLoading && errorMsg\" class=\"ion-text-center ion-padding-top\" style=\"padding-top: 50px;\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"font-size: 60px; color: var(--ion-color-danger);\"></ion-icon>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(errorMsg)\"\r\n style=\"color: var(--ion-color-danger); font-size: larger;\" class=\"ion-text-center ion-padding\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"!isLoading && !errorMsg\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" offsetXl=\"1\">\r\n <h1 class=\"app-heading\">{{'work.search.journal.heading' | translate:dynamicParam }}</h1>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n <!-- There can be below combinations:\r\n 1. Waiting week is NOT served (With or without worksearch waived) - highest priority (Waiting week message)\r\n 2. Waiting week is served & Work search is waived - Worksearch waiver message\r\n 3. Waiting week is served and work search is NOT waived -->\r\n <div *ngIf=\"!isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row>\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{'no.work.search.required' | translate}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"isMS() && isWorkSearchWaived && isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row *ngIf=\"this.waiverReason\">\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{ this.waiverReason}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"(!isWorkSearchWaived || (!isMS() && isWorkSearchWaived)) && isWaitingWeekServed\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <br />\r\n <ion-row>\r\n <ion-col size=\"6\">\r\n <h1 *ngIf=\"isME()\" style=\"position: fixed; margin-top: -45px;\" class=\"heading\">\r\n {{'work.search.activities' | translate }}</h1>\r\n <app-work-search-counter [count]=\"journals.length\"\r\n [hiredRecordCount]=\"retrieveHiredRecordCount()\"\r\n [msg]=\"getWorkSearchMessage()\"></app-work-search-counter>\r\n </ion-col>\r\n <ion-col class=\"journal-text\" style=\"padding-top: 75px; padding-right: 0px;\" size=\"5\">\r\n <b>+ Add</b> activity\r\n </ion-col>\r\n <ion-col class=\"journal-button\" style=\"padding-top: 60px;\" size=\"1\">\r\n <ion-button style=\"padding: 0px 0px;\" fill=\"outline\" size=\"small\" (click)=\"add()\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n <div style=\"margin-bottom: 5px;\"></div>\r\n <section *ngIf=\"journals.length === 0\">\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-striped app-datatable\">\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"row-border\">\r\n <th style=\"height: 75px;\"></th>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n <p-table [value]=\"journals\" styleClass=\"p-datatable-striped app-datatable\" [loading]=\"isLoading\">\r\n <ng-template pTemplate=\"body\" let-record>\r\n <tr class=\"row-border\">\r\n <td>{{record.workSearchDate | date:'M/d/yyyy'}}</td>\r\n <td style=\"white-space: pre;\">{{record | formatWorksearchRecord}}</td>\r\n <td class=\"ion-text-right\">\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"edit(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'edit']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"delete(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'trash-alt']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ion-col>\r\n <ion-col size=\"12\" sizeXl=\"5\" offsetXl=\"1\" sizeLg=\"6\" style=\"text-align: center;\" *ngIf=\"!isMS()\">\r\n <h4 class=\"heading\">{{'work.search.journal.weekly.header' | translate}}</h4><br />\r\n <div>\r\n <div [innerHtml]=\"'work.search.journal.weekly.placeholder' | translate \"></div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <!-- <app-work-search-employer-ct *ngIf=\"showAddWsRecors && isCT()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ct> -->\r\n <app-work-search-employer-me *ngIf=\"showAddWsRecors && isME()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-me>\r\n <app-work-search-employer-ms *ngIf=\"showAddWsRecors && isMS()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ms>\r\n</div>", styles: ["ion-col{padding:12px}.row-border{background:#fff 0% 0% no-repeat padding-box;border:.5px solid #707070;border-bottom:.5px solid #707070;opacity:1}.journal-text,.journal-button{text-align:right}@media (min-width: 344px) and (max-width: 391px){.journal-text{padding-top:100px!important}.journal-button{padding-top:80px!important}}\n"] }]
391
+ args: [{ selector: 'app-weekly-work-search-journal', template: "<div *ngIf=\"!isLoading && errorMsg\" class=\"ion-text-center ion-padding-top\" style=\"padding-top: 50px;\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"font-size: 60px; color: var(--ion-color-danger);\"></ion-icon>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(errorMsg)\"\r\n style=\"color: var(--ion-color-danger); font-size: larger;\" class=\"ion-text-center ion-padding\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"!isLoading && !errorMsg\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" offsetXl=\"1\">\r\n <h1 class=\"app-heading\">{{'work.search.journal.heading' | translate:dynamicParam }}</h1>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n <!-- There can be below combinations:\r\n 1. Waiting week is NOT served (With or without worksearch waived) - highest priority (Waiting week message)\r\n 2. Waiting week is served & Work search is waived - Worksearch waiver message\r\n 3. Waiting week is served and work search is NOT waived -->\r\n <div *ngIf=\"isMS() && !isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row>\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{'no.work.search.required' | translate}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"isMS() && isWorkSearchWaived && isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row *ngIf=\"this.waiverReason\">\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{ this.waiverReason}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"(!isWorkSearchWaived || (!isMS() && isWorkSearchWaived)) && isWaitingWeekServed\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <br />\r\n <ion-row>\r\n <ion-col size=\"6\">\r\n <h1 *ngIf=\"isME()\" style=\"position: fixed; margin-top: -45px;\" class=\"heading\">\r\n {{'work.search.activities' | translate }}</h1>\r\n <app-work-search-counter [count]=\"journals.length\"\r\n [hiredRecordCount]=\"retrieveHiredRecordCount()\"\r\n [msg]=\"getWorkSearchMessage()\"></app-work-search-counter>\r\n </ion-col>\r\n <ion-col class=\"journal-text\" style=\"padding-top: 75px; padding-right: 0px;\" size=\"5\">\r\n <b>+ Add</b> activity\r\n </ion-col>\r\n <ion-col class=\"journal-button\" style=\"padding-top: 60px;\" size=\"1\">\r\n <ion-button style=\"padding: 0px 0px;\" fill=\"outline\" size=\"small\" (click)=\"add()\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n <div style=\"margin-bottom: 5px;\"></div>\r\n <section *ngIf=\"journals.length === 0\">\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-striped app-datatable\">\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"row-border\">\r\n <th style=\"height: 75px;\"></th>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n <p-table [value]=\"journals\" styleClass=\"p-datatable-striped app-datatable\" [loading]=\"isLoading\">\r\n <ng-template pTemplate=\"body\" let-record>\r\n <tr class=\"row-border\">\r\n <td>{{record.workSearchDate | date:'M/d/yyyy'}}</td>\r\n <td style=\"white-space: pre;\">{{record | formatWorksearchRecord}}</td>\r\n <td class=\"ion-text-right\">\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"edit(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'edit']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"delete(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'trash-alt']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ion-col>\r\n <ion-col size=\"12\" sizeXl=\"5\" offsetXl=\"1\" sizeLg=\"6\" style=\"text-align: center;\" *ngIf=\"!isMS()\">\r\n <h4 class=\"heading\">{{'work.search.journal.weekly.header' | translate}}</h4><br />\r\n <div>\r\n <div [innerHtml]=\"'work.search.journal.weekly.placeholder' | translate \"></div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <!-- <app-work-search-employer-ct *ngIf=\"showAddWsRecors && isCT()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ct> -->\r\n <app-work-search-employer-me *ngIf=\"showAddWsRecors && isME()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-me>\r\n <app-work-search-employer-ms *ngIf=\"showAddWsRecors && isMS()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ms>\r\n</div>", styles: ["ion-col{padding:12px}.row-border{background:#fff 0% 0% no-repeat padding-box;border:.5px solid #707070;border-bottom:.5px solid #707070;opacity:1}.journal-text,.journal-button{text-align:right}@media (min-width: 344px) and (max-width: 391px){.journal-text{padding-top:100px!important}.journal-button{padding-top:80px!important}}\n"] }]
392
392
  }], () => [{ type: i1.WorkSearchService }, { type: i2.UtilService }, { type: i3.AlertController }, { type: i4.ReviewService }, { type: i5.DomSanitizer }], null); })();
393
393
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeeklyWorkSearchJournalComponent, { className: "WeeklyWorkSearchJournalComponent", filePath: "lib\\components\\weekly-work-search-journal\\weekly-work-search-journal.component.ts", lineNumber: 16 }); })();
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LXdvcmstc2VhcmNoLWpvdXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS13b3JrLXNlYXJjaC1qb3VybmFsL3dlZWtseS13b3JrLXNlYXJjaC1qb3VybmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktd29yay1zZWFyY2gtam91cm5hbC93ZWVrbHktd29yay1zZWFyY2gtam91cm5hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNKaEQsOEJBQXVHO0lBQ25HLDhCQUEwRyxhQUFBO0lBRzlHLGlCQUFNOzs7SUFGRyxlQUF5RDtJQUF6RCx3R0FBeUQ7OztJQWdCOUQsMkJBQWtDLGtCQUFBLGNBQUEsaUJBQUEsV0FBQTtJQUtaLFlBQXlDOztJQUFBLGlCQUFPLEVBQUEsRUFBQSxFQUFBLEVBQUE7OztJQUR0RCxlQUF3QjtJQUF4Qix3REFBd0I7SUFDbEIsZUFBeUM7SUFBekMscUVBQXlDOzs7SUFPdkQsK0JBQW1DLGlCQUFBLFdBQUE7SUFHckIsWUFBc0I7SUFBQSxpQkFBTyxFQUFBLEVBQUE7OztJQURuQyxlQUF3QjtJQUF4Qix3REFBd0I7SUFDbEIsZUFBc0I7SUFBdEIseUNBQXNCOzs7SUFMNUMsMkJBQWlFLGtCQUFBO0lBRXpELHFHQUtVO0lBQ2QsaUJBQVcsRUFBQTs7O0lBTkcsZUFBdUI7SUFBdkIsMENBQXVCOzs7SUFnQmpCLDhCQUErRTtJQUMzRSxZQUF5Qzs7SUFB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QW1CLEdBQUcsQ0FBQyxFQUFHO2dCQUN4RSxPQUFPLDBGQUEwRixDQUFBO2FBQ2xHO2lCQUFNLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksbUJBQW1CLElBQUksQ0FBQyxFQUFDO2dCQUN2RSxPQUFPLHlDQUF5QyxDQUFBO2FBQ2pEO2lCQUFNLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxFQUFHO2dCQUN4RSxPQUFPLHdGQUF3RixDQUFBO2FBQ2hHO2lCQUFNLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksbUJBQW1CLElBQUksQ0FBQyxFQUFHO2dCQUN6RSxPQUFPLHVDQUF1QyxDQUFBO2FBQy9DO2lCQUFNLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixHQUFHLENBQUMsRUFBRTtnQkFDMUQsT0FBTyxtRUFBbUUsQ0FBQTthQUMzRTtpQkFDSTtnQkFDSCxPQUFPLDBCQUEwQixDQUFDO2FBQ25DO1NBQ0Y7SUFDSCxDQUFDO2lHQWxNUSxnQ0FBZ0M7b0VBQWhDLGdDQUFnQztZQ2Y3QyxpRkFJTSxxRUFBQTs7WUFKQSxxREFBNEI7WUFNNUIsZUFBNkI7WUFBN0Isc0RBQTZCOzs7aUZEU3RCLGdDQUFnQztjQUw1QyxTQUFTOzJCQUNFLGdDQUFnQzs7a0ZBSS9CLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcclxuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tYm8tbW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrU2VhcmNoUmVjb3JkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd29yay1zZWFyY2gtcmVjb3JkLXYyLW1vZGVsJztcclxuaW1wb3J0IHsgUmV2aWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlZWtseS1jZXJ0L3Jldmlldy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBXb3JrU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlZWtseS1jZXJ0L3dvcmstc2VhcmNoLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd2Vla2x5LXdvcmstc2VhcmNoLWpvdXJuYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWVrbHktd29yay1zZWFyY2gtam91cm5hbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3dlZWtseS13b3JrLXNlYXJjaC1qb3VybmFsLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2Vla2x5V29ya1NlYXJjaEpvdXJuYWxDb21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdHtcclxuIHB1YmxpYyBqb3VybmFscyA6IFdvcmtTZWFyY2hSZWNvcmRNb2RlbFtdID0gW107XHJcblxyXG4gIHB1YmxpYyBqb3VybmFsIDogV29ya1NlYXJjaFJlY29yZE1vZGVsO1xyXG5cclxuICBwdWJsaWMgc2hvd0FkZFdzUmVjb3JzID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBzYXREYXRlIDogRGF0ZTtcclxuICBwdWJsaWMgc3VuRGF0ZSA6IERhdGU7XHJcbiAgcHVibGljIHNhdERhdGVTdHJpbmc7XHJcbiAgcHVibGljIHN1bkRhdGVTdHJpbmc7XHJcbiAgcHVibGljIGlzTG9hZGluZyA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZHluYW1pY1BhcmFtIDogYW55O1xyXG4gIHB1YmxpYyBlcnJvck1zZyA6IHN0cmluZztcclxuICBwdWJsaWMgd2FpdmVyUmVhc29uOiBzdHJpbmc7XHJcbiAgcHVibGljIGlzV29ya1NlYXJjaFdhaXZlZCA6IGJvb2xlYW47XHJcbiAgcHVibGljIGlzV2FpdGluZ1dlZWtTZXJ2ZWQgOiBib29sZWFuO1xyXG4gIGNvbXBTdGF0ZSA6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGN1cnJlbnRTdGF0ZTogc3RyaW5nID0gdGhpcy51dGlsLmdldFN0YXRlKCk7XHJcbiAgcHVibGljIG9mZlNldFZhbHVlOiBudW1iZXJcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHdzcyA6IFdvcmtTZWFyY2hTZXJ2aWNlLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsIHB1YmxpYyBhYzogQWxlcnRDb250cm9sbGVyLCBwcml2YXRlIHJzIDogUmV2aWV3U2VydmljZSwgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IFxyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5jdXJyZW50U3RhdGUgPT09ICdNUycpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMub2ZmU2V0VmFsdWU9NFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMub2ZmU2V0VmFsdWU9MVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcFN0YXRlID0gdGhpcy51dGlsLmdldFN0YXRlTG93ZXJjYXNlKCk7XHJcbiAgICB0aGlzLmZldGNoSm91cm5hbHMoKTtcclxuICB9XHJcblxyXG4gIGZldGNoSm91cm5hbHMoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLndzcy5mZXRjaFdvcmtTZWFyY2hKb3VybmFscygpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnN1bkRhdGUgPSB0aGlzLmdldEVudGVyZWREYXRlKHJlcy5taW5Xb3JrU2VhcmNoRGF0ZVN0cmluZyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zYXREYXRlID0gdGhpcy5nZXRFbnRlcmVkRGF0ZShyZXMubWF4V29ya1NlYXJjaERhdGVTdHJpbmcpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2F0RGF0ZVN0cmluZyA9IHJlcy5tYXhXb3JrU2VhcmNoRGF0ZVN0cmluZztcclxuICAgICAgICAgICAgICB0aGlzLnN1bkRhdGVTdHJpbmcgPSByZXMubWluV29ya1NlYXJjaERhdGVTdHJpbmc7XHJcbiAgICAgICAgICAgICAgdGhpcy5qb3VybmFscyA9IHJlcy53b3JrU2VhcmNoUmVjb3JkcztcclxuICAgICAgICAgICAgICB0aGlzLmlzV29ya1NlYXJjaFdhaXZlZCA9IHJlcy5pc1dvcmtTZWFyY2hXYWl2ZWQ7XHJcbiAgICAgICAgICAgICAgdGhpcy53YWl2ZXJSZWFzb24gPSByZXMud2FpdmVyUmVhc29uO1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNXYWl0aW5nV2Vla1NlcnZlZCA9IHJlcy5pc1dhaXRpbmdXZWVrU2VydmVkO1xyXG4gICAgICAgICAgICAgIHRoaXMuZHluYW1pY1BhcmFtID0ge1xyXG4gICAgICAgICAgICAgICAgJ3NhdHVyZGF5X2RhdGUnOiB0aGlzLnNhdERhdGVTdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAnc3VuZGF5X2RhdGUnOiB0aGlzLnN1bkRhdGVTdHJpbmcsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmVycm9yTXNnID0gZXJyLm1zZztcclxuICAgICAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFbnRlcmVkRGF0ZSh2YWx1ZSl7XHJcbiAgICB2YXIgZGF0ZUFycmF5ID0gdmFsdWUuc3BsaXQoXCIvXCIpO1xyXG4gICAgdmFyIGRkID0gcGFyc2VJbnQodGhpcy51dGlsLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsxXSkpO1xyXG4gICAgdmFyIE1NID0gcGFyc2VJbnQodGhpcy51dGlsLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVswXSkpIC0gMTtcclxuICAgIHZhciB5eXl5ID0gcGFyc2VJbnQodGhpcy51dGlsLnByZXBlZFplcm9JZlNpbmdsZURpZ2l0KGRhdGVBcnJheVsyXSkpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHl5eXksTU0sZGQpO1xyXG4gIH1cclxuXHJcbiBhZGQoKXtcclxuICAgIHRoaXMuam91cm5hbCA9IG51bGw7XHJcbiAgICB0aGlzLnNob3dBZGRXc1JlY29ycyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZVdzUmVjb3JkKCl7XHJcbiAgICB0aGlzLnNob3dBZGRXc1JlY29ycyA9IGZhbHNlO1xyXG4gICAgdGhpcy5qb3VybmFsID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGFkZFdzUmVjb3JkKGV2ZW50IDogV29ya1NlYXJjaFJlY29yZE1vZGVsKXtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMud3NzLnNhdmVXb3JrU2VhcmNoSm91cm5hbChldmVudClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93QWRkV3NSZWNvcnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmpvdXJuYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgIGlmKGV2ZW50LmNsYWltYW50V29ya1NlYXJjaEpvdXJuYWxJZCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcyhcIkFjdGl2aXR5IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LlwiKTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMudXRpbC5zdWNjZXNzKFwiQWN0aXZpdHkgc2F2ZWQgc3VjY2Vzc2Z1bGx5LlwiKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5mZXRjaEpvdXJuYWxzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5ycy5zZXRSZXZpZXdBcHAodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93QWRkV3NSZWNvcnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLmpvdXJuYWwgPSBudWxsO1xyXG4gICAgICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIGVkaXQod3NSZWNvcmQgOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWwpe1xyXG4gICAgdGhpcy5qb3VybmFsID0gd3NSZWNvcmQ7XHJcbiAgICB0aGlzLnNob3dBZGRXc1JlY29ycyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICByZXRyaWV2ZUhpcmVkUmVjb3JkQ291bnQgKCkgOiBudW1iZXIge1xyXG4gICAgLy9pdGVyYXRlIGpvdXJuYWxcclxuICAgICAgbGV0IGhpcmVkUmVjb3JkQ291bnQgPSAwO1xyXG4gICAgICBmb3IobGV0IGk9MDsgaSA8IHRoaXMuam91cm5hbHMubGVuZ3RoOyBpKyspXHJcbiAgICAgIHtcclxuICAgICAgICBpZih0aGlzLmpvdXJuYWxzW2ldLnNlYXJjaFJlc3VsdCA9PT0gXCJISVJFXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGlyZWRSZWNvcmRDb3VudCs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBoaXJlZFJlY29yZENvdW50O1xyXG4gIH1cclxuXHJcbiAgcmV0cmlldmVKb2FwQ291bnQgKCkgOiBudW1iZXIge1xyXG4gICAgbGV0IGpvYXBDb3VudCA9MDtcclxuICAgIGZvcihsZXQgaT0wOyBpIDwgdGhpcy5qb3VybmFscy5sZW5ndGg7IGkrKylcclxuICAgIHtcclxuICAgICAgaWYodGhpcy5qb3VybmFsc1tpXS5hY3Rpdml0eVR5cGUgPT09IFwiSk9BUFwiKVxyXG4gICAgICB7XHJcbiAgICAgICAgam9hcENvdW50Kys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBqb2FwQ291bnQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGUod3NSZWNvcmQgOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWwpe1xyXG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFjLmNyZWF0ZSh7XHJcbiAgICAgIGhlYWRlcjogJ0NvbmZpcm0hJyxcclxuICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBlbnRyeT8nLFxyXG4gICAgICBidXR0b25zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dDogJ0NhbmNlbCcsXHJcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcclxuICAgICAgICAgIGNzc0NsYXNzOiAncHJpbWFyeScsXHJcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fVxyXG4gICAgICAgIH0sIHtcclxuICAgICAgICAgIHRleHQ6ICdPa2F5JyxcclxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy53c3MuZGVsZXRlV29ya1NlYXJjaEpvdXJuYWwod3NSZWNvcmQuY2xhaW1hbnRXb3JrU2VhcmNoSm91cm5hbElkKVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcyhcIlJlY29yZCBkZWxldGVkIHN1Y2Nlc3NmdWxseS5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hKb3VybmFscygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH0pO1xyXG5cclxuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcclxuICB9XHJcblxyXG4gICAgZ2V0V29ya1NlYXJjaE1lc3NhZ2UoKSB7XHJcbiAgICAgIGxldCBjb3VudCA9IHRoaXMuam91cm5hbHMubGVuZ3RoO1xyXG5cclxuICAgICAgLy9pdGVyYXRlIGpvdXJuYWxcclxuICAgICAgbGV0IGhpcmVkUmVjb3JkQ291bnQgPSB0aGlzLnJldHJpZXZlSGlyZWRSZWNvcmRDb3VudCgpO1xyXG5cclxuICAgICAgbGV0IGpvYXBBY3Rpdml0aWVzQ291bnQgPSB0aGlzLnJldHJpZXZlSm9hcENvdW50KCk7XHJcbiAgICAgIFxyXG4gICAgICBpZih0aGlzLnV0aWwuZ2V0U3RhdGVMb3dlcmNhc2UoKSA9PSAnbWUnKXtcclxuICAgICAgICBpZihjb3VudCA8IDEpe1xyXG4gICAgICAgICAgcmV0dXJuICdBdCBsZWFzdCBvbmUgYWN0aXZpdHkgcmVxdWlyZWQnXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAnTWluaW11bSByZXF1aXJlbWVudHMgbWV0JztcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmIChjb3VudCA8IDEpIHtcclxuICAgICAgICAgIHJldHVybiAnWW91IG5lZWQgdG8gYWRkIGF0IGxlYXN0IDMgYWN0aXZpdGllcyBmb3IgdGhlIHdlZWsuIDxiPk9uZSBtdXN0IGJlIEFwcGxpZWQgZm9yIHdvcmsuPC9iPidcclxuICAgICAgICB9IGVsc2UgaWYgKGNvdW50IDwgMiAmJiBoaXJlZFJlY29yZENvdW50IDwgMSAmJiBqb2FwQWN0aXZpdGllc0NvdW50IDwgMSApIHtcclxuICAgICAgICAgIHJldHVybiAnWW91IG5lZWQgMiBtb3JlIGFjdGl2aXRpZXMgZm9yIHRoZSB3ZWVrLCBhdCBsZWFzdCBvbmUgd2l0aCBhIGZpbGVkIGFwcGxpY2F0aW9uIG9yIHJlc3VtZSdcclxuICAgICAgICB9IGVsc2UgaWYgKGNvdW50IDwgMiAmJiBoaXJlZFJlY29yZENvdW50IDwgMSAmJiBqb2FwQWN0aXZpdGllc0NvdW50ID49IDEpe1xyXG4gICAgICAgICAgcmV0dXJuICdZb3UgbmVlZCAyIG1vcmUgYWN0aXZpdGllcyBmb3IgdGhlIHdlZWsnXHJcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudCA8IDMgJiYgaGlyZWRSZWNvcmRDb3VudCA8IDEgJiYgam9hcEFjdGl2aXRpZXNDb3VudCA8IDEgKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ1lvdSBuZWVkIDEgbW9yZSBhY3Rpdml0eSBmb3IgdGhlIHdlZWssIGF0IGxlYXN0IG9uZSB3aXRoIGEgZmlsZWQgYXBwbGljYXRpb24gb3IgcmVzdW1lJ1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY291bnQgPCAzICYmIGhpcmVkUmVjb3JkQ291bnQgPCAxICYmIGpvYXBBY3Rpdml0aWVzQ291bnQgPj0gMSApIHtcclxuICAgICAgICAgIHJldHVybiAnWW91IG5lZWQgMSBtb3JlIGFjdGl2aXR5IGZvciB0aGUgd2VlaydcclxuICAgICAgICB9IGVsc2UgaWYgKGhpcmVkUmVjb3JkQ291bnQgPCAxICYmIGpvYXBBY3Rpdml0aWVzQ291bnQgPCAxICl7XHJcbiAgICAgICAgICByZXR1cm4gJ1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBhY3Rpdml0eSB3aXRoIGEgZmlsZWQgYXBwbGljYXRpb24gb3IgcmVzdW1lJ1xyXG4gICAgICAgIH0gIFxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuICdNaW5pbXVtIHJlcXVpcmVtZW50cyBtZXQnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGVycm9yTXNnXCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtcIj5cclxuICAgIDxpb24taWNvbiBuYW1lPVwiYWxlcnQtY2lyY2xlLW91dGxpbmVcIiBzdHlsZT1cImZvbnQtc2l6ZTogNjBweDsgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpO1wiPjwvaW9uLWljb24+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yTXNnKVwiXHJcbiAgICAgICAgc3R5bGU9XCJjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7IGZvbnQtc2l6ZTogbGFyZ2VyO1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWVycm9yTXNnXCI+XHJcbiAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwiYXBwLWhlYWRpbmdcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLmhlYWRpbmcnIHwgdHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB9fTwvaDE+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L2lvbi1ncmlkPlxyXG4gICAgPCEtLSBUaGVyZSBjYW4gYmUgYmVsb3cgY29tYmluYXRpb25zOlxyXG4gICAgICAgMS4gV2FpdGluZyB3ZWVrIGlzIE5PVCBzZXJ2ZWQgKFdpdGggb3Igd2l0aG91dCB3b3Jrc2VhcmNoIHdhaXZlZCkgLSBoaWdoZXN0IHByaW9yaXR5IChXYWl0aW5nIHdlZWsgbWVzc2FnZSlcclxuICAgICAgIDIuIFdhaXRpbmcgd2VlayBpcyBzZXJ2ZWQgJiBXb3JrIHNlYXJjaCBpcyB3YWl2ZWQgLSBXb3Jrc2VhcmNoIHdhaXZlciBtZXNzYWdlXHJcbiAgICAgICAzLiBXYWl0aW5nIHdlZWsgaXMgc2VydmVkIGFuZCB3b3JrIHNlYXJjaCBpcyBOT1Qgd2FpdmVkICAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNXYWl0aW5nV2Vla1NlcnZlZFwiPlxyXG4gICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjVcIiBvZmZzZXRMZz1cIjNcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFhsPXt7b2ZmU2V0VmFsdWV9fSBvZmZzZXRNZD1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyduby53b3JrLnNlYXJjaC5yZXF1aXJlZCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpc01TKCkgJiYgaXNXb3JrU2VhcmNoV2FpdmVkICYmIGlzV2FpdGluZ1dlZWtTZXJ2ZWRcIj5cclxuICAgICAgICA8aW9uLWdyaWQgY2xhc3M9XCJpb24tcGFkZGluZy10b3BcIj5cclxuICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJ0aGlzLndhaXZlclJlYXNvblwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgaW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNVwiIG9mZnNldExnPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WGw9e3tvZmZTZXRWYWx1ZX19IG9mZnNldE1kPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRoaXMud2FpdmVyUmVhc29ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiKCFpc1dvcmtTZWFyY2hXYWl2ZWQgfHwgKCFpc01TKCkgJiYgaXNXb3JrU2VhcmNoV2FpdmVkKSkgJiYgaXNXYWl0aW5nV2Vla1NlcnZlZFwiPlxyXG4gICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNVwiIG9mZnNldExnPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WGw9e3tvZmZTZXRWYWx1ZX19IG9mZnNldE1kPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgxICpuZ0lmPVwiaXNNRSgpXCIgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IG1hcmdpbi10b3A6IC00NXB4O1wiIGNsYXNzPVwiaGVhZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J3dvcmsuc2VhcmNoLmFjdGl2aXRpZXMnIHwgdHJhbnNsYXRlIH19PC9oMT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtd29yay1zZWFyY2gtY291bnRlciBbY291bnRdPVwiam91cm5hbHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlyZWRSZWNvcmRDb3VudF09XCJyZXRyaWV2ZUhpcmVkUmVjb3JkQ291bnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21zZ109XCJnZXRXb3JrU2VhcmNoTWVzc2FnZSgpXCI+PC9hcHAtd29yay1zZWFyY2gtY291bnRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImpvdXJuYWwtdGV4dFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDc1cHg7IHBhZGRpbmctcmlnaHQ6IDBweDtcIiBzaXplPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+KyBBZGQ8L2I+IGFjdGl2aXR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJqb3VybmFsLWJ1dHRvblwiIHN0eWxlPVwicGFkZGluZy10b3A6IDYwcHg7XCIgc2l6ZT1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIHN0eWxlPVwicGFkZGluZzogMHB4IDBweDtcIiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJhZGQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYWwnLCAncGx1cyddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4O1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiam91cm5hbHMubGVuZ3RoID09PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJbe31dXCIgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWQgYXBwLWRhdGF0YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInJvdy1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwiaGVpZ2h0OiA3NXB4O1wiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImpvdXJuYWxzXCIgc3R5bGVDbGFzcz1cInAtZGF0YXRhYmxlLXN0cmlwZWQgYXBwLWRhdGF0YWJsZVwiIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1yZWNvcmQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJyb3ctYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cmVjb3JkLndvcmtTZWFyY2hEYXRlIHwgZGF0ZTonTS9kL3l5eXknfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmU7XCI+e3tyZWNvcmQgfCBmb3JtYXRXb3Jrc2VhcmNoUmVjb3JkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImVkaXQocmVjb3JkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywgJ2VkaXQnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiZGVsZXRlKHJlY29yZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhbCcsICd0cmFzaC1hbHQnXVwiIGNsYXNzPVwiYWN0aW9uLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgb2Zmc2V0WGw9XCIxXCIgc2l6ZUxnPVwiNlwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImhlYWRpbmdcIj57eyd3b3JrLnNlYXJjaC5qb3VybmFsLndlZWtseS5oZWFkZXInIHwgdHJhbnNsYXRlfX08L2g0PjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCInd29yay5zZWFyY2guam91cm5hbC53ZWVrbHkucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlIFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8YXBwLXdvcmstc2VhcmNoLWVtcGxveWVyLWN0ICpuZ0lmPVwic2hvd0FkZFdzUmVjb3JzICYmIGlzQ1QoKVwiIChzdWNjZXNzKT1cImFkZFdzUmVjb3JkKCRldmVudClcIlxyXG4gICAgICAgIChvbkNsb3NlKT1cImNsb3NlV3NSZWNvcmQoKVwiIFtqb3VybmFsXT1cInRydWVcIiBbc3VuRGF0ZV09XCJzdW5EYXRlXCIgW3NhdERhdGVdPVwic2F0RGF0ZVwiXHJcbiAgICAgICAgW3NhdERhdGVTdHJpbmddPVwic2F0RGF0ZVN0cmluZ1wiIFtzdW5EYXRlU3RyaW5nXT1cInN1bkRhdGVTdHJpbmdcIiBbZGF0YV09XCJqb3VybmFsXCI+PC9hcHAtd29yay1zZWFyY2gtZW1wbG95ZXItY3Q+IC0tPlxyXG4gICAgPGFwcC13b3JrLXNlYXJjaC1lbXBsb3llci1tZSAqbmdJZj1cInNob3dBZGRXc1JlY29ycyAmJiBpc01FKClcIiAoc3VjY2Vzcyk9XCJhZGRXc1JlY29yZCgkZXZlbnQpXCJcclxuICAgICAgICAob25DbG9zZSk9XCJjbG9zZVdzUmVjb3JkKClcIiBbam91cm5hbF09XCJ0cnVlXCIgW3N1bkRhdGVdPVwic3VuRGF0ZVwiIFtzYXREYXRlXT1cInNhdERhdGVcIlxyXG4gICAgICAgIFtzYXREYXRlU3RyaW5nXT1cInNhdERhdGVTdHJpbmdcIiBbc3VuRGF0ZVN0cmluZ109XCJzdW5EYXRlU3RyaW5nXCIgW2RhdGFdPVwiam91cm5hbFwiPjwvYXBwLXdvcmstc2VhcmNoLWVtcGxveWVyLW1lPlxyXG4gICAgPGFwcC13b3JrLXNlYXJjaC1lbXBsb3llci1tcyAqbmdJZj1cInNob3dBZGRXc1JlY29ycyAmJiBpc01TKClcIiAoc3VjY2Vzcyk9XCJhZGRXc1JlY29yZCgkZXZlbnQpXCJcclxuICAgICAgICAob25DbG9zZSk9XCJjbG9zZVdzUmVjb3JkKClcIiBbam91cm5hbF09XCJ0cnVlXCIgW3N1bkRhdGVdPVwic3VuRGF0ZVwiIFtzYXREYXRlXT1cInNhdERhdGVcIlxyXG4gICAgICAgIFtzYXREYXRlU3RyaW5nXT1cInNhdERhdGVTdHJpbmdcIiBbc3VuRGF0ZVN0cmluZ109XCJzdW5EYXRlU3RyaW5nXCIgW2RhdGFdPVwiam91cm5hbFwiPjwvYXBwLXdvcmstc2VhcmNoLWVtcGxveWVyLW1zPlxyXG48L2Rpdj4iXX0=
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LXdvcmstc2VhcmNoLWpvdXJuYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS13b3JrLXNlYXJjaC1qb3VybmFsL3dlZWtseS13b3JrLXNlYXJjaC1qb3VybmFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktd29yay1zZWFyY2gtam91cm5hbC93ZWVrbHktd29yay1zZWFyY2gtam91cm5hbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNKaEQsOEJBQXVHO0lBQ25HLDhCQUEwRyxhQUFBO0lBRzlHLGlCQUFNOzs7SUFGRyxlQUF5RDtJQUF6RCx3R0FBeUQ7OztJQWdCOUQsMkJBQTRDLGtCQUFBLGNBQUEsaUJBQUEsV0FBQTtJQUt0QixZQUF5Qzs7SUFBQSxpQkFBTyxFQUFBLEVBQUEsRUFBQSxFQUFBOzs7SUFEdEQsZUFBd0I7SUFBeEIsd0RBQXdCO0lBQ2xCLGVBQXlDO0lBQXpDLHFFQUF5Qzs7O0lBT3ZELCtCQUFtQyxpQkFBQSxXQUFBO0lBR3JCLFlBQXNCO0lBQUEsaUJBQU8sRUFBQSxFQUFBOzs7SUFEbkMsZUFBd0I7SUFBeEIsd0RBQXdCO0lBQ2xCLGVBQXNCO0lBQXRCLHlDQUFzQjs7O0lBTDVDLDJCQUFpRSxrQkFBQTtJQUV6RCxxR0FLVTtJQUNkLGlCQUFXLEVBQUE7OztJQU5HLGVBQXVCO0lBQXZCLDBDQUF1Qjs7O0lBZ0JqQiw4QkFBK0U7SUFDM0UsWUFBeUM7O0lB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QUFtQixHQUFHLENBQUMsRUFBRztnQkFDeEUsT0FBTywwRkFBMEYsQ0FBQTthQUNsRztpQkFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixJQUFJLENBQUMsRUFBQztnQkFDdkUsT0FBTyx5Q0FBeUMsQ0FBQTthQUNqRDtpQkFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixHQUFHLENBQUMsRUFBRztnQkFDeEUsT0FBTyx3RkFBd0YsQ0FBQTthQUNoRztpQkFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLG1CQUFtQixJQUFJLENBQUMsRUFBRztnQkFDekUsT0FBTyx1Q0FBdUMsQ0FBQTthQUMvQztpQkFBTSxJQUFJLGdCQUFnQixHQUFHLENBQUMsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLEVBQUU7Z0JBQzFELE9BQU8sbUVBQW1FLENBQUE7YUFDM0U7aUJBQ0k7Z0JBQ0gsT0FBTywwQkFBMEIsQ0FBQzthQUNuQztTQUNGO0lBQ0gsQ0FBQztpR0FsTVEsZ0NBQWdDO29FQUFoQyxnQ0FBZ0M7WUNmN0MsaUZBSU0scUVBQUE7O1lBSkEscURBQTRCO1lBTTVCLGVBQTZCO1lBQTdCLHNEQUE2Qjs7O2lGRFN0QixnQ0FBZ0M7Y0FMNUMsU0FBUzsyQkFDRSxnQ0FBZ0M7O2tGQUkvQixnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9CYXNlUGFnZSc7XHJcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbWJvLW1vZGVsJztcclxuaW1wb3J0IHsgV29ya1NlYXJjaFJlY29yZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dlZWtseS1jZXJ0L3dvcmstc2VhcmNoLXJlY29yZC12Mi1tb2RlbCc7XHJcbmltcG9ydCB7IFJldmlld1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWVrbHktY2VydC9yZXZpZXcuc2VydmljZSdcclxuaW1wb3J0IHsgV29ya1NlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWVrbHktY2VydC93b3JrLXNlYXJjaC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdlZWtseS13b3JrLXNlYXJjaC1qb3VybmFsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd2Vla2x5LXdvcmstc2VhcmNoLWpvdXJuYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi93ZWVrbHktd29yay1zZWFyY2gtam91cm5hbC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFdlZWtseVdvcmtTZWFyY2hKb3VybmFsQ29tcG9uZW50IGV4dGVuZHMgQmFzZVBhZ2UgaW1wbGVtZW50cyBPbkluaXR7XHJcbiBwdWJsaWMgam91cm5hbHMgOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWxbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgam91cm5hbCA6IFdvcmtTZWFyY2hSZWNvcmRNb2RlbDtcclxuXHJcbiAgcHVibGljIHNob3dBZGRXc1JlY29ycyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc2F0RGF0ZSA6IERhdGU7XHJcbiAgcHVibGljIHN1bkRhdGUgOiBEYXRlO1xyXG4gIHB1YmxpYyBzYXREYXRlU3RyaW5nO1xyXG4gIHB1YmxpYyBzdW5EYXRlU3RyaW5nO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmcgOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGR5bmFtaWNQYXJhbSA6IGFueTtcclxuICBwdWJsaWMgZXJyb3JNc2cgOiBzdHJpbmc7XHJcbiAgcHVibGljIHdhaXZlclJlYXNvbjogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc1dvcmtTZWFyY2hXYWl2ZWQgOiBib29sZWFuO1xyXG4gIHB1YmxpYyBpc1dhaXRpbmdXZWVrU2VydmVkIDogYm9vbGVhbjtcclxuICBjb21wU3RhdGUgOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50U3RhdGU6IHN0cmluZyA9IHRoaXMudXRpbC5nZXRTdGF0ZSgpO1xyXG4gIHB1YmxpYyBvZmZTZXRWYWx1ZTogbnVtYmVyXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB3c3MgOiBXb3JrU2VhcmNoU2VydmljZSwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgYWM6IEFsZXJ0Q29udHJvbGxlciwgcHJpdmF0ZSBycyA6IFJldmlld1NlcnZpY2UsIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyBcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKHRoaXMuY3VycmVudFN0YXRlID09PSAnTVMnKVxyXG4gICAge1xyXG4gICAgICB0aGlzLm9mZlNldFZhbHVlPTRcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm9mZlNldFZhbHVlPTFcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBTdGF0ZSA9IHRoaXMudXRpbC5nZXRTdGF0ZUxvd2VyY2FzZSgpO1xyXG4gICAgdGhpcy5mZXRjaEpvdXJuYWxzKCk7XHJcbiAgfVxyXG5cclxuICBmZXRjaEpvdXJuYWxzKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53c3MuZmV0Y2hXb3JrU2VhcmNoSm91cm5hbHMoKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdW5EYXRlID0gdGhpcy5nZXRFbnRlcmVkRGF0ZShyZXMubWluV29ya1NlYXJjaERhdGVTdHJpbmcpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2F0RGF0ZSA9IHRoaXMuZ2V0RW50ZXJlZERhdGUocmVzLm1heFdvcmtTZWFyY2hEYXRlU3RyaW5nKTtcclxuICAgICAgICAgICAgICB0aGlzLnNhdERhdGVTdHJpbmcgPSByZXMubWF4V29ya1NlYXJjaERhdGVTdHJpbmc7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdW5EYXRlU3RyaW5nID0gcmVzLm1pbldvcmtTZWFyY2hEYXRlU3RyaW5nO1xyXG4gICAgICAgICAgICAgIHRoaXMuam91cm5hbHMgPSByZXMud29ya1NlYXJjaFJlY29yZHM7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1dvcmtTZWFyY2hXYWl2ZWQgPSByZXMuaXNXb3JrU2VhcmNoV2FpdmVkO1xyXG4gICAgICAgICAgICAgIHRoaXMud2FpdmVyUmVhc29uID0gcmVzLndhaXZlclJlYXNvbjtcclxuICAgICAgICAgICAgICB0aGlzLmlzV2FpdGluZ1dlZWtTZXJ2ZWQgPSByZXMuaXNXYWl0aW5nV2Vla1NlcnZlZDtcclxuICAgICAgICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IHtcclxuICAgICAgICAgICAgICAgICdzYXR1cmRheV9kYXRlJzogdGhpcy5zYXREYXRlU3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgJ3N1bmRheV9kYXRlJzogdGhpcy5zdW5EYXRlU3RyaW5nLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1zZyA9IGVyci5tc2c7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW50ZXJlZERhdGUodmFsdWUpe1xyXG4gICAgdmFyIGRhdGVBcnJheSA9IHZhbHVlLnNwbGl0KFwiL1wiKTtcclxuICAgIHZhciBkZCA9IHBhcnNlSW50KHRoaXMudXRpbC5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMV0pKTtcclxuICAgIHZhciBNTSA9IHBhcnNlSW50KHRoaXMudXRpbC5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMF0pKSAtIDE7XHJcbiAgICB2YXIgeXl5eSA9IHBhcnNlSW50KHRoaXMudXRpbC5wcmVwZWRaZXJvSWZTaW5nbGVEaWdpdChkYXRlQXJyYXlbMl0pKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZSh5eXl5LE1NLGRkKTtcclxuICB9XHJcblxyXG4gYWRkKCl7XHJcbiAgICB0aGlzLmpvdXJuYWwgPSBudWxsO1xyXG4gICAgdGhpcy5zaG93QWRkV3NSZWNvcnMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VXc1JlY29yZCgpe1xyXG4gICAgdGhpcy5zaG93QWRkV3NSZWNvcnMgPSBmYWxzZTtcclxuICAgIHRoaXMuam91cm5hbCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBhZGRXc1JlY29yZChldmVudCA6IFdvcmtTZWFyY2hSZWNvcmRNb2RlbCl7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLndzcy5zYXZlV29ya1NlYXJjaEpvdXJuYWwoZXZlbnQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0FkZFdzUmVjb3JzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5qb3VybmFsID0gbnVsbDtcclxuICAgICAgICAgICAgICBpZihldmVudC5jbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsSWQpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy51dGlsLnN1Y2Nlc3MoXCJBY3Rpdml0eSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS5cIik7XHJcbiAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc3VjY2VzcyhcIkFjdGl2aXR5IHNhdmVkIHN1Y2Nlc3NmdWxseS5cIik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuZmV0Y2hKb3VybmFscygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucnMuc2V0UmV2aWV3QXBwKHRydWUpO1xyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0FkZFdzUmVjb3JzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5qb3VybmFsID0gbnVsbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBlZGl0KHdzUmVjb3JkIDogV29ya1NlYXJjaFJlY29yZE1vZGVsKXtcclxuICAgIHRoaXMuam91cm5hbCA9IHdzUmVjb3JkO1xyXG4gICAgdGhpcy5zaG93QWRkV3NSZWNvcnMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmV0cmlldmVIaXJlZFJlY29yZENvdW50ICgpIDogbnVtYmVyIHtcclxuICAgIC8vaXRlcmF0ZSBqb3VybmFsXHJcbiAgICAgIGxldCBoaXJlZFJlY29yZENvdW50ID0gMDtcclxuICAgICAgZm9yKGxldCBpPTA7IGkgPCB0aGlzLmpvdXJuYWxzLmxlbmd0aDsgaSsrKVxyXG4gICAgICB7XHJcbiAgICAgICAgaWYodGhpcy5qb3VybmFsc1tpXS5zZWFyY2hSZXN1bHQgPT09IFwiSElSRVwiKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhpcmVkUmVjb3JkQ291bnQrPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gaGlyZWRSZWNvcmRDb3VudDtcclxuICB9XHJcblxyXG4gIHJldHJpZXZlSm9hcENvdW50ICgpIDogbnVtYmVyIHtcclxuICAgIGxldCBqb2FwQ291bnQgPTA7XHJcbiAgICBmb3IobGV0IGk9MDsgaSA8IHRoaXMuam91cm5hbHMubGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgIGlmKHRoaXMuam91cm5hbHNbaV0uYWN0aXZpdHlUeXBlID09PSBcIkpPQVBcIilcclxuICAgICAge1xyXG4gICAgICAgIGpvYXBDb3VudCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gam9hcENvdW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlKHdzUmVjb3JkIDogV29ya1NlYXJjaFJlY29yZE1vZGVsKXtcclxuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hYy5jcmVhdGUoe1xyXG4gICAgICBoZWFkZXI6ICdDb25maXJtIScsXHJcbiAgICAgIG1lc3NhZ2U6ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZW50cnk/JyxcclxuICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXHJcbiAgICAgICAgICBjc3NDbGFzczogJ3ByaW1hcnknLFxyXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge31cclxuICAgICAgICB9LCB7XHJcbiAgICAgICAgICB0ZXh0OiAnT2theScsXHJcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud3NzLmRlbGV0ZVdvcmtTZWFyY2hKb3VybmFsKHdzUmVjb3JkLmNsYWltYW50V29ya1NlYXJjaEpvdXJuYWxJZClcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLnN1Y2Nlc3MoXCJSZWNvcmQgZGVsZXRlZCBzdWNjZXNzZnVsbHkuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoSm91cm5hbHMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9KTtcclxuXHJcbiAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XHJcbiAgfVxyXG5cclxuICAgIGdldFdvcmtTZWFyY2hNZXNzYWdlKCkge1xyXG4gICAgICBsZXQgY291bnQgPSB0aGlzLmpvdXJuYWxzLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vaXRlcmF0ZSBqb3VybmFsXHJcbiAgICAgIGxldCBoaXJlZFJlY29yZENvdW50ID0gdGhpcy5yZXRyaWV2ZUhpcmVkUmVjb3JkQ291bnQoKTtcclxuXHJcbiAgICAgIGxldCBqb2FwQWN0aXZpdGllc0NvdW50ID0gdGhpcy5yZXRyaWV2ZUpvYXBDb3VudCgpO1xyXG4gICAgICBcclxuICAgICAgaWYodGhpcy51dGlsLmdldFN0YXRlTG93ZXJjYXNlKCkgPT0gJ21lJyl7XHJcbiAgICAgICAgaWYoY291bnQgPCAxKXtcclxuICAgICAgICAgIHJldHVybiAnQXQgbGVhc3Qgb25lIGFjdGl2aXR5IHJlcXVpcmVkJ1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gJ01pbmltdW0gcmVxdWlyZW1lbnRzIG1ldCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZiAoY291bnQgPCAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ1lvdSBuZWVkIHRvIGFkZCBhdCBsZWFzdCAzIGFjdGl2aXRpZXMgZm9yIHRoZSB3ZWVrLiA8Yj5PbmUgbXVzdCBiZSBBcHBsaWVkIGZvciB3b3JrLjwvYj4nXHJcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudCA8IDIgJiYgaGlyZWRSZWNvcmRDb3VudCA8IDEgJiYgam9hcEFjdGl2aXRpZXNDb3VudCA8IDEgKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ1lvdSBuZWVkIDIgbW9yZSBhY3Rpdml0aWVzIGZvciB0aGUgd2VlaywgYXQgbGVhc3Qgb25lIHdpdGggYSBmaWxlZCBhcHBsaWNhdGlvbiBvciByZXN1bWUnXHJcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudCA8IDIgJiYgaGlyZWRSZWNvcmRDb3VudCA8IDEgJiYgam9hcEFjdGl2aXRpZXNDb3VudCA+PSAxKXtcclxuICAgICAgICAgIHJldHVybiAnWW91IG5lZWQgMiBtb3JlIGFjdGl2aXRpZXMgZm9yIHRoZSB3ZWVrJ1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY291bnQgPCAzICYmIGhpcmVkUmVjb3JkQ291bnQgPCAxICYmIGpvYXBBY3Rpdml0aWVzQ291bnQgPCAxICkge1xyXG4gICAgICAgICAgcmV0dXJuICdZb3UgbmVlZCAxIG1vcmUgYWN0aXZpdHkgZm9yIHRoZSB3ZWVrLCBhdCBsZWFzdCBvbmUgd2l0aCBhIGZpbGVkIGFwcGxpY2F0aW9uIG9yIHJlc3VtZSdcclxuICAgICAgICB9IGVsc2UgaWYgKGNvdW50IDwgMyAmJiBoaXJlZFJlY29yZENvdW50IDwgMSAmJiBqb2FwQWN0aXZpdGllc0NvdW50ID49IDEgKSB7XHJcbiAgICAgICAgICByZXR1cm4gJ1lvdSBuZWVkIDEgbW9yZSBhY3Rpdml0eSBmb3IgdGhlIHdlZWsnXHJcbiAgICAgICAgfSBlbHNlIGlmIChoaXJlZFJlY29yZENvdW50IDwgMSAmJiBqb2FwQWN0aXZpdGllc0NvdW50IDwgMSApe1xyXG4gICAgICAgICAgcmV0dXJuICdZb3UgbmVlZCBhdCBsZWFzdCBvbmUgYWN0aXZpdHkgd2l0aCBhIGZpbGVkIGFwcGxpY2F0aW9uIG9yIHJlc3VtZSdcclxuICAgICAgICB9ICBcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAnTWluaW11bSByZXF1aXJlbWVudHMgbWV0JztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBlcnJvck1zZ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGlvbi1wYWRkaW5nLXRvcFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7XCI+XHJcbiAgICA8aW9uLWljb24gbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJmb250LXNpemU6IDYwcHg7IGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj48L2lvbi1pY29uPlxyXG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvck1zZylcIlxyXG4gICAgICAgIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpOyBmb250LXNpemU6IGxhcmdlcjtcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZ1wiPjwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFlcnJvck1zZ1wiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBvZmZzZXRYbD1cIjFcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImFwcC1oZWFkaW5nXCI+e3snd29yay5zZWFyY2guam91cm5hbC5oZWFkaW5nJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgPC9pb24tZ3JpZD5cclxuICAgIDwhLS0gVGhlcmUgY2FuIGJlIGJlbG93IGNvbWJpbmF0aW9uczpcclxuICAgICAgIDEuIFdhaXRpbmcgd2VlayBpcyBOT1Qgc2VydmVkIChXaXRoIG9yIHdpdGhvdXQgd29ya3NlYXJjaCB3YWl2ZWQpIC0gaGlnaGVzdCBwcmlvcml0eSAoV2FpdGluZyB3ZWVrIG1lc3NhZ2UpXHJcbiAgICAgICAyLiBXYWl0aW5nIHdlZWsgaXMgc2VydmVkICYgV29yayBzZWFyY2ggaXMgd2FpdmVkIC0gV29ya3NlYXJjaCB3YWl2ZXIgbWVzc2FnZVxyXG4gICAgICAgMy4gV2FpdGluZyB3ZWVrIGlzIHNlcnZlZCBhbmQgd29yayBzZWFyY2ggaXMgTk9UIHdhaXZlZCAgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNNUygpICYmICFpc1dhaXRpbmdXZWVrU2VydmVkXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkIGNsYXNzPVwiaW9uLXBhZGRpbmctdG9wXCI+XHJcbiAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgaW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNVwiIG9mZnNldExnPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WGw9e3tvZmZTZXRWYWx1ZX19IG9mZnNldE1kPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J25vLndvcmsuc2VhcmNoLnJlcXVpcmVkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTVMoKSAmJiBpc1dvcmtTZWFyY2hXYWl2ZWQgJiYgaXNXYWl0aW5nV2Vla1NlcnZlZFwiPlxyXG4gICAgICAgIDxpb24tZ3JpZCBjbGFzcz1cImlvbi1wYWRkaW5nLXRvcFwiPlxyXG4gICAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cInRoaXMud2FpdmVyUmVhc29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWNvbCBpb24tY29sIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI1XCIgb2Zmc2V0TGc9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYbD17e29mZlNldFZhbHVlfX0gb2Zmc2V0TWQ9XCIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdGhpcy53YWl2ZXJSZWFzb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIoIWlzV29ya1NlYXJjaFdhaXZlZCB8fCAoIWlzTVMoKSAmJiBpc1dvcmtTZWFyY2hXYWl2ZWQpKSAmJiBpc1dhaXRpbmdXZWVrU2VydmVkXCI+XHJcbiAgICAgICAgPGlvbi1ncmlkPlxyXG4gICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI1XCIgb2Zmc2V0TGc9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYbD17e29mZlNldFZhbHVlfX0gb2Zmc2V0TWQ9XCIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCI2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgKm5nSWY9XCJpc01FKClcIiBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZDsgbWFyZ2luLXRvcDogLTQ1cHg7XCIgY2xhc3M9XCJoZWFkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snd29yay5zZWFyY2guYWN0aXZpdGllcycgfCB0cmFuc2xhdGUgfX08L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC13b3JrLXNlYXJjaC1jb3VudGVyIFtjb3VudF09XCJqb3VybmFscy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaXJlZFJlY29yZENvdW50XT1cInJldHJpZXZlSGlyZWRSZWNvcmRDb3VudCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXNnXT1cImdldFdvcmtTZWFyY2hNZXNzYWdlKClcIj48L2FwcC13b3JrLXNlYXJjaC1jb3VudGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiam91cm5hbC10ZXh0XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogNzVweDsgcGFkZGluZy1yaWdodDogMHB4O1wiIHNpemU9XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj4rIEFkZDwvYj4gYWN0aXZpdHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImpvdXJuYWwtYnV0dG9uXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogNjBweDtcIiBzaXplPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gc3R5bGU9XCJwYWRkaW5nOiAwcHggMHB4O1wiIGZpbGw9XCJvdXRsaW5lXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImFkZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhbCcsICdwbHVzJ11cIiBjbGFzcz1cImFjdGlvbi1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiA1cHg7XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJqb3VybmFscy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cIlt7fV1cIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZCBhcHAtZGF0YXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwicm93LWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJoZWlnaHQ6IDc1cHg7XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwiam91cm5hbHNcIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZCBhcHAtZGF0YXRhYmxlXCIgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJlY29yZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInJvdy1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tyZWNvcmQud29ya1NlYXJjaERhdGUgfCBkYXRlOidNL2QveXl5eSd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZTtcIj57e3JlY29yZCB8IGZvcm1hdFdvcmtzZWFyY2hSZWNvcmR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiZWRpdChyZWNvcmQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYWwnLCAnZWRpdCddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJkZWxldGUocmVjb3JkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFsJywgJ3RyYXNoLWFsdCddXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBvZmZzZXRYbD1cIjFcIiBzaXplTGc9XCI2XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCIgKm5nSWY9XCIhaXNNUygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiaGVhZGluZ1wiPnt7J3dvcmsuc2VhcmNoLmpvdXJuYWwud2Vla2x5LmhlYWRlcicgfCB0cmFuc2xhdGV9fTwvaDQ+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIid3b3JrLnNlYXJjaC5qb3VybmFsLndlZWtseS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGUgXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxhcHAtd29yay1zZWFyY2gtZW1wbG95ZXItY3QgKm5nSWY9XCJzaG93QWRkV3NSZWNvcnMgJiYgaXNDVCgpXCIgKHN1Y2Nlc3MpPVwiYWRkV3NSZWNvcmQoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQ2xvc2UpPVwiY2xvc2VXc1JlY29yZCgpXCIgW2pvdXJuYWxdPVwidHJ1ZVwiIFtzdW5EYXRlXT1cInN1bkRhdGVcIiBbc2F0RGF0ZV09XCJzYXREYXRlXCJcclxuICAgICAgICBbc2F0RGF0ZVN0cmluZ109XCJzYXREYXRlU3RyaW5nXCIgW3N1bkRhdGVTdHJpbmddPVwic3VuRGF0ZVN0cmluZ1wiIFtkYXRhXT1cImpvdXJuYWxcIj48L2FwcC13b3JrLXNlYXJjaC1lbXBsb3llci1jdD4gLS0+XHJcbiAgICA8YXBwLXdvcmstc2VhcmNoLWVtcGxveWVyLW1lICpuZ0lmPVwic2hvd0FkZFdzUmVjb3JzICYmIGlzTUUoKVwiIChzdWNjZXNzKT1cImFkZFdzUmVjb3JkKCRldmVudClcIlxyXG4gICAgICAgIChvbkNsb3NlKT1cImNsb3NlV3NSZWNvcmQoKVwiIFtqb3VybmFsXT1cInRydWVcIiBbc3VuRGF0ZV09XCJzdW5EYXRlXCIgW3NhdERhdGVdPVwic2F0RGF0ZVwiXHJcbiAgICAgICAgW3NhdERhdGVTdHJpbmddPVwic2F0RGF0ZVN0cmluZ1wiIFtzdW5EYXRlU3RyaW5nXT1cInN1bkRhdGVTdHJpbmdcIiBbZGF0YV09XCJqb3VybmFsXCI+PC9hcHAtd29yay1zZWFyY2gtZW1wbG95ZXItbWU+XHJcbiAgICA8YXBwLXdvcmstc2VhcmNoLWVtcGxveWVyLW1zICpuZ0lmPVwic2hvd0FkZFdzUmVjb3JzICYmIGlzTVMoKVwiIChzdWNjZXNzKT1cImFkZFdzUmVjb3JkKCRldmVudClcIlxyXG4gICAgICAgIChvbkNsb3NlKT1cImNsb3NlV3NSZWNvcmQoKVwiIFtqb3VybmFsXT1cInRydWVcIiBbc3VuRGF0ZV09XCJzdW5EYXRlXCIgW3NhdERhdGVdPVwic2F0RGF0ZVwiXHJcbiAgICAgICAgW3NhdERhdGVTdHJpbmddPVwic2F0RGF0ZVN0cmluZ1wiIFtzdW5EYXRlU3RyaW5nXT1cInN1bkRhdGVTdHJpbmdcIiBbZGF0YV09XCJqb3VybmFsXCI+PC9hcHAtd29yay1zZWFyY2gtZW1wbG95ZXItbXM+XHJcbjwvZGl2PiJdfQ==
@@ -50067,7 +50067,7 @@ function WeeklyWorkSearchJournalComponent_div_1_Template(rf, ctx) { if (rf & 1)
50067
50067
  i0.ɵɵadvance(5);
50068
50068
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(6, 6, "work.search.journal.heading", ctx_r1.dynamicParam));
50069
50069
  i0.ɵɵadvance(2);
50070
- i0.ɵɵproperty("ngIf", !ctx_r1.isWaitingWeekServed);
50070
+ i0.ɵɵproperty("ngIf", ctx_r1.isMS() && !ctx_r1.isWaitingWeekServed);
50071
50071
  i0.ɵɵadvance(1);
50072
50072
  i0.ɵɵproperty("ngIf", ctx_r1.isMS() && ctx_r1.isWorkSearchWaived && ctx_r1.isWaitingWeekServed);
50073
50073
  i0.ɵɵadvance(1);
@@ -50256,7 +50256,7 @@ class WeeklyWorkSearchJournalComponent extends BasePage {
50256
50256
  }
50257
50257
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WeeklyWorkSearchJournalComponent, [{
50258
50258
  type: Component,
50259
- args: [{ selector: 'app-weekly-work-search-journal', template: "<div *ngIf=\"!isLoading && errorMsg\" class=\"ion-text-center ion-padding-top\" style=\"padding-top: 50px;\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"font-size: 60px; color: var(--ion-color-danger);\"></ion-icon>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(errorMsg)\"\r\n style=\"color: var(--ion-color-danger); font-size: larger;\" class=\"ion-text-center ion-padding\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"!isLoading && !errorMsg\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" offsetXl=\"1\">\r\n <h1 class=\"app-heading\">{{'work.search.journal.heading' | translate:dynamicParam }}</h1>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n <!-- There can be below combinations:\r\n 1. Waiting week is NOT served (With or without worksearch waived) - highest priority (Waiting week message)\r\n 2. Waiting week is served & Work search is waived - Worksearch waiver message\r\n 3. Waiting week is served and work search is NOT waived -->\r\n <div *ngIf=\"!isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row>\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{'no.work.search.required' | translate}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"isMS() && isWorkSearchWaived && isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row *ngIf=\"this.waiverReason\">\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{ this.waiverReason}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"(!isWorkSearchWaived || (!isMS() && isWorkSearchWaived)) && isWaitingWeekServed\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <br />\r\n <ion-row>\r\n <ion-col size=\"6\">\r\n <h1 *ngIf=\"isME()\" style=\"position: fixed; margin-top: -45px;\" class=\"heading\">\r\n {{'work.search.activities' | translate }}</h1>\r\n <app-work-search-counter [count]=\"journals.length\"\r\n [hiredRecordCount]=\"retrieveHiredRecordCount()\"\r\n [msg]=\"getWorkSearchMessage()\"></app-work-search-counter>\r\n </ion-col>\r\n <ion-col class=\"journal-text\" style=\"padding-top: 75px; padding-right: 0px;\" size=\"5\">\r\n <b>+ Add</b> activity\r\n </ion-col>\r\n <ion-col class=\"journal-button\" style=\"padding-top: 60px;\" size=\"1\">\r\n <ion-button style=\"padding: 0px 0px;\" fill=\"outline\" size=\"small\" (click)=\"add()\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n <div style=\"margin-bottom: 5px;\"></div>\r\n <section *ngIf=\"journals.length === 0\">\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-striped app-datatable\">\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"row-border\">\r\n <th style=\"height: 75px;\"></th>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n <p-table [value]=\"journals\" styleClass=\"p-datatable-striped app-datatable\" [loading]=\"isLoading\">\r\n <ng-template pTemplate=\"body\" let-record>\r\n <tr class=\"row-border\">\r\n <td>{{record.workSearchDate | date:'M/d/yyyy'}}</td>\r\n <td style=\"white-space: pre;\">{{record | formatWorksearchRecord}}</td>\r\n <td class=\"ion-text-right\">\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"edit(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'edit']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"delete(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'trash-alt']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ion-col>\r\n <ion-col size=\"12\" sizeXl=\"5\" offsetXl=\"1\" sizeLg=\"6\" style=\"text-align: center;\" *ngIf=\"!isMS()\">\r\n <h4 class=\"heading\">{{'work.search.journal.weekly.header' | translate}}</h4><br />\r\n <div>\r\n <div [innerHtml]=\"'work.search.journal.weekly.placeholder' | translate \"></div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <!-- <app-work-search-employer-ct *ngIf=\"showAddWsRecors && isCT()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ct> -->\r\n <app-work-search-employer-me *ngIf=\"showAddWsRecors && isME()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-me>\r\n <app-work-search-employer-ms *ngIf=\"showAddWsRecors && isMS()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ms>\r\n</div>", styles: ["ion-col{padding:12px}.row-border{background:#fff 0% 0% no-repeat padding-box;border:.5px solid #707070;border-bottom:.5px solid #707070;opacity:1}.journal-text,.journal-button{text-align:right}@media (min-width: 344px) and (max-width: 391px){.journal-text{padding-top:100px!important}.journal-button{padding-top:80px!important}}\n"] }]
50259
+ args: [{ selector: 'app-weekly-work-search-journal', template: "<div *ngIf=\"!isLoading && errorMsg\" class=\"ion-text-center ion-padding-top\" style=\"padding-top: 50px;\">\r\n <ion-icon name=\"alert-circle-outline\" style=\"font-size: 60px; color: var(--ion-color-danger);\"></ion-icon>\r\n <div [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(errorMsg)\"\r\n style=\"color: var(--ion-color-danger); font-size: larger;\" class=\"ion-text-center ion-padding\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"!isLoading && !errorMsg\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" offsetXl=\"1\">\r\n <h1 class=\"app-heading\">{{'work.search.journal.heading' | translate:dynamicParam }}</h1>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n <!-- There can be below combinations:\r\n 1. Waiting week is NOT served (With or without worksearch waived) - highest priority (Waiting week message)\r\n 2. Waiting week is served & Work search is waived - Worksearch waiver message\r\n 3. Waiting week is served and work search is NOT waived -->\r\n <div *ngIf=\"isMS() && !isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row>\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{'no.work.search.required' | translate}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"isMS() && isWorkSearchWaived && isWaitingWeekServed\">\r\n <ion-grid class=\"ion-padding-top\">\r\n <ion-row *ngIf=\"this.waiverReason\">\r\n <ion-col ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <span>{{ this.waiverReason}}</span>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <div *ngIf=\"(!isWorkSearchWaived || (!isMS() && isWorkSearchWaived)) && isWaitingWeekServed\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col size=\"12\" sizeSm=\"12\" sizeXs=\"12\" sizeMd=\"10\" sizeLg=\"6\" sizeXl=\"5\" offsetLg=\"3\"\r\n offsetXl={{offSetValue}} offsetMd=\"1\">\r\n <br />\r\n <ion-row>\r\n <ion-col size=\"6\">\r\n <h1 *ngIf=\"isME()\" style=\"position: fixed; margin-top: -45px;\" class=\"heading\">\r\n {{'work.search.activities' | translate }}</h1>\r\n <app-work-search-counter [count]=\"journals.length\"\r\n [hiredRecordCount]=\"retrieveHiredRecordCount()\"\r\n [msg]=\"getWorkSearchMessage()\"></app-work-search-counter>\r\n </ion-col>\r\n <ion-col class=\"journal-text\" style=\"padding-top: 75px; padding-right: 0px;\" size=\"5\">\r\n <b>+ Add</b> activity\r\n </ion-col>\r\n <ion-col class=\"journal-button\" style=\"padding-top: 60px;\" size=\"1\">\r\n <ion-button style=\"padding: 0px 0px;\" fill=\"outline\" size=\"small\" (click)=\"add()\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'plus']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n <div style=\"margin-bottom: 5px;\"></div>\r\n <section *ngIf=\"journals.length === 0\">\r\n <p-table [value]=\"[{}]\" styleClass=\"p-datatable-striped app-datatable\">\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"row-border\">\r\n <th style=\"height: 75px;\"></th>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </section>\r\n <p-table [value]=\"journals\" styleClass=\"p-datatable-striped app-datatable\" [loading]=\"isLoading\">\r\n <ng-template pTemplate=\"body\" let-record>\r\n <tr class=\"row-border\">\r\n <td>{{record.workSearchDate | date:'M/d/yyyy'}}</td>\r\n <td style=\"white-space: pre;\">{{record | formatWorksearchRecord}}</td>\r\n <td class=\"ion-text-right\">\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"edit(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'edit']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n <ion-button fill=\"outline\" size=\"small\" (click)=\"delete(record)\"\r\n class=\"action-button\">\r\n <fa-icon [icon]=\"['fal', 'trash-alt']\" class=\"action-icon\"></fa-icon>\r\n </ion-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ion-col>\r\n <ion-col size=\"12\" sizeXl=\"5\" offsetXl=\"1\" sizeLg=\"6\" style=\"text-align: center;\" *ngIf=\"!isMS()\">\r\n <h4 class=\"heading\">{{'work.search.journal.weekly.header' | translate}}</h4><br />\r\n <div>\r\n <div [innerHtml]=\"'work.search.journal.weekly.placeholder' | translate \"></div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </div>\r\n <!-- <app-work-search-employer-ct *ngIf=\"showAddWsRecors && isCT()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ct> -->\r\n <app-work-search-employer-me *ngIf=\"showAddWsRecors && isME()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-me>\r\n <app-work-search-employer-ms *ngIf=\"showAddWsRecors && isMS()\" (success)=\"addWsRecord($event)\"\r\n (onClose)=\"closeWsRecord()\" [journal]=\"true\" [sunDate]=\"sunDate\" [satDate]=\"satDate\"\r\n [satDateString]=\"satDateString\" [sunDateString]=\"sunDateString\" [data]=\"journal\"></app-work-search-employer-ms>\r\n</div>", styles: ["ion-col{padding:12px}.row-border{background:#fff 0% 0% no-repeat padding-box;border:.5px solid #707070;border-bottom:.5px solid #707070;opacity:1}.journal-text,.journal-button{text-align:right}@media (min-width: 344px) and (max-width: 391px){.journal-text{padding-top:100px!important}.journal-button{padding-top:80px!important}}\n"] }]
50260
50260
  }], () => [{ type: WorkSearchService }, { type: UtilService }, { type: i4.AlertController }, { type: ReviewService }, { type: i6$1.DomSanitizer }], null); })();
50261
50261
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeeklyWorkSearchJournalComponent, { className: "WeeklyWorkSearchJournalComponent", filePath: "lib\\components\\weekly-work-search-journal\\weekly-work-search-journal.component.ts", lineNumber: 16 }); })();
50262
50262