tango-app-ui-analyse-trax 3.4.1-activitylog.4 → 3.4.1-activitylog.6

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.
@@ -322,7 +322,7 @@ export class ActivityLogV2Component {
322
322
  this.getActivityLogTableData();
323
323
  }
324
324
  viewAction(log) {
325
- let modalSize = log.action === 'updated' ? 'xl' : log.action === 'edited' ? 'lg' : 'md';
325
+ let modalSize = log.action === 'updated' || log.action === 'draft' ? 'xl' : log.action === 'edited' ? 'lg' : 'md';
326
326
  const modalRef = this.modalService.open(ViewActionComponent, {
327
327
  centered: true,
328
328
  size: modalSize,
@@ -462,10 +462,10 @@ export class ActivityLogV2Component {
462
462
  };
463
463
  }
464
464
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: i4.TraxService }, { token: i2.PageInfoService }, { token: i1.ActivatedRoute }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
465
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogV2Component, selector: "lib-activity-log-v2", ngImport: i0, template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Store Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.storeName\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action)\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action)\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value"], outputs: ["dateChange"] }] });
465
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogV2Component, selector: "lib-activity-log-v2", ngImport: i0, template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Store Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.storeName\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span *ngIf=\"['updated', 'edited', 'draft'].includes(log._source.action)\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value"], outputs: ["dateChange"] }] });
466
466
  }
467
467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, decorators: [{
468
468
  type: Component,
469
- args: [{ selector: 'lib-activity-log-v2', template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Store Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.storeName\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action)\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action)\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"] }]
469
+ args: [{ selector: 'lib-activity-log-v2', template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Store Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.storeName\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span *ngIf=\"['updated', 'edited', 'draft'].includes(log._source.action)\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"] }]
470
470
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: i4.TraxService }, { type: i2.PageInfoService }, { type: i1.ActivatedRoute }, { type: i5.NgbModal }] });
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nLXYyL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy12Mi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFnQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBSW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBSnJELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFNbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBVWxCLE1BQU0sT0FBTyxzQkFBc0I7SUFxRmI7SUFBK0I7SUFBc0I7SUFBK0I7SUFBMEM7SUFDeEk7SUFBa0M7SUFBa0M7SUFBdUM7SUFyRnJILEtBQUssR0FBRyxLQUFLLENBQUE7SUFDTCxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFlBQVksR0FBRyxFQUFFLENBQUE7SUFD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b3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVmlld0FjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHJlbGF0aXZlVGltZSBmcm9tICdkYXlqcy9wbHVnaW4vcmVsYXRpdmVUaW1lJztcclxuXHJcbmRheWpzLmV4dGVuZChyZWxhdGl2ZVRpbWUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWN0aXZpdHktbG9nLXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5TG9nVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTBcclxuICBjdXJyZW50UGFnZSA9IDFcclxuICB0b3RhbEl0ZW1zID0gMFxyXG4gIHBhZ2luYXRpb25TaXplczphbnlbXSA9IFtdO1xyXG4gIHBhZ2VTaXplID0gMTBcclxuICBzb3J0Q29sdW1OYW1lOiBzdHJpbmcgPSAnJztcclxuICBzb3J0Qnk6IGFueSA9ICcnO1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9ICcnO1xyXG4gIHNlYXJjaElucHV0OiBhbnkgPVwiXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhc2tMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0YXNrTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVjZWl2ZWREYXRhOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246ICdBY3Rpb25zJyxcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgeyB0ZXh0OiAnQ3JlYXRlZCBieScsIGlkOiAnY3JlYXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVcGRhdGVkIGJ5JywgaWQ6ICd1cGRhdGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1NhdmVkIGFzIERyYWZ0JywgaWQ6ICdkcmFmdCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdQdWJsaXNoZWQgYnknLCBpZDogJ3B1Ymxpc2hlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTdWJtaXR0ZWQgYnknLCBpZDogJ3N1Ym1pdCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTdGFydGVkIGJ5JywgaWQ6ICdzdGFydCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdBcHByb3ZlZCBieScsIGlkOiAnYXBwcm92ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnUmVkbyBDcmVhdGVkIGJ5JywgaWQ6ICdyZWRvJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1N1YnNlcXVlbnQgUmVkbyBDcmVhdGVkIGJ5JywgaWQ6ICdtdWx0aXJlZG8nIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnVGFzayBDcmVhdGVkIGJ5JywgaWQ6ICd0YXNrX2NyZWF0ZWQnIH0sXHJcbiAgICAgICAgLy8geyB0ZXh0OiAnUmUtT3BlbmVkIGJ5JywgaWQ6ICdyZW9wZW5lZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdFZGl0ZWQgYnknLCBpZDogJ2VkaXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVbnB1Ymxpc2hlZCBieScsIGlkOiAndW5wdWJsaXNoZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnRGVsZXRlZCBieScsIGlkOiAnZGVsZXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdEdXBsaWNhdGVkIGJ5JywgaWQ6ICdkdXBsaWNhdGVkJyB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246ICdDb3ZlcmFnZScsXHJcbiAgICAvLyAgIElzc3VlczogW1xyXG4gICAgLy8gICAgIHsgdGV4dDogJ0NoZWNrbGlzdCcsIGlkOiAnY2hlY2tsaXN0JyB9LFxyXG4gICAgICAgXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyB9LFxyXG4gIF07XHJcbiAgYWN0aXZpdHlMb2dUYWJsZURhdGE6IGFueVtdID0gW107XHJcbiAgdHlwZTogc3RyaW5nID0gJ2NoZWNrbGlzdCc7IFxyXG4gIGFjdGl2aXR5TG9nRmlsdGVyOiBhbnkgPSBbXTtcclxuICAvLyByZWxvYWREYXRlOiBzdHJpbmc7XHJcbiAgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnk7XHJcbiAgLy8gY292ZXJhZ2VUeXBlOiBhbnkgPSBbXTtcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgY2hlY2tsaXN0TmFtZTogYW55O1xyXG4gIGVkaXRSZXF1ZXN0RGF0YTogYW55O1xyXG4gIGlzQWN0aXZpdHlMb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnkgPSB7XHJcbiAgICBzdGFydERhdGU6IGRheWpzKCkuc3VidHJhY3QoNywgJ2RheXMnKSxcclxuICAgIGVuZERhdGU6IGRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlzXCIpLFxyXG4gIH07XHJcbiAgICBpc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IG0gPiB0aGlzLmRheWpzKCk7XHJcbiAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRlID8gXCJpbnZhbGlkLWRhdGVcIiA6IGZhbHNlO1xyXG4gICAgICB9O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50TmFtZTogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgLy8gZGF0ZTogbnVsbCxcclxuICAgIGRhdGU6IHtcclxuICAgICAgc3RhcnREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDcsIFwiZGF5c1wiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLFxyXG4gICAgICBlbmREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLFxyXG4gICAgfSxcclxuICAgIGdyb3VwOiBbXSxcclxuICAgIGxvY2F0aW9uOiBbXSxcclxuICB9O1xyXG5jb3VudDpudW1iZXIgPSAwO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgVHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICkge1xyXG4gICAgdGhpcy51c2VyRW1haWxlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiIClcclxuICAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IDEwO1xyXG4gICAgICAgIHRoaXMucGFnZVNpemUgPTEwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY291bnQrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0aGlzLmFwcGx5RmlsdGVycyhbeyBEZXNjcmlwdGlvbjogJ0NvdmVyYWdlJywgSXNzdWVzOiBbeyB0ZXh0OiB0aGlzLmNvdmVyYWdlVHlwZVswXSwgaWQ6IHRoaXMuY292ZXJhZ2VUeXBlWzBdLCBjaGVja2VkOiB0cnVlfV0gfV0pO1xyXG4gICAgXHJcbiAgICAgIFxyXG59KVxyXG59XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgLy8gdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIkRhc2hib2FyZFwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5pc0FjdGl2aXR5TG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSBVSSB1cGRhdGVcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy50YXNrTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLnNlbGVjdGVkRmlsdGVycz8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSwgICAgICAgICAgICAgICAgIFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgLTEsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgYWN0aW9uOiB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyLFxyXG4gICAgICB0eXBlOiB0aGlzLnJlY2VpdmVkRGF0YSxcclxuICAgICAgdXNlckVtYWlsZXM6dGhpcy51c2VyRW1haWxlc1xyXG4gICAgICAvLyBjaGVja0xpc3ROYW1lOnRoaXMuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgLy8gXCJjaGVja0xpc3ROYW1lXCI6IFwiZGFpbHkgc3RvcmUgY2hlY2tsaXN0MTExXCIsXHJcbiAgICAgIC8vIFwidHlwZVwiOiBcImNoZWNrbGlzdFwiLFxyXG4gICAgICAvLyBcImFjdGlvblwiOiBbXCJjcmVhdGVkXCJdLFxyXG4gICAgICAvLyBcImxpbWl0XCI6IDUsXHJcbiAgICAgIC8vIFwib2Zmc2V0XCI6IDAsXHJcbiAgICAgIC8vIFwic29ydEJ5XCI6IFwiXCIsXHJcbiAgICAgIC8vIFwic29ydENvbHVtbk5hbWVcIjogXCJcIixcclxuICAgICAgLy8gXCJzZWFyY2hWYWx1ZVwiOiBcIkRhaWx5IHN0b3JlIGNoZWNrbGlzdCBOZXdcIlxyXG4gIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5hY3Rpdml0eUxvZ0xpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ1RhYmxlRGF0YSA9IHJlc3BvbnNlLmRhdGEucmVzdWx0IHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzcG9uc2UuZGF0YS5jb3VudFxyXG4gICAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uU2l6ZXMoKVxyXG4gICAgICAgICAgdGhpcy50YXNrTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YXNrTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dUYWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGFza05vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dUYWJsZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW11cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zb3VyY2VDaGVja0xpc3RfaWQgPSBcIlwiO1xyXG4gIH1cclxuICAvLyByZW1vdmVRdWVyeVBhcmFtcygpIHtcclxuICAvLyAgIGNvbnN0IHVybFdpdGhvdXRQYXJhbXMgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKS5zcGxpdCgnPycpWzBdO1xyXG4gIC8vICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsV2l0aG91dFBhcmFtcyk7XHJcbiAgLy8gfVxyXG4gIHNldFBhZ2luYXRpb25TaXplcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPiAxMCkge1xyXG4gICAgICBpZih0aGlzLnBhZ2VTaXplID4gMTApe1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsSXRlbXM7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuICBcclxuICBvbkV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIHVzZXJFbWFpbGVzOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAwMDAsICAgICAgICAgICAgICAgICBcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgc29ydENvbHVtbk5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIGV4cG9ydDogdHJ1ZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyLFxyXG4gICAgICAvLyBjb3ZlcmFnZTogdGhpcy5jb3ZlcmFnZVR5cGUgfHwgW11cclxuICAgIH07XHJcbiAgICAgICAgdGhpcy5UcmF4U2VydmljZS5nZXRUYXNrVGFibGVEYXRhRXhwb3J0KHJlcXVlc3REYXRhKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5UcmF4U2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCAnVGFza1RhYmxlJyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgV3JvbmcuLicpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgIH0gIFxyXG4gIHNlYXJjaEZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oZWFkZXJEYXRhLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hJbnB1dDtcclxuICAgIHRoaXMuaGVhZGVyRGF0YS5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5wYWdlU2l6ZT0xMDtcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgIH1cclxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydENvbHVtTmFtZSA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgIH1cclxuICBcclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBwYXJzZUludChwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2VPZmZzZXRcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXJzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSAnQWN0aW9ucycpIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWwuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmRhdGFPYmplY3QuZm9yRWFjaCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgIGNhdGVnb3J5Lklzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgIC8vICAgICBpc3N1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgLy8gICB9KTtcclxuICAgICAgLy8gfSk7XHJcbiAgXHJcbiAgICAgIC8vIGNvbnN0IGFjdGlvbnNGaWx0ZXIgPSB0aGlzLmRhdGFPYmplY3QuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLkRlc2NyaXB0aW9uID09PSAnQWN0aW9ucycpO1xyXG4gICAgICAvLyB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gYWN0aW9uc0ZpbHRlciA/IGFjdGlvbnNGaWx0ZXIuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbC5pZCkgOiBbXTtcclxuICAgICAgdGhpcy5hY3Rpdml0eUxvZ0ZpbHRlciA9IFtdO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgc2VsZWN0UGxhbihzZWxlY3RlZFR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlID0gc2VsZWN0ZWRUeXBlOyAgXHJcbn1cclxuXHJcbi8vIG5hdmlnYXRlVG9UYXNrQ29uZmlnKHRhc2s6IGFueSk6IHZvaWQge1xyXG4vLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtYW5hZ2UvdHJheC90YXNrLWNvbmZpZ3VyZSddLCB7IHF1ZXJ5UGFyYW1zOiB7dGFza0lkOnRhc2suX2lkfSB9KVxyXG4vLyB9XHJcblxyXG4vLyBuYXZpZ2F0ZVRvVGFza0VkaXQodGFzazogYW55KTogdm9pZCB7XHJcbi8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21hbmFnZS90cmF4L2NyZWF0ZS10YXNrJ10sIHsgcXVlcnlQYXJhbXM6IHtpZDp0YXNrLl9pZH0gfSlcclxuLy8gfVxyXG5cclxuZGF0ZUZvcm1hdChkYXRlOmFueSkge1xyXG4gIHJldHVybiB0aGlzLmRheWpzLnV0YyhkYXRlKS5mb3JtYXQoJ0REIE1NTSBZWVlZJylcclxufVxyXG5TZWxlY3R0YWJzKHRhYjogc3RyaW5nKSB7XHJcbiAgdGhpcy5yZWNlaXZlZERhdGEgPSB0YWI7XHJcblxyXG4gIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IFxyXG4gIC8vICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGFiIH0sXHJcbiAgLy8gICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXHJcbiAgLy8gfSk7XHJcblxyXG4gIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxufVxyXG52aWV3QWN0aW9uKGxvZzogYW55KSB7XHJcbiAgbGV0IG1vZGFsU2l6ZSA9IGxvZy5hY3Rpb24gPT09ICd1cGRhdGVkJyA/ICd4bCcgOiBsb2cuYWN0aW9uID09PSAnZWRpdGVkJyA/ICdsZycgOiAnbWQnO1xyXG4gIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihWaWV3QWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgIHNpemU6IG1vZGFsU2l6ZSxcclxuICAgIHNjcm9sbGFibGU6IHRydWVcclxuICB9KTtcclxuICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5sb2dEZXRhaWxzID0gbG9nLmxvZ0RldGFpbHM7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2hlY2tMaXN0TmFtZSA9IGxvZy5jaGVja0xpc3ROYW1lO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlTmFtZSA9IGxvZy5zdG9yZU5hbWU7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYWN0aW9uVHlwZSA9IGxvZy5hY3Rpb247XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucmVjZWl2ZWREYXRhID0gdGhpcy5yZWNlaXZlZERhdGE7XHJcbiAgbW9kYWxSZWYucmVzdWx0XHJcbiAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgIH0pXHJcbn1cclxuXHJcblxyXG4gIGZvcm1hdERhdGVUaW1lKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAnLS0nO1xyXG4gIFxyXG4gICAgY29uc3QgZGF0ZSA9IGRheWpzLnV0YyhkYXRlU3RyaW5nKS5sb2NhbCgpO1xyXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcclxuICAgIFxyXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSAnJztcclxuICAgIFxyXG4gICAgaWYgKGRhdGUuaXNTYW1lKG5vdywgJ2RheScpKSB7XHJcbiAgICAgIGZvcm1hdHRlZERhdGUgPSAnVG9kYXknO1xyXG4gICAgfSBlbHNlIGlmIChkYXRlLmlzU2FtZShub3cuc3VidHJhY3QoMSwgJ2RheScpLCAnZGF5JykpIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9ICdZZXN0ZXJkYXknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9IGRhdGUuZm9ybWF0KCdNTU0gRCwgWVlZWScpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmV0dXJuIGAke2Zvcm1hdHRlZERhdGV9IDxicj4gJHtkYXRlLmZvcm1hdCgnaGggOiBtbSBBJyl9YDtcclxuICB9XHJcbiAgZ2V0QWN0aW9uQmFkZ2VDbGFzcyhhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25DbGFzc2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICBjcmVhdGVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIHVwZGF0ZWQ6ICdiYWRnZS1saWdodC1wcmltYXJ5MScsXHJcbiAgICAgIGRyYWZ0OiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIHB1Ymxpc2hlZDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgc3VibWl0OiAnYmFkZ2UtbGlnaHQtcHJpbWFyeTEnLFxyXG4gICAgICBzdGFydDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgYXBwcm92ZWQ6ICdiYWRnZS1saWdodC1zdWNjZXNzJyxcclxuICAgICAgcmVkbzogJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnLFxyXG4gICAgICBtdWx0aXJlZG86ICdiYWRnZS1saWdodC13YXJuaW5nJyxcclxuICAgICAgdGFza19jcmVhdGVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIGVkaXRlZDogJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnLFxyXG4gICAgICB1bnB1Ymxpc2hlZDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgZGVsZXRlZDogJ2JhZGdlLWxpZ2h0LWRlbGV0ZScsXHJcbiAgICAgIGR1cGxpY2F0ZWQ6ICdiYWRnZS1saWdodC1kZWZhdWx0JyxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbkNsYXNzZXNbYWN0aW9uXSB8fCAnYmFkZ2UtbGlnaHQtZGVmYXVsdCc7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25MYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIGNyZWF0ZWQ6ICdDcmVhdGVkIGJ5JyxcclxuICAgICAgdXBkYXRlZDogJ1VwZGF0ZWQgYnknLFxyXG4gICAgICBkcmFmdDogJ1NhdmVkIGFzIERyYWZ0JyxcclxuICAgICAgcHVibGlzaGVkOiAnUHVibGlzaGVkIGJ5JyxcclxuICAgICAgc3VibWl0OiAnU3VibWl0dGVkIGJ5JyxcclxuICAgICAgc3RhcnQ6ICdTdGFydGVkIGJ5JyxcclxuICAgICAgYXBwcm92ZWQ6ICdBcHByb3ZlZCBieScsXHJcbiAgICAgIHJlZG86ICdSZWRvIENyZWF0ZWQgYnknLFxyXG4gICAgICBtdWx0aXJlZG86ICdTdWJzZXF1ZW50IFJlZG8gQ3JlYXRlZCBieScsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogJ1Rhc2sgQ3JlYXRlZCBieScsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnUmUtb3BlbmVkIGJ5JyxcclxuICAgICAgZWRpdGVkOiAnRWRpdGVkIGJ5JyxcclxuICAgICAgdW5wdWJsaXNoZWQ6ICdVbnB1Ymxpc2hlZCBieScsXHJcbiAgICAgIGRlbGV0ZWQ6ICdEZWxldGVkIGJ5JyxcclxuICAgICAgZHVwbGljYXRlZDogJ0R1cGxpY2F0ZWQgYnknLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYWN0aW9uTGFiZWxzW2FjdGlvbl0gfHwgYWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgIG5hdmlnYXRlVG9HYWxsZXJ5KGxvZzogYW55KTogdm9pZCB7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gZGF5anMobG9nLmNyZWF0ZUF0KS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgICAgbGV0IGNoZWNrbGlzdFR5cGU6IHN0cmluZztcclxuICAgICAgaWYgKGxvZy5jaGVja0xpc3RUeXBlID09PSAnY3VzdG9tJykge1xyXG4gICAgICAgIGNoZWNrbGlzdFR5cGUgPSAnY3VzdG9tJztcclxuICAgICAgfSBlbHNlIGlmIChbJ3Rhc2snLCAnY2hlY2tsaXN0VGFzaycsICdjY3R2J10uaW5jbHVkZXMobG9nLnR5cGUpKSB7XHJcbiAgICAgICAgY2hlY2tsaXN0VHlwZSA9ICd0YXNrJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGVja2xpc3RUeXBlID0gbG9nLnR5cGUgfHwgJy0tJztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOmFueT0ge31cclxuICAgICAgaWYobG9nLnN0b3JlX2lkJiZsb2cuc3RvcmVfaWQhPScnKXtcclxuICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgICAgc3RvcmVJZDogbG9nLnN0b3JlX2lkLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogY2hlY2tsaXN0VHlwZSxcclxuICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgICAgdXNlckVtYWlsOiBsb2cudXNlckVtYWlsLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogY2hlY2tsaXN0VHlwZSxcclxuICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsb2cucmVkb1N0YXR1cykge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zLnJlZG9TdGF0dXMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2dhbGxlcnknXSwgeyBxdWVyeVBhcmFtcyB9KTtcclxuICAgIH0gXHJcblxyXG4gICAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBcclxuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnN0YXJ0RGF0ZSAmJiBldmVudC5lbmREYXRlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHsgXHJcbiAgICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSwgXHJcbiAgICAgICAgICBlbmREYXRlOiBldmVudC5lbmREYXRlIFxyXG4gICAgICAgIH07XHJcbiAgICBcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0geyBcclxuICAgICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gICAgICAgIC8vIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgIFxyXG4gICAgICAgIC8vIFJlc2V0IHRoZSBwaWNrZXIgdG8gZm9yY2UgcmUtcmVuZGVyXHJcbiAgICAgICAgdGhpcy5pc0FjdGl2aXR5TG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgLy8gfSwgMTApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENhbGwgQVBJXHJcbiAgICAgICAgdGhpcy5nZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG5cclxuICAgICAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgICAgIHRoaXMuaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBiZWZvcmUgeWVzdGVyZGF5XHJcbiAgICAgICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgJ2RheScpID8gJ2ludmFsaWQtZGF0ZScgOiBmYWxzZTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtdC00XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+QWN0aXZpdHkgTG9nIDwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIGZvb3RmYWxsc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgIG1zLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ2NoZWNrbGlzdCdcIiBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBteC0yIGxvZ3NlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHdpdGggU3RvcmUsIEVtYWlsLCBDaGVja2xpc3RcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAndGFzaydcIiBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBteC0yIGxvZ3NlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHdpdGggU3RvcmUsIEVtYWlsLCBUYXNrXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXVwLmVudGVyKT1cInNlYXJjaEZpZWxkKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZGF0ZXBpY2tlciBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1kYXRlLXJhbmdlLXBpY2tlciAoZGF0ZUNoYW5nZSk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBbdmFsdWVdPVwiY291bnRcIj48L2xpYi1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIGRhdGVwaWNrZXIgZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWF1dG8gbWItMiBteC00XCI+XHJcbiAgICAgICAgPHVsXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMtMnggIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZWxlY3R0YWJzKCdjaGVja2xpc3QnKVwiIFtyb3V0ZXJMaW5rXT1cIlsnL21hbmFnZS90cmF4L2FjdGlvbmNlbnRlciddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgdHlwZTogJ2NoZWNrbGlzdCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwicmVjZWl2ZWREYXRhID09PSAnY2hlY2tsaXN0Jz8nYnRuIGFjdGl2ZWJ0bic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIG5hdi1saW5rIG1lLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICBDaGVja2xpc3RcclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiU2VsZWN0dGFicygndGFzaycpXCIgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3RyYXgvYWN0aW9uY2VudGVyJ11cIiBbcXVlcnlQYXJhbXNdPVwieyB0eXBlOiAndGFzaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwicmVjZWl2ZWREYXRhID09PSAndGFzaycgfHwgcmVjZWl2ZWREYXRhID09PSAnR3JvdXAgRGV0YWlscyBWYWx1ZSc/ICdidG4gYWN0aXZlYnRuJzonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBtZS02XCI+VGFza1xyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPCEtLSA8bGliLXZpZXctYWN0aW9uIFtyZWNlaXZlZERhdGFdPVwicmVjZWl2ZWREYXRhXCI+PC9saWItdmlldy1hY3Rpb24+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiIGNsYXNzPVwidGFibGUgdGV4dC1ub3dyYXAgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2RhdGV0aW1lJylcIj5EYXRlICYgVGltZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXRldGltZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXRldGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnXCI+Q2hlY2tsaXN0IE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJ1wiPlRhc2sgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb24gUGVyZm9ybWVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlcmZvcm1lZCBieTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdG9yZSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbG9nIG9mIGFjdGl2aXR5TG9nVGFibGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIiBbaW5uZXJIVE1MXT1cImZvcm1hdERhdGVUaW1lKGxvZy5fc291cmNlLmNyZWF0ZUF0KVwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhKGxvZy5fc291cmNlLnR5cGUgPT09ICd0YXNrJyAmJiBsb2cuX3NvdXJjZS5mcm9tQ2hlY2tMaXN0TmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nLl9zb3VyY2UuY2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9nLl9zb3VyY2UudHlwZSA9PT0gJ3Rhc2snICYmIGxvZy5fc291cmNlLmZyb21DaGVja0xpc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZy5fc291cmNlLmNoZWNrTGlzdE5hbWUgfHwgJy0tJyB9fSA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS42NjU0IDcuNTAwMTZMNy40OTg3IDMuMzMzNU03LjQ5ODcgMy4zMzM1TDMuMzMyMDMgNy41MDAxNk03LjQ5ODcgMy4zMzM1VjEzLjMzMzVDNy40OTg3IDE0LjIxNzYgNy44NDk4OSAxNS4wNjU0IDguNDc1MDEgMTUuNjkwNUM5LjEwMDEzIDE2LjMxNTYgOS45NDc5OCAxNi42NjY4IDEwLjgzMiAxNi42NjY4SDE2LjY2NTRcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cIm14LTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjNcIiB2aWV3Qm94PVwiMCAwIDIzIDIzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNDE0NDggNC41MjMwM0M4LjY5NTE4IDQuODAzNzEgOC42OTUxOCA1LjI1ODggOC40MTQ0OCA1LjUzOTQ4TDUuNTM5NDggOC40MTQ0OEM1LjI1ODggOC42OTUxOCA0LjgwMzcxIDguNjk1MTggNC41MjMwMyA4LjQxNDQ4TDMuMDg1NTMgNi45NzY5OEMyLjgwNDgyIDYuNjk2MyAyLjgwNDgyIDYuMjQxMjEgMy4wODU1MyA1Ljk2MDUzQzMuMzY2MjEgNS42Nzk4MiAzLjgyMTMgNS42Nzk4MiA0LjEwMTk4IDUuOTYwNTNMNS4wMzEyNSA2Ljg4OTc4TDcuMzk4MDMgNC41MjMwM0M3LjY3ODcxIDQuMjQyMzIgOC4xMzM4IDQuMjQyMzIgOC40MTQ0OCA0LjUyMzAzWlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC40MTQ0OCAxMS43MTA1QzguNjk1MTggMTEuOTkxMiA4LjY5NTE4IDEyLjQ0NjMgOC40MTQ0OCAxMi43MjdMNS41Mzk0OCAxNS42MDJDNS4yNTg4IDE1Ljg4MjYgNC44MDM3MSAxNS44ODI2IDQuNTIzMDMgMTUuNjAyTDMuMDg1NTMgMTQuMTY0NUMyLjgwNDgyIDEzLjg4MzggMi44MDQ4MiAxMy40Mjg3IDMuMDg1NTMgMTMuMTQ3OUMzLjM2NjIxIDEyLjg2NzMgMy44MjEzIDEyLjg2NzMgNC4xMDE5OCAxMy4xNDc5TDUuMDMxMjUgMTQuMDc3M0w3LjM5ODAzIDExLjcxMDVDNy42Nzg3MSAxMS40Mjk5IDguMTMzOCAxMS40Mjk5IDguNDE0NDggMTEuNzEwNVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjA2MjUgNi40Njg3NUMxMC4wNjI1IDYuMDcxOCAxMC4zODQ0IDUuNzUgMTAuNzgxMiA1Ljc1SDE1LjA5MzhDMTUuNDkwNiA1Ljc1IDE1LjgxMjUgNi4wNzE4IDE1LjgxMjUgNi40Njg3NUMxNS44MTI1IDYuODY1NyAxNS40OTA2IDcuMTg3NSAxNS4wOTM4IDcuMTg3NUgxMC43ODEyQzEwLjM4NDQgNy4xODc1IDEwLjA2MjUgNi44NjU3IDEwLjA2MjUgNi40Njg3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNTkzNzUgMEMxLjYwODk4IDAgMCAxLjYwODk4IDAgMy41OTM3NVYxNi41MzEyQzAgMTguNTE2IDEuNjA4OTggMjAuMTI1IDMuNTkzNzUgMjAuMTI1SDkuNDg3MDhDOS4yNTQyOSAxOS42Njk2IDkuMDY0MzYgMTkuMTg4NiA4LjkyMjYxIDE4LjY4NzVIMy41OTM3NUMyLjQwMjg4IDE4LjY4NzUgMS40Mzc1IDE3LjcyMjEgMS40Mzc1IDE2LjUzMTJWMy41OTM3NUMxLjQzNzUgMi40MDI4OCAyLjQwMjg4IDEuNDM3NSAzLjU5Mzc1IDEuNDM3NUgxNi41MzEyQzE3LjcyMjEgMS40Mzc1IDE4LjY4NzUgMi40MDI4OCAxOC42ODc1IDMuNTkzNzVWOC45MjI2MUMxOS4xODg2IDkuMDY0MzYgMTkuNjY5NiA5LjI1NDI5IDIwLjEyNSA5LjQ4NzA4VjMuNTkzNzVDMjAuMTI1IDEuNjA4OTggMTguNTE2IDAgMTYuNTMxMiAwSDMuNTkzNzVaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi41MzEzIDIzQzIwLjEwMzkgMjMgMjMgMjAuMTAzOSAyMyAxNi41MzEzQzIzIDEyLjk1ODYgMjAuMTAzOSAxMC4wNjI1IDE2LjUzMTMgMTAuMDYyNUMxMi45NTg2IDEwLjA2MjUgMTAuMDYyNSAxMi45NTg2IDEwLjA2MjUgMTYuNTMxM0MxMC4wNjI1IDIwLjEwMzkgMTIuOTU4NiAyMyAxNi41MzEzIDIzWk0xNi41MzEzIDEyLjkzNzVDMTYuOTI4MSAxMi45Mzc1IDE3LjI1IDEzLjI1OTQgMTcuMjUgMTMuNjU2M1YxNS44MTI1SDE5LjQwNjNDMTkuODAzMSAxNS44MTI1IDIwLjEyNSAxNi4xMzQ0IDIwLjEyNSAxNi41MzEzQzIwLjEyNSAxNi45MjgxIDE5LjgwMzEgMTcuMjUgMTkuNDA2MyAxNy4yNUgxNy4yNVYxOS40MDYzQzE3LjI1IDE5LjgwMzEgMTYuOTI4MSAyMC4xMjUgMTYuNTMxMyAyMC4xMjVDMTYuMTM0NCAyMC4xMjUgMTUuODEyNSAxOS44MDMxIDE1LjgxMjUgMTkuNDA2M1YxNy4yNUgxMy42NTYzQzEzLjI1OTQgMTcuMjUgMTIuOTM3NSAxNi45MjgxIDEyLjkzNzUgMTYuNTMxM0MxMi45Mzc1IDE2LjEzNDQgMTMuMjU5NCAxNS44MTI1IDEzLjY1NjMgMTUuODEyNUgxNS44MTI1VjEzLjY1NjNDMTUuODEyNSAxMy4yNTk0IDE2LjEzNDQgMTIuOTM3NSAxNi41MzEzIDEyLjkzNzVaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj4ge3sgbG9nLl9zb3VyY2UuZnJvbUNoZWNrTGlzdE5hbWUgfHwgJy0tJyB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGUgYmFkZ2UtbGlnaHRcIiBbbmdDbGFzc109XCJnZXRBY3Rpb25CYWRnZUNsYXNzKGxvZy5fc291cmNlLmFjdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QWN0aW9uTGFiZWwobG9nLl9zb3VyY2UuYWN0aW9uKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlIGQtZmxleFwiPjxzcGFuIGNsYXNzPVwibWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuPnt7IGxvZy5fc291cmNlLmNyZWF0ZWRCeUVtYWlsIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlIGQtZmxleFwiPjxzcGFuICpuZ0lmPVwibG9nLl9zb3VyY2U/LnN0b3JlTmFtZVwiIGNsYXNzPVwibWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuNjc4OTMgNS44MDM2NkwyLjYyNTY4IDUuODg2ODNDMi4wNjc2NCA2Ljg3Mzg4IDIuNjYzNDcgOC4xMjEzIDMuNzM1MDggOC4yNjQ0QzMuODMyMTcgOC4yNzYyNyAzLjkyMjUxIDguMjgyNTUgNC4wMTA3OCA4LjI4MjU1QzQuNTg4OTMgOC4yODI1NSA1LjEwMDEgOC4wMzQ1MyA1LjQ1NjM3IDcuNjQ3OEw2LjAwOTcgNy4wNDcxOEw2LjU2MTE2IDcuNjQ5NTNDNi45MTMxIDguMDMzOTUgNy40MjMxMSA4LjI4MjU1IDguMDA1MTcgOC4yODI1NUM4LjU4NDYxIDguMjgyNTUgOS4wOTc1NSA4LjAzMzYgOS40NDkxNyA3LjY0OTUzTDEwLjAwMjQgNy4wNDUyOUwxMC41NTU1IDcuNjQ5NTNDMTAuOTA3MiA4LjAzMzYgMTEuNDIwMSA4LjI4MjU1IDExLjk5OTYgOC4yODI1NUMxMi41NzkgOC4yODI1NSAxMy4wOTE5IDguMDMzNiAxMy40NDM2IDcuNjQ5NTNMMTMuOTk2NyA3LjA0NTI5TDE0LjU0OTkgNy42NDk1M0MxNC45MDE2IDguMDMzNiAxNS40MTQ1IDguMjgyNTUgMTUuOTkzOSA4LjI4MjU1QzE2LjA3OTMgOC4yODI1NSAxNi4xNzI0IDguMjc2MjUgMTYuMjY4OCA4LjI2NDVDMTcuMzYzOSA4LjExNTE4IDE3Ljk2MTggNi44MDA5MSAxNy4zMjMgNS44MDQxNkMxNy4zMjMgNS44MDQxIDE3LjMyMyA1LjgwNDA1IDE3LjMyMjkgNS44MDM5OUwxNS41NjQ4IDMuMDYyNThMMTUuNTY0OCAzLjA2MjU4TDE1LjU2MzggMy4wNjExMUMxNS41NDg2IDMuMDM3MjggMTUuNTExMiAzLjAxMTcyIDE1LjQ2NCAzLjAxMTcySDQuNTM0NThDNC40ODc0NCAzLjAxMTcyIDQuNDQ5OTUgMy4wMzcyOCA0LjQzNDc0IDMuMDYxMTFMNC40MzQxMyAzLjA2MjA4TDIuNjc4OTMgNS44MDM2NlpNMTUuNjUwNCAxMC43MzY5VjEzLjg2ODlWMTQuNjE4OUgxNC45MDA0SDUuMDk4MjFINC4zNDgyMVYxMy44Njg5VjEwLjczNzRDNC4yMzc5OCAxMC43NDU2IDQuMTI2NDYgMTAuNzQ5OCA0LjAxMzg0IDEwLjc0OThDMy45NzE1NCAxMC43NDk4IDMuOTI5NTIgMTAuNzQ5MiAzLjg4Nzc4IDEwLjc0OFYxMy44Njg5VjE1LjgwMzRDMy44ODc3OCAxNi40NDY4IDQuNDIxNjggMTYuOTg3OSA1LjA5ODIxIDE2Ljk4NzlIMTQuOTAwNEMxNS41NzY5IDE2Ljk4NzkgMTYuMTEwOCAxNi40NDY4IDE2LjExMDggMTUuODAzNFYxMy44Njg5VjEwLjc0ODJDMTYuMDcxIDEwLjc0OTMgMTYuMDMxIDEwLjc0OTggMTUuOTkwOSAxMC43NDk4QzE1Ljg3NjUgMTAuNzQ5OCAxNS43NjI5IDEwLjc0NTUgMTUuNjUwNCAxMC43MzY5WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3Bhbj57eyBsb2cuX3NvdXJjZS5zdG9yZU5hbWUgfHwgJy0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIlsndXBkYXRlZCcsICdlZGl0ZWQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0FjdGlvbihsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ3N1Ym1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvR2FsbGVyeShsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFbJ3VwZGF0ZWQnLCAnZWRpdGVkJywgJ3N1Ym1pdCddLmluY2x1ZGVzKGxvZy5fc291cmNlLmFjdGlvbilcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhc2tMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza05vRGF0YSAmJiAhdGFza0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIEFjdGl2aXR5IExvZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiPlxyXG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj4iXX0=
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nLXYyL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy12Mi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFnQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBSW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBSnJELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFNbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBVWxCLE1BQU0sT0FBTyxzQkFBc0I7SUFxRmI7SUFBK0I7SUFBc0I7SUFBK0I7SUFBMEM7SUFDeEk7SUFBa0M7SUFBa0M7SUFBdUM7SUFyRnJILEtBQUssR0FBRyxLQUFLLENBQUE7SUFDTCxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFlBQVksR0FBRyxFQUFFLENBQUE7SUFD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ZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UsIFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgdXRjIGZyb20gJ2RheWpzL3BsdWdpbi91dGMnO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVmlld0FjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbG9nLXZpZXctcG9wdXAvdmlldy1hY3Rpb24vdmlldy1hY3Rpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHJlbGF0aXZlVGltZSBmcm9tICdkYXlqcy9wbHVnaW4vcmVsYXRpdmVUaW1lJztcclxuXHJcbmRheWpzLmV4dGVuZChyZWxhdGl2ZVRpbWUpO1xyXG5kYXlqcy5leHRlbmQodXRjKTtcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWN0aXZpdHktbG9nLXYyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5TG9nVjJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgZGF5anMgPSBkYXlqc1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTBcclxuICBjdXJyZW50UGFnZSA9IDFcclxuICB0b3RhbEl0ZW1zID0gMFxyXG4gIHBhZ2luYXRpb25TaXplczphbnlbXSA9IFtdO1xyXG4gIHBhZ2VTaXplID0gMTBcclxuICBzb3J0Q29sdW1OYW1lOiBzdHJpbmcgPSAnJztcclxuICBzb3J0Qnk6IGFueSA9ICcnO1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9ICcnO1xyXG4gIHNlYXJjaElucHV0OiBhbnkgPVwiXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhc2tMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0YXNrTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVjZWl2ZWREYXRhOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246ICdBY3Rpb25zJyxcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgeyB0ZXh0OiAnQ3JlYXRlZCBieScsIGlkOiAnY3JlYXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVcGRhdGVkIGJ5JywgaWQ6ICd1cGRhdGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1NhdmVkIGFzIERyYWZ0JywgaWQ6ICdkcmFmdCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdQdWJsaXNoZWQgYnknLCBpZDogJ3B1Ymxpc2hlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTdWJtaXR0ZWQgYnknLCBpZDogJ3N1Ym1pdCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTdGFydGVkIGJ5JywgaWQ6ICdzdGFydCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdBcHByb3ZlZCBieScsIGlkOiAnYXBwcm92ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnUmVkbyBDcmVhdGVkIGJ5JywgaWQ6ICdyZWRvJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ1N1YnNlcXVlbnQgUmVkbyBDcmVhdGVkIGJ5JywgaWQ6ICdtdWx0aXJlZG8nIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnVGFzayBDcmVhdGVkIGJ5JywgaWQ6ICd0YXNrX2NyZWF0ZWQnIH0sXHJcbiAgICAgICAgLy8geyB0ZXh0OiAnUmUtT3BlbmVkIGJ5JywgaWQ6ICdyZW9wZW5lZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdFZGl0ZWQgYnknLCBpZDogJ2VkaXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdVbnB1Ymxpc2hlZCBieScsIGlkOiAndW5wdWJsaXNoZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnRGVsZXRlZCBieScsIGlkOiAnZGVsZXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdEdXBsaWNhdGVkIGJ5JywgaWQ6ICdkdXBsaWNhdGVkJyB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246ICdDb3ZlcmFnZScsXHJcbiAgICAvLyAgIElzc3VlczogW1xyXG4gICAgLy8gICAgIHsgdGV4dDogJ0NoZWNrbGlzdCcsIGlkOiAnY2hlY2tsaXN0JyB9LFxyXG4gICAgICAgXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyB9LFxyXG4gIF07XHJcbiAgYWN0aXZpdHlMb2dUYWJsZURhdGE6IGFueVtdID0gW107XHJcbiAgdHlwZTogc3RyaW5nID0gJ2NoZWNrbGlzdCc7IFxyXG4gIGFjdGl2aXR5TG9nRmlsdGVyOiBhbnkgPSBbXTtcclxuICAvLyByZWxvYWREYXRlOiBzdHJpbmc7XHJcbiAgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnk7XHJcbiAgLy8gY292ZXJhZ2VUeXBlOiBhbnkgPSBbXTtcclxuICB1c2VyRW1haWxlczogYW55ID0gW107XHJcbiAgY2hlY2tsaXN0TmFtZTogYW55O1xyXG4gIGVkaXRSZXF1ZXN0RGF0YTogYW55O1xyXG4gIGlzQWN0aXZpdHlMb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuIHNlbGVjdGVkRGF0ZVJhbmdlOiBhbnkgPSB7XHJcbiAgICBzdGFydERhdGU6IGRheWpzKCkuc3VidHJhY3QoNywgJ2RheXMnKSxcclxuICAgIGVuZERhdGU6IGRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlzXCIpLFxyXG4gIH07XHJcbiAgICBpc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IG0gPiB0aGlzLmRheWpzKCk7XHJcbiAgICAgICAgcmV0dXJuIGlzVmFsaWREYXRlID8gXCJpbnZhbGlkLWRhdGVcIiA6IGZhbHNlO1xyXG4gICAgICB9O1xyXG4gIHNlbGVjdGVkRmlsdGVyczogYW55ID0ge1xyXG4gICAgY2xpZW50OiBudWxsLFxyXG4gICAgY2xpZW50TmFtZTogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgLy8gZGF0ZTogbnVsbCxcclxuICAgIGRhdGU6IHtcclxuICAgICAgc3RhcnREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDcsIFwiZGF5c1wiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLFxyXG4gICAgICBlbmREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLFxyXG4gICAgfSxcclxuICAgIGdyb3VwOiBbXSxcclxuICAgIGxvY2F0aW9uOiBbXSxcclxuICB9O1xyXG5jb3VudDpudW1iZXIgPSAwO1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdG9hc3Q6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgVHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICkge1xyXG4gICAgdGhpcy51c2VyRW1haWxlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiIClcclxuICAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IDEwO1xyXG4gICAgICAgIHRoaXMucGFnZVNpemUgPTEwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY291bnQrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0aGlzLmFwcGx5RmlsdGVycyhbeyBEZXNjcmlwdGlvbjogJ0NvdmVyYWdlJywgSXNzdWVzOiBbeyB0ZXh0OiB0aGlzLmNvdmVyYWdlVHlwZVswXSwgaWQ6IHRoaXMuY292ZXJhZ2VUeXBlWzBdLCBjaGVja2VkOiB0cnVlfV0gfV0pO1xyXG4gICAgXHJcbiAgICAgIFxyXG59KVxyXG59XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgLy8gdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIkRhc2hib2FyZFwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpOiB2b2lkIHtcclxuICAgIFxyXG4gICAgdGhpcy5pc0FjdGl2aXR5TG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpOyAvLyBGb3JjZSBVSSB1cGRhdGVcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy50YXNrTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tOb0RhdGEgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLnNlbGVjdGVkRmlsdGVycz8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSwgICAgICAgICAgICAgICAgIFxyXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UgLTEsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgYWN0aW9uOiB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyLFxyXG4gICAgICB0eXBlOiB0aGlzLnJlY2VpdmVkRGF0YSxcclxuICAgICAgdXNlckVtYWlsZXM6dGhpcy51c2VyRW1haWxlc1xyXG4gICAgICAvLyBjaGVja0xpc3ROYW1lOnRoaXMuY2hlY2tsaXN0TmFtZSxcclxuICAgICAgLy8gXCJjaGVja0xpc3ROYW1lXCI6IFwiZGFpbHkgc3RvcmUgY2hlY2tsaXN0MTExXCIsXHJcbiAgICAgIC8vIFwidHlwZVwiOiBcImNoZWNrbGlzdFwiLFxyXG4gICAgICAvLyBcImFjdGlvblwiOiBbXCJjcmVhdGVkXCJdLFxyXG4gICAgICAvLyBcImxpbWl0XCI6IDUsXHJcbiAgICAgIC8vIFwib2Zmc2V0XCI6IDAsXHJcbiAgICAgIC8vIFwic29ydEJ5XCI6IFwiXCIsXHJcbiAgICAgIC8vIFwic29ydENvbHVtbk5hbWVcIjogXCJcIixcclxuICAgICAgLy8gXCJzZWFyY2hWYWx1ZVwiOiBcIkRhaWx5IHN0b3JlIGNoZWNrbGlzdCBOZXdcIlxyXG4gIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5hY3Rpdml0eUxvZ0xpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ1RhYmxlRGF0YSA9IHJlc3BvbnNlLmRhdGEucmVzdWx0IHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzcG9uc2UuZGF0YS5jb3VudFxyXG4gICAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uU2l6ZXMoKVxyXG4gICAgICAgICAgdGhpcy50YXNrTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YXNrTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dUYWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGFza05vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dUYWJsZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW11cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zb3VyY2VDaGVja0xpc3RfaWQgPSBcIlwiO1xyXG4gIH1cclxuICAvLyByZW1vdmVRdWVyeVBhcmFtcygpIHtcclxuICAvLyAgIGNvbnN0IHVybFdpdGhvdXRQYXJhbXMgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKS5zcGxpdCgnPycpWzBdO1xyXG4gIC8vICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsV2l0aG91dFBhcmFtcyk7XHJcbiAgLy8gfVxyXG4gIHNldFBhZ2luYXRpb25TaXplcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPiAxMCkge1xyXG4gICAgICBpZih0aGlzLnBhZ2VTaXplID4gMTApe1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsSXRlbXM7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuICBcclxuICBvbkV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIHVzZXJFbWFpbGVzOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBsaW1pdDogMTAwMDAsICAgICAgICAgICAgICAgICBcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgc29ydENvbHVtbk5hbWU6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIGV4cG9ydDogdHJ1ZSxcclxuICAgICAgZmlsdGVyOiB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyLFxyXG4gICAgICAvLyBjb3ZlcmFnZTogdGhpcy5jb3ZlcmFnZVR5cGUgfHwgW11cclxuICAgIH07XHJcbiAgICAgICAgdGhpcy5UcmF4U2VydmljZS5nZXRUYXNrVGFibGVEYXRhRXhwb3J0KHJlcXVlc3REYXRhKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5UcmF4U2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCAnVGFza1RhYmxlJyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgV3JvbmcuLicpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICBcclxuICAgIH0gIFxyXG4gIHNlYXJjaEZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oZWFkZXJEYXRhLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hJbnB1dDtcclxuICAgIHRoaXMuaGVhZGVyRGF0YS5leHBvcnQgPSBmYWxzZTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5wYWdlU2l6ZT0xMDtcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgIH1cclxuICBzb3J0RGF0YShjb2x1bW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydENvbHVtTmFtZSA9PT0gY29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydENvbHVtTmFtZSA9IGNvbHVtbjtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgIH1cclxuICBcclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBwYXJzZUludChwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2VPZmZzZXQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2VPZmZzZXRcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXJzKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSAnQWN0aW9ucycpIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWwuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmRhdGFPYmplY3QuZm9yRWFjaCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgIGNhdGVnb3J5Lklzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgIC8vICAgICBpc3N1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgLy8gICB9KTtcclxuICAgICAgLy8gfSk7XHJcbiAgXHJcbiAgICAgIC8vIGNvbnN0IGFjdGlvbnNGaWx0ZXIgPSB0aGlzLmRhdGFPYmplY3QuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLkRlc2NyaXB0aW9uID09PSAnQWN0aW9ucycpO1xyXG4gICAgICAvLyB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gYWN0aW9uc0ZpbHRlciA/IGFjdGlvbnNGaWx0ZXIuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbC5pZCkgOiBbXTtcclxuICAgICAgdGhpcy5hY3Rpdml0eUxvZ0ZpbHRlciA9IFtdO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgc2VsZWN0UGxhbihzZWxlY3RlZFR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50eXBlID0gc2VsZWN0ZWRUeXBlOyAgXHJcbn1cclxuXHJcbi8vIG5hdmlnYXRlVG9UYXNrQ29uZmlnKHRhc2s6IGFueSk6IHZvaWQge1xyXG4vLyAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtYW5hZ2UvdHJheC90YXNrLWNvbmZpZ3VyZSddLCB7IHF1ZXJ5UGFyYW1zOiB7dGFza0lkOnRhc2suX2lkfSB9KVxyXG4vLyB9XHJcblxyXG4vLyBuYXZpZ2F0ZVRvVGFza0VkaXQodGFzazogYW55KTogdm9pZCB7XHJcbi8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21hbmFnZS90cmF4L2NyZWF0ZS10YXNrJ10sIHsgcXVlcnlQYXJhbXM6IHtpZDp0YXNrLl9pZH0gfSlcclxuLy8gfVxyXG5cclxuZGF0ZUZvcm1hdChkYXRlOmFueSkge1xyXG4gIHJldHVybiB0aGlzLmRheWpzLnV0YyhkYXRlKS5mb3JtYXQoJ0REIE1NTSBZWVlZJylcclxufVxyXG5TZWxlY3R0YWJzKHRhYjogc3RyaW5nKSB7XHJcbiAgdGhpcy5yZWNlaXZlZERhdGEgPSB0YWI7XHJcblxyXG4gIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7IFxyXG4gIC8vICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGFiIH0sXHJcbiAgLy8gICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXHJcbiAgLy8gfSk7XHJcblxyXG4gIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxufVxyXG52aWV3QWN0aW9uKGxvZzogYW55KSB7XHJcbiAgbGV0IG1vZGFsU2l6ZSA9IGxvZy5hY3Rpb24gPT09ICd1cGRhdGVkJyB8fCBsb2cuYWN0aW9uID09PSAnZHJhZnQnID8gJ3hsJyAgOiBsb2cuYWN0aW9uID09PSAnZWRpdGVkJyA/ICdsZycgOiAnbWQnO1xyXG4gIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihWaWV3QWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgIHNpemU6IG1vZGFsU2l6ZSxcclxuICAgIHNjcm9sbGFibGU6IHRydWVcclxuICB9KTtcclxuICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5sb2dEZXRhaWxzID0gbG9nLmxvZ0RldGFpbHM7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuY2hlY2tMaXN0TmFtZSA9IGxvZy5jaGVja0xpc3ROYW1lO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlTmFtZSA9IGxvZy5zdG9yZU5hbWU7XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuYWN0aW9uVHlwZSA9IGxvZy5hY3Rpb247XHJcbiAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucmVjZWl2ZWREYXRhID0gdGhpcy5yZWNlaXZlZERhdGE7XHJcbiAgbW9kYWxSZWYucmVzdWx0XHJcbiAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgIH0pXHJcbn1cclxuXHJcblxyXG4gIGZvcm1hdERhdGVUaW1lKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWRhdGVTdHJpbmcpIHJldHVybiAnLS0nO1xyXG4gIFxyXG4gICAgY29uc3QgZGF0ZSA9IGRheWpzLnV0YyhkYXRlU3RyaW5nKS5sb2NhbCgpO1xyXG4gICAgY29uc3Qgbm93ID0gZGF5anMoKTtcclxuICAgIFxyXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSAnJztcclxuICAgIFxyXG4gICAgaWYgKGRhdGUuaXNTYW1lKG5vdywgJ2RheScpKSB7XHJcbiAgICAgIGZvcm1hdHRlZERhdGUgPSAnVG9kYXknO1xyXG4gICAgfSBlbHNlIGlmIChkYXRlLmlzU2FtZShub3cuc3VidHJhY3QoMSwgJ2RheScpLCAnZGF5JykpIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9ICdZZXN0ZXJkYXknO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9IGRhdGUuZm9ybWF0KCdNTU0gRCwgWVlZWScpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmV0dXJuIGAke2Zvcm1hdHRlZERhdGV9IDxicj4gJHtkYXRlLmZvcm1hdCgnaGggOiBtbSBBJyl9YDtcclxuICB9XHJcbiAgZ2V0QWN0aW9uQmFkZ2VDbGFzcyhhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25DbGFzc2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICBjcmVhdGVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIHVwZGF0ZWQ6ICdiYWRnZS1saWdodC1wcmltYXJ5MScsXHJcbiAgICAgIGRyYWZ0OiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIHB1Ymxpc2hlZDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgc3VibWl0OiAnYmFkZ2UtbGlnaHQtcHJpbWFyeTEnLFxyXG4gICAgICBzdGFydDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgYXBwcm92ZWQ6ICdiYWRnZS1saWdodC1zdWNjZXNzJyxcclxuICAgICAgcmVkbzogJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnLFxyXG4gICAgICBtdWx0aXJlZG86ICdiYWRnZS1saWdodC13YXJuaW5nJyxcclxuICAgICAgdGFza19jcmVhdGVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIGVkaXRlZDogJ2JhZGdlLWxpZ2h0LXdhcm5pbmcnLFxyXG4gICAgICB1bnB1Ymxpc2hlZDogJ2JhZGdlLWxpZ2h0LXByaW1hcnkxJyxcclxuICAgICAgZGVsZXRlZDogJ2JhZGdlLWxpZ2h0LWRlbGV0ZScsXHJcbiAgICAgIGR1cGxpY2F0ZWQ6ICdiYWRnZS1saWdodC1kZWZhdWx0JyxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbkNsYXNzZXNbYWN0aW9uXSB8fCAnYmFkZ2UtbGlnaHQtZGVmYXVsdCc7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25MYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIGNyZWF0ZWQ6ICdDcmVhdGVkIGJ5JyxcclxuICAgICAgdXBkYXRlZDogJ1VwZGF0ZWQgYnknLFxyXG4gICAgICBkcmFmdDogJ1NhdmVkIGFzIERyYWZ0JyxcclxuICAgICAgcHVibGlzaGVkOiAnUHVibGlzaGVkIGJ5JyxcclxuICAgICAgc3VibWl0OiAnU3VibWl0dGVkIGJ5JyxcclxuICAgICAgc3RhcnQ6ICdTdGFydGVkIGJ5JyxcclxuICAgICAgYXBwcm92ZWQ6ICdBcHByb3ZlZCBieScsXHJcbiAgICAgIHJlZG86ICdSZWRvIENyZWF0ZWQgYnknLFxyXG4gICAgICBtdWx0aXJlZG86ICdTdWJzZXF1ZW50IFJlZG8gQ3JlYXRlZCBieScsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogJ1Rhc2sgQ3JlYXRlZCBieScsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnUmUtb3BlbmVkIGJ5JyxcclxuICAgICAgZWRpdGVkOiAnRWRpdGVkIGJ5JyxcclxuICAgICAgdW5wdWJsaXNoZWQ6ICdVbnB1Ymxpc2hlZCBieScsXHJcbiAgICAgIGRlbGV0ZWQ6ICdEZWxldGVkIGJ5JyxcclxuICAgICAgZHVwbGljYXRlZDogJ0R1cGxpY2F0ZWQgYnknLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYWN0aW9uTGFiZWxzW2FjdGlvbl0gfHwgYWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgIG5hdmlnYXRlVG9HYWxsZXJ5KGxvZzogYW55KTogdm9pZCB7XHJcbiAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gZGF5anMobG9nLmNyZWF0ZUF0KS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuICAgICAgbGV0IGNoZWNrbGlzdFR5cGU6IHN0cmluZztcclxuICAgICAgaWYgKGxvZy5jaGVja0xpc3RUeXBlID09PSAnY3VzdG9tJykge1xyXG4gICAgICAgIGNoZWNrbGlzdFR5cGUgPSAnY3VzdG9tJztcclxuICAgICAgfSBlbHNlIGlmIChbJ3Rhc2snLCAnY2hlY2tsaXN0VGFzaycsICdjY3R2J10uaW5jbHVkZXMobG9nLnR5cGUpKSB7XHJcbiAgICAgICAgY2hlY2tsaXN0VHlwZSA9ICd0YXNrJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGVja2xpc3RUeXBlID0gbG9nLnR5cGUgfHwgJy0tJztcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOmFueT0ge31cclxuICAgICAgaWYobG9nLnN0b3JlX2lkJiZsb2cuc3RvcmVfaWQhPScnKXtcclxuICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgICAgc3RvcmVJZDogbG9nLnN0b3JlX2lkLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogY2hlY2tsaXN0VHlwZSxcclxuICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgICAgdXNlckVtYWlsOiBsb2cudXNlckVtYWlsLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogY2hlY2tsaXN0VHlwZSxcclxuICAgICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsb2cucmVkb1N0YXR1cykge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zLnJlZG9TdGF0dXMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2dhbGxlcnknXSwgeyBxdWVyeVBhcmFtcyB9KTtcclxuICAgIH0gXHJcblxyXG4gICAgZGF0ZWNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBcclxuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnN0YXJ0RGF0ZSAmJiBldmVudC5lbmREYXRlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHsgXHJcbiAgICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSwgXHJcbiAgICAgICAgICBlbmREYXRlOiBldmVudC5lbmREYXRlIFxyXG4gICAgICAgIH07XHJcbiAgICBcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0geyBcclxuICAgICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRmlsdGVycykpO1xyXG4gICAgICAgIC8vIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XHJcbiAgICAgICAgLy8gdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZS5uZXh0KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKTtcclxuICAgIFxyXG4gICAgICAgIC8vIFJlc2V0IHRoZSBwaWNrZXIgdG8gZm9yY2UgcmUtcmVuZGVyXHJcbiAgICAgICAgdGhpcy5pc0FjdGl2aXR5TG9nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgICAgIC8vICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgLy8gfSwgMTApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIENhbGwgQVBJXHJcbiAgICAgICAgdGhpcy5nZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG5cclxuICAgICAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgICAgIHRoaXMuaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBiZWZvcmUgeWVzdGVyZGF5XHJcbiAgICAgICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgJ2RheScpID8gJ2ludmFsaWQtZGF0ZScgOiBmYWxzZTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtdC00XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTNcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbCBtYi0yXCI+QWN0aXZpdHkgTG9nIDwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIGZvb3RmYWxsc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgIG1zLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCIxNy4wMzY1XCIgeT1cIjE1LjEyMjNcIiB3aWR0aD1cIjguMTU1NDZcIiBoZWlnaHQ9XCIyXCIgcng9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ2NoZWNrbGlzdCdcIiBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBteC0yIGxvZ3NlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHdpdGggU3RvcmUsIEVtYWlsLCBDaGVja2xpc3RcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAndGFzaydcIiBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBteC0yIGxvZ3NlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHdpdGggU3RvcmUsIEVtYWlsLCBUYXNrXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXVwLmVudGVyKT1cInNlYXJjaEZpZWxkKClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZGF0ZXBpY2tlciBzdGFydCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1kYXRlLXJhbmdlLXBpY2tlciAoZGF0ZUNoYW5nZSk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBbdmFsdWVdPVwiY291bnRcIj48L2xpYi1kYXRlLXJhbmdlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIGRhdGVwaWNrZXIgZW5kIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIiAoYXBwbGllZEZpbHRlcnMpPVwiYXBwbHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWF1dG8gbWItMiBteC00XCI+XHJcbiAgICAgICAgPHVsXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMtMnggIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZWxlY3R0YWJzKCdjaGVja2xpc3QnKVwiIFtyb3V0ZXJMaW5rXT1cIlsnL21hbmFnZS90cmF4L2FjdGlvbmNlbnRlciddXCIgW3F1ZXJ5UGFyYW1zXT1cInsgdHlwZTogJ2NoZWNrbGlzdCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwicmVjZWl2ZWREYXRhID09PSAnY2hlY2tsaXN0Jz8nYnRuIGFjdGl2ZWJ0bic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIG5hdi1saW5rIG1lLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICBDaGVja2xpc3RcclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiU2VsZWN0dGFicygndGFzaycpXCIgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3RyYXgvYWN0aW9uY2VudGVyJ11cIiBbcXVlcnlQYXJhbXNdPVwieyB0eXBlOiAndGFzaycgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwicmVjZWl2ZWREYXRhID09PSAndGFzaycgfHwgcmVjZWl2ZWREYXRhID09PSAnR3JvdXAgRGV0YWlscyBWYWx1ZSc/ICdidG4gYWN0aXZlYnRuJzonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBtZS02XCI+VGFza1xyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPCEtLSA8bGliLXZpZXctYWN0aW9uIFtyZWNlaXZlZERhdGFdPVwicmVjZWl2ZWREYXRhXCI+PC9saWItdmlldy1hY3Rpb24+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiIGNsYXNzPVwidGFibGUgdGV4dC1ub3dyYXAgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2RhdGV0aW1lJylcIj5EYXRlICYgVGltZTxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXRldGltZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdkYXRldGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnXCI+Q2hlY2tsaXN0IE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJ1wiPlRhc2sgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb24gUGVyZm9ybWVkPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlcmZvcm1lZCBieTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TdG9yZSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbG9nIG9mIGFjdGl2aXR5TG9nVGFibGVEYXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIiBbaW5uZXJIVE1MXT1cImZvcm1hdERhdGVUaW1lKGxvZy5fc291cmNlLmNyZWF0ZUF0KVwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhKGxvZy5fc291cmNlLnR5cGUgPT09ICd0YXNrJyAmJiBsb2cuX3NvdXJjZS5mcm9tQ2hlY2tMaXN0TmFtZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nLl9zb3VyY2UuY2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9nLl9zb3VyY2UudHlwZSA9PT0gJ3Rhc2snICYmIGxvZy5fc291cmNlLmZyb21DaGVja0xpc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZy5fc291cmNlLmNoZWNrTGlzdE5hbWUgfHwgJy0tJyB9fSA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMS42NjU0IDcuNTAwMTZMNy40OTg3IDMuMzMzNU03LjQ5ODcgMy4zMzM1TDMuMzMyMDMgNy41MDAxNk03LjQ5ODcgMy4zMzM1VjEzLjMzMzVDNy40OTg3IDE0LjIxNzYgNy44NDk4OSAxNS4wNjU0IDguNDc1MDEgMTUuNjkwNUM5LjEwMDEzIDE2LjMxNTYgOS45NDc5OCAxNi42NjY4IDEwLjgzMiAxNi42NjY4SDE2LjY2NTRcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3BhbiBjbGFzcz1cIm14LTJcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjNcIiB2aWV3Qm94PVwiMCAwIDIzIDIzXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguNDE0NDggNC41MjMwM0M4LjY5NTE4IDQuODAzNzEgOC42OTUxOCA1LjI1ODggOC40MTQ0OCA1LjUzOTQ4TDUuNTM5NDggOC40MTQ0OEM1LjI1ODggOC42OTUxOCA0LjgwMzcxIDguNjk1MTggNC41MjMwMyA4LjQxNDQ4TDMuMDg1NTMgNi45NzY5OEMyLjgwNDgyIDYuNjk2MyAyLjgwNDgyIDYuMjQxMjEgMy4wODU1MyA1Ljk2MDUzQzMuMzY2MjEgNS42Nzk4MiAzLjgyMTMgNS42Nzk4MiA0LjEwMTk4IDUuOTYwNTNMNS4wMzEyNSA2Ljg4OTc4TDcuMzk4MDMgNC41MjMwM0M3LjY3ODcxIDQuMjQyMzIgOC4xMzM4IDQuMjQyMzIgOC40MTQ0OCA0LjUyMzAzWlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC40MTQ0OCAxMS43MTA1QzguNjk1MTggMTEuOTkxMiA4LjY5NTE4IDEyLjQ0NjMgOC40MTQ0OCAxMi43MjdMNS41Mzk0OCAxNS42MDJDNS4yNTg4IDE1Ljg4MjYgNC44MDM3MSAxNS44ODI2IDQuNTIzMDMgMTUuNjAyTDMuMDg1NTMgMTQuMTY0NUMyLjgwNDgyIDEzLjg4MzggMi44MDQ4MiAxMy40Mjg3IDMuMDg1NTMgMTMuMTQ3OUMzLjM2NjIxIDEyLjg2NzMgMy44MjEzIDEyLjg2NzMgNC4xMDE5OCAxMy4xNDc5TDUuMDMxMjUgMTQuMDc3M0w3LjM5ODAzIDExLjcxMDVDNy42Nzg3MSAxMS40Mjk5IDguMTMzOCAxMS40Mjk5IDguNDE0NDggMTEuNzEwNVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjA2MjUgNi40Njg3NUMxMC4wNjI1IDYuMDcxOCAxMC4zODQ0IDUuNzUgMTAuNzgxMiA1Ljc1SDE1LjA5MzhDMTUuNDkwNiA1Ljc1IDE1LjgxMjUgNi4wNzE4IDE1LjgxMjUgNi40Njg3NUMxNS44MTI1IDYuODY1NyAxNS40OTA2IDcuMTg3NSAxNS4wOTM4IDcuMTg3NUgxMC43ODEyQzEwLjM4NDQgNy4xODc1IDEwLjA2MjUgNi44NjU3IDEwLjA2MjUgNi40Njg3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNTkzNzUgMEMxLjYwODk4IDAgMCAxLjYwODk4IDAgMy41OTM3NVYxNi41MzEyQzAgMTguNTE2IDEuNjA4OTggMjAuMTI1IDMuNTkzNzUgMjAuMTI1SDkuNDg3MDhDOS4yNTQyOSAxOS42Njk2IDkuMDY0MzYgMTkuMTg4NiA4LjkyMjYxIDE4LjY4NzVIMy41OTM3NUMyLjQwMjg4IDE4LjY4NzUgMS40Mzc1IDE3LjcyMjEgMS40Mzc1IDE2LjUzMTJWMy41OTM3NUMxLjQzNzUgMi40MDI4OCAyLjQwMjg4IDEuNDM3NSAzLjU5Mzc1IDEuNDM3NUgxNi41MzEyQzE3LjcyMjEgMS40Mzc1IDE4LjY4NzUgMi40MDI4OCAxOC42ODc1IDMuNTkzNzVWOC45MjI2MUMxOS4xODg2IDkuMDY0MzYgMTkuNjY5NiA5LjI1NDI5IDIwLjEyNSA5LjQ4NzA4VjMuNTkzNzVDMjAuMTI1IDEuNjA4OTggMTguNTE2IDAgMTYuNTMxMiAwSDMuNTkzNzVaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi41MzEzIDIzQzIwLjEwMzkgMjMgMjMgMjAuMTAzOSAyMyAxNi41MzEzQzIzIDEyLjk1ODYgMjAuMTAzOSAxMC4wNjI1IDE2LjUzMTMgMTAuMDYyNUMxMi45NTg2IDEwLjA2MjUgMTAuMDYyNSAxMi45NTg2IDEwLjA2MjUgMTYuNTMxM0MxMC4wNjI1IDIwLjEwMzkgMTIuOTU4NiAyMyAxNi41MzEzIDIzWk0xNi41MzEzIDEyLjkzNzVDMTYuOTI4MSAxMi45Mzc1IDE3LjI1IDEzLjI1OTQgMTcuMjUgMTMuNjU2M1YxNS44MTI1SDE5LjQwNjNDMTkuODAzMSAxNS44MTI1IDIwLjEyNSAxNi4xMzQ0IDIwLjEyNSAxNi41MzEzQzIwLjEyNSAxNi45MjgxIDE5LjgwMzEgMTcuMjUgMTkuNDA2MyAxNy4yNUgxNy4yNVYxOS40MDYzQzE3LjI1IDE5LjgwMzEgMTYuOTI4MSAyMC4xMjUgMTYuNTMxMyAyMC4xMjVDMTYuMTM0NCAyMC4xMjUgMTUuODEyNSAxOS44MDMxIDE1LjgxMjUgMTkuNDA2M1YxNy4yNUgxMy42NTYzQzEzLjI1OTQgMTcuMjUgMTIuOTM3NSAxNi45MjgxIDEyLjkzNzUgMTYuNTMxM0MxMi45Mzc1IDE2LjEzNDQgMTMuMjU5NCAxNS44MTI1IDEzLjY1NjMgMTUuODEyNUgxNS44MTI1VjEzLjY1NjNDMTUuODEyNSAxMy4yNTk0IDE2LjEzNDQgMTIuOTM3NSAxNi41MzEzIDEyLjkzNzVaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj4ge3sgbG9nLl9zb3VyY2UuZnJvbUNoZWNrTGlzdE5hbWUgfHwgJy0tJyB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGUgYmFkZ2UtbGlnaHRcIiBbbmdDbGFzc109XCJnZXRBY3Rpb25CYWRnZUNsYXNzKGxvZy5fc291cmNlLmFjdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0QWN0aW9uTGFiZWwobG9nLl9zb3VyY2UuYWN0aW9uKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlIGQtZmxleFwiPjxzcGFuIGNsYXNzPVwibWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuPnt7IGxvZy5fc291cmNlLmNyZWF0ZWRCeUVtYWlsIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXRpdGxlIGQtZmxleFwiPjxzcGFuICpuZ0lmPVwibG9nLl9zb3VyY2U/LnN0b3JlTmFtZVwiIGNsYXNzPVwibWUtM1wiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIuNjc4OTMgNS44MDM2NkwyLjYyNTY4IDUuODg2ODNDMi4wNjc2NCA2Ljg3Mzg4IDIuNjYzNDcgOC4xMjEzIDMuNzM1MDggOC4yNjQ0QzMuODMyMTcgOC4yNzYyNyAzLjkyMjUxIDguMjgyNTUgNC4wMTA3OCA4LjI4MjU1QzQuNTg4OTMgOC4yODI1NSA1LjEwMDEgOC4wMzQ1MyA1LjQ1NjM3IDcuNjQ3OEw2LjAwOTcgNy4wNDcxOEw2LjU2MTE2IDcuNjQ5NTNDNi45MTMxIDguMDMzOTUgNy40MjMxMSA4LjI4MjU1IDguMDA1MTcgOC4yODI1NUM4LjU4NDYxIDguMjgyNTUgOS4wOTc1NSA4LjAzMzYgOS40NDkxNyA3LjY0OTUzTDEwLjAwMjQgNy4wNDUyOUwxMC41NTU1IDcuNjQ5NTNDMTAuOTA3MiA4LjAzMzYgMTEuNDIwMSA4LjI4MjU1IDExLjk5OTYgOC4yODI1NUMxMi41NzkgOC4yODI1NSAxMy4wOTE5IDguMDMzNiAxMy40NDM2IDcuNjQ5NTNMMTMuOTk2NyA3LjA0NTI5TDE0LjU0OTkgNy42NDk1M0MxNC45MDE2IDguMDMzNiAxNS40MTQ1IDguMjgyNTUgMTUuOTkzOSA4LjI4MjU1QzE2LjA3OTMgOC4yODI1NSAxNi4xNzI0IDguMjc2MjUgMTYuMjY4OCA4LjI2NDVDMTcuMzYzOSA4LjExNTE4IDE3Ljk2MTggNi44MDA5MSAxNy4zMjMgNS44MDQxNkMxNy4zMjMgNS44MDQxIDE3LjMyMyA1LjgwNDA1IDE3LjMyMjkgNS44MDM5OUwxNS41NjQ4IDMuMDYyNThMMTUuNTY0OCAzLjA2MjU4TDE1LjU2MzggMy4wNjExMUMxNS41NDg2IDMuMDM3MjggMTUuNTExMiAzLjAxMTcyIDE1LjQ2NCAzLjAxMTcySDQuNTM0NThDNC40ODc0NCAzLjAxMTcyIDQuNDQ5OTUgMy4wMzcyOCA0LjQzNDc0IDMuMDYxMTFMNC40MzQxMyAzLjA2MjA4TDIuNjc4OTMgNS44MDM2NlpNMTUuNjUwNCAxMC43MzY5VjEzLjg2ODlWMTQuNjE4OUgxNC45MDA0SDUuMDk4MjFINC4zNDgyMVYxMy44Njg5VjEwLjczNzRDNC4yMzc5OCAxMC43NDU2IDQuMTI2NDYgMTAuNzQ5OCA0LjAxMzg0IDEwLjc0OThDMy45NzE1NCAxMC43NDk4IDMuOTI5NTIgMTAuNzQ5MiAzLjg4Nzc4IDEwLjc0OFYxMy44Njg5VjE1LjgwMzRDMy44ODc3OCAxNi40NDY4IDQuNDIxNjggMTYuOTg3OSA1LjA5ODIxIDE2Ljk4NzlIMTQuOTAwNEMxNS41NzY5IDE2Ljk4NzkgMTYuMTEwOCAxNi40NDY4IDE2LjExMDggMTUuODAzNFYxMy44Njg5VjEwLjc0ODJDMTYuMDcxIDEwLjc0OTMgMTYuMDMxIDEwLjc0OTggMTUuOTkwOSAxMC43NDk4QzE1Ljg3NjUgMTAuNzQ5OCAxNS43NjI5IDEwLjc0NTUgMTUuNjUwNCAxMC43MzY5WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3Bhbj57eyBsb2cuX3NvdXJjZS5zdG9yZU5hbWUgfHwgJy0nIH19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIlsndXBkYXRlZCcsICdlZGl0ZWQnLCAnZHJhZnQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0FjdGlvbihsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ3N1Ym1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvR2FsbGVyeShsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFbJ3VwZGF0ZWQnLCAnZWRpdGVkJywgJ3N1Ym1pdCcsICdkcmFmdCddLmluY2x1ZGVzKGxvZy5fc291cmNlLmFjdGlvbilcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhc2tMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza05vRGF0YSAmJiAhdGFza0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIEFjdGl2aXR5IExvZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiPlxyXG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj4iXX0=