tango-app-ui-analyse-zone 3.7.1-beta.44 → 3.7.1-beta.45

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.
@@ -454,11 +454,11 @@ export class ZoneConcentrationComponent {
454
454
  this.router.navigate(['/manage/trax/flags']);
455
455
  }
456
456
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ZoneConcentrationComponent, deps: [{ token: i0.NgZone }, { token: i1.NgbModal }, { token: i2.FormBuilder }, { token: i3.ZoneService }, { token: i0.ChangeDetectorRef }, { token: i4.ToastService }, { token: i5.GlobalStateService }, { token: i0.ElementRef }, { token: i6.Router }], target: i0.ɵɵFactoryTarget.Component });
457
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ZoneConcentrationComponent, selector: "lib-zone-concentration", providers: [NgbCarouselConfig], viewQueries: [{ propertyName: "dateList", first: true, predicate: ["dateList"], descendants: true, read: ElementRef }, { propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-5 right-border my-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header ps-3 pe-1\">\r\n <h3 class=\"card-title align-items-start flex-column ms-1\">\r\n <span class=\"headtext\">Concentration Summary <span\r\n ngbTooltip=\"Summary of overall zones at the store\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></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 svg-icon-1 position-absolute ms-3\">\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 <!-- [disabled]=\"searchDisabled\" -->\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-10 invoicesearch\"\r\n placeholder=\"Search...\" autocomplete=\"off\" (keyup.enter)=\"searchField()\"\r\n />\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader ms-2\" [disabled]=\"!zoneConcentrationData.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <!-- <span class=\"ms-2\">Export</span> -->\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <div *ngIf=\"!zonesummaryNoData && !zonesummaryLoading\" class=\"table-container m-4\">\r\n <table class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th class=\"p-1\"></th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <svg [ngClass]=\"sortColumName === 'zoneName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'zoneName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('footfallCount')\">\r\n Footfall <br>(Actuals)\r\n <svg [ngClass]=\"sortColumName === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('avgDwellTime')\">\r\n Dwell Time <br>(Average)\r\n <svg [ngClass]=\"sortColumName === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"conc cursor-pointer\" (click)=\"sortData('concentrationRate')\">\r\n Concentration\r\n <svg [ngClass]=\"sortColumName === 'concentrationRate' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'concentrationRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"!zonesummaryLoading && !zonesummaryNoData\" class=\"table-responsive\">\r\n <ng-container *ngFor=\"let zone of zoneConcentrationData\">\r\n \r\n <!-- \u2705 PARENT ROW -->\r\n <tr>\r\n <td class=\"p-1\"> <span *ngIf=\"zone.rows?.length\" class=\"toggle-icon me-2\"\r\n (click)=\"toggleZone(zone.zoneName, $event)\">\r\n \r\n <!-- MINUS -->\r\n <svg *ngIf=\"isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10H15.8346\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <!-- PLUS -->\r\n <svg *ngIf=\"!isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0013 4.1665V15.8332M4.16797 9.99984H15.8346\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n </span></td>\r\n <td>\r\n <div class=\"table-title-primary overallstore mb-2 d-flex align-items-center\">\r\n <!-- ZONE NAME -->\r\n <span class=\"text-capitalize cursor-pointer\">\r\n <a (click)=\"onZoneClick(zone.zoneName)\">\r\n {{ zone.zoneName || '--' }}\r\n </a>\r\n </span>\r\n \r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.footfallCount?.toLocaleString('en-US') || '--' }}\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.avgDwellTime?.toLocaleString('en-US') || '--' }} mins\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.concentrationRate?.toLocaleString('en-US') || '--' }}%\r\n </div>\r\n </td>\r\n </tr>\r\n \r\n <!-- \u2705 CHILD ROWS -->\r\n <tr *ngFor=\"let row of zone.rows\" [hidden]=\"!isExpanded(zone.zoneName)\" class=\"child-row\">\r\n <td class=\"p-1\"></td>\r\n <td class=\"ps-15 text-primary underline text-capitalize\">\r\n {{ row.toZone }}\r\n </td>\r\n <td>{{ row.footfallCount }}</td>\r\n <td>{{ row.avgDwellTime }} mins</td>\r\n <td>{{ row.concentration }}%</td>\r\n </tr>\r\n \r\n </ng-container>\r\n \r\n \r\n </tbody>\r\n </table>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-18\">\r\n <div\r\n 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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-7\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">{{ zoneName || '' }} Concentration Heatmap <span ngbTooltip=\"Density heatmap\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n </h3>\r\n\r\n <div class=\"card-toolbar text-nowrap me-4\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'daily',\r\n 'inactivePlanBtn': type !== 'daily',\r\n 'disabled': disableDay\r\n }\" (click)=\"selectPlan('daily')\" [attr.disabled]=\"disableDay ? true : null\">\r\n Day\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'weekly',\r\n 'inactivePlanBtn': type !== 'weekly',\r\n 'disabled': disableWeek\r\n }\" (click)=\"selectPlan('weekly')\" [disabled]=\"disableWeek\">\r\n Week\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'monthly',\r\n 'inactivePlanBtn': type !== 'monthly',\r\n 'disabled': disableMonth\r\n }\" (click)=\"selectPlan('monthly')\" [disabled]=\"disableMonth\">\r\n Month\r\n </button>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-8 mb-6\">\r\n\r\n <div class=\"d-flex\">\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollLeft()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 18L9 12L15 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <ul *ngIf=\"periodzone === 1 && !customOption\" #dateList\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center m-2\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon active\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"(periodzone === 2 || periodzone === 3) && !customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollRight()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <div *ngIf=\"!heatmapLoading && !heatmapNoData\">\r\n <ngb-carousel #carousel [interval]=\"0\" [pauseOnHover]=\"true\" (slide)=\"onSlideChange($event)\"\r\n [id]=\"selectedDate\">\r\n <ng-container *ngFor=\"let image of overallStoreData?.ImageURLs;let i=index;\">\r\n <ng-template ngbSlide [id]=\"'ngb-slide-'+ i\">\r\n <div class=\"w-100 image-container cursor-pointer\">\r\n <img (click)=\"concentrationHeatmap(overallStoreData?.ImageURLs)\"\r\n [src]=\"image.URL\" [alt]=\"image.streamName\" class=\"cardimg\" />\r\n <a [href]=\"image.URL\" download><svg id=\"download-icon\" width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"icon-overlay\">\r\n <g filter=\"url(#filter0_d_3822_19479)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3822_19479\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3822_19479\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3822_19479\" result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></a>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ngb-carousel>\r\n </div>\r\n <ng-container *ngIf=\"heatmapLoading\">\r\n <div class=\"row loader concheatmap 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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heatmapNoData && !heatmapLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n class=\"card-body concheatmap 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 Overall Store Concentration\r\n Heatmap</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"body me-4\">\r\n <div class=\"pt-10 m-6\">\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Total Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">{{overallStoreData?.totalFootfall?.toLocaleString('en-US',\r\n { minimumFractionDigits: 0 }) || '--' }}</span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Concentration %\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <span class=\"table-title\">{{ roundof(overallStoreData?.concentrationRate) || '0' }} %</span> -->\r\n <span class=\"table-title\">{{\r\n overallStoreData?.concentrationRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Bounced Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.bouncedCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div></div>\r\n <div></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Engagers\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.engagersCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Avg. Dwell Time\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.avgDwellTime?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }} mins\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Age Range\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.ageRange?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Male Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.maleRate?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Female Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.femaleRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Trolley\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.trolleyRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Basket\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.basketRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"footer me-2\">\r\n <button (click)=\"openModel()\" class=\"btn btn-light-primary mb-2 w-100\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_17126_73367)\">\r\n <path\r\n d=\"M4.16797 1.6665L4.3263 2.44984C4.43977 3.01234 4.69653 3.53603 5.07173 3.97021C5.44692 4.40439 5.92786 4.73435 6.46797 4.92817L6.66797 4.99984L6.46797 5.0715C5.92786 5.26532 5.44692 5.59529 5.07173 6.02947C4.69653 6.46365 4.43977 6.98733 4.3263 7.54984L4.16797 8.33317L4.00964 7.54984C3.89617 6.98733 3.63941 6.46365 3.26421 6.02947C2.88901 5.59529 2.40808 5.26532 1.86797 5.0715L1.66797 4.99984L1.86797 4.92817C2.40808 4.73435 2.88901 4.40439 3.26421 3.97021C3.63941 3.53603 3.89617 3.01234 4.00964 2.44984L4.16797 1.6665ZM6.66797 13.3332L6.85963 14.3965C6.9094 14.6739 7.02869 14.9341 7.20634 15.1528C7.38399 15.3716 7.61421 15.5417 7.87547 15.6473L8.33464 15.8332L7.87547 16.019C7.61416 16.1244 7.38384 16.2944 7.20605 16.513C7.02825 16.7316 6.90878 16.9917 6.8588 17.269L6.66797 18.3332L6.4763 17.2698C6.42653 16.9925 6.30725 16.7322 6.1296 16.5135C5.95194 16.2947 5.72173 16.1246 5.46047 16.019L5.0013 15.8332L5.46047 15.6473C5.72178 15.5419 5.9521 15.372 6.12989 15.1534C6.30769 14.9348 6.42716 14.6746 6.47714 14.3973L6.66797 13.3332ZM13.3346 2.49984L13.798 4.7115C14.0341 5.83907 14.5584 6.88621 15.3198 7.75081C16.0811 8.61541 17.0535 9.26796 18.1421 9.64484L19.168 9.99984L18.1421 10.3548C17.0535 10.7317 16.0811 11.3843 15.3198 12.2489C14.5584 13.1135 14.0341 14.1606 13.798 15.2882L13.3346 17.4998L12.8713 15.2882C12.6352 14.1606 12.1109 13.1135 11.3495 12.2489C10.5882 11.3843 9.61578 10.7317 8.52714 10.3548L7.5013 9.99984L8.52714 9.64484C9.61578 9.26796 10.5882 8.61541 11.3495 7.75081C12.1109 6.88621 12.6352 5.83907 12.8713 4.7115L13.3346 2.49984Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17126_73367\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span> View AI Insights</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"ai-modal p-4\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"ai-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\"\r\n fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M21 18L21.19 18.94C21.3262 19.615 21.6343 20.2434 22.0845 20.7644C22.5347 21.2855 23.1119 21.6814 23.76 21.914L24 22L23.76 22.086C23.1119 22.3186 22.5347 22.7145 22.0845 23.2356C21.6343 23.7566 21.3262 24.385 21.19 25.06L21 26L20.81 25.06C20.6738 24.385 20.3657 23.7566 19.9155 23.2356C19.4653 22.7145 18.8881 22.3186 18.24 22.086L18 22L18.24 21.914C18.8881 21.6814 19.4653 21.2855 19.9155 20.7644C20.3657 20.2434 20.6738 19.615 20.81 18.94L21 18ZM24 32L24.23 33.276C24.2897 33.6088 24.4329 33.9211 24.646 34.1836C24.8592 34.4461 25.1355 34.6503 25.449 34.777L26 35L25.449 35.223C25.1354 35.3495 24.859 35.5535 24.6457 35.8158C24.4323 36.0781 24.289 36.3902 24.229 36.723L24 38L23.77 36.724C23.7103 36.3912 23.5671 36.0789 23.354 35.8164C23.1408 35.5539 22.8645 35.3497 22.551 35.223L22 35L22.551 34.777C22.8646 34.6505 23.141 34.4465 23.3543 34.1842C23.5677 33.9219 23.711 33.6098 23.771 33.277L24 32ZM32 19L32.556 21.654C32.8394 23.0071 33.4685 24.2636 34.3821 25.3012C35.2958 26.3387 36.4626 27.1217 37.769 27.574L39 28L37.769 28.426C36.4626 28.8783 35.2958 29.6613 34.3821 30.6988C33.4685 31.7364 32.8394 32.9929 32.556 34.346L32 37L31.444 34.346C31.1606 32.9929 30.5315 31.7364 29.6179 30.6988C28.7042 29.6613 27.5374 28.8783 26.231 28.426L25 28L26.231 27.574C27.5374 27.1217 28.7042 26.3387 29.6179 25.3012C30.5315 24.2636 31.1606 23.0071 31.444 21.654L32 19Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></div>\r\n <h5 class=\"mb-0 fw-semibold\">AI Insights for &lt;Overall Zones&gt;</h5>\r\n </div>\r\n\r\n <button class=\"btn btn-sm btn-icon\" (click)=\"model.dismiss()\">\r\n \u2715\r\n </button>\r\n </div>\r\n\r\n <!-- LIST -->\r\n <div *ngIf=\"viewImage?.mobileusagedetection || viewImage?.queueManagement || viewImage?.customerunattended || viewImage?.staffleftinthemiddle\" class=\"ai-card\">\r\n\r\n <div *ngIf=\"viewImage?.mobileusagedetection\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M16 1C7.716 1 1 7.716 1 16C1 24.2845 7.716 31 16 31C24.284 31 31 24.284 31 16C31 7.716 24.284 1 16 1ZM28 16C28.0029 18.6648 27.1151 21.2542 25.4775 23.3565L20.8045 18.6835V9.3875C20.8045 8.344 19.944 7.4985 18.8825 7.4985H13.1165C12.1545 7.4985 11.3645 8.1955 11.224 9.1025L8.6435 6.5225C10.7458 4.88494 13.3352 3.99707 16 4C22.627 4 28 9.3725 28 16ZM12.156 21.4795V14.277L19.3575 21.4795H12.156ZM16.576 22.9845C16.576 23.297 16.3185 23.551 16 23.551C15.6815 23.551 15.4235 23.297 15.4235 22.9845C15.4235 22.672 15.682 22.418 16 22.418C16.3185 22.418 16.576 22.672 16.576 22.9845ZM12.156 10.0345V9.3875H19.844V17.7225L12.156 10.0345ZM14.8195 8.4245C14.8195 8.294 14.927 8.188 15.0595 8.188H16.9395C17.0725 8.188 17.1805 8.294 17.1805 8.4245C17.1805 8.555 17.072 8.661 16.9395 8.661H15.0595C14.9964 8.66101 14.9359 8.6362 14.891 8.59195C14.8461 8.54769 14.8204 8.48754 14.8195 8.4245ZM4 16C3.99718 13.3353 4.88505 10.7462 6.5225 8.644L11.1945 13.3165V22.6125C11.1945 23.6565 12.055 24.502 13.1165 24.502H18.8825C19.8445 24.502 20.6345 23.8045 20.775 22.8975L23.355 25.4775C21.2531 27.1147 18.6643 28.0026 16 28C9.3725 28 4 22.628 4 16Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n <span class=\"title\">Mobile Detection</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.mobileusagedetection ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.queueManagement\" class=\"ai-row row \">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"26\"\r\n viewBox=\"0 0 26 26\" fill=\"none\">\r\n <path\r\n d=\"M6.28571 1.71429C5.60373 1.71429 4.94968 1.9852 4.46744 2.46744C3.9852 2.94968 3.71429 3.60373 3.71429 4.28572C3.71429 4.9677 3.9852 5.62175 4.46744 6.10399C4.94968 6.58623 5.60373 6.85714 6.28571 6.85714C6.9677 6.85714 7.62175 6.58623 8.10399 6.10399C8.58623 5.62175 8.85714 4.9677 8.85714 4.28572C8.85714 3.60373 8.58623 2.94968 8.10399 2.46744C7.62175 1.9852 6.9677 1.71429 6.28571 1.71429ZM2 4.28572C2 3.14907 2.45153 2.05898 3.25526 1.25526C4.05898 0.45153 5.14907 4.12584e-07 6.28571 4.12584e-07C7.42236 4.12584e-07 8.51244 0.45153 9.31617 1.25526C10.1199 2.05898 10.5714 3.14907 10.5714 4.28572C10.5714 5.42236 10.1199 6.51245 9.31617 7.31617C8.51244 8.1199 7.42236 8.57143 6.28571 8.57143C5.14907 8.57143 4.05898 8.1199 3.25526 7.31617C2.45153 6.51245 2 5.42236 2 4.28572ZM0 12.8571C0 12.1752 0.270918 11.5211 0.753154 11.0389C1.23539 10.5566 1.88944 10.2857 2.57143 10.2857H10C10.682 10.2857 11.336 10.5566 11.8183 11.0389C12.3005 11.5211 12.5714 12.1752 12.5714 12.8571V18.8571C12.5714 20.5242 11.9092 22.123 10.7304 23.3018C9.55159 24.4806 7.95279 25.1429 6.28571 25.1429C4.61864 25.1429 3.01984 24.4806 1.84104 23.3018C0.662243 22.123 0 20.5242 0 18.8571V12.8571ZM2.57143 12C2.3441 12 2.12608 12.0903 1.96534 12.2511C1.80459 12.4118 1.71429 12.6298 1.71429 12.8571V18.8571C1.71429 20.0696 2.19592 21.2323 3.05323 22.0896C3.91054 22.9469 5.0733 23.4286 6.28571 23.4286C7.49813 23.4286 8.66089 22.9469 9.5182 22.0896C10.3755 21.2323 10.8571 20.0696 10.8571 18.8571V12.8571C10.8571 12.6298 10.7668 12.4118 10.6061 12.2511C10.4453 12.0903 10.2273 12 10 12H2.57143ZM12.5726 8.57143C11.7736 8.57303 10.9903 8.35007 10.312 7.928C10.696 7.50514 11.0137 7.01943 11.2491 6.49029C11.6393 6.72435 12.0847 6.85067 12.5397 6.85637C12.9946 6.86207 13.443 6.74694 13.8389 6.52272C14.2349 6.29851 14.5642 5.97325 14.7934 5.58014C15.0226 5.18704 15.1433 4.74016 15.1433 4.28514C15.1433 3.83012 15.0226 3.38325 14.7934 2.99014C14.5642 2.59704 14.2349 2.27178 13.8389 2.04756C13.443 1.82335 12.9946 1.70822 12.5397 1.71392C12.0847 1.71961 11.6393 1.84594 11.2491 2.08C11.014 1.55497 10.6978 1.07019 10.312 0.643429C10.8754 0.294038 11.5123 0.0801325 12.1724 0.0185371C12.8325 -0.0430583 13.4979 0.0493359 14.1163 0.288453C14.7346 0.527569 15.2891 0.906888 15.736 1.39657C16.183 1.88626 16.5102 2.47296 16.692 3.11054C16.8738 3.74811 16.9052 4.41917 16.7837 5.07093C16.6623 5.72269 16.3912 6.33738 15.992 6.86666C15.5927 7.39594 15.0761 7.82538 14.4828 8.12119C13.8894 8.417 13.2356 8.57112 12.5726 8.57143ZM12.5726 25.1429C11.929 25.1434 11.2892 25.0451 10.6754 24.8514C11.2343 24.4425 11.7332 23.9574 12.1577 23.4103C12.2949 23.4225 12.4331 23.4286 12.5726 23.4286C13.785 23.4286 14.9478 22.9469 15.8051 22.0896C16.6624 21.2323 17.144 20.0696 17.144 18.8571V12.8571C17.144 12.6298 17.0537 12.4118 16.893 12.2511C16.7322 12.0903 16.5142 12 16.2869 12H13.616C13.4634 11.3552 13.1405 10.7632 12.6811 10.2857H16.2869C16.9688 10.2857 17.6229 10.5566 18.1051 11.0389C18.5874 11.5211 18.8583 12.1752 18.8583 12.8571V18.8571C18.8583 19.6826 18.6957 20.5 18.3798 21.2626C18.0639 22.0252 17.6009 22.7181 17.0172 23.3018C16.4336 23.8855 15.7406 24.3485 14.978 24.6644C14.2154 24.9803 13.398 25.1429 12.5726 25.1429ZM16.5977 7.92686C17.2467 8.32977 17.9917 8.55188 18.7554 8.5702C19.5191 8.58851 20.2738 8.40237 20.9414 8.03103C21.609 7.6597 22.1652 7.11667 22.5524 6.45817C22.9396 5.79967 23.1438 5.04963 23.1438 4.28572C23.1438 3.5218 22.9396 2.77176 22.5524 2.11326C22.1652 1.45476 21.609 0.911734 20.9414 0.540398C20.2738 0.169062 19.5191 -0.0170835 18.7554 0.00123229C17.9917 0.019548 17.2467 0.24166 16.5977 0.644572C16.9817 1.06743 17.2994 1.552 17.5349 2.08114C17.925 1.84687 18.3704 1.72035 18.8255 1.7145C19.2806 1.70865 19.729 1.82369 20.1251 2.04786C20.5212 2.27203 20.8507 2.59731 21.0799 2.99048C21.3092 3.38364 21.43 3.8306 21.43 4.28572C21.43 4.74083 21.3092 5.18779 21.0799 5.58095C20.8507 5.97412 20.5212 6.29939 20.1251 6.52357C19.729 6.74774 19.2806 6.86278 18.8255 6.85693C18.3704 6.85108 17.925 6.72456 17.5349 6.49029C17.2997 7.01532 16.9835 7.5001 16.5977 7.92686ZM18.4423 23.4103C18.5794 23.4217 18.7185 23.4278 18.8594 23.4286C20.0718 23.4286 21.2346 22.9469 22.0919 22.0896C22.9492 21.2323 23.4309 20.0696 23.4309 18.8571V12.8571C23.4309 12.6298 23.3406 12.4118 23.1798 12.2511C23.0191 12.0903 22.801 12 22.5737 12H19.9017C19.7491 11.3552 19.4262 10.7632 18.9669 10.2857H22.5737C23.2557 10.2857 23.9098 10.5566 24.392 11.0389C24.8742 11.5211 25.1451 12.1752 25.1451 12.8571V18.8571C25.1455 19.8454 24.9128 20.8197 24.466 21.7012C24.0192 22.5826 23.3709 23.3463 22.5736 23.9302C21.7764 24.5141 20.8527 24.9019 19.8775 25.0619C18.9024 25.222 17.9032 25.1499 16.9611 24.8514C17.5196 24.4424 18.0181 23.9573 18.4423 23.4103Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n\r\n <span class=\"title\">Queue Management</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <span class=\"badge mt-2\">{{viewImage?.queueManagement ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.customerunattended\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M12.3062 12.3076C14.6002 12.3076 16.46 10.4479 16.46 8.15381C16.46 5.85972 14.6002 4 12.3062 4C10.0121 4 8.15234 5.85972 8.15234 8.15381C8.15234 10.4479 10.0121 12.3076 12.3062 12.3076Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M21.9999 27.9999C25.3136 27.9999 27.9999 25.3136 27.9999 21.9999C27.9999 18.6863 25.3136 16 21.9999 16C18.6863 16 16 18.6863 16 21.9999C16 25.3136 18.6863 27.9999 21.9999 27.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M17.7538 26.2459L26.246 17.7537M14.1538 15.2798C12.9364 14.9988 11.6713 14.9966 10.453 15.2733C9.23463 15.5501 8.09461 16.0987 7.11815 16.8781C6.14168 17.6574 5.35403 18.6475 4.81408 19.7742C4.27413 20.9008 3.99585 22.135 4.00005 23.3844V26.1536H11.3846\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n\r\n\r\n <span class=\"title\">Customer Unattended</span>\r\n\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.customerunattended ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.staffleftinthemiddle\" class=\"row ai-row\">\r\n <div class=\"col-md-6 left\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"26\"\r\n viewBox=\"0 0 30 26\" fill=\"none\">\r\n <path\r\n d=\"M6.7207 24.6533L6.80371 24.998L1.31738 25C1.17293 25 1 24.867 1 24.6406C1.0001 21.6993 2.70973 19.1869 5.12891 18.083L6.7207 24.6533ZM11.3115 24.665L11.3975 24.9971H8.60254L8.68848 24.6699L10 19.6426L11.3115 24.665ZM14.8701 18.0781C17.2897 19.1819 18.9999 21.6941 19 24.6357C19 24.8337 18.868 24.9606 18.7383 24.9893L18.6826 24.9951L13.1943 24.9961L13.2793 24.6484L14.8701 18.0781ZM11.166 16.6826L10.0186 18.0645L9.99707 18.0889L9.98145 18.0693L8.83398 16.6875H9.5332V16.6826H11.166ZM10 2C10.6218 2 11.2382 2.12678 11.8145 2.37305C12.3909 2.61939 12.917 2.981 13.3613 3.43945C13.8057 3.89796 14.1602 4.44377 14.4023 5.04688C14.6445 5.64998 14.7695 6.29761 14.7695 6.95215C14.7695 7.60665 14.6444 8.25434 14.4023 8.85742C14.1602 9.46055 13.8057 10.0073 13.3613 10.4658C12.917 10.9242 12.3908 11.2859 11.8145 11.5322C11.2382 11.7784 10.6218 11.9043 10 11.9043C9.37823 11.9043 8.76179 11.7784 8.18555 11.5322C7.60924 11.2859 7.08297 10.9242 6.63867 10.4658C6.19426 10.0073 5.83979 9.46055 5.59766 8.85742C5.35559 8.25434 5.23047 7.60665 5.23047 6.95215C5.2305 6.29761 5.35553 5.64998 5.59766 5.04688C5.83979 4.44377 6.19428 3.89796 6.63867 3.43945C7.08302 2.981 7.60913 2.61939 8.18555 2.37305C8.68995 2.15751 9.22496 2.03336 9.76758 2.00586L10 2Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" />\r\n <path d=\"M23.3894 18.6693L28.0027 14.0026L23.3894 9.33594M26.6667 14.0026H16.6641\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"square\" />\r\n </svg></span>\r\n <span class=\"title\">Staff left in the Middle</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.staffleftinthemiddle ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!viewImage?.mobileusagedetection && !viewImage?.queueManagement && !viewImage?.customerunattended && !viewImage?.staffleftinthemiddle\"\r\n class=\"text-center py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n 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\">No AI Insights available for the selected zone.</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.table-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;width:200px;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.exportwidth{width:40%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.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}}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.overalltext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.borderdashed{border-bottom:1px solid var(--Gray-200, #EAECF0)}.conc{width:110%}.overallstore{width:155%}table td{height:70px!important;align-items:center;gap:12px;align-self:stretch}table tr{vertical-align:middle}::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:-4%;margin-left:15%}.category_active{border-bottom:3px solid #009EF7!important;border-radius:3px;margin-bottom:3px!important}.timer_active{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardimg{width:100%;height:350px}.form-control:disabled{background-color:#f9fafb!important}.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}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.rotate{transform:rotate(180deg)}.no-wrap-list{white-space:nowrap;overflow-x:auto;overflow-y:hidden;padding:0;margin:0;display:flex;flex-wrap:nowrap;-ms-overflow-style:none;scrollbar-width:none}.no-wrap-list::-webkit-scrollbar{display:none}.concheatmap{margin-top:10%}.right-border{border-right:1px solid #D0D5DD;padding-right:15px}.image-container{position:relative;display:inline-block}::ng-deep .carousel-control-next{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent}::ng-deep .carousel-control-prev{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent!important}::ng-deep .carousel-control-next-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}::ng-deep .carousel-control-prev-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.icon-overlay{position:absolute;cursor:pointer;top:10px;right:10px}::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:8px;height:8px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#009bf3;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}::ng-deep .custom-tooltip{white-space:pre-line;max-width:500px}.head-title{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.zone-compare-title{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.border-full{border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.shopper-title{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.zone-selector{padding:10px;max-width:300px;position:relative;font-family:Arial,sans-serif}.title{font-weight:700;margin-bottom:8px;display:block}.zone-box{display:flex;align-items:center;justify-content:space-between;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);padding:6px 10px;margin-bottom:6px}.remove-btn{border:none;background:transparent;cursor:pointer;font-weight:700;font-size:14px}.dropdown-input{position:relative;margin-bottom:8px}.dropdown-input input{width:100%;padding:6px;border:1px solid #51C1FF;border-radius:4px}.dropdown-list{position:absolute;top:100%;left:0;width:100%;max-height:150px;overflow-y:auto;border:1px solid #ccc;background:#fff;z-index:10;border-radius:0 0 4px 4px}.dropdown-list li{padding:8px;cursor:pointer}.dropdown-list li:hover{background-color:#e8f4ff}.limit-warning{color:red;font-size:12px;margin-bottom:8px;position:absolute;bottom:32px;left:30px;right:0}.actions{display:flex;justify-content:space-between;gap:8px}.actions button{padding:6px 12px;border:none;border-radius:4px;cursor:pointer}.apply-btn{background-color:#addbff}.apply-btn:disabled{opacity:.5;cursor:not-allowed}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.border-1{padding:8px;border-radius:12px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important}.shopper-ellipse1{border-radius:24px;background:var(--Primary-50, #EAF8FF);height:150px;padding:8px}.perctage{color:#475467!important}.minsbadge{border-radius:8px;border:1px solid #D0D5DD;background:#fff;box-shadow:0 1px 2px #1018280d;display:flex;align-items:center;gap:4px;z-index:1;font-size:12px}.minsbadgeprimary{padding:4px 15px;justify-content:center;align-items:center;gap:4px;border-radius:16px!important;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.toggle-icon{width:18px;cursor:pointer;font-weight:700}.child-row{background-color:#f6fcff}.concentration-table{width:100%;border-collapse:collapse}.concentration-table th{text-align:left;font-weight:600;padding:12px;border-bottom:1px solid #e5e7eb}.concentration-table td{padding:12px;border-bottom:1px solid #f1f5f9}.parent-row{background:#fff;font-weight:500}.child-row{background:F6FCFF}.child-zone{padding-left:36px;color:#009bf3}.toggle{display:inline-block;width:18px;cursor:pointer;font-weight:700;margin-right:6px}.zone-name{color:#009bf3;cursor:pointer}.underline{text-decoration:underline}.btn-light-primary{background-color:var(--Primary-50, #EAF8FF)!important;border-radius:8px;border-width:1px;padding:8px 14px;color:var(--Primary-700, #009BF3)}.btn.btn-light-primary:focus:not(.btn-active),.btn.btn-light-primary:hover:not(.btn-active),.btn.btn-light-primary:active:not(.btn-active){background-color:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important}.ai-modal{background:#fff;border-radius:12px}.ai-icon{width:32px;height:32px;background:#eef4ff;border-radius:50%;display:flex;align-items:center;justify-content:center}.ai-card{border-radius:10px;padding:8px}.ai-row{padding:8px;border-radius:8px;border:1px solid #e5e7eb;margin-bottom:7px}.ai-row:last-child{margin-bottom:0}.left{display:flex;align-items:center;gap:10px}.row-icon{font-size:18px}.title{font-weight:500}.badge{background:#f1f5f9;color:#475569;font-size:12px;padding:4px 10px;border-radius:16px}.view-link{font-weight:600;font-size:14px;line-height:20px;letter-spacing:0%;text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i1.NgbCarousel, selector: "ngb-carousel", inputs: ["animation", "activeId", "interval", "wrap", "keyboard", "pauseOnHover", "pauseOnFocus", "showNavigationArrows", "showNavigationIndicators"], outputs: ["slide", "slid"], exportAs: ["ngbCarousel"] }, { kind: "directive", type: i1.NgbSlide, selector: "ng-template[ngbSlide]", inputs: ["id"], outputs: ["slid"] }] });
457
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ZoneConcentrationComponent, selector: "lib-zone-concentration", providers: [NgbCarouselConfig], viewQueries: [{ propertyName: "dateList", first: true, predicate: ["dateList"], descendants: true, read: ElementRef }, { propertyName: "zoomPopup", first: true, predicate: ["zoomPopup"], descendants: true }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-5 right-border my-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header ps-3 pe-1\">\r\n <h3 class=\"card-title align-items-start flex-column ms-1\">\r\n <span class=\"headtext\">Concentration Summary <span\r\n ngbTooltip=\"Summary of overall zones at the store\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></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 svg-icon-1 position-absolute ms-3\">\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 <!-- [disabled]=\"searchDisabled\" -->\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-10 invoicesearch\"\r\n placeholder=\"Search...\" autocomplete=\"off\" (keyup.enter)=\"searchField()\"\r\n />\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader ms-2\" [disabled]=\"!zoneConcentrationData.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <!-- <span class=\"ms-2\">Export</span> -->\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <div *ngIf=\"!zonesummaryNoData && !zonesummaryLoading\" class=\"table-container m-4\">\r\n <table class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th class=\"p-1\"></th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <svg [ngClass]=\"sortColumName === 'zoneName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'zoneName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('footfallCount')\">\r\n Footfall <br>(Actuals)\r\n <svg [ngClass]=\"sortColumName === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('avgDwellTime')\">\r\n Dwell Time <br>(Average)\r\n <svg [ngClass]=\"sortColumName === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"conc cursor-pointer\" (click)=\"sortData('concentrationRate')\">\r\n Concentration\r\n <svg [ngClass]=\"sortColumName === 'concentrationRate' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'concentrationRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"!zonesummaryLoading && !zonesummaryNoData\" class=\"table-responsive\">\r\n <ng-container *ngFor=\"let zone of zoneConcentrationData\">\r\n \r\n <!-- \u2705 PARENT ROW -->\r\n <tr>\r\n <td class=\"p-1\"> <span *ngIf=\"zone.rows?.length\" class=\"toggle-icon me-2\"\r\n (click)=\"toggleZone(zone.zoneName, $event)\">\r\n \r\n <!-- MINUS -->\r\n <svg *ngIf=\"isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10H15.8346\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <!-- PLUS -->\r\n <svg *ngIf=\"!isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0013 4.1665V15.8332M4.16797 9.99984H15.8346\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n </span></td>\r\n <td>\r\n <div class=\"table-title-primary overallstore mb-2 d-flex align-items-center\">\r\n <!-- ZONE NAME -->\r\n <span class=\"text-capitalize cursor-pointer\">\r\n <a (click)=\"onZoneClick(zone.zoneName)\">\r\n {{ zone.zoneName || '--' }}\r\n </a>\r\n </span>\r\n \r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.footfallCount?.toLocaleString('en-US') || '--' }}\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.avgDwellTime?.toLocaleString('en-US') || '--' }} mins\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.concentrationRate?.toLocaleString('en-US') || '--' }}%\r\n </div>\r\n </td>\r\n </tr>\r\n \r\n <!-- \u2705 CHILD ROWS -->\r\n <tr *ngFor=\"let row of zone.rows\" [hidden]=\"!isExpanded(zone.zoneName)\" class=\"child-row\">\r\n <td class=\"p-1\"></td>\r\n <td class=\"ps-15 text-primary underline text-capitalize\">\r\n {{ row.toZone }}\r\n </td>\r\n <td>{{ row.footfallCount }}</td>\r\n <td>{{ row.avgDwellTime }} mins</td>\r\n <td>{{ row.concentration }}%</td>\r\n </tr>\r\n \r\n </ng-container>\r\n \r\n \r\n </tbody>\r\n </table>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-18\">\r\n <div\r\n 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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-7\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">{{ zoneName || '' }} Concentration Heatmap <span ngbTooltip=\"Density heatmap\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n </h3>\r\n\r\n <div class=\"card-toolbar text-nowrap me-4\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'daily',\r\n 'inactivePlanBtn': type !== 'daily',\r\n 'disabled': disableDay\r\n }\" (click)=\"selectPlan('daily')\" [attr.disabled]=\"disableDay ? true : null\">\r\n Day\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'weekly',\r\n 'inactivePlanBtn': type !== 'weekly',\r\n 'disabled': disableWeek\r\n }\" (click)=\"selectPlan('weekly')\" [disabled]=\"disableWeek\">\r\n Week\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'monthly',\r\n 'inactivePlanBtn': type !== 'monthly',\r\n 'disabled': disableMonth\r\n }\" (click)=\"selectPlan('monthly')\" [disabled]=\"disableMonth\">\r\n Month\r\n </button>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-8 mb-6\">\r\n\r\n <div class=\"d-flex\">\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollLeft()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 18L9 12L15 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <ul *ngIf=\"periodzone === 1 && !customOption\" #dateList\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center m-2\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon active\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"(periodzone === 2 || periodzone === 3) && !customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollRight()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <div *ngIf=\"!heatmapLoading && !heatmapNoData\">\r\n <ngb-carousel #carousel [interval]=\"0\" [pauseOnHover]=\"true\" (slide)=\"onSlideChange($event)\"\r\n [id]=\"selectedDate\">\r\n <ng-container *ngFor=\"let image of overallStoreData?.ImageURLs;let i=index;\">\r\n <ng-template ngbSlide [id]=\"'ngb-slide-'+ i\">\r\n <div class=\"w-100 image-container cursor-pointer\">\r\n <img (click)=\"concentrationHeatmap(overallStoreData?.ImageURLs)\"\r\n [src]=\"image.URL\" [alt]=\"image.streamName\" class=\"cardimg\" />\r\n <a [href]=\"image.URL\" download><svg id=\"download-icon\" width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"icon-overlay\">\r\n <g filter=\"url(#filter0_d_3822_19479)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3822_19479\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3822_19479\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3822_19479\" result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></a>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ngb-carousel>\r\n </div>\r\n <ng-container *ngIf=\"heatmapLoading\">\r\n <div class=\"row loader concheatmap 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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heatmapNoData && !heatmapLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n class=\"card-body concheatmap 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 Overall Store Concentration\r\n Heatmap</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"body me-4\">\r\n <div class=\"pt-10 m-6\">\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Total Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">{{overallStoreData?.totalFootfall?.toLocaleString('en-US',\r\n { minimumFractionDigits: 0 }) || '--' }}</span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Concentration %\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <span class=\"table-title\">{{ roundof(overallStoreData?.concentrationRate) || '0' }} %</span> -->\r\n <span class=\"table-title\">{{\r\n overallStoreData?.concentrationRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Bounced Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.bouncedCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div></div>\r\n <div></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Engagers\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.engagersCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Avg. Dwell Time\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.avgDwellTime?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }} mins\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Age Range\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.ageRange?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Male Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.maleRate?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Female Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.femaleRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Trolley\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.trolleyRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Basket\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.basketRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <!-- <div class=\"footer me-2\">\r\n <button (click)=\"openModel()\" class=\"btn btn-light-primary mb-2 w-100\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_17126_73367)\">\r\n <path\r\n d=\"M4.16797 1.6665L4.3263 2.44984C4.43977 3.01234 4.69653 3.53603 5.07173 3.97021C5.44692 4.40439 5.92786 4.73435 6.46797 4.92817L6.66797 4.99984L6.46797 5.0715C5.92786 5.26532 5.44692 5.59529 5.07173 6.02947C4.69653 6.46365 4.43977 6.98733 4.3263 7.54984L4.16797 8.33317L4.00964 7.54984C3.89617 6.98733 3.63941 6.46365 3.26421 6.02947C2.88901 5.59529 2.40808 5.26532 1.86797 5.0715L1.66797 4.99984L1.86797 4.92817C2.40808 4.73435 2.88901 4.40439 3.26421 3.97021C3.63941 3.53603 3.89617 3.01234 4.00964 2.44984L4.16797 1.6665ZM6.66797 13.3332L6.85963 14.3965C6.9094 14.6739 7.02869 14.9341 7.20634 15.1528C7.38399 15.3716 7.61421 15.5417 7.87547 15.6473L8.33464 15.8332L7.87547 16.019C7.61416 16.1244 7.38384 16.2944 7.20605 16.513C7.02825 16.7316 6.90878 16.9917 6.8588 17.269L6.66797 18.3332L6.4763 17.2698C6.42653 16.9925 6.30725 16.7322 6.1296 16.5135C5.95194 16.2947 5.72173 16.1246 5.46047 16.019L5.0013 15.8332L5.46047 15.6473C5.72178 15.5419 5.9521 15.372 6.12989 15.1534C6.30769 14.9348 6.42716 14.6746 6.47714 14.3973L6.66797 13.3332ZM13.3346 2.49984L13.798 4.7115C14.0341 5.83907 14.5584 6.88621 15.3198 7.75081C16.0811 8.61541 17.0535 9.26796 18.1421 9.64484L19.168 9.99984L18.1421 10.3548C17.0535 10.7317 16.0811 11.3843 15.3198 12.2489C14.5584 13.1135 14.0341 14.1606 13.798 15.2882L13.3346 17.4998L12.8713 15.2882C12.6352 14.1606 12.1109 13.1135 11.3495 12.2489C10.5882 11.3843 9.61578 10.7317 8.52714 10.3548L7.5013 9.99984L8.52714 9.64484C9.61578 9.26796 10.5882 8.61541 11.3495 7.75081C12.1109 6.88621 12.6352 5.83907 12.8713 4.7115L13.3346 2.49984Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17126_73367\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span> View AI Insights</span>\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"ai-modal p-4\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"ai-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\"\r\n fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M21 18L21.19 18.94C21.3262 19.615 21.6343 20.2434 22.0845 20.7644C22.5347 21.2855 23.1119 21.6814 23.76 21.914L24 22L23.76 22.086C23.1119 22.3186 22.5347 22.7145 22.0845 23.2356C21.6343 23.7566 21.3262 24.385 21.19 25.06L21 26L20.81 25.06C20.6738 24.385 20.3657 23.7566 19.9155 23.2356C19.4653 22.7145 18.8881 22.3186 18.24 22.086L18 22L18.24 21.914C18.8881 21.6814 19.4653 21.2855 19.9155 20.7644C20.3657 20.2434 20.6738 19.615 20.81 18.94L21 18ZM24 32L24.23 33.276C24.2897 33.6088 24.4329 33.9211 24.646 34.1836C24.8592 34.4461 25.1355 34.6503 25.449 34.777L26 35L25.449 35.223C25.1354 35.3495 24.859 35.5535 24.6457 35.8158C24.4323 36.0781 24.289 36.3902 24.229 36.723L24 38L23.77 36.724C23.7103 36.3912 23.5671 36.0789 23.354 35.8164C23.1408 35.5539 22.8645 35.3497 22.551 35.223L22 35L22.551 34.777C22.8646 34.6505 23.141 34.4465 23.3543 34.1842C23.5677 33.9219 23.711 33.6098 23.771 33.277L24 32ZM32 19L32.556 21.654C32.8394 23.0071 33.4685 24.2636 34.3821 25.3012C35.2958 26.3387 36.4626 27.1217 37.769 27.574L39 28L37.769 28.426C36.4626 28.8783 35.2958 29.6613 34.3821 30.6988C33.4685 31.7364 32.8394 32.9929 32.556 34.346L32 37L31.444 34.346C31.1606 32.9929 30.5315 31.7364 29.6179 30.6988C28.7042 29.6613 27.5374 28.8783 26.231 28.426L25 28L26.231 27.574C27.5374 27.1217 28.7042 26.3387 29.6179 25.3012C30.5315 24.2636 31.1606 23.0071 31.444 21.654L32 19Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></div>\r\n <h5 class=\"mb-0 fw-semibold\">AI Insights for &lt;Overall Zones&gt;</h5>\r\n </div>\r\n\r\n <button class=\"btn btn-sm btn-icon\" (click)=\"model.dismiss()\">\r\n \u2715\r\n </button>\r\n </div>\r\n\r\n <!-- LIST -->\r\n <div *ngIf=\"viewImage?.mobileusagedetection || viewImage?.queueManagement || viewImage?.customerunattended || viewImage?.staffleftinthemiddle\" class=\"ai-card\">\r\n\r\n <div *ngIf=\"viewImage?.mobileusagedetection\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M16 1C7.716 1 1 7.716 1 16C1 24.2845 7.716 31 16 31C24.284 31 31 24.284 31 16C31 7.716 24.284 1 16 1ZM28 16C28.0029 18.6648 27.1151 21.2542 25.4775 23.3565L20.8045 18.6835V9.3875C20.8045 8.344 19.944 7.4985 18.8825 7.4985H13.1165C12.1545 7.4985 11.3645 8.1955 11.224 9.1025L8.6435 6.5225C10.7458 4.88494 13.3352 3.99707 16 4C22.627 4 28 9.3725 28 16ZM12.156 21.4795V14.277L19.3575 21.4795H12.156ZM16.576 22.9845C16.576 23.297 16.3185 23.551 16 23.551C15.6815 23.551 15.4235 23.297 15.4235 22.9845C15.4235 22.672 15.682 22.418 16 22.418C16.3185 22.418 16.576 22.672 16.576 22.9845ZM12.156 10.0345V9.3875H19.844V17.7225L12.156 10.0345ZM14.8195 8.4245C14.8195 8.294 14.927 8.188 15.0595 8.188H16.9395C17.0725 8.188 17.1805 8.294 17.1805 8.4245C17.1805 8.555 17.072 8.661 16.9395 8.661H15.0595C14.9964 8.66101 14.9359 8.6362 14.891 8.59195C14.8461 8.54769 14.8204 8.48754 14.8195 8.4245ZM4 16C3.99718 13.3353 4.88505 10.7462 6.5225 8.644L11.1945 13.3165V22.6125C11.1945 23.6565 12.055 24.502 13.1165 24.502H18.8825C19.8445 24.502 20.6345 23.8045 20.775 22.8975L23.355 25.4775C21.2531 27.1147 18.6643 28.0026 16 28C9.3725 28 4 22.628 4 16Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n <span class=\"title\">Mobile Detection</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.mobileusagedetection ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.queueManagement\" class=\"ai-row row \">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"26\"\r\n viewBox=\"0 0 26 26\" fill=\"none\">\r\n <path\r\n d=\"M6.28571 1.71429C5.60373 1.71429 4.94968 1.9852 4.46744 2.46744C3.9852 2.94968 3.71429 3.60373 3.71429 4.28572C3.71429 4.9677 3.9852 5.62175 4.46744 6.10399C4.94968 6.58623 5.60373 6.85714 6.28571 6.85714C6.9677 6.85714 7.62175 6.58623 8.10399 6.10399C8.58623 5.62175 8.85714 4.9677 8.85714 4.28572C8.85714 3.60373 8.58623 2.94968 8.10399 2.46744C7.62175 1.9852 6.9677 1.71429 6.28571 1.71429ZM2 4.28572C2 3.14907 2.45153 2.05898 3.25526 1.25526C4.05898 0.45153 5.14907 4.12584e-07 6.28571 4.12584e-07C7.42236 4.12584e-07 8.51244 0.45153 9.31617 1.25526C10.1199 2.05898 10.5714 3.14907 10.5714 4.28572C10.5714 5.42236 10.1199 6.51245 9.31617 7.31617C8.51244 8.1199 7.42236 8.57143 6.28571 8.57143C5.14907 8.57143 4.05898 8.1199 3.25526 7.31617C2.45153 6.51245 2 5.42236 2 4.28572ZM0 12.8571C0 12.1752 0.270918 11.5211 0.753154 11.0389C1.23539 10.5566 1.88944 10.2857 2.57143 10.2857H10C10.682 10.2857 11.336 10.5566 11.8183 11.0389C12.3005 11.5211 12.5714 12.1752 12.5714 12.8571V18.8571C12.5714 20.5242 11.9092 22.123 10.7304 23.3018C9.55159 24.4806 7.95279 25.1429 6.28571 25.1429C4.61864 25.1429 3.01984 24.4806 1.84104 23.3018C0.662243 22.123 0 20.5242 0 18.8571V12.8571ZM2.57143 12C2.3441 12 2.12608 12.0903 1.96534 12.2511C1.80459 12.4118 1.71429 12.6298 1.71429 12.8571V18.8571C1.71429 20.0696 2.19592 21.2323 3.05323 22.0896C3.91054 22.9469 5.0733 23.4286 6.28571 23.4286C7.49813 23.4286 8.66089 22.9469 9.5182 22.0896C10.3755 21.2323 10.8571 20.0696 10.8571 18.8571V12.8571C10.8571 12.6298 10.7668 12.4118 10.6061 12.2511C10.4453 12.0903 10.2273 12 10 12H2.57143ZM12.5726 8.57143C11.7736 8.57303 10.9903 8.35007 10.312 7.928C10.696 7.50514 11.0137 7.01943 11.2491 6.49029C11.6393 6.72435 12.0847 6.85067 12.5397 6.85637C12.9946 6.86207 13.443 6.74694 13.8389 6.52272C14.2349 6.29851 14.5642 5.97325 14.7934 5.58014C15.0226 5.18704 15.1433 4.74016 15.1433 4.28514C15.1433 3.83012 15.0226 3.38325 14.7934 2.99014C14.5642 2.59704 14.2349 2.27178 13.8389 2.04756C13.443 1.82335 12.9946 1.70822 12.5397 1.71392C12.0847 1.71961 11.6393 1.84594 11.2491 2.08C11.014 1.55497 10.6978 1.07019 10.312 0.643429C10.8754 0.294038 11.5123 0.0801325 12.1724 0.0185371C12.8325 -0.0430583 13.4979 0.0493359 14.1163 0.288453C14.7346 0.527569 15.2891 0.906888 15.736 1.39657C16.183 1.88626 16.5102 2.47296 16.692 3.11054C16.8738 3.74811 16.9052 4.41917 16.7837 5.07093C16.6623 5.72269 16.3912 6.33738 15.992 6.86666C15.5927 7.39594 15.0761 7.82538 14.4828 8.12119C13.8894 8.417 13.2356 8.57112 12.5726 8.57143ZM12.5726 25.1429C11.929 25.1434 11.2892 25.0451 10.6754 24.8514C11.2343 24.4425 11.7332 23.9574 12.1577 23.4103C12.2949 23.4225 12.4331 23.4286 12.5726 23.4286C13.785 23.4286 14.9478 22.9469 15.8051 22.0896C16.6624 21.2323 17.144 20.0696 17.144 18.8571V12.8571C17.144 12.6298 17.0537 12.4118 16.893 12.2511C16.7322 12.0903 16.5142 12 16.2869 12H13.616C13.4634 11.3552 13.1405 10.7632 12.6811 10.2857H16.2869C16.9688 10.2857 17.6229 10.5566 18.1051 11.0389C18.5874 11.5211 18.8583 12.1752 18.8583 12.8571V18.8571C18.8583 19.6826 18.6957 20.5 18.3798 21.2626C18.0639 22.0252 17.6009 22.7181 17.0172 23.3018C16.4336 23.8855 15.7406 24.3485 14.978 24.6644C14.2154 24.9803 13.398 25.1429 12.5726 25.1429ZM16.5977 7.92686C17.2467 8.32977 17.9917 8.55188 18.7554 8.5702C19.5191 8.58851 20.2738 8.40237 20.9414 8.03103C21.609 7.6597 22.1652 7.11667 22.5524 6.45817C22.9396 5.79967 23.1438 5.04963 23.1438 4.28572C23.1438 3.5218 22.9396 2.77176 22.5524 2.11326C22.1652 1.45476 21.609 0.911734 20.9414 0.540398C20.2738 0.169062 19.5191 -0.0170835 18.7554 0.00123229C17.9917 0.019548 17.2467 0.24166 16.5977 0.644572C16.9817 1.06743 17.2994 1.552 17.5349 2.08114C17.925 1.84687 18.3704 1.72035 18.8255 1.7145C19.2806 1.70865 19.729 1.82369 20.1251 2.04786C20.5212 2.27203 20.8507 2.59731 21.0799 2.99048C21.3092 3.38364 21.43 3.8306 21.43 4.28572C21.43 4.74083 21.3092 5.18779 21.0799 5.58095C20.8507 5.97412 20.5212 6.29939 20.1251 6.52357C19.729 6.74774 19.2806 6.86278 18.8255 6.85693C18.3704 6.85108 17.925 6.72456 17.5349 6.49029C17.2997 7.01532 16.9835 7.5001 16.5977 7.92686ZM18.4423 23.4103C18.5794 23.4217 18.7185 23.4278 18.8594 23.4286C20.0718 23.4286 21.2346 22.9469 22.0919 22.0896C22.9492 21.2323 23.4309 20.0696 23.4309 18.8571V12.8571C23.4309 12.6298 23.3406 12.4118 23.1798 12.2511C23.0191 12.0903 22.801 12 22.5737 12H19.9017C19.7491 11.3552 19.4262 10.7632 18.9669 10.2857H22.5737C23.2557 10.2857 23.9098 10.5566 24.392 11.0389C24.8742 11.5211 25.1451 12.1752 25.1451 12.8571V18.8571C25.1455 19.8454 24.9128 20.8197 24.466 21.7012C24.0192 22.5826 23.3709 23.3463 22.5736 23.9302C21.7764 24.5141 20.8527 24.9019 19.8775 25.0619C18.9024 25.222 17.9032 25.1499 16.9611 24.8514C17.5196 24.4424 18.0181 23.9573 18.4423 23.4103Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n\r\n <span class=\"title\">Queue Management</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <span class=\"badge mt-2\">{{viewImage?.queueManagement ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.customerunattended\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M12.3062 12.3076C14.6002 12.3076 16.46 10.4479 16.46 8.15381C16.46 5.85972 14.6002 4 12.3062 4C10.0121 4 8.15234 5.85972 8.15234 8.15381C8.15234 10.4479 10.0121 12.3076 12.3062 12.3076Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M21.9999 27.9999C25.3136 27.9999 27.9999 25.3136 27.9999 21.9999C27.9999 18.6863 25.3136 16 21.9999 16C18.6863 16 16 18.6863 16 21.9999C16 25.3136 18.6863 27.9999 21.9999 27.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M17.7538 26.2459L26.246 17.7537M14.1538 15.2798C12.9364 14.9988 11.6713 14.9966 10.453 15.2733C9.23463 15.5501 8.09461 16.0987 7.11815 16.8781C6.14168 17.6574 5.35403 18.6475 4.81408 19.7742C4.27413 20.9008 3.99585 22.135 4.00005 23.3844V26.1536H11.3846\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n\r\n\r\n <span class=\"title\">Customer Unattended</span>\r\n\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.customerunattended ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.staffleftinthemiddle\" class=\"row ai-row\">\r\n <div class=\"col-md-6 left\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"26\"\r\n viewBox=\"0 0 30 26\" fill=\"none\">\r\n <path\r\n d=\"M6.7207 24.6533L6.80371 24.998L1.31738 25C1.17293 25 1 24.867 1 24.6406C1.0001 21.6993 2.70973 19.1869 5.12891 18.083L6.7207 24.6533ZM11.3115 24.665L11.3975 24.9971H8.60254L8.68848 24.6699L10 19.6426L11.3115 24.665ZM14.8701 18.0781C17.2897 19.1819 18.9999 21.6941 19 24.6357C19 24.8337 18.868 24.9606 18.7383 24.9893L18.6826 24.9951L13.1943 24.9961L13.2793 24.6484L14.8701 18.0781ZM11.166 16.6826L10.0186 18.0645L9.99707 18.0889L9.98145 18.0693L8.83398 16.6875H9.5332V16.6826H11.166ZM10 2C10.6218 2 11.2382 2.12678 11.8145 2.37305C12.3909 2.61939 12.917 2.981 13.3613 3.43945C13.8057 3.89796 14.1602 4.44377 14.4023 5.04688C14.6445 5.64998 14.7695 6.29761 14.7695 6.95215C14.7695 7.60665 14.6444 8.25434 14.4023 8.85742C14.1602 9.46055 13.8057 10.0073 13.3613 10.4658C12.917 10.9242 12.3908 11.2859 11.8145 11.5322C11.2382 11.7784 10.6218 11.9043 10 11.9043C9.37823 11.9043 8.76179 11.7784 8.18555 11.5322C7.60924 11.2859 7.08297 10.9242 6.63867 10.4658C6.19426 10.0073 5.83979 9.46055 5.59766 8.85742C5.35559 8.25434 5.23047 7.60665 5.23047 6.95215C5.2305 6.29761 5.35553 5.64998 5.59766 5.04688C5.83979 4.44377 6.19428 3.89796 6.63867 3.43945C7.08302 2.981 7.60913 2.61939 8.18555 2.37305C8.68995 2.15751 9.22496 2.03336 9.76758 2.00586L10 2Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" />\r\n <path d=\"M23.3894 18.6693L28.0027 14.0026L23.3894 9.33594M26.6667 14.0026H16.6641\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"square\" />\r\n </svg></span>\r\n <span class=\"title\">Staff left in the Middle</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.staffleftinthemiddle ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!viewImage?.mobileusagedetection && !viewImage?.queueManagement && !viewImage?.customerunattended && !viewImage?.staffleftinthemiddle\"\r\n class=\"text-center py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n 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\">No AI Insights available for the selected zone.</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.table-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;width:200px;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.exportwidth{width:40%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.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}}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.overalltext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.borderdashed{border-bottom:1px solid var(--Gray-200, #EAECF0)}.conc{width:110%}.overallstore{width:155%}table td{height:70px!important;align-items:center;gap:12px;align-self:stretch}table tr{vertical-align:middle}::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:-4%;margin-left:15%}.category_active{border-bottom:3px solid #009EF7!important;border-radius:3px;margin-bottom:3px!important}.timer_active{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardimg{width:100%;height:350px}.form-control:disabled{background-color:#f9fafb!important}.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}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.rotate{transform:rotate(180deg)}.no-wrap-list{white-space:nowrap;overflow-x:auto;overflow-y:hidden;padding:0;margin:0;display:flex;flex-wrap:nowrap;-ms-overflow-style:none;scrollbar-width:none}.no-wrap-list::-webkit-scrollbar{display:none}.concheatmap{margin-top:10%}.right-border{border-right:1px solid #D0D5DD;padding-right:15px}.image-container{position:relative;display:inline-block}::ng-deep .carousel-control-next{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent}::ng-deep .carousel-control-prev{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent!important}::ng-deep .carousel-control-next-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}::ng-deep .carousel-control-prev-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.icon-overlay{position:absolute;cursor:pointer;top:10px;right:10px}::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:8px;height:8px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#009bf3;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}::ng-deep .custom-tooltip{white-space:pre-line;max-width:500px}.head-title{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.zone-compare-title{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.border-full{border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.shopper-title{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.zone-selector{padding:10px;max-width:300px;position:relative;font-family:Arial,sans-serif}.title{font-weight:700;margin-bottom:8px;display:block}.zone-box{display:flex;align-items:center;justify-content:space-between;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);padding:6px 10px;margin-bottom:6px}.remove-btn{border:none;background:transparent;cursor:pointer;font-weight:700;font-size:14px}.dropdown-input{position:relative;margin-bottom:8px}.dropdown-input input{width:100%;padding:6px;border:1px solid #51C1FF;border-radius:4px}.dropdown-list{position:absolute;top:100%;left:0;width:100%;max-height:150px;overflow-y:auto;border:1px solid #ccc;background:#fff;z-index:10;border-radius:0 0 4px 4px}.dropdown-list li{padding:8px;cursor:pointer}.dropdown-list li:hover{background-color:#e8f4ff}.limit-warning{color:red;font-size:12px;margin-bottom:8px;position:absolute;bottom:32px;left:30px;right:0}.actions{display:flex;justify-content:space-between;gap:8px}.actions button{padding:6px 12px;border:none;border-radius:4px;cursor:pointer}.apply-btn{background-color:#addbff}.apply-btn:disabled{opacity:.5;cursor:not-allowed}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.border-1{padding:8px;border-radius:12px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important}.shopper-ellipse1{border-radius:24px;background:var(--Primary-50, #EAF8FF);height:150px;padding:8px}.perctage{color:#475467!important}.minsbadge{border-radius:8px;border:1px solid #D0D5DD;background:#fff;box-shadow:0 1px 2px #1018280d;display:flex;align-items:center;gap:4px;z-index:1;font-size:12px}.minsbadgeprimary{padding:4px 15px;justify-content:center;align-items:center;gap:4px;border-radius:16px!important;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.toggle-icon{width:18px;cursor:pointer;font-weight:700}.child-row{background-color:#f6fcff}.concentration-table{width:100%;border-collapse:collapse}.concentration-table th{text-align:left;font-weight:600;padding:12px;border-bottom:1px solid #e5e7eb}.concentration-table td{padding:12px;border-bottom:1px solid #f1f5f9}.parent-row{background:#fff;font-weight:500}.child-row{background:F6FCFF}.child-zone{padding-left:36px;color:#009bf3}.toggle{display:inline-block;width:18px;cursor:pointer;font-weight:700;margin-right:6px}.zone-name{color:#009bf3;cursor:pointer}.underline{text-decoration:underline}.btn-light-primary{background-color:var(--Primary-50, #EAF8FF)!important;border-radius:8px;border-width:1px;padding:8px 14px;color:var(--Primary-700, #009BF3)}.btn.btn-light-primary:focus:not(.btn-active),.btn.btn-light-primary:hover:not(.btn-active),.btn.btn-light-primary:active:not(.btn-active){background-color:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important}.ai-modal{background:#fff;border-radius:12px}.ai-icon{width:32px;height:32px;background:#eef4ff;border-radius:50%;display:flex;align-items:center;justify-content:center}.ai-card{border-radius:10px;padding:8px}.ai-row{padding:8px;border-radius:8px;border:1px solid #e5e7eb;margin-bottom:7px}.ai-row:last-child{margin-bottom:0}.left{display:flex;align-items:center;gap:10px}.row-icon{font-size:18px}.title{font-weight:500}.badge{background:#f1f5f9;color:#475569;font-size:12px;padding:4px 10px;border-radius:16px}.view-link{font-weight:600;font-size:14px;line-height:20px;letter-spacing:0%;text-transform:capitalize}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: i1.NgbCarousel, selector: "ngb-carousel", inputs: ["animation", "activeId", "interval", "wrap", "keyboard", "pauseOnHover", "pauseOnFocus", "showNavigationArrows", "showNavigationIndicators"], outputs: ["slide", "slid"], exportAs: ["ngbCarousel"] }, { kind: "directive", type: i1.NgbSlide, selector: "ng-template[ngbSlide]", inputs: ["id"], outputs: ["slid"] }] });
458
458
  }
459
459
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ZoneConcentrationComponent, decorators: [{
460
460
  type: Component,
461
- args: [{ selector: 'lib-zone-concentration', providers: [NgbCarouselConfig], template: "<div class=\"card\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-5 right-border my-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header ps-3 pe-1\">\r\n <h3 class=\"card-title align-items-start flex-column ms-1\">\r\n <span class=\"headtext\">Concentration Summary <span\r\n ngbTooltip=\"Summary of overall zones at the store\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></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 svg-icon-1 position-absolute ms-3\">\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 <!-- [disabled]=\"searchDisabled\" -->\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-10 invoicesearch\"\r\n placeholder=\"Search...\" autocomplete=\"off\" (keyup.enter)=\"searchField()\"\r\n />\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader ms-2\" [disabled]=\"!zoneConcentrationData.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <!-- <span class=\"ms-2\">Export</span> -->\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <div *ngIf=\"!zonesummaryNoData && !zonesummaryLoading\" class=\"table-container m-4\">\r\n <table class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th class=\"p-1\"></th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <svg [ngClass]=\"sortColumName === 'zoneName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'zoneName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('footfallCount')\">\r\n Footfall <br>(Actuals)\r\n <svg [ngClass]=\"sortColumName === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('avgDwellTime')\">\r\n Dwell Time <br>(Average)\r\n <svg [ngClass]=\"sortColumName === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"conc cursor-pointer\" (click)=\"sortData('concentrationRate')\">\r\n Concentration\r\n <svg [ngClass]=\"sortColumName === 'concentrationRate' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'concentrationRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"!zonesummaryLoading && !zonesummaryNoData\" class=\"table-responsive\">\r\n <ng-container *ngFor=\"let zone of zoneConcentrationData\">\r\n \r\n <!-- \u2705 PARENT ROW -->\r\n <tr>\r\n <td class=\"p-1\"> <span *ngIf=\"zone.rows?.length\" class=\"toggle-icon me-2\"\r\n (click)=\"toggleZone(zone.zoneName, $event)\">\r\n \r\n <!-- MINUS -->\r\n <svg *ngIf=\"isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10H15.8346\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <!-- PLUS -->\r\n <svg *ngIf=\"!isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0013 4.1665V15.8332M4.16797 9.99984H15.8346\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n </span></td>\r\n <td>\r\n <div class=\"table-title-primary overallstore mb-2 d-flex align-items-center\">\r\n <!-- ZONE NAME -->\r\n <span class=\"text-capitalize cursor-pointer\">\r\n <a (click)=\"onZoneClick(zone.zoneName)\">\r\n {{ zone.zoneName || '--' }}\r\n </a>\r\n </span>\r\n \r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.footfallCount?.toLocaleString('en-US') || '--' }}\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.avgDwellTime?.toLocaleString('en-US') || '--' }} mins\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.concentrationRate?.toLocaleString('en-US') || '--' }}%\r\n </div>\r\n </td>\r\n </tr>\r\n \r\n <!-- \u2705 CHILD ROWS -->\r\n <tr *ngFor=\"let row of zone.rows\" [hidden]=\"!isExpanded(zone.zoneName)\" class=\"child-row\">\r\n <td class=\"p-1\"></td>\r\n <td class=\"ps-15 text-primary underline text-capitalize\">\r\n {{ row.toZone }}\r\n </td>\r\n <td>{{ row.footfallCount }}</td>\r\n <td>{{ row.avgDwellTime }} mins</td>\r\n <td>{{ row.concentration }}%</td>\r\n </tr>\r\n \r\n </ng-container>\r\n \r\n \r\n </tbody>\r\n </table>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-18\">\r\n <div\r\n 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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-7\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">{{ zoneName || '' }} Concentration Heatmap <span ngbTooltip=\"Density heatmap\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n </h3>\r\n\r\n <div class=\"card-toolbar text-nowrap me-4\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'daily',\r\n 'inactivePlanBtn': type !== 'daily',\r\n 'disabled': disableDay\r\n }\" (click)=\"selectPlan('daily')\" [attr.disabled]=\"disableDay ? true : null\">\r\n Day\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'weekly',\r\n 'inactivePlanBtn': type !== 'weekly',\r\n 'disabled': disableWeek\r\n }\" (click)=\"selectPlan('weekly')\" [disabled]=\"disableWeek\">\r\n Week\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'monthly',\r\n 'inactivePlanBtn': type !== 'monthly',\r\n 'disabled': disableMonth\r\n }\" (click)=\"selectPlan('monthly')\" [disabled]=\"disableMonth\">\r\n Month\r\n </button>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-8 mb-6\">\r\n\r\n <div class=\"d-flex\">\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollLeft()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 18L9 12L15 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <ul *ngIf=\"periodzone === 1 && !customOption\" #dateList\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center m-2\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon active\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"(periodzone === 2 || periodzone === 3) && !customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollRight()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <div *ngIf=\"!heatmapLoading && !heatmapNoData\">\r\n <ngb-carousel #carousel [interval]=\"0\" [pauseOnHover]=\"true\" (slide)=\"onSlideChange($event)\"\r\n [id]=\"selectedDate\">\r\n <ng-container *ngFor=\"let image of overallStoreData?.ImageURLs;let i=index;\">\r\n <ng-template ngbSlide [id]=\"'ngb-slide-'+ i\">\r\n <div class=\"w-100 image-container cursor-pointer\">\r\n <img (click)=\"concentrationHeatmap(overallStoreData?.ImageURLs)\"\r\n [src]=\"image.URL\" [alt]=\"image.streamName\" class=\"cardimg\" />\r\n <a [href]=\"image.URL\" download><svg id=\"download-icon\" width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"icon-overlay\">\r\n <g filter=\"url(#filter0_d_3822_19479)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3822_19479\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3822_19479\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3822_19479\" result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></a>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ngb-carousel>\r\n </div>\r\n <ng-container *ngIf=\"heatmapLoading\">\r\n <div class=\"row loader concheatmap 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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heatmapNoData && !heatmapLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n class=\"card-body concheatmap 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 Overall Store Concentration\r\n Heatmap</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"body me-4\">\r\n <div class=\"pt-10 m-6\">\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Total Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">{{overallStoreData?.totalFootfall?.toLocaleString('en-US',\r\n { minimumFractionDigits: 0 }) || '--' }}</span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Concentration %\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <span class=\"table-title\">{{ roundof(overallStoreData?.concentrationRate) || '0' }} %</span> -->\r\n <span class=\"table-title\">{{\r\n overallStoreData?.concentrationRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Bounced Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.bouncedCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div></div>\r\n <div></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Engagers\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.engagersCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Avg. Dwell Time\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.avgDwellTime?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }} mins\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Age Range\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.ageRange?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Male Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.maleRate?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Female Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.femaleRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Trolley\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.trolleyRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Basket\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.basketRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"footer me-2\">\r\n <button (click)=\"openModel()\" class=\"btn btn-light-primary mb-2 w-100\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_17126_73367)\">\r\n <path\r\n d=\"M4.16797 1.6665L4.3263 2.44984C4.43977 3.01234 4.69653 3.53603 5.07173 3.97021C5.44692 4.40439 5.92786 4.73435 6.46797 4.92817L6.66797 4.99984L6.46797 5.0715C5.92786 5.26532 5.44692 5.59529 5.07173 6.02947C4.69653 6.46365 4.43977 6.98733 4.3263 7.54984L4.16797 8.33317L4.00964 7.54984C3.89617 6.98733 3.63941 6.46365 3.26421 6.02947C2.88901 5.59529 2.40808 5.26532 1.86797 5.0715L1.66797 4.99984L1.86797 4.92817C2.40808 4.73435 2.88901 4.40439 3.26421 3.97021C3.63941 3.53603 3.89617 3.01234 4.00964 2.44984L4.16797 1.6665ZM6.66797 13.3332L6.85963 14.3965C6.9094 14.6739 7.02869 14.9341 7.20634 15.1528C7.38399 15.3716 7.61421 15.5417 7.87547 15.6473L8.33464 15.8332L7.87547 16.019C7.61416 16.1244 7.38384 16.2944 7.20605 16.513C7.02825 16.7316 6.90878 16.9917 6.8588 17.269L6.66797 18.3332L6.4763 17.2698C6.42653 16.9925 6.30725 16.7322 6.1296 16.5135C5.95194 16.2947 5.72173 16.1246 5.46047 16.019L5.0013 15.8332L5.46047 15.6473C5.72178 15.5419 5.9521 15.372 6.12989 15.1534C6.30769 14.9348 6.42716 14.6746 6.47714 14.3973L6.66797 13.3332ZM13.3346 2.49984L13.798 4.7115C14.0341 5.83907 14.5584 6.88621 15.3198 7.75081C16.0811 8.61541 17.0535 9.26796 18.1421 9.64484L19.168 9.99984L18.1421 10.3548C17.0535 10.7317 16.0811 11.3843 15.3198 12.2489C14.5584 13.1135 14.0341 14.1606 13.798 15.2882L13.3346 17.4998L12.8713 15.2882C12.6352 14.1606 12.1109 13.1135 11.3495 12.2489C10.5882 11.3843 9.61578 10.7317 8.52714 10.3548L7.5013 9.99984L8.52714 9.64484C9.61578 9.26796 10.5882 8.61541 11.3495 7.75081C12.1109 6.88621 12.6352 5.83907 12.8713 4.7115L13.3346 2.49984Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17126_73367\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span> View AI Insights</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"ai-modal p-4\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"ai-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\"\r\n fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M21 18L21.19 18.94C21.3262 19.615 21.6343 20.2434 22.0845 20.7644C22.5347 21.2855 23.1119 21.6814 23.76 21.914L24 22L23.76 22.086C23.1119 22.3186 22.5347 22.7145 22.0845 23.2356C21.6343 23.7566 21.3262 24.385 21.19 25.06L21 26L20.81 25.06C20.6738 24.385 20.3657 23.7566 19.9155 23.2356C19.4653 22.7145 18.8881 22.3186 18.24 22.086L18 22L18.24 21.914C18.8881 21.6814 19.4653 21.2855 19.9155 20.7644C20.3657 20.2434 20.6738 19.615 20.81 18.94L21 18ZM24 32L24.23 33.276C24.2897 33.6088 24.4329 33.9211 24.646 34.1836C24.8592 34.4461 25.1355 34.6503 25.449 34.777L26 35L25.449 35.223C25.1354 35.3495 24.859 35.5535 24.6457 35.8158C24.4323 36.0781 24.289 36.3902 24.229 36.723L24 38L23.77 36.724C23.7103 36.3912 23.5671 36.0789 23.354 35.8164C23.1408 35.5539 22.8645 35.3497 22.551 35.223L22 35L22.551 34.777C22.8646 34.6505 23.141 34.4465 23.3543 34.1842C23.5677 33.9219 23.711 33.6098 23.771 33.277L24 32ZM32 19L32.556 21.654C32.8394 23.0071 33.4685 24.2636 34.3821 25.3012C35.2958 26.3387 36.4626 27.1217 37.769 27.574L39 28L37.769 28.426C36.4626 28.8783 35.2958 29.6613 34.3821 30.6988C33.4685 31.7364 32.8394 32.9929 32.556 34.346L32 37L31.444 34.346C31.1606 32.9929 30.5315 31.7364 29.6179 30.6988C28.7042 29.6613 27.5374 28.8783 26.231 28.426L25 28L26.231 27.574C27.5374 27.1217 28.7042 26.3387 29.6179 25.3012C30.5315 24.2636 31.1606 23.0071 31.444 21.654L32 19Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></div>\r\n <h5 class=\"mb-0 fw-semibold\">AI Insights for &lt;Overall Zones&gt;</h5>\r\n </div>\r\n\r\n <button class=\"btn btn-sm btn-icon\" (click)=\"model.dismiss()\">\r\n \u2715\r\n </button>\r\n </div>\r\n\r\n <!-- LIST -->\r\n <div *ngIf=\"viewImage?.mobileusagedetection || viewImage?.queueManagement || viewImage?.customerunattended || viewImage?.staffleftinthemiddle\" class=\"ai-card\">\r\n\r\n <div *ngIf=\"viewImage?.mobileusagedetection\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M16 1C7.716 1 1 7.716 1 16C1 24.2845 7.716 31 16 31C24.284 31 31 24.284 31 16C31 7.716 24.284 1 16 1ZM28 16C28.0029 18.6648 27.1151 21.2542 25.4775 23.3565L20.8045 18.6835V9.3875C20.8045 8.344 19.944 7.4985 18.8825 7.4985H13.1165C12.1545 7.4985 11.3645 8.1955 11.224 9.1025L8.6435 6.5225C10.7458 4.88494 13.3352 3.99707 16 4C22.627 4 28 9.3725 28 16ZM12.156 21.4795V14.277L19.3575 21.4795H12.156ZM16.576 22.9845C16.576 23.297 16.3185 23.551 16 23.551C15.6815 23.551 15.4235 23.297 15.4235 22.9845C15.4235 22.672 15.682 22.418 16 22.418C16.3185 22.418 16.576 22.672 16.576 22.9845ZM12.156 10.0345V9.3875H19.844V17.7225L12.156 10.0345ZM14.8195 8.4245C14.8195 8.294 14.927 8.188 15.0595 8.188H16.9395C17.0725 8.188 17.1805 8.294 17.1805 8.4245C17.1805 8.555 17.072 8.661 16.9395 8.661H15.0595C14.9964 8.66101 14.9359 8.6362 14.891 8.59195C14.8461 8.54769 14.8204 8.48754 14.8195 8.4245ZM4 16C3.99718 13.3353 4.88505 10.7462 6.5225 8.644L11.1945 13.3165V22.6125C11.1945 23.6565 12.055 24.502 13.1165 24.502H18.8825C19.8445 24.502 20.6345 23.8045 20.775 22.8975L23.355 25.4775C21.2531 27.1147 18.6643 28.0026 16 28C9.3725 28 4 22.628 4 16Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n <span class=\"title\">Mobile Detection</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.mobileusagedetection ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.queueManagement\" class=\"ai-row row \">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"26\"\r\n viewBox=\"0 0 26 26\" fill=\"none\">\r\n <path\r\n d=\"M6.28571 1.71429C5.60373 1.71429 4.94968 1.9852 4.46744 2.46744C3.9852 2.94968 3.71429 3.60373 3.71429 4.28572C3.71429 4.9677 3.9852 5.62175 4.46744 6.10399C4.94968 6.58623 5.60373 6.85714 6.28571 6.85714C6.9677 6.85714 7.62175 6.58623 8.10399 6.10399C8.58623 5.62175 8.85714 4.9677 8.85714 4.28572C8.85714 3.60373 8.58623 2.94968 8.10399 2.46744C7.62175 1.9852 6.9677 1.71429 6.28571 1.71429ZM2 4.28572C2 3.14907 2.45153 2.05898 3.25526 1.25526C4.05898 0.45153 5.14907 4.12584e-07 6.28571 4.12584e-07C7.42236 4.12584e-07 8.51244 0.45153 9.31617 1.25526C10.1199 2.05898 10.5714 3.14907 10.5714 4.28572C10.5714 5.42236 10.1199 6.51245 9.31617 7.31617C8.51244 8.1199 7.42236 8.57143 6.28571 8.57143C5.14907 8.57143 4.05898 8.1199 3.25526 7.31617C2.45153 6.51245 2 5.42236 2 4.28572ZM0 12.8571C0 12.1752 0.270918 11.5211 0.753154 11.0389C1.23539 10.5566 1.88944 10.2857 2.57143 10.2857H10C10.682 10.2857 11.336 10.5566 11.8183 11.0389C12.3005 11.5211 12.5714 12.1752 12.5714 12.8571V18.8571C12.5714 20.5242 11.9092 22.123 10.7304 23.3018C9.55159 24.4806 7.95279 25.1429 6.28571 25.1429C4.61864 25.1429 3.01984 24.4806 1.84104 23.3018C0.662243 22.123 0 20.5242 0 18.8571V12.8571ZM2.57143 12C2.3441 12 2.12608 12.0903 1.96534 12.2511C1.80459 12.4118 1.71429 12.6298 1.71429 12.8571V18.8571C1.71429 20.0696 2.19592 21.2323 3.05323 22.0896C3.91054 22.9469 5.0733 23.4286 6.28571 23.4286C7.49813 23.4286 8.66089 22.9469 9.5182 22.0896C10.3755 21.2323 10.8571 20.0696 10.8571 18.8571V12.8571C10.8571 12.6298 10.7668 12.4118 10.6061 12.2511C10.4453 12.0903 10.2273 12 10 12H2.57143ZM12.5726 8.57143C11.7736 8.57303 10.9903 8.35007 10.312 7.928C10.696 7.50514 11.0137 7.01943 11.2491 6.49029C11.6393 6.72435 12.0847 6.85067 12.5397 6.85637C12.9946 6.86207 13.443 6.74694 13.8389 6.52272C14.2349 6.29851 14.5642 5.97325 14.7934 5.58014C15.0226 5.18704 15.1433 4.74016 15.1433 4.28514C15.1433 3.83012 15.0226 3.38325 14.7934 2.99014C14.5642 2.59704 14.2349 2.27178 13.8389 2.04756C13.443 1.82335 12.9946 1.70822 12.5397 1.71392C12.0847 1.71961 11.6393 1.84594 11.2491 2.08C11.014 1.55497 10.6978 1.07019 10.312 0.643429C10.8754 0.294038 11.5123 0.0801325 12.1724 0.0185371C12.8325 -0.0430583 13.4979 0.0493359 14.1163 0.288453C14.7346 0.527569 15.2891 0.906888 15.736 1.39657C16.183 1.88626 16.5102 2.47296 16.692 3.11054C16.8738 3.74811 16.9052 4.41917 16.7837 5.07093C16.6623 5.72269 16.3912 6.33738 15.992 6.86666C15.5927 7.39594 15.0761 7.82538 14.4828 8.12119C13.8894 8.417 13.2356 8.57112 12.5726 8.57143ZM12.5726 25.1429C11.929 25.1434 11.2892 25.0451 10.6754 24.8514C11.2343 24.4425 11.7332 23.9574 12.1577 23.4103C12.2949 23.4225 12.4331 23.4286 12.5726 23.4286C13.785 23.4286 14.9478 22.9469 15.8051 22.0896C16.6624 21.2323 17.144 20.0696 17.144 18.8571V12.8571C17.144 12.6298 17.0537 12.4118 16.893 12.2511C16.7322 12.0903 16.5142 12 16.2869 12H13.616C13.4634 11.3552 13.1405 10.7632 12.6811 10.2857H16.2869C16.9688 10.2857 17.6229 10.5566 18.1051 11.0389C18.5874 11.5211 18.8583 12.1752 18.8583 12.8571V18.8571C18.8583 19.6826 18.6957 20.5 18.3798 21.2626C18.0639 22.0252 17.6009 22.7181 17.0172 23.3018C16.4336 23.8855 15.7406 24.3485 14.978 24.6644C14.2154 24.9803 13.398 25.1429 12.5726 25.1429ZM16.5977 7.92686C17.2467 8.32977 17.9917 8.55188 18.7554 8.5702C19.5191 8.58851 20.2738 8.40237 20.9414 8.03103C21.609 7.6597 22.1652 7.11667 22.5524 6.45817C22.9396 5.79967 23.1438 5.04963 23.1438 4.28572C23.1438 3.5218 22.9396 2.77176 22.5524 2.11326C22.1652 1.45476 21.609 0.911734 20.9414 0.540398C20.2738 0.169062 19.5191 -0.0170835 18.7554 0.00123229C17.9917 0.019548 17.2467 0.24166 16.5977 0.644572C16.9817 1.06743 17.2994 1.552 17.5349 2.08114C17.925 1.84687 18.3704 1.72035 18.8255 1.7145C19.2806 1.70865 19.729 1.82369 20.1251 2.04786C20.5212 2.27203 20.8507 2.59731 21.0799 2.99048C21.3092 3.38364 21.43 3.8306 21.43 4.28572C21.43 4.74083 21.3092 5.18779 21.0799 5.58095C20.8507 5.97412 20.5212 6.29939 20.1251 6.52357C19.729 6.74774 19.2806 6.86278 18.8255 6.85693C18.3704 6.85108 17.925 6.72456 17.5349 6.49029C17.2997 7.01532 16.9835 7.5001 16.5977 7.92686ZM18.4423 23.4103C18.5794 23.4217 18.7185 23.4278 18.8594 23.4286C20.0718 23.4286 21.2346 22.9469 22.0919 22.0896C22.9492 21.2323 23.4309 20.0696 23.4309 18.8571V12.8571C23.4309 12.6298 23.3406 12.4118 23.1798 12.2511C23.0191 12.0903 22.801 12 22.5737 12H19.9017C19.7491 11.3552 19.4262 10.7632 18.9669 10.2857H22.5737C23.2557 10.2857 23.9098 10.5566 24.392 11.0389C24.8742 11.5211 25.1451 12.1752 25.1451 12.8571V18.8571C25.1455 19.8454 24.9128 20.8197 24.466 21.7012C24.0192 22.5826 23.3709 23.3463 22.5736 23.9302C21.7764 24.5141 20.8527 24.9019 19.8775 25.0619C18.9024 25.222 17.9032 25.1499 16.9611 24.8514C17.5196 24.4424 18.0181 23.9573 18.4423 23.4103Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n\r\n <span class=\"title\">Queue Management</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <span class=\"badge mt-2\">{{viewImage?.queueManagement ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.customerunattended\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M12.3062 12.3076C14.6002 12.3076 16.46 10.4479 16.46 8.15381C16.46 5.85972 14.6002 4 12.3062 4C10.0121 4 8.15234 5.85972 8.15234 8.15381C8.15234 10.4479 10.0121 12.3076 12.3062 12.3076Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M21.9999 27.9999C25.3136 27.9999 27.9999 25.3136 27.9999 21.9999C27.9999 18.6863 25.3136 16 21.9999 16C18.6863 16 16 18.6863 16 21.9999C16 25.3136 18.6863 27.9999 21.9999 27.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M17.7538 26.2459L26.246 17.7537M14.1538 15.2798C12.9364 14.9988 11.6713 14.9966 10.453 15.2733C9.23463 15.5501 8.09461 16.0987 7.11815 16.8781C6.14168 17.6574 5.35403 18.6475 4.81408 19.7742C4.27413 20.9008 3.99585 22.135 4.00005 23.3844V26.1536H11.3846\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n\r\n\r\n <span class=\"title\">Customer Unattended</span>\r\n\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.customerunattended ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.staffleftinthemiddle\" class=\"row ai-row\">\r\n <div class=\"col-md-6 left\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"26\"\r\n viewBox=\"0 0 30 26\" fill=\"none\">\r\n <path\r\n d=\"M6.7207 24.6533L6.80371 24.998L1.31738 25C1.17293 25 1 24.867 1 24.6406C1.0001 21.6993 2.70973 19.1869 5.12891 18.083L6.7207 24.6533ZM11.3115 24.665L11.3975 24.9971H8.60254L8.68848 24.6699L10 19.6426L11.3115 24.665ZM14.8701 18.0781C17.2897 19.1819 18.9999 21.6941 19 24.6357C19 24.8337 18.868 24.9606 18.7383 24.9893L18.6826 24.9951L13.1943 24.9961L13.2793 24.6484L14.8701 18.0781ZM11.166 16.6826L10.0186 18.0645L9.99707 18.0889L9.98145 18.0693L8.83398 16.6875H9.5332V16.6826H11.166ZM10 2C10.6218 2 11.2382 2.12678 11.8145 2.37305C12.3909 2.61939 12.917 2.981 13.3613 3.43945C13.8057 3.89796 14.1602 4.44377 14.4023 5.04688C14.6445 5.64998 14.7695 6.29761 14.7695 6.95215C14.7695 7.60665 14.6444 8.25434 14.4023 8.85742C14.1602 9.46055 13.8057 10.0073 13.3613 10.4658C12.917 10.9242 12.3908 11.2859 11.8145 11.5322C11.2382 11.7784 10.6218 11.9043 10 11.9043C9.37823 11.9043 8.76179 11.7784 8.18555 11.5322C7.60924 11.2859 7.08297 10.9242 6.63867 10.4658C6.19426 10.0073 5.83979 9.46055 5.59766 8.85742C5.35559 8.25434 5.23047 7.60665 5.23047 6.95215C5.2305 6.29761 5.35553 5.64998 5.59766 5.04688C5.83979 4.44377 6.19428 3.89796 6.63867 3.43945C7.08302 2.981 7.60913 2.61939 8.18555 2.37305C8.68995 2.15751 9.22496 2.03336 9.76758 2.00586L10 2Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" />\r\n <path d=\"M23.3894 18.6693L28.0027 14.0026L23.3894 9.33594M26.6667 14.0026H16.6641\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"square\" />\r\n </svg></span>\r\n <span class=\"title\">Staff left in the Middle</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.staffleftinthemiddle ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!viewImage?.mobileusagedetection && !viewImage?.queueManagement && !viewImage?.customerunattended && !viewImage?.staffleftinthemiddle\"\r\n class=\"text-center py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n 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\">No AI Insights available for the selected zone.</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.table-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;width:200px;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.exportwidth{width:40%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.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}}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.overalltext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.borderdashed{border-bottom:1px solid var(--Gray-200, #EAECF0)}.conc{width:110%}.overallstore{width:155%}table td{height:70px!important;align-items:center;gap:12px;align-self:stretch}table tr{vertical-align:middle}::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:-4%;margin-left:15%}.category_active{border-bottom:3px solid #009EF7!important;border-radius:3px;margin-bottom:3px!important}.timer_active{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardimg{width:100%;height:350px}.form-control:disabled{background-color:#f9fafb!important}.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}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.rotate{transform:rotate(180deg)}.no-wrap-list{white-space:nowrap;overflow-x:auto;overflow-y:hidden;padding:0;margin:0;display:flex;flex-wrap:nowrap;-ms-overflow-style:none;scrollbar-width:none}.no-wrap-list::-webkit-scrollbar{display:none}.concheatmap{margin-top:10%}.right-border{border-right:1px solid #D0D5DD;padding-right:15px}.image-container{position:relative;display:inline-block}::ng-deep .carousel-control-next{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent}::ng-deep .carousel-control-prev{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent!important}::ng-deep .carousel-control-next-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}::ng-deep .carousel-control-prev-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.icon-overlay{position:absolute;cursor:pointer;top:10px;right:10px}::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:8px;height:8px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#009bf3;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}::ng-deep .custom-tooltip{white-space:pre-line;max-width:500px}.head-title{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.zone-compare-title{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.border-full{border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.shopper-title{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.zone-selector{padding:10px;max-width:300px;position:relative;font-family:Arial,sans-serif}.title{font-weight:700;margin-bottom:8px;display:block}.zone-box{display:flex;align-items:center;justify-content:space-between;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);padding:6px 10px;margin-bottom:6px}.remove-btn{border:none;background:transparent;cursor:pointer;font-weight:700;font-size:14px}.dropdown-input{position:relative;margin-bottom:8px}.dropdown-input input{width:100%;padding:6px;border:1px solid #51C1FF;border-radius:4px}.dropdown-list{position:absolute;top:100%;left:0;width:100%;max-height:150px;overflow-y:auto;border:1px solid #ccc;background:#fff;z-index:10;border-radius:0 0 4px 4px}.dropdown-list li{padding:8px;cursor:pointer}.dropdown-list li:hover{background-color:#e8f4ff}.limit-warning{color:red;font-size:12px;margin-bottom:8px;position:absolute;bottom:32px;left:30px;right:0}.actions{display:flex;justify-content:space-between;gap:8px}.actions button{padding:6px 12px;border:none;border-radius:4px;cursor:pointer}.apply-btn{background-color:#addbff}.apply-btn:disabled{opacity:.5;cursor:not-allowed}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.border-1{padding:8px;border-radius:12px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important}.shopper-ellipse1{border-radius:24px;background:var(--Primary-50, #EAF8FF);height:150px;padding:8px}.perctage{color:#475467!important}.minsbadge{border-radius:8px;border:1px solid #D0D5DD;background:#fff;box-shadow:0 1px 2px #1018280d;display:flex;align-items:center;gap:4px;z-index:1;font-size:12px}.minsbadgeprimary{padding:4px 15px;justify-content:center;align-items:center;gap:4px;border-radius:16px!important;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.toggle-icon{width:18px;cursor:pointer;font-weight:700}.child-row{background-color:#f6fcff}.concentration-table{width:100%;border-collapse:collapse}.concentration-table th{text-align:left;font-weight:600;padding:12px;border-bottom:1px solid #e5e7eb}.concentration-table td{padding:12px;border-bottom:1px solid #f1f5f9}.parent-row{background:#fff;font-weight:500}.child-row{background:F6FCFF}.child-zone{padding-left:36px;color:#009bf3}.toggle{display:inline-block;width:18px;cursor:pointer;font-weight:700;margin-right:6px}.zone-name{color:#009bf3;cursor:pointer}.underline{text-decoration:underline}.btn-light-primary{background-color:var(--Primary-50, #EAF8FF)!important;border-radius:8px;border-width:1px;padding:8px 14px;color:var(--Primary-700, #009BF3)}.btn.btn-light-primary:focus:not(.btn-active),.btn.btn-light-primary:hover:not(.btn-active),.btn.btn-light-primary:active:not(.btn-active){background-color:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important}.ai-modal{background:#fff;border-radius:12px}.ai-icon{width:32px;height:32px;background:#eef4ff;border-radius:50%;display:flex;align-items:center;justify-content:center}.ai-card{border-radius:10px;padding:8px}.ai-row{padding:8px;border-radius:8px;border:1px solid #e5e7eb;margin-bottom:7px}.ai-row:last-child{margin-bottom:0}.left{display:flex;align-items:center;gap:10px}.row-icon{font-size:18px}.title{font-weight:500}.badge{background:#f1f5f9;color:#475569;font-size:12px;padding:4px 10px;border-radius:16px}.view-link{font-weight:600;font-size:14px;line-height:20px;letter-spacing:0%;text-transform:capitalize}\n"] }]
461
+ args: [{ selector: 'lib-zone-concentration', providers: [NgbCarouselConfig], template: "<div class=\"card\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-5 right-border my-2\">\r\n <div class=\"h-100\">\r\n <div class=\"card-header ps-3 pe-1\">\r\n <h3 class=\"card-title align-items-start flex-column ms-1\">\r\n <span class=\"headtext\">Concentration Summary <span\r\n ngbTooltip=\"Summary of overall zones at the store\" placement=\"top\"\r\n triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></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 svg-icon-1 position-absolute ms-3\">\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 <!-- [disabled]=\"searchDisabled\" -->\r\n <input [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-10 invoicesearch\"\r\n placeholder=\"Search...\" autocomplete=\"off\" (keyup.enter)=\"searchField()\"\r\n />\r\n <button type=\"button\" (click)=\"onExport()\" class=\"btn-outline btn align-items-end text-nowrap invheader ms-2\" [disabled]=\"!zoneConcentrationData.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <!-- <span class=\"ms-2\">Export</span> -->\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n \r\n \r\n <div *ngIf=\"!zonesummaryNoData && !zonesummaryLoading\" class=\"table-container m-4\">\r\n <table class=\"table bottom-border\">\r\n <thead class=\"fixed-header\">\r\n <tr>\r\n <th class=\"p-1\"></th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('zoneName')\">\r\n Zone Name\r\n <svg [ngClass]=\"sortColumName === 'zoneName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'zoneName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('footfallCount')\">\r\n Footfall <br>(Actuals)\r\n <svg [ngClass]=\"sortColumName === 'footfallCount' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'footfallCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"cursor-pointer\" (click)=\"sortData('avgDwellTime')\">\r\n Dwell Time <br>(Average)\r\n <svg [ngClass]=\"sortColumName === 'avgDwellTime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'avgDwellTime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"conc cursor-pointer\" (click)=\"sortData('concentrationRate')\">\r\n Concentration\r\n <svg [ngClass]=\"sortColumName === 'concentrationRate' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" 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 === 'concentrationRate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"!zonesummaryLoading && !zonesummaryNoData\" class=\"table-responsive\">\r\n <ng-container *ngFor=\"let zone of zoneConcentrationData\">\r\n \r\n <!-- \u2705 PARENT ROW -->\r\n <tr>\r\n <td class=\"p-1\"> <span *ngIf=\"zone.rows?.length\" class=\"toggle-icon me-2\"\r\n (click)=\"toggleZone(zone.zoneName, $event)\">\r\n \r\n <!-- MINUS -->\r\n <svg *ngIf=\"isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M4.16797 10H15.8346\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <!-- PLUS -->\r\n <svg *ngIf=\"!isExpanded(zone.zoneName)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0013 4.1665V15.8332M4.16797 9.99984H15.8346\" stroke=\"#667085\"\r\n stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n </span></td>\r\n <td>\r\n <div class=\"table-title-primary overallstore mb-2 d-flex align-items-center\">\r\n <!-- ZONE NAME -->\r\n <span class=\"text-capitalize cursor-pointer\">\r\n <a (click)=\"onZoneClick(zone.zoneName)\">\r\n {{ zone.zoneName || '--' }}\r\n </a>\r\n </span>\r\n \r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.footfallCount?.toLocaleString('en-US') || '--' }}\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.avgDwellTime?.toLocaleString('en-US') || '--' }} mins\r\n </div>\r\n </td>\r\n \r\n <td>\r\n <div class=\"table-title\">\r\n {{ zone.concentrationRate?.toLocaleString('en-US') || '--' }}%\r\n </div>\r\n </td>\r\n </tr>\r\n \r\n <!-- \u2705 CHILD ROWS -->\r\n <tr *ngFor=\"let row of zone.rows\" [hidden]=\"!isExpanded(zone.zoneName)\" class=\"child-row\">\r\n <td class=\"p-1\"></td>\r\n <td class=\"ps-15 text-primary underline text-capitalize\">\r\n {{ row.toZone }}\r\n </td>\r\n <td>{{ row.footfallCount }}</td>\r\n <td>{{ row.avgDwellTime }} mins</td>\r\n <td>{{ row.concentration }}%</td>\r\n </tr>\r\n \r\n </ng-container>\r\n \r\n \r\n </tbody>\r\n </table>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"zonesummaryLoading\">\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 \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"zonesummaryNoData && !zonesummaryLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-18\">\r\n <div\r\n 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 Zone Concentration Summary</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-7\">\r\n <div class=\"card-header border-0 p-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"headtext\">{{ zoneName || '' }} Concentration Heatmap <span ngbTooltip=\"Density heatmap\"\r\n placement=\"top\" triggers=\"mouseenter:mouseleave\" tooltipClass=\"custom-tooltip\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3512_32868)\">\r\n <path\r\n d=\"M8.00016 10.6666V7.99998M8.00016 5.33331H8.00683M14.6668 7.99998C14.6668 11.6819 11.6821 14.6666 8.00016 14.6666C4.31826 14.6666 1.3335 11.6819 1.3335 7.99998C1.3335 4.31808 4.31826 1.33331 8.00016 1.33331C11.6821 1.33331 14.6668 4.31808 14.6668 7.99998Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3512_32868\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span></span>\r\n </h3>\r\n\r\n <div class=\"card-toolbar text-nowrap me-4\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <!--begin::Nav group-->\r\n <div class=\"nav-group nav-group-outline border-1 btn-group p-0\">\r\n <button class=\"btn btn-outline\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'daily',\r\n 'inactivePlanBtn': type !== 'daily',\r\n 'disabled': disableDay\r\n }\" (click)=\"selectPlan('daily')\" [attr.disabled]=\"disableDay ? true : null\">\r\n Day\r\n </button>\r\n\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'weekly',\r\n 'inactivePlanBtn': type !== 'weekly',\r\n 'disabled': disableWeek\r\n }\" (click)=\"selectPlan('weekly')\" [disabled]=\"disableWeek\">\r\n Week\r\n </button>\r\n <button class=\"btn btn-outline px-6 py-3\" [ngClass]=\"{\r\n 'activePlanBtn': type === 'monthly',\r\n 'inactivePlanBtn': type !== 'monthly',\r\n 'disabled': disableMonth\r\n }\" (click)=\"selectPlan('monthly')\" [disabled]=\"disableMonth\">\r\n Month\r\n </button>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-lg-8 mb-6\">\r\n\r\n <div class=\"d-flex\">\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollLeft()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 18L9 12L15 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <ul *ngIf=\"periodzone === 1 && !customOption\" #dateList\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center m-2\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon active\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"(periodzone === 2 || periodzone === 3) && !customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <ul *ngIf=\"customOption\"\r\n class=\"d-flex pills nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder align-items-start mb-5 mt-1 p-3 no-wrap-list\">\r\n <li class=\"nav-item nav-overflow\" *ngFor=\"let date of overallStoreConcentrationDates\">\r\n <a data-bs-toggle=\"pill\"\r\n [ngClass]=\"date.zoneDate === selectedDate ? 'category_active' : ''\"\r\n class=\"nav-link d-flex justify-content-between flex-column cursor-pointer flex-center w-90px mx-3\"\r\n (click)=\"onDateChange(date.zoneDate)\">\r\n <div class=\"nav-icon\"></div>\r\n <span class=\"nav-text text-gray-700 fw-bolder fs-7 lh-1 mx-3\">{{ date.zoneDate\r\n }}</span>\r\n <span class=\"bullet-custom position-absolute bottom-0 h-4px bg-primary\"></span>\r\n </a>\r\n </li>\r\n </ul>\r\n <span *ngIf=\"customArrow && !heatmapLoading && !heatmapNoData\" class=\"mt-3 cursor-pointer\"\r\n (click)=\"scrollRight()\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div>\r\n <div *ngIf=\"!heatmapLoading && !heatmapNoData\">\r\n <ngb-carousel #carousel [interval]=\"0\" [pauseOnHover]=\"true\" (slide)=\"onSlideChange($event)\"\r\n [id]=\"selectedDate\">\r\n <ng-container *ngFor=\"let image of overallStoreData?.ImageURLs;let i=index;\">\r\n <ng-template ngbSlide [id]=\"'ngb-slide-'+ i\">\r\n <div class=\"w-100 image-container cursor-pointer\">\r\n <img (click)=\"concentrationHeatmap(overallStoreData?.ImageURLs)\"\r\n [src]=\"image.URL\" [alt]=\"image.streamName\" class=\"cardimg\" />\r\n <a [href]=\"image.URL\" download><svg id=\"download-icon\" width=\"44\" height=\"44\"\r\n viewBox=\"0 0 44 44\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"icon-overlay\">\r\n <g filter=\"url(#filter0_d_3822_19479)\">\r\n <rect x=\"2\" y=\"1\" width=\"40\" height=\"40\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"39\" height=\"39\" rx=\"7.5\"\r\n stroke=\"#D0D5DD\" />\r\n <path\r\n d=\"M29.5 23.5V26.8333C29.5 27.2754 29.3244 27.6993 29.0118 28.0118C28.6993 28.3244 28.2754 28.5 27.8333 28.5H16.1667C15.7246 28.5 15.3007 28.3244 14.9882 28.0118C14.6756 27.6993 14.5 27.2754 14.5 26.8333V23.5M17.8333 19.3333L22 23.5M22 23.5L26.1667 19.3333M22 23.5V13.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_3822_19479\" x=\"0\" y=\"0\" width=\"44\" height=\"44\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_3822_19479\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\"\r\n in2=\"effect1_dropShadow_3822_19479\" result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></a>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ngb-carousel>\r\n </div>\r\n <ng-container *ngIf=\"heatmapLoading\">\r\n <div class=\"row loader concheatmap 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\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heatmapNoData && !heatmapLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n class=\"card-body concheatmap 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 Overall Store Concentration\r\n Heatmap</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"col-lg-4\">\r\n <div class=\"body me-4\">\r\n <div class=\"pt-10 m-6\">\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Total Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">{{overallStoreData?.totalFootfall?.toLocaleString('en-US',\r\n { minimumFractionDigits: 0 }) || '--' }}</span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Concentration %\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <span class=\"table-title\">{{ roundof(overallStoreData?.concentrationRate) || '0' }} %</span> -->\r\n <span class=\"table-title\">{{\r\n overallStoreData?.concentrationRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Bounced Footfall\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.bouncedCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div></div>\r\n <div></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client !== '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Engagers\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.engagersCount?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"borderdashed my-4\"></div>\r\n <div class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Avg. Dwell Time\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.avgDwellTime?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }} mins\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Age Range\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.ageRange?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Male Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.maleRate?.toLocaleString('en-US', { minimumFractionDigits:\r\n 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"storeIdarray[0] !=='459-2' && storeIdarray[0] !=='459-4'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Female Rate\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.femaleRate?.toLocaleString('en-US', {\r\n minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div>\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Trolley\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.trolleyRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n <!-- <div *ngIf=\"headerData?.client == '459'\" class=\"borderdashed my-4\"></div>\r\n <div *ngIf=\"headerData?.client == '459'\" class=\"d-flex flex-stack\">\r\n <span class=\"d-flex flex-row align-items-center\">\r\n <div class=\"overalltext me-2\">\r\n Basket\r\n </div>\r\n </span>\r\n <div class=\"d-flex align-items-center\">\r\n <span class=\"table-title\">\r\n {{ overallStoreData?.basketRate?.toLocaleString('en-US', { minimumFractionDigits: 0 }) || '--' }}%\r\n </span>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <!-- <div class=\"footer me-2\">\r\n <button (click)=\"openModel()\" class=\"btn btn-light-primary mb-2 w-100\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_17126_73367)\">\r\n <path\r\n d=\"M4.16797 1.6665L4.3263 2.44984C4.43977 3.01234 4.69653 3.53603 5.07173 3.97021C5.44692 4.40439 5.92786 4.73435 6.46797 4.92817L6.66797 4.99984L6.46797 5.0715C5.92786 5.26532 5.44692 5.59529 5.07173 6.02947C4.69653 6.46365 4.43977 6.98733 4.3263 7.54984L4.16797 8.33317L4.00964 7.54984C3.89617 6.98733 3.63941 6.46365 3.26421 6.02947C2.88901 5.59529 2.40808 5.26532 1.86797 5.0715L1.66797 4.99984L1.86797 4.92817C2.40808 4.73435 2.88901 4.40439 3.26421 3.97021C3.63941 3.53603 3.89617 3.01234 4.00964 2.44984L4.16797 1.6665ZM6.66797 13.3332L6.85963 14.3965C6.9094 14.6739 7.02869 14.9341 7.20634 15.1528C7.38399 15.3716 7.61421 15.5417 7.87547 15.6473L8.33464 15.8332L7.87547 16.019C7.61416 16.1244 7.38384 16.2944 7.20605 16.513C7.02825 16.7316 6.90878 16.9917 6.8588 17.269L6.66797 18.3332L6.4763 17.2698C6.42653 16.9925 6.30725 16.7322 6.1296 16.5135C5.95194 16.2947 5.72173 16.1246 5.46047 16.019L5.0013 15.8332L5.46047 15.6473C5.72178 15.5419 5.9521 15.372 6.12989 15.1534C6.30769 14.9348 6.42716 14.6746 6.47714 14.3973L6.66797 13.3332ZM13.3346 2.49984L13.798 4.7115C14.0341 5.83907 14.5584 6.88621 15.3198 7.75081C16.0811 8.61541 17.0535 9.26796 18.1421 9.64484L19.168 9.99984L18.1421 10.3548C17.0535 10.7317 16.0811 11.3843 15.3198 12.2489C14.5584 13.1135 14.0341 14.1606 13.798 15.2882L13.3346 17.4998L12.8713 15.2882C12.6352 14.1606 12.1109 13.1135 11.3495 12.2489C10.5882 11.3843 9.61578 10.7317 8.52714 10.3548L7.5013 9.99984L8.52714 9.64484C9.61578 9.26796 10.5882 8.61541 11.3495 7.75081C12.1109 6.88621 12.6352 5.83907 12.8713 4.7115L13.3346 2.49984Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17126_73367\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg><span> View AI Insights</span>\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<ng-template #zoomPopup let-model>\r\n <div class=\"ai-modal p-4\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-4\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div class=\"ai-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\"\r\n fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M21 18L21.19 18.94C21.3262 19.615 21.6343 20.2434 22.0845 20.7644C22.5347 21.2855 23.1119 21.6814 23.76 21.914L24 22L23.76 22.086C23.1119 22.3186 22.5347 22.7145 22.0845 23.2356C21.6343 23.7566 21.3262 24.385 21.19 25.06L21 26L20.81 25.06C20.6738 24.385 20.3657 23.7566 19.9155 23.2356C19.4653 22.7145 18.8881 22.3186 18.24 22.086L18 22L18.24 21.914C18.8881 21.6814 19.4653 21.2855 19.9155 20.7644C20.3657 20.2434 20.6738 19.615 20.81 18.94L21 18ZM24 32L24.23 33.276C24.2897 33.6088 24.4329 33.9211 24.646 34.1836C24.8592 34.4461 25.1355 34.6503 25.449 34.777L26 35L25.449 35.223C25.1354 35.3495 24.859 35.5535 24.6457 35.8158C24.4323 36.0781 24.289 36.3902 24.229 36.723L24 38L23.77 36.724C23.7103 36.3912 23.5671 36.0789 23.354 35.8164C23.1408 35.5539 22.8645 35.3497 22.551 35.223L22 35L22.551 34.777C22.8646 34.6505 23.141 34.4465 23.3543 34.1842C23.5677 33.9219 23.711 33.6098 23.771 33.277L24 32ZM32 19L32.556 21.654C32.8394 23.0071 33.4685 24.2636 34.3821 25.3012C35.2958 26.3387 36.4626 27.1217 37.769 27.574L39 28L37.769 28.426C36.4626 28.8783 35.2958 29.6613 34.3821 30.6988C33.4685 31.7364 32.8394 32.9929 32.556 34.346L32 37L31.444 34.346C31.1606 32.9929 30.5315 31.7364 29.6179 30.6988C28.7042 29.6613 27.5374 28.8783 26.231 28.426L25 28L26.231 27.574C27.5374 27.1217 28.7042 26.3387 29.6179 25.3012C30.5315 24.2636 31.1606 23.0071 31.444 21.654L32 19Z\"\r\n stroke=\"#009BF3\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></div>\r\n <h5 class=\"mb-0 fw-semibold\">AI Insights for &lt;Overall Zones&gt;</h5>\r\n </div>\r\n\r\n <button class=\"btn btn-sm btn-icon\" (click)=\"model.dismiss()\">\r\n \u2715\r\n </button>\r\n </div>\r\n\r\n <!-- LIST -->\r\n <div *ngIf=\"viewImage?.mobileusagedetection || viewImage?.queueManagement || viewImage?.customerunattended || viewImage?.staffleftinthemiddle\" class=\"ai-card\">\r\n\r\n <div *ngIf=\"viewImage?.mobileusagedetection\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M16 1C7.716 1 1 7.716 1 16C1 24.2845 7.716 31 16 31C24.284 31 31 24.284 31 16C31 7.716 24.284 1 16 1ZM28 16C28.0029 18.6648 27.1151 21.2542 25.4775 23.3565L20.8045 18.6835V9.3875C20.8045 8.344 19.944 7.4985 18.8825 7.4985H13.1165C12.1545 7.4985 11.3645 8.1955 11.224 9.1025L8.6435 6.5225C10.7458 4.88494 13.3352 3.99707 16 4C22.627 4 28 9.3725 28 16ZM12.156 21.4795V14.277L19.3575 21.4795H12.156ZM16.576 22.9845C16.576 23.297 16.3185 23.551 16 23.551C15.6815 23.551 15.4235 23.297 15.4235 22.9845C15.4235 22.672 15.682 22.418 16 22.418C16.3185 22.418 16.576 22.672 16.576 22.9845ZM12.156 10.0345V9.3875H19.844V17.7225L12.156 10.0345ZM14.8195 8.4245C14.8195 8.294 14.927 8.188 15.0595 8.188H16.9395C17.0725 8.188 17.1805 8.294 17.1805 8.4245C17.1805 8.555 17.072 8.661 16.9395 8.661H15.0595C14.9964 8.66101 14.9359 8.6362 14.891 8.59195C14.8461 8.54769 14.8204 8.48754 14.8195 8.4245ZM4 16C3.99718 13.3353 4.88505 10.7462 6.5225 8.644L11.1945 13.3165V22.6125C11.1945 23.6565 12.055 24.502 13.1165 24.502H18.8825C19.8445 24.502 20.6345 23.8045 20.775 22.8975L23.355 25.4775C21.2531 27.1147 18.6643 28.0026 16 28C9.3725 28 4 22.628 4 16Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n <span class=\"title\">Mobile Detection</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.mobileusagedetection ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.queueManagement\" class=\"ai-row row \">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"26\" height=\"26\"\r\n viewBox=\"0 0 26 26\" fill=\"none\">\r\n <path\r\n d=\"M6.28571 1.71429C5.60373 1.71429 4.94968 1.9852 4.46744 2.46744C3.9852 2.94968 3.71429 3.60373 3.71429 4.28572C3.71429 4.9677 3.9852 5.62175 4.46744 6.10399C4.94968 6.58623 5.60373 6.85714 6.28571 6.85714C6.9677 6.85714 7.62175 6.58623 8.10399 6.10399C8.58623 5.62175 8.85714 4.9677 8.85714 4.28572C8.85714 3.60373 8.58623 2.94968 8.10399 2.46744C7.62175 1.9852 6.9677 1.71429 6.28571 1.71429ZM2 4.28572C2 3.14907 2.45153 2.05898 3.25526 1.25526C4.05898 0.45153 5.14907 4.12584e-07 6.28571 4.12584e-07C7.42236 4.12584e-07 8.51244 0.45153 9.31617 1.25526C10.1199 2.05898 10.5714 3.14907 10.5714 4.28572C10.5714 5.42236 10.1199 6.51245 9.31617 7.31617C8.51244 8.1199 7.42236 8.57143 6.28571 8.57143C5.14907 8.57143 4.05898 8.1199 3.25526 7.31617C2.45153 6.51245 2 5.42236 2 4.28572ZM0 12.8571C0 12.1752 0.270918 11.5211 0.753154 11.0389C1.23539 10.5566 1.88944 10.2857 2.57143 10.2857H10C10.682 10.2857 11.336 10.5566 11.8183 11.0389C12.3005 11.5211 12.5714 12.1752 12.5714 12.8571V18.8571C12.5714 20.5242 11.9092 22.123 10.7304 23.3018C9.55159 24.4806 7.95279 25.1429 6.28571 25.1429C4.61864 25.1429 3.01984 24.4806 1.84104 23.3018C0.662243 22.123 0 20.5242 0 18.8571V12.8571ZM2.57143 12C2.3441 12 2.12608 12.0903 1.96534 12.2511C1.80459 12.4118 1.71429 12.6298 1.71429 12.8571V18.8571C1.71429 20.0696 2.19592 21.2323 3.05323 22.0896C3.91054 22.9469 5.0733 23.4286 6.28571 23.4286C7.49813 23.4286 8.66089 22.9469 9.5182 22.0896C10.3755 21.2323 10.8571 20.0696 10.8571 18.8571V12.8571C10.8571 12.6298 10.7668 12.4118 10.6061 12.2511C10.4453 12.0903 10.2273 12 10 12H2.57143ZM12.5726 8.57143C11.7736 8.57303 10.9903 8.35007 10.312 7.928C10.696 7.50514 11.0137 7.01943 11.2491 6.49029C11.6393 6.72435 12.0847 6.85067 12.5397 6.85637C12.9946 6.86207 13.443 6.74694 13.8389 6.52272C14.2349 6.29851 14.5642 5.97325 14.7934 5.58014C15.0226 5.18704 15.1433 4.74016 15.1433 4.28514C15.1433 3.83012 15.0226 3.38325 14.7934 2.99014C14.5642 2.59704 14.2349 2.27178 13.8389 2.04756C13.443 1.82335 12.9946 1.70822 12.5397 1.71392C12.0847 1.71961 11.6393 1.84594 11.2491 2.08C11.014 1.55497 10.6978 1.07019 10.312 0.643429C10.8754 0.294038 11.5123 0.0801325 12.1724 0.0185371C12.8325 -0.0430583 13.4979 0.0493359 14.1163 0.288453C14.7346 0.527569 15.2891 0.906888 15.736 1.39657C16.183 1.88626 16.5102 2.47296 16.692 3.11054C16.8738 3.74811 16.9052 4.41917 16.7837 5.07093C16.6623 5.72269 16.3912 6.33738 15.992 6.86666C15.5927 7.39594 15.0761 7.82538 14.4828 8.12119C13.8894 8.417 13.2356 8.57112 12.5726 8.57143ZM12.5726 25.1429C11.929 25.1434 11.2892 25.0451 10.6754 24.8514C11.2343 24.4425 11.7332 23.9574 12.1577 23.4103C12.2949 23.4225 12.4331 23.4286 12.5726 23.4286C13.785 23.4286 14.9478 22.9469 15.8051 22.0896C16.6624 21.2323 17.144 20.0696 17.144 18.8571V12.8571C17.144 12.6298 17.0537 12.4118 16.893 12.2511C16.7322 12.0903 16.5142 12 16.2869 12H13.616C13.4634 11.3552 13.1405 10.7632 12.6811 10.2857H16.2869C16.9688 10.2857 17.6229 10.5566 18.1051 11.0389C18.5874 11.5211 18.8583 12.1752 18.8583 12.8571V18.8571C18.8583 19.6826 18.6957 20.5 18.3798 21.2626C18.0639 22.0252 17.6009 22.7181 17.0172 23.3018C16.4336 23.8855 15.7406 24.3485 14.978 24.6644C14.2154 24.9803 13.398 25.1429 12.5726 25.1429ZM16.5977 7.92686C17.2467 8.32977 17.9917 8.55188 18.7554 8.5702C19.5191 8.58851 20.2738 8.40237 20.9414 8.03103C21.609 7.6597 22.1652 7.11667 22.5524 6.45817C22.9396 5.79967 23.1438 5.04963 23.1438 4.28572C23.1438 3.5218 22.9396 2.77176 22.5524 2.11326C22.1652 1.45476 21.609 0.911734 20.9414 0.540398C20.2738 0.169062 19.5191 -0.0170835 18.7554 0.00123229C17.9917 0.019548 17.2467 0.24166 16.5977 0.644572C16.9817 1.06743 17.2994 1.552 17.5349 2.08114C17.925 1.84687 18.3704 1.72035 18.8255 1.7145C19.2806 1.70865 19.729 1.82369 20.1251 2.04786C20.5212 2.27203 20.8507 2.59731 21.0799 2.99048C21.3092 3.38364 21.43 3.8306 21.43 4.28572C21.43 4.74083 21.3092 5.18779 21.0799 5.58095C20.8507 5.97412 20.5212 6.29939 20.1251 6.52357C19.729 6.74774 19.2806 6.86278 18.8255 6.85693C18.3704 6.85108 17.925 6.72456 17.5349 6.49029C17.2997 7.01532 16.9835 7.5001 16.5977 7.92686ZM18.4423 23.4103C18.5794 23.4217 18.7185 23.4278 18.8594 23.4286C20.0718 23.4286 21.2346 22.9469 22.0919 22.0896C22.9492 21.2323 23.4309 20.0696 23.4309 18.8571V12.8571C23.4309 12.6298 23.3406 12.4118 23.1798 12.2511C23.0191 12.0903 22.801 12 22.5737 12H19.9017C19.7491 11.3552 19.4262 10.7632 18.9669 10.2857H22.5737C23.2557 10.2857 23.9098 10.5566 24.392 11.0389C24.8742 11.5211 25.1451 12.1752 25.1451 12.8571V18.8571C25.1455 19.8454 24.9128 20.8197 24.466 21.7012C24.0192 22.5826 23.3709 23.3463 22.5736 23.9302C21.7764 24.5141 20.8527 24.9019 19.8775 25.0619C18.9024 25.222 17.9032 25.1499 16.9611 24.8514C17.5196 24.4424 18.0181 23.9573 18.4423 23.4103Z\"\r\n fill=\"#00A3FF\" />\r\n </svg></span>\r\n\r\n <span class=\"title\">Queue Management</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n <span class=\"badge mt-2\">{{viewImage?.queueManagement ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.customerunattended\" class=\"ai-row row\">\r\n <div class=\"left col-md-6\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\"\r\n viewBox=\"0 0 32 32\" fill=\"none\">\r\n <path\r\n d=\"M12.3062 12.3076C14.6002 12.3076 16.46 10.4479 16.46 8.15381C16.46 5.85972 14.6002 4 12.3062 4C10.0121 4 8.15234 5.85972 8.15234 8.15381C8.15234 10.4479 10.0121 12.3076 12.3062 12.3076Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M21.9999 27.9999C25.3136 27.9999 27.9999 25.3136 27.9999 21.9999C27.9999 18.6863 25.3136 16 21.9999 16C18.6863 16 16 18.6863 16 21.9999C16 25.3136 18.6863 27.9999 21.9999 27.9999Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M17.7538 26.2459L26.246 17.7537M14.1538 15.2798C12.9364 14.9988 11.6713 14.9966 10.453 15.2733C9.23463 15.5501 8.09461 16.0987 7.11815 16.8781C6.14168 17.6574 5.35403 18.6475 4.81408 19.7742C4.27413 20.9008 3.99585 22.135 4.00005 23.3844V26.1536H11.3846\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.91207\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n\r\n\r\n <span class=\"title\">Customer Unattended</span>\r\n\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.customerunattended ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"viewImage?.staffleftinthemiddle\" class=\"row ai-row\">\r\n <div class=\"col-md-6 left\">\r\n <span class=\"row-icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30\" height=\"26\"\r\n viewBox=\"0 0 30 26\" fill=\"none\">\r\n <path\r\n d=\"M6.7207 24.6533L6.80371 24.998L1.31738 25C1.17293 25 1 24.867 1 24.6406C1.0001 21.6993 2.70973 19.1869 5.12891 18.083L6.7207 24.6533ZM11.3115 24.665L11.3975 24.9971H8.60254L8.68848 24.6699L10 19.6426L11.3115 24.665ZM14.8701 18.0781C17.2897 19.1819 18.9999 21.6941 19 24.6357C19 24.8337 18.868 24.9606 18.7383 24.9893L18.6826 24.9951L13.1943 24.9961L13.2793 24.6484L14.8701 18.0781ZM11.166 16.6826L10.0186 18.0645L9.99707 18.0889L9.98145 18.0693L8.83398 16.6875H9.5332V16.6826H11.166ZM10 2C10.6218 2 11.2382 2.12678 11.8145 2.37305C12.3909 2.61939 12.917 2.981 13.3613 3.43945C13.8057 3.89796 14.1602 4.44377 14.4023 5.04688C14.6445 5.64998 14.7695 6.29761 14.7695 6.95215C14.7695 7.60665 14.6444 8.25434 14.4023 8.85742C14.1602 9.46055 13.8057 10.0073 13.3613 10.4658C12.917 10.9242 12.3908 11.2859 11.8145 11.5322C11.2382 11.7784 10.6218 11.9043 10 11.9043C9.37823 11.9043 8.76179 11.7784 8.18555 11.5322C7.60924 11.2859 7.08297 10.9242 6.63867 10.4658C6.19426 10.0073 5.83979 9.46055 5.59766 8.85742C5.35559 8.25434 5.23047 7.60665 5.23047 6.95215C5.2305 6.29761 5.35553 5.64998 5.59766 5.04688C5.83979 4.44377 6.19428 3.89796 6.63867 3.43945C7.08302 2.981 7.60913 2.61939 8.18555 2.37305C8.68995 2.15751 9.22496 2.03336 9.76758 2.00586L10 2Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" />\r\n <path d=\"M23.3894 18.6693L28.0027 14.0026L23.3894 9.33594M26.6667 14.0026H16.6641\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"square\" />\r\n </svg></span>\r\n <span class=\"title\">Staff left in the Middle</span>\r\n </div>\r\n <div class=\"col-md-2\">\r\n\r\n <span class=\"badge mt-2\">{{viewImage?.staffleftinthemiddle ?? '--'}} Detections</span>\r\n </div>\r\n <div class=\"col-md-4 text-end\">\r\n <a (click)=\"flagsView()\" class=\"view-link cursor-pointer\">View In Detail <span class=\"ms-2\">\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\">\r\n<path d=\"M13.3359 9.16829V14.1683C13.3359 14.6103 13.1603 15.0342 12.8478 15.3468C12.5352 15.6594 12.1113 15.835 11.6693 15.835H2.5026C2.06058 15.835 1.63665 15.6594 1.32409 15.3468C1.01153 15.0342 0.835938 14.6103 0.835938 14.1683V5.00163C0.835938 4.5596 1.01153 4.13568 1.32409 3.82312C1.63665 3.51056 2.06058 3.33496 2.5026 3.33496H7.5026M10.8359 0.834961H15.8359M15.8359 0.834961V5.83496M15.8359 0.834961L6.66927 10.0016\" stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"!viewImage?.mobileusagedetection && !viewImage?.queueManagement && !viewImage?.customerunattended && !viewImage?.staffleftinthemiddle\"\r\n class=\"text-center py-5\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div\r\n 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\">No AI Insights available for the selected zone.</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".table-title-primary{color:var(--Primary-700, #009BF3);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.table-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:500;line-height:20px}.subtext{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.headcount{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.headtext{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.subratetext{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}#zonechartdiv{width:100%;height:365px;margin-bottom:6%}.invoicesearch{color:var(--Gray-700, #344054)!important;width:200px;font-family:Inter;font-size:14px!important;font-style:normal;font-weight:500!important;line-height:20px}.exportwidth{width:40%}.invoicesearch::placeholder{color:var(--Gray-700, #344054)!important}.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}}.activePlanBtn{border-radius:6px;background:var(--Primary-50, #EAF8FF);color:var(--Gray-700, #344054);font-size:14px!important;font-weight:500!important;line-height:20px}.inactivePlanBtn{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:500!important;line-height:20px}.overalltext{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px}.borderdashed{border-bottom:1px solid var(--Gray-200, #EAECF0)}.conc{width:110%}.overallstore{width:155%}table td{height:70px!important;align-items:center;gap:12px;align-self:stretch}table tr{vertical-align:middle}::ng-deep .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:-4%;margin-left:15%}.category_active{border-bottom:3px solid #009EF7!important;border-radius:3px;margin-bottom:3px!important}.timer_active{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.cardimg{width:100%;height:350px}.form-control:disabled{background-color:#f9fafb!important}.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}.table-container{position:relative;max-height:400px;overflow-y:auto}.fixed-header th{position:sticky;top:0;background-color:#fff;z-index:2}.table.bottom-border thead th{border-bottom:2px solid #dee2e6}.table.bottom-border tbody tr td{border-bottom:1px solid #dee2e6}.table.bottom-border th,.table.bottom-border td{padding:8px 16px;white-space:nowrap}.table-responsive::-webkit-scrollbar{width:6px}.table-responsive::-webkit-scrollbar-thumb{background-color:#ddd;border-radius:4px}.rotate{transform:rotate(180deg)}.no-wrap-list{white-space:nowrap;overflow-x:auto;overflow-y:hidden;padding:0;margin:0;display:flex;flex-wrap:nowrap;-ms-overflow-style:none;scrollbar-width:none}.no-wrap-list::-webkit-scrollbar{display:none}.concheatmap{margin-top:10%}.right-border{border-right:1px solid #D0D5DD;padding-right:15px}.image-container{position:relative;display:inline-block}::ng-deep .carousel-control-next{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent}::ng-deep .carousel-control-prev{position:absolute;top:40%!important;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff!important;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease;height:20px!important;background-color:transparent!important}::ng-deep .carousel-control-next-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}::ng-deep .carousel-control-prev-icon{display:inline-block;width:5rem;height:7rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.icon-overlay{position:absolute;cursor:pointer;top:10px;right:10px}::ng-deep .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:8px;height:8px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#009bf3;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}::ng-deep .custom-tooltip{white-space:pre-line;max-width:500px}.head-title{color:var(--Gray-900, #101828);font-size:20px;font-weight:600;line-height:30px}.sub-title{color:var(--Gray-500, #667085);font-size:14px;font-weight:400;line-height:20px}.zone-compare-title{color:var(--Gray-800, #1D2939);font-size:14px;font-weight:500;line-height:20px}.border-full{border-radius:8px;border:1px solid var(--Gray-200, #EAECF0)}.shopper-title{color:var(--Gray-700, #344054);font-size:18px;font-weight:600;line-height:28px}.zone-selector{padding:10px;max-width:300px;position:relative;font-family:Arial,sans-serif}.title{font-weight:700;margin-bottom:8px;display:block}.zone-box{display:flex;align-items:center;justify-content:space-between;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);padding:6px 10px;margin-bottom:6px}.remove-btn{border:none;background:transparent;cursor:pointer;font-weight:700;font-size:14px}.dropdown-input{position:relative;margin-bottom:8px}.dropdown-input input{width:100%;padding:6px;border:1px solid #51C1FF;border-radius:4px}.dropdown-list{position:absolute;top:100%;left:0;width:100%;max-height:150px;overflow-y:auto;border:1px solid #ccc;background:#fff;z-index:10;border-radius:0 0 4px 4px}.dropdown-list li{padding:8px;cursor:pointer}.dropdown-list li:hover{background-color:#e8f4ff}.limit-warning{color:red;font-size:12px;margin-bottom:8px;position:absolute;bottom:32px;left:30px;right:0}.actions{display:flex;justify-content:space-between;gap:8px}.actions button{padding:6px 12px;border:none;border-radius:4px;cursor:pointer}.apply-btn{background-color:#addbff}.apply-btn:disabled{opacity:.5;cursor:not-allowed}.ellipse1{border-radius:6px;border-bottom:2px solid var(--Gray-200, #EAECF0);background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d}.sub-header{color:var(--Gray-700, #344054);font-size:14px;font-weight:500;line-height:20px}.border-1{padding:8px;border-radius:12px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important}.shopper-ellipse1{border-radius:24px;background:var(--Primary-50, #EAF8FF);height:150px;padding:8px}.perctage{color:#475467!important}.minsbadge{border-radius:8px;border:1px solid #D0D5DD;background:#fff;box-shadow:0 1px 2px #1018280d;display:flex;align-items:center;gap:4px;z-index:1;font-size:12px}.minsbadgeprimary{padding:4px 15px;justify-content:center;align-items:center;gap:4px;border-radius:16px!important;background:var(--Primary-50, #EAF8FF);color:var(--Primary-700, #009BF3);text-align:center;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.toggle-icon{width:18px;cursor:pointer;font-weight:700}.child-row{background-color:#f6fcff}.concentration-table{width:100%;border-collapse:collapse}.concentration-table th{text-align:left;font-weight:600;padding:12px;border-bottom:1px solid #e5e7eb}.concentration-table td{padding:12px;border-bottom:1px solid #f1f5f9}.parent-row{background:#fff;font-weight:500}.child-row{background:F6FCFF}.child-zone{padding-left:36px;color:#009bf3}.toggle{display:inline-block;width:18px;cursor:pointer;font-weight:700;margin-right:6px}.zone-name{color:#009bf3;cursor:pointer}.underline{text-decoration:underline}.btn-light-primary{background-color:var(--Primary-50, #EAF8FF)!important;border-radius:8px;border-width:1px;padding:8px 14px;color:var(--Primary-700, #009BF3)}.btn.btn-light-primary:focus:not(.btn-active),.btn.btn-light-primary:hover:not(.btn-active),.btn.btn-light-primary:active:not(.btn-active){background-color:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important}.ai-modal{background:#fff;border-radius:12px}.ai-icon{width:32px;height:32px;background:#eef4ff;border-radius:50%;display:flex;align-items:center;justify-content:center}.ai-card{border-radius:10px;padding:8px}.ai-row{padding:8px;border-radius:8px;border:1px solid #e5e7eb;margin-bottom:7px}.ai-row:last-child{margin-bottom:0}.left{display:flex;align-items:center;gap:10px}.row-icon{font-size:18px}.title{font-weight:500}.badge{background:#f1f5f9;color:#475569;font-size:12px;padding:4px 10px;border-radius:16px}.view-link{font-weight:600;font-size:14px;line-height:20px;letter-spacing:0%;text-transform:capitalize}\n"] }]
462
462
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.NgbModal }, { type: i2.FormBuilder }, { type: i3.ZoneService }, { type: i0.ChangeDetectorRef }, { type: i4.ToastService }, { type: i5.GlobalStateService }, { type: i0.ElementRef }, { type: i6.Router }], propDecorators: { dateList: [{
463
463
  type: ViewChild,
464
464
  args: ['dateList', { read: ElementRef }]
@@ -466,4 +466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
466
466
  type: ViewChild,
467
467
  args: ['zoomPopup']
468
468
  }] } });
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1jb25jZW50cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2Utem9uZS9zcmMvbGliL2NvbXBvbmVudHMvem9uZS1jb25jZW50cmF0aW9uL3pvbmUtY29uY2VudHJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXpvbmUvc3JjL2xpYi9jb21wb25lbnRzL3pvbmUtY29uY2VudHJhdGlvbi96b25lLWNvbmNlbnRyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFnRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEosT0FBTyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLDRCQUE0QixDQUFDO0FBSXhGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUF3QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7QUFTdEcsTUFBTSxPQUFPLDBCQUEwQjtJQTRDakI7SUFBcUI7SUFBZ0M7SUFBeUI7SUFBa0M7SUFDMUg7SUFBNEI7SUFBK0I7SUFBK0I7SUE1Q3BHLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxXQUFXLEdBQU8sRUFBRSxDQUFDO0lBQ3JCLGNBQWMsR0FBUSxLQUFLLENBQUM7SUFDNUIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ2pCLHFCQUFxQixHQUFVLEVBQUUsQ0FBQztJQUNsQyxnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsSUFBSSxHQUFXLE9BQU8sQ0FBQztJQUN2Qiw4QkFBOEIs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QUFpQixDQUFDLDJHQXdDRCxVQUFVLHNIQ3ZEekMsaXgrREEwdkJBOzs0RkR6dUJhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkIsQ0FBQyxpQkFBaUIsQ0FBQztnU0F3Q1ksUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFDO2dCQXFYbEIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbXBvcnRQcm92aWRlcnNGcm9tLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkNhcm91c2VsQ29uZmlnLCBOZ2JNb2RhbCwgTmdiU2xpZGVFdmVudCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBDb25jZW50cmF0aW9uaGVhdG1hcENvbXBvbmVudCB9IGZyb20gJy4vY29uY2VudHJhdGlvbmhlYXRtYXAvY29uY2VudHJhdGlvbmhlYXRtYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXpvbmUtY29uY2VudHJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pvbmUtY29uY2VudHJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3pvbmUtY29uY2VudHJhdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbTmdiQ2Fyb3VzZWxDb25maWddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZUNvbmNlbnRyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksT25Jbml0IHtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIHNlYXJjaElucHV0OiBhbnkgPVwiXCI7XHJcbiAgc2VhcmNoRGlzYWJsZWQ6IGFueSA9IGZhbHNlO1xyXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNvcnRCeTogYW55ID0gJyc7XHJcbiAgem9uZUNvbmNlbnRyYXRpb25EYXRhOiBhbnlbXSA9IFtdO1xyXG4gIG92ZXJhbGxTdG9yZURhdGE6IGFueSA9IHt9O1xyXG4gIHR5cGU6IHN0cmluZyA9ICdkYWlseSc7IFxyXG4gIG92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZERhdGU6IHN0cmluZyA9ICcnO1xyXG4gIHBlcmlvZHpvbmU6IG51bWJlciA9IDE7IFxyXG4gIGN1c3RvbU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlOyBcclxuICB0aW1lcl9hY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTsgXHJcbiAgem9uZXN1bW1hcnlMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB6b25lc3VtbWFyeU5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhlYXRtYXBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBoZWF0bWFwTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9ICcnO1xyXG4gIHpvbmVOYW1lOiBzdHJpbmcgPSAnJztcclxuICBkaXNhYmxlRGF5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZVdlZWs6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlTW9udGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXN0b21BcnJvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFNsaWRlID0gMDtcclxuICBjdXJyZW50U2xpZGVJbmRleCA9IDA7XHJcbiAgLy8gc3RhcnRJbmRleDogbnVtYmVyID0gMDtcclxuICAvLyBkYXRlc1BlclBhZ2U6IG51bWJlciA9IDU7XHJcbiAgLy8gdmlzaWJsZURhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIC8vIHRpbWVyX2FjdGl2ZSA9IDA7XHJcbiAgLy8gcGVyaW9kem9uZSA9IDE7XHJcbiAgLy8gY3VzdG9tT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy8gb3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzOiBBcnJheTx7IHpvbmVEYXRlOiBzdHJpbmcgfT4gPSBbXTtcclxuIFxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkKCdkYXRlTGlzdCcsIHtyZWFkOkVsZW1lbnRSZWZ9KSBkYXRlTGlzdCE6RWxlbWVudFJlZjtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgc3RvcmVJZGFycmF5OiBhbnkgPVtdO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgWm9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5maWx0ZXJlZFpvbmVzID0gdGhpcy56b25lcztcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZClcclxuICAgICAgICAgIGxldCBzRGF0ZSA9IHRoaXMuZGF5anModGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlKTtcclxuICAgICAgICAgIGxldCBlRGF0ZSA9IHRoaXMuZGF5anModGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbUFycm93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnR5cGUgPSAnZGFpbHknO1xyXG4gICAgICAgICAgLy8gaWYoZURhdGUuZGlmZihzRGF0ZSwnZGF5JykgPCA3KSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZGlzYWJsZVdlZWsgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVNb250aCA9IHRydWU7XHJcbiAgICAgICAgICAvLyAgIC8vIHRoaXMudHlwZSA9ICdkYWlseSc7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyBlbHNlIGlmKGVEYXRlLmRpZmYoc0RhdGUsJ2RheScpIDwgMjcpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5kaXNhYmxlTW9udGggPSB0cnVlO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVEYXkgPSBmYWxzZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5kaXNhYmxlV2VlayA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gICAvLyB0aGlzLnR5cGUgPSAnd2Vla2x5JztcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVEYXkgPSBmYWxzZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5kaXNhYmxlV2VlayA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVNb250aCA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gICAvLyB0aGlzLnR5cGUgPSAnbW9udGhseSc7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB0aGlzLmdldFpvbmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5nZXRPdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5nZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMoKTtcclxufSlcclxuICBcclxuICB9XHJcblxyXG4gIGdldFpvbmVDb25jZW50cmF0aW9uRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeU5vRGF0YSA9IHRydWU7XHJcbiAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcIjIxOC0yXCJdLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIHNvcnQ6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLnpvbmVDb25jZW50cmF0aW9uVGFibGVEYXRhKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuem9uZXN1bW1hcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gcmVzcG9uc2UuZGF0YS56b25lQ29uY2VudHJhdGlvbkRhdGE7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSlcclxuICAgICAgICAgIC8vIHRoaXMuem9uZU5hbWUgPSByZXNwb25zZS5kYXRhLnpvbmVDb25jZW50cmF0aW9uRGF0YVswXS56b25lTmFtZTtcclxuICAgICAgICAgIHRoaXMuem9uZU5hbWUgPSB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YS5sZW5ndGggPyB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YVswXS56b25lTmFtZSA6ICcnO1xyXG4gICAgICAgICAgdGhpcy5ab25lU2VydmljZS5zZXREYXRhKHRoaXMuem9uZU5hbWUpO1xyXG4gICAgICAgICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuem9uZXN1bW1hcnlOb0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5nZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgICAgIC8vICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnpvbmVzdW1tYXJ5TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy56b25lc3VtbWFyeU5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhlYXRtYXBOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxTdG9yZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMgPSBbXVxyXG4gICAgICAgICAgdGhpcy56b25lTmFtZSA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMub3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzID0gW11cclxuICAgICAgICB0aGlzLnpvbmVOYW1lID0gXCJcIlxyXG4gICAgICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0KCkge1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOmFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTphbnkpID0+IHN0b3JlLnN0b3JlSWQpLFxyXG4gICAgICAvLyBzdG9yZUlkOiBbXCIxMS0yNTNcIiwgXCIxMS01MTFcIixcIjExLTExNzZcIl0sXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgZXhwb3J0OiB0cnVlLFxyXG4gICAgICBzb3J0OiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLnpvbmVDb25jZW50cmF0aW9uVGFibGVEYXRhRXhwb3J0KHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuWm9uZVNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1pvbmVDb25jZW50cmF0aW9uU3VtbWFyeScpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFpvbmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGQoKTogdm9pZCB7XHJcbiAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeU5vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcIjIxOC0yXCJdLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIHNvcnQ6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLnpvbmVDb25jZW50cmF0aW9uVGFibGVEYXRhKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuem9uZXN1bW1hcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gcmVzcG9uc2UuZGF0YS56b25lQ29uY2VudHJhdGlvbkRhdGE7XHJcbiAgICAgICAgICAvLyB0aGlzLnpvbmVOYW1lID0gcmVzcG9uc2UuZGF0YS56b25lQ29uY2VudHJhdGlvbkRhdGFbMF0uem9uZU5hbWU7XHJcbiAgICAgICAgICAvLyB0aGlzLnpvbmVOYW1lID0gdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGEubGVuZ3RoID8gdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGFbMF0uem9uZU5hbWUgOiAnJztcclxuICAgICAgICAgIHRoaXMuem9uZXN1bW1hcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzdW1tYXJ5Tm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuem9uZXN1bW1hcnlOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxTdG9yZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMgPSBbXVxyXG4gICAgICAgICAgdGhpcy56b25lTmFtZSA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMub3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzID0gW11cclxuICAgICAgICB0aGlzLnpvbmVOYW1lID0gXCJcIlxyXG4gICAgICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0T3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcIjExLTExNzZcIl0sXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIHpvbmVOYW1lOiB0aGlzLnpvbmVOYW1lLFxyXG4gICAgICBkYXRlVHlwZTogdGhpcy50eXBlLFxyXG4gICAgICB6b25lRGF0ZTogdGhpcy5zZWxlY3RlZERhdGVcclxuICAgIH07XHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLmdldE92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRhKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgLy8gdGhpcy5vdmVyYWxsU3RvcmVEYXRhID0gcmVzcG9uc2UuZGF0YS5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0YXM7XHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxTdG9yZURhdGEgPSByZXNwb25zZS5kYXRhLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRhcztcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwcmV2RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jYXJvdXNlbC1jb250cm9sLXByZXYnKTtcclxuICAgICAgICAgICAgcHJldkVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCdkaXNwbGF5Om5vbmUnKTtcclxuICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbFN0b3JlRGF0YSA9W11cclxuICAgICAgICAgIC8vIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gW11cclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVEYXRhID1bXVxyXG4gICAgICAgIC8vIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gW11cclxuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdBUEkgY2FsbCBmYWlsZWQnLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcyA9IFtdXHJcbiAgICAgIHRoaXMub3ZlcmFsbFN0b3JlRGF0YSA9W11cclxuICAgIHRoaXMuY3VzdG9tQXJyb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5oZWF0bWFwTm9EYXRhID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgLy8gc3RvcmVJZDogW1wiMTEtMTE3NlwiXSxcclxuICAgICAgY2xpZW50SWQ6dGhpcy5oZWFkZXJEYXRhLmNsaWVudCxcclxuICAgICAgem9uZU5hbWU6IHRoaXMuem9uZU5hbWUsXHJcbiAgICAgIGRhdGVUeXBlOiB0aGlzLnR5cGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5ab25lU2VydmljZS5nZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMocmVxdWVzdERhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSl7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMgPSByZXNwb25zZS5kYXRhLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMub3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzWzBdLnpvbmVEYXRlOyBcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiByZXNwb25zZS5kYXRhLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGgpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAvLyBpZihbJ3dlZWtseScsJ21vbnRobHknXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XHJcbiAgICAgICAgICAvLyAgIGxldCBsYXN0RGlnaXQgPSB0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlc1t0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGggLTFdLnpvbmVEYXRlO1xyXG4gICAgICAgICAgLy8gICBsZXQgbGFzdFNwbGl0ID0gbGFzdERpZ2l0LnNwbGl0KCctJylbMV07XHJcbiAgICAgICAgICAvLyAgIGxhc3RTcGxpdCA9IGxhc3RTcGxpdCArJyAnKyB0aGlzLmRheWpzKCkuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICAgICAgICAvLyAgIGlmKHRoaXMuZGF5anMobGFzdFNwbGl0LCdNTU0gREQgWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID4gdGhpcy5kYXlqcyh0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgICAgICAgIC8vICAgICB0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5zcGxpY2UodGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMubGVuZ3RoLTEsMSk7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhaWx5Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGggPiA3KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUFycm93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnd2Vla2x5Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGggPiA0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUFycm93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0T3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGEoKTtcclxuICAgICAgICAgIC8vICAgdGhpcy5oZWF0bWFwTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gdGhpcy5oZWF0bWFwTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhlYXRtYXBOb0RhdGEgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVEYXRhID1bXVxyXG4gICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhlYXRtYXBOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0FQSSBjYWxsIGZhaWxlZCcsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZUNoYW5nZShkYXRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSAhPT0gZGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XHJcbiAgICAgIHRoaXMuZ2V0T3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFBsYW4oc2VsZWN0ZWRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZSA9IHNlbGVjdGVkVHlwZTtcclxuICAgIHRoaXMuZ2V0T3ZlcmFsbFN0b3JlSGVhdG1hcERhdGVzKCk7IFxyXG4gICAgLy8gdGhpcy5nZXRPdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG59XHJcblxyXG5vblpvbmVDbGljayh6b25lTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgdGhpcy56b25lTmFtZSA9IHpvbmVOYW1lOyBcclxuICB0aGlzLmdldE92ZXJhbGxTdG9yZUhlYXRtYXBEYXRlcygpO1xyXG4gIHRoaXMuWm9uZVNlcnZpY2Uuem9uZVNlZ21lbnRhdGlvbi5uZXh0KHpvbmVOYW1lKVxyXG4gIC8vIHRoaXMuZ2V0Wm9uZVNlZ21lbnRhdGlvbih6b25lTmFtZSkgXHJcbn1cclxuY29uY2VudHJhdGlvbkhlYXRtYXAoaW1hZ2VVUkxWMTogc3RyaW5nKSB7XHJcbiAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmNlbnRyYXRpb25oZWF0bWFwQ29tcG9uZW50LCB7XHJcbiAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ3hsJ1xyXG4gIH0pO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmltYWdlVVJMVjEgPSBpbWFnZVVSTFYxO1xyXG4gIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgXHJcbiAgfSk7XHJcbn1cclxuXHJcbnNjcm9sbExlZnQoKSB7Y29uc3QgZWxlbWVudCA9IHRoaXMuZGF0ZUxpc3QubmF0aXZlRWxlbWVudDsgZWxlbWVudC5zY3JvbGxCeVxyXG4gICh7bGVmdDogLTIwMCxiZWhhdmlvcjonc21vb3RoJ30pO31cclxuc2Nyb2xsUmlnaHQoKSB7Y29uc3QgZWxlbWVudCA9IHRoaXMuZGF0ZUxpc3QubmF0aXZlRWxlbWVudDsgZWxlbWVudC5zY3JvbGxCeVxyXG4gICh7bGVmdDogMjAwLGJlaGF2aW9yOidzbW9vdGgnfSk7fVxyXG5cclxuICBvblNsaWRlQ2hhbmdlXHJcbiAgKHNsaWRlRXZlbnQ6IE5nYlNsaWRlRXZlbnQpIHtcclxuICBjb25zdFxyXG4gICAgc2xpZGVJbmRleCA9ICtzbGlkZUV2ZW50LmN1cnJlbnQuXHJcbiAgICAgIHJlcGxhY2VcclxuICAgICAgKFxyXG4gICAgICAgICduZ2Itc2xpZGUtJ1xyXG4gICAgICAgICxcclxuICAgICAgICAnJ1xyXG4gICAgICApOyB0aGlzLmN1cnJlbnRTbGlkZSA9IHNsaWRlSW5kZXg7IFxyXG4gICAgICBsZXQgcHJldkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2Fyb3VzZWwtY29udHJvbC1wcmV2Jyk7XHJcbiAgICAgIGxldCBuZXh0RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jYXJvdXNlbC1jb250cm9sLW5leHQnKTtcclxuICAgICAgaWYodGhpcy5jdXJyZW50U2xpZGUgPT0gMCkge1xyXG4gICAgICAgIG5leHRFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XHJcbiAgICAgICAgaWYocHJldkVsZW1lbnQpIHtcclxuICAgICAgICAgIHByZXZFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLFwiZGlzcGxheTpub25lXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5jdXJyZW50U2xpZGUgPT09IHRoaXMub3ZlcmFsbFN0b3JlRGF0YT8uSW1hZ2VVUkxzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBwcmV2RWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICAgIGlmKG5leHRFbGVtZW50KSB7XHJcbiAgICAgICAgICBuZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJyxcImRpc3BsYXk6bm9uZVwiKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcHJldkVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICBuZXh0RWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICB9XHJcbn1cclxuZXhwYW5kZWRab25lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxudG9nZ2xlWm9uZSh6b25lTmFtZTogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gcHJldmVudCB6b25lIGNsaWNrXHJcbiAgaWYgKHRoaXMuZXhwYW5kZWRab25lcy5oYXMoem9uZU5hbWUpKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkWm9uZXMuZGVsZXRlKHpvbmVOYW1lKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5leHBhbmRlZFpvbmVzLmFkZCh6b25lTmFtZSk7XHJcbiAgfVxyXG59XHJcblxyXG5pc0V4cGFuZGVkKHpvbmVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5leHBhbmRlZFpvbmVzLmhhcyh6b25lTmFtZSk7XHJcbn1cclxuXHJcbkBWaWV3Q2hpbGQoJ3pvb21Qb3B1cCcpIHpvb21Qb3B1cCE6IEVsZW1lbnRSZWY7XHJcbnZpZXdJbWFnZTphbnk7XHJcbm9wZW5Nb2RlbCgpOiB2b2lkIHtcclxuICAvLyBPcGVuIG1vZGFsXHJcbiAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCwge1xyXG4gICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICBzaXplOiAneGwnXHJcbiAgfSk7XHJcblxyXG4gIC8vIEFQSSByZXF1ZXN0IHBheWxvYWRcclxuICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5LFxyXG4gICAgdXNlckVtYWlsZXM6IFtdLFxyXG4gICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICBsaW1pdDogMTAsXHJcbiAgICBvZmZzZXQ6IDAsXHJcbiAgICBzb3J0Q29sdW1uTmFtZTogJ2NoZWNrTGlzdE5hbWUnLFxyXG4gICAgc29ydEJ5OiAxLFxyXG4gICAgc2VhcmNoVmFsdWU6ICcnLFxyXG4gICAgZmlsdGVyOiAncnVuQUknLFxyXG4gICAgcnVuQUlDaGVja2xpc3ROYW1lOiBbXVxyXG4gIH07XHJcblxyXG4gIC8vIEFQSSBjYWxsXHJcbiAgdGhpcy5ab25lU2VydmljZS5nZXRWaWV3SW5zaWdodHNBcGkocmVxdWVzdERhdGEpXHJcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uY29kZSAhPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ05vIERhdGEgRm91bmQnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudmlld0ltYWdlID0gcmVzPy5kYXRhO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZsYWdzVmlldygpe1xyXG4gIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2ZsYWdzJ10pOyBcclxufVxyXG5cclxufVxyXG4gIC8vIHRlc3RpbmcgcHVycG9zZSBmb3IgdGhlIHBhbnQgcHJvamVjdCBzdGFydFxyXG5cclxuLy8gICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29udGFpbmVyJykgZHJvcGRvd25SZWYhOiBFbGVtZW50UmVmO1xyXG4vLyAgIHpvbmVzID0gWydSZWFkeSB0byB3ZWFyJywgJ0plYW5zJywgJ0JpbGxpbmcnLCAnU2hvcHBlciBab25lIFBhdGgnLCAnT3ZlcmFsbCBGb290ZmFsbCddO1xyXG4vLyAgIHNlbGVjdGVkWm9uZXM6IHN0cmluZ1tdID0gW107XHJcbi8vICAgZmlsdGVyZWRab25lczogc3RyaW5nW10gPSBbXTtcclxuLy8gICBzZWFyY2hUZXh0ID0gJyc7XHJcbi8vICAgZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbi8vICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbi8vICAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbi8vICAgICBpZiAoIXRoaXMuZHJvcGRvd25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbi8vICAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbi8vICAgICB9XHJcbi8vICAgfVxyXG4vLyAgIHRvZ2dsZURyb3Bkb3duKCkge1xyXG4vLyAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSAhdGhpcy5kcm9wZG93bk9wZW47XHJcbi8vICAgICB0aGlzLmZpbHRlclpvbmVzKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBjbG9zZURyb3Bkb3duKCkge1xyXG4vLyAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlLCAyMDApOyAvLyBmb3IgY2xpY2sgdG8gcmVnaXN0ZXJcclxuLy8gICB9XHJcblxyXG4vLyAgIGZpbHRlclpvbmVzKCkge1xyXG4vLyAgICAgY29uc3QgbG93ZXIgPSB0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcclxuLy8gICAgIHRoaXMuZmlsdGVyZWRab25lcyA9IHRoaXMuem9uZXMuZmlsdGVyKHpvbmUgPT5cclxuLy8gICAgICAgem9uZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSAmJlxyXG4vLyAgICAgICAhdGhpcy5zZWxlY3RlZFpvbmVzLmluY2x1ZGVzKHpvbmUpXHJcbi8vICAgICApO1xyXG4vLyAgIH1cclxuXHJcbi8vICAgYWRkWm9uZSh6b25lOiBzdHJpbmcpIHtcclxuLy8gICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZXMubGVuZ3RoIDwgMyAmJiAhdGhpcy5zZWxlY3RlZFpvbmVzLmluY2x1ZGVzKHpvbmUpKSB7XHJcbi8vICAgICAgIHRoaXMuc2VsZWN0ZWRab25lcy5wdXNoKHpvbmUpO1xyXG4vLyAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuLy8gICAgICAgdGhpcy5maWx0ZXJab25lcygpO1xyXG4vLyAgICAgfVxyXG4vLyAgIH1cclxuXHJcbi8vICAgcmVtb3ZlWm9uZShpbmRleDogbnVtYmVyKSB7XHJcbi8vICAgICB0aGlzLnNlbGVjdGVkWm9uZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuLy8gICAgIHRoaXMuZmlsdGVyWm9uZXMoKTtcclxuLy8gICB9XHJcblxyXG4vLyAgIHJlc2V0Wm9uZXMoKSB7XHJcbi8vICAgICB0aGlzLnNlbGVjdGVkWm9uZXMgPSBbXTtcclxuLy8gICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4vLyAgICAgdGhpcy5maWx0ZXJab25lcygpO1xyXG4vLyAgIH1cclxuLy8gICBhcHBseVpvbmVzKCl7XHJcbiAgICBcclxuLy8gICB9XHJcbi8vICAgIC8vIHRlc3RpbmcgcHVycG9zZSBmb3IgdGhlIHBhbnQgcHJvamVjdCBlbmRcclxuLy8gfVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTUgcmlnaHQtYm9yZGVyIG15LTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcHMtMyBwZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBtcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZHRleHRcIj5Db25jZW50cmF0aW9uIFN1bW1hcnkgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU3VtbWFyeSBvZiBvdmVyYWxsIHpvbmVzIGF0IHRoZSBzdG9yZVwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIiB0b29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM1MTJfMzI4NjgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjY2VjcuOTk5OThNOC4wMDAxNiA1LjMzMzMxSDguMDA2ODNNMTQuNjY2OCA3Ljk5OTk4QzE0LjY2NjggMTEuNjgxOSAxMS42ODIxIDE0LjY2NjYgOC4wMDAxNiAxNC42NjY2QzQuMzE4MjYgMTQuNjY2NiAxLjMzMzUgMTEuNjgxOSAxLjMzMzUgNy45OTk5OEMxLjMzMzUgNC4zMTgwOCA0LjMxODI2IDEuMzMzMzEgOC4wMDAxNiAxLjMzMzMxQzExLjY4MjEgMS4zMzMzMSAxNC42NjY4IDQuMzE4MDggMTQuNjY2OCA3Ljk5OTk4WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM1MTJfMzI4NjhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyICBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlICBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xMCBpbnZvaWNlc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIiBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1zLTJcIiBbZGlzYWJsZWRdPVwiIXpvbmVDb25jZW50cmF0aW9uRGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXpvbmVzdW1tYXJ5Tm9EYXRhICYmICF6b25lc3VtbWFyeUxvYWRpbmdcIiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciAgbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlICBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZml4ZWQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwicC0xXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnem9uZU5hbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWm9uZSBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lTmFtZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Zvb3RmYWxsQ291bnQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGZhbGwgPGJyPihBY3R1YWxzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZm9vdGZhbGxDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Zvb3RmYWxsQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2F2Z0R3ZWxsVGltZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEd2VsbCBUaW1lIDxicj4oQXZlcmFnZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2F2Z0R3ZWxsVGltZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2F2Z0R3ZWxsVGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmMgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvbmNlbnRyYXRpb25SYXRlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNlbnRyYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvbmNlbnRyYXRpb25SYXRlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY29uY2VudHJhdGlvblJhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSAqbmdJZj1cIiF6b25lc3VtbWFyeUxvYWRpbmcgJiYgIXpvbmVzdW1tYXJ5Tm9EYXRhXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVDb25jZW50cmF0aW9uRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIOKchSBQQVJFTlQgUk9XIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0xXCI+IDxzcGFuICpuZ0lmPVwiem9uZS5yb3dzPy5sZW5ndGhcIiBjbGFzcz1cInRvZ2dsZS1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVab25lKHpvbmUuem9uZU5hbWUsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNSU5VUyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNFeHBhbmRlZCh6b25lLnpvbmVOYW1lKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00LjE2Nzk3IDEwSDE1LjgzNDZcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBMVVMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0V4cGFuZGVkKHpvbmUuem9uZU5hbWUpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMTMgNC4xNjY1VjE1LjgzMzJNNC4xNjc5NyA5Ljk5OTg0SDE1LjgzNDZcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeSBvdmVyYWxsc3RvcmUgbWItMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBaT05FIE5BTUUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9uWm9uZUNsaWNrKHpvbmUuem9uZU5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB6b25lLnpvbmVOYW1lIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHpvbmUuZm9vdGZhbGxDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJykgfHwgJy0tJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB6b25lLmF2Z0R3ZWxsVGltZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJykgfHwgJy0tJyB9fSBtaW5zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHpvbmUuY29uY2VudHJhdGlvblJhdGU/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpIHx8ICctLScgfX0lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIOKchSBDSElMRCBST1dTIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHpvbmUucm93c1wiIFtoaWRkZW5dPVwiIWlzRXhwYW5kZWQoem9uZS56b25lTmFtZSlcIiBjbGFzcz1cImNoaWxkLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLTFcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwcy0xNSB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lIHRleHQtY2FwaXRhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93LnRvWm9uZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LmZvb3RmYWxsQ291bnQgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LmF2Z0R3ZWxsVGltZSB9fSBtaW5zPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHJvdy5jb25jZW50cmF0aW9uIH19JTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInpvbmVzdW1tYXJ5TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ6b25lc3VtbWFyeU5vRGF0YSAmJiAhem9uZXN1bW1hcnlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBab25lIENvbmNlbnRyYXRpb24gU3VtbWFyeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiem9uZXN1bW1hcnlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ6b25lc3VtbWFyeU5vRGF0YSAmJiAhem9uZXN1bW1hcnlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBab25lIENvbmNlbnRyYXRpb24gU3VtbWFyeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctN1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkdGV4dFwiPnt7IHpvbmVOYW1lIHx8ICcnIH19IENvbmNlbnRyYXRpb24gSGVhdG1hcCA8c3BhbiBuZ2JUb29sdGlwPVwiRGVuc2l0eSBoZWF0bWFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNTEyXzMyODY4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDEwLjY2NjZWNy45OTk5OE04LjAwMDE2IDUuMzMzMzFIOC4wMDY4M00xNC42NjY4IDcuOTk5OThDMTQuNjY2OCAxMS42ODE5IDExLjY4MjEgMTQuNjY2NiA4LjAwMDE2IDE0LjY2NjZDNC4zMTgyNiAxNC42NjY2IDEuMzMzNSAxMS42ODE5IDEuMzMzNSA3Ljk5OTk4QzEuMzMzNSA0LjMxODA4IDQuMzE4MjYgMS4zMzMzMSA4LjAwMDE2IDEuMzMzMzFDMTEuNjgyMSAxLjMzMzMxIDE0LjY2NjggNC4zMTgwOCAxNC42NjY4IDcuOTk5OThaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM1MTJfMzI4NjhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciB0ZXh0LW5vd3JhcCBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Ok5hdiBncm91cC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBuYXYtZ3JvdXAtb3V0bGluZSBib3JkZXItMSBidG4tZ3JvdXAgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZVBsYW5CdG4nOiB0eXBlID09PSAnZGFpbHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ2RhaWx5JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGVkJzogZGlzYWJsZURheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2VsZWN0UGxhbignZGFpbHknKVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVEYXkgPyB0cnVlIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSAgcHgtNiBweS0zXCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHR5cGUgPT09ICd3ZWVrbHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ3dlZWtseScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVXZWVrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJzZWxlY3RQbGFuKCd3ZWVrbHknKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlV2Vla1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWVrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVQbGFuQnRuJzogdHlwZSA9PT0gJ21vbnRobHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ21vbnRobHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZWQnOiBkaXNhYmxlTW9udGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInNlbGVjdFBsYW4oJ21vbnRobHknKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlTW9udGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9udGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggbWItNlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3VzdG9tQXJyb3cgJiYgIWhlYXRtYXBMb2FkaW5nICYmICFoZWF0bWFwTm9EYXRhXCIgY2xhc3M9XCJtdC0zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxMZWZ0KClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgMThMOSAxMkwxNSA2XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJwZXJpb2R6b25lID09PSAxICYmICFjdXN0b21PcHRpb25cIiAjZGF0ZUxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHBpbGxzIG5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTUgbXQtMSBuby13cmFwLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1vdmVyZmxvd1wiICpuZ0Zvcj1cImxldCBkYXRlIG9mIG92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnMtdG9nZ2xlPVwicGlsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGUuem9uZURhdGUgPT09IHNlbGVjdGVkRGF0ZSA/ICdjYXRlZ29yeV9hY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmbGV4LWNvbHVtbiBjdXJzb3ItcG9pbnRlciBmbGV4LWNlbnRlciBtLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2hhbmdlKGRhdGUuem9uZURhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtaWNvbiBhY3RpdmVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtdGV4dCB0ZXh0LWdyYXktNzAwIGZ3LWJvbGRlciBmcy03IGxoLTEgbXgtM1wiPnt7IGRhdGUuem9uZURhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1bGxldC1jdXN0b20gcG9zaXRpb24tYWJzb2x1dGUgYm90dG9tLTAgaC00cHggYmctcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiKHBlcmlvZHpvbmUgPT09IDIgfHwgcGVyaW9kem9uZSA9PT0gMykgJiYgIWN1c3RvbU9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBwaWxscyBuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFicyBuYXYtbGluZS10YWJzLTJ4IGJvcmRlci10cmFuc3BhcmVudCBmcy01IGZ3LWJvbGRlciBhbGlnbi1pdGVtcy1zdGFydCBtYi01IG10LTEgcC0zIG5vLXdyYXAtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LW92ZXJmbG93XCIgKm5nRm9yPVwibGV0IGRhdGUgb2Ygb3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icy10b2dnbGU9XCJwaWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZS56b25lRGF0ZSA9PT0gc2VsZWN0ZWREYXRlID8gJ2NhdGVnb3J5X2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtY29sdW1uIGN1cnNvci1wb2ludGVyIGZsZXgtY2VudGVyIHctOTBweCBteC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGF0ZUNoYW5nZShkYXRlLnpvbmVEYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWljb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtdGV4dCB0ZXh0LWdyYXktNzAwIGZ3LWJvbGRlciBmcy03IGxoLTEgbXgtM1wiPnt7IGRhdGUuem9uZURhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1bGxldC1jdXN0b20gcG9zaXRpb24tYWJzb2x1dGUgYm90dG9tLTAgaC00cHggYmctcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiY3VzdG9tT3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHBpbGxzIG5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTUgbXQtMSBwLTMgbm8td3JhcC1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtb3ZlcmZsb3dcIiAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBvdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT1cInBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlLnpvbmVEYXRlID09PSBzZWxlY3RlZERhdGUgPyAnY2F0ZWdvcnlfYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1jb2x1bW4gY3Vyc29yLXBvaW50ZXIgZmxleC1jZW50ZXIgdy05MHB4IG14LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2hhbmdlKGRhdGUuem9uZURhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi10ZXh0IHRleHQtZ3JheS03MDAgZnctYm9sZGVyIGZzLTcgbGgtMSBteC0zXCI+e3sgZGF0ZS56b25lRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnVsbGV0LWN1c3RvbSBwb3NpdGlvbi1hYnNvbHV0ZSBib3R0b20tMCBoLTRweCBiZy1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3VzdG9tQXJyb3cgJiYgIWhlYXRtYXBMb2FkaW5nICYmICFoZWF0bWFwTm9EYXRhXCIgY2xhc3M9XCJtdC0zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxSaWdodCgpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGVhdG1hcExvYWRpbmcgJiYgIWhlYXRtYXBOb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nYi1jYXJvdXNlbCAjY2Fyb3VzZWwgW2ludGVydmFsXT1cIjBcIiBbcGF1c2VPbkhvdmVyXT1cInRydWVcIiAoc2xpZGUpPVwib25TbGlkZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RlZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIG92ZXJhbGxTdG9yZURhdGE/LkltYWdlVVJMcztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiU2xpZGUgW2lkXT1cIiduZ2Itc2xpZGUtJysgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaW1hZ2UtY29udGFpbmVyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIChjbGljayk9XCJjb25jZW50cmF0aW9uSGVhdG1hcChvdmVyYWxsU3RvcmVEYXRhPy5JbWFnZVVSTHMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlLlVSTFwiIFthbHRdPVwiaW1hZ2Uuc3RyZWFtTmFtZVwiIGNsYXNzPVwiY2FyZGltZ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJpbWFnZS5VUkxcIiBkb3dubG9hZD48c3ZnIGlkPVwiZG93bmxvYWQtaWNvblwiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tb3ZlcmxheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8zODIyXzE5NDc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzlcIiBoZWlnaHQ9XCIzOVwiIHJ4PVwiNy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOS41IDIzLjVWMjYuODMzM0MyOS41IDI3LjI3NTQgMjkuMzI0NCAyNy42OTkzIDI5LjAxMTggMjguMDExOEMyOC42OTkzIDI4LjMyNDQgMjguMjc1NCAyOC41IDI3LjgzMzMgMjguNUgxNi4xNjY3QzE1LjcyNDYgMjguNSAxNS4zMDA3IDI4LjMyNDQgMTQuOTg4MiAyOC4wMTE4QzE0LjY3NTYgMjcuNjk5MyAxNC41IDI3LjI3NTQgMTQuNSAyNi44MzMzVjIzLjVNMTcuODMzMyAxOS4zMzMzTDIyIDIzLjVNMjIgMjMuNUwyNi4xNjY3IDE5LjMzMzNNMjIgMjMuNVYxMy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMzgyMl8xOTQ3OVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiNDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMzgyMl8xOTQ3OVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18zODIyXzE5NDc5XCIgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ2ItY2Fyb3VzZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYXRtYXBMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGNvbmNoZWF0bWFwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhdG1hcE5vRGF0YSAmJiAhaGVhdG1hcExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBjb25jaGVhdG1hcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIE92ZXJhbGwgU3RvcmUgQ29uY2VudHJhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhdG1hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keSBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0xMCBtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRm9vdGZhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj57e292ZXJhbGxTdG9yZURhdGE/LnRvdGFsRm9vdGZhbGw/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAnLS0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyZGFzaGVkIG15LTRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uY2VudHJhdGlvbiAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyByb3VuZG9mKG92ZXJhbGxTdG9yZURhdGE/LmNvbmNlbnRyYXRpb25SYXRlKSB8fCAgJzAnIH19ICU8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJhbGxTdG9yZURhdGE/LmNvbmNlbnRyYXRpb25SYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgfHwgJy0tJyB9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICc0NTknXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCAhPT0gJzQ1OSdcIiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyYWxsdGV4dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuY2VkIEZvb3RmYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyYWxsU3RvcmVEYXRhPy5ib3VuY2VkQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAnLS0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ICE9PSAnNDU5J1wiIGNsYXNzPVwiYm9yZGVyZGFzaGVkIG15LTRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICc0NTknXCIgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5nYWdlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG92ZXJhbGxTdG9yZURhdGE/LmVuZ2FnZXJzQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAnLS0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlcmRhc2hlZCBteS00XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJhbGx0ZXh0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF2Zy4gRHdlbGwgVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcmFsbFN0b3JlRGF0YT8uYXZnRHdlbGxUaW1lPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgfHwgJy0tJyB9fSBtaW5zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTInICYmIHN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTQnXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTInICYmIHN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTQnXCIgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdlIFJhbmdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyYWxsU3RvcmVEYXRhPy5hZ2VSYW5nZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIH0pIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImJvcmRlcmRhc2hlZCBteS00XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyYWxsdGV4dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWxlIFJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG92ZXJhbGxTdG9yZURhdGE/Lm1hbGVSYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgfSkgfHwgJy0tJyB9fSVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImJvcmRlcmRhc2hlZCBteS00XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyYWxsdGV4dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZW1hbGUgUmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcmFsbFN0b3JlRGF0YT8uZmVtYWxlUmF0ZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pIHx8ICctLScgfX0lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ID09ICc0NTknXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCA9PSAnNDU5J1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJhbGx0ZXh0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyb2xsZXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG92ZXJhbGxTdG9yZURhdGE/LnRyb2xsZXlSYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAgJy0tJyB9fSVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ID09ICc0NTknXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCA9PSAnNDU5J1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJhbGx0ZXh0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2tldFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcmFsbFN0b3JlRGF0YT8uYmFza2V0UmF0ZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgfHwgICctLScgfX0lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlciBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3Blbk1vZGVsKClcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQtcHJpbWFyeSBtYi0yIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xNzEyNl83MzM2NylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY3OTcgMS42NjY1TDQuMzI2MyAyLjQ0OTg0QzQuNDM5NzcgMy4wMTIzNCA0LjY5NjUzIDMuNTM2MDMgNS4wNzE3MyAzLjk3MDIxQzUuNDQ2OTIgNC40MDQzOSA1LjkyNzg2IDQuNzM0MzUgNi40Njc5NyA0LjkyODE3TDYuNjY3OTcgNC45OTk4NEw2LjQ2Nzk3IDUuMDcxNUM1LjkyNzg2IDUuMjY1MzIgNS40NDY5MiA1LjU5NTI5IDUuMDcxNzMgNi4wMjk0N0M0LjY5NjUzIDYuNDYzNjUgNC40Mzk3NyA2Ljk4NzMzIDQuMzI2MyA3LjU0OTg0TDQuMTY3OTcgOC4zMzMxN0w0LjAwOTY0IDcuNTQ5ODRDMy44OTYxNyA2Ljk4NzMzIDMuNjM5NDEgNi40NjM2NSAzLjI2NDIxIDYuMDI5NDdDMi44ODkwMSA1LjU5NTI5IDIuNDA4MDggNS4yNjUzMiAxLjg2Nzk3IDUuMDcxNUwxLjY2Nzk3IDQuOTk5ODRMMS44Njc5NyA0LjkyODE3QzIuNDA4MDggNC43MzQzNSAyLjg4OTAxIDQuNDA0MzkgMy4yNjQyMSAzLjk3MDIxQzMuNjM5NDEgMy41MzYwMyAzLjg5NjE3IDMuMDEyMzQgNC4wMDk2NCAyLjQ0OTg0TDQuMTY3OTcgMS42NjY1Wk02LjY2Nzk3IDEzLjMzMzJMNi44NTk2MyAxNC4zOTY1QzYuOTA5NCAxNC42NzM5IDcuMDI4NjkgMTQuOTM0MSA3LjIwNjM0IDE1LjE1MjhDNy4zODM5OSAxNS4zNzE2IDcuNjE0MjEgMTUuNTQxNyA3Ljg3NTQ3IDE1LjY0NzNMOC4zMzQ2NCAxNS44MzMyTDcuODc1NDcgMTYuMDE5QzcuNjE0MTYgMTYuMTI0NCA3LjM4Mzg0IDE2LjI5NDQgNy4yMDYwNSAxNi41MTNDNy4wMjgyNSAxNi43MzE2IDYuOTA4NzggMTYuOTkxNyA2Ljg1ODggMTcuMjY5TDYuNjY3OTcgMTguMzMzMkw2LjQ3NjMgMTcuMjY5OEM2LjQyNjUzIDE2Ljk5MjUgNi4zMDcyNSAxNi43MzIyIDYuMTI5NiAxNi41MTM1QzUuOTUxOTQgMTYuMjk0NyA1LjcyMTczIDE2LjEyNDYgNS40NjA0NyAxNi4wMTlMNS4wMDEzIDE1LjgzMzJMNS40NjA0NyAxNS42NDczQzUuNzIxNzggMTUuNTQxOSA1Ljk1MjEgMTUuMzcyIDYuMTI5ODkgMTUuMTUzNEM2LjMwNzY5IDE0LjkzNDggNi40MjcxNiAxNC42NzQ2IDYuNDc3MTQgMTQuMzk3M0w2LjY2Nzk3IDEzLjMzMzJaTTEzLjMzNDYgMi40OTk4NEwxMy43OTggNC43MTE1QzE0LjAzNDEgNS44MzkwNyAxNC41NTg0IDYuODg2MjEgMTUuMzE5OCA3Ljc1MDgxQzE2LjA4MTEgOC42MTU0MSAxNy4wNTM1IDkuMjY3OTYgMTguMTQyMSA5LjY0NDg0TDE5LjE2OCA5Ljk5OTg0TDE4LjE0MjEgMTAuMzU0OEMxNy4wNTM1IDEwLjczMTcgMTYuMDgxMSAxMS4zODQzIDE1LjMxOTggMTIuMjQ4OUMxNC41NTg0IDEzLjExMzUgMTQuMDM0MSAxNC4xNjA2IDEzLjc5OCAxNS4yODgyTDEzLjMzNDYgMTcuNDk5OEwxMi44NzEzIDE1LjI4ODJDMTIuNjM1MiAxNC4xNjA2IDEyLjExMDkgMTMuMTEzNSAxMS4zNDk1IDEyLjI0ODlDMTAuNTg4MiAxMS4zODQzIDkuNjE1NzggMTAuNzMxNyA4LjUyNzE0IDEwLjM1NDhMNy41MDEzIDkuOTk5ODRMOC41MjcxNCA5LjY0NDg0QzkuNjE1NzggOS4yNjc5NiAxMC41ODgyIDguNjE1NDEgMTEuMzQ5NSA3Ljc1MDgxQzEyLjExMDkgNi44ODYyMSAxMi42MzUyIDUuODM5MDcgMTIuODcxMyA0LjcxMTVMMTMuMzM0NiAyLjQ5OTg0WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTcxMjZfNzMzNjdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3Bhbj4gVmlldyBBSSBJbnNpZ2h0czwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3pvb21Qb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktbW9kYWwgcC00XCI+XHJcblxyXG4gICAgICAgIDwhLS0gSEVBREVSIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEgMThMMjEuMTkgMTguOTRDMjEuMzI2MiAxOS42MTUgMjEuNjM0MyAyMC4yNDM0IDIyLjA4NDUgMjAuNzY0NEMyMi41MzQ3IDIxLjI4NTUgMjMuMTExOSAyMS42ODE0IDIzLjc2IDIxLjkxNEwyNCAyMkwyMy43NiAyMi4wODZDMjMuMTExOSAyMi4zMTg2IDIyLjUzNDcgMjIuNzE0NSAyMi4wODQ1IDIzLjIzNTZDMjEuNjM0MyAyMy43NTY2IDIxLjMyNjIgMjQuMzg1IDIxLjE5IDI1LjA2TDIxIDI2TDIwLjgxIDI1LjA2QzIwLjY3MzggMjQuMzg1IDIwLjM2NTcgMjMuNzU2NiAxOS45MTU1IDIzLjIzNTZDMTkuNDY1MyAyMi43MTQ1IDE4Ljg4ODEgMjIuMzE4NiAxOC4yNCAyMi4wODZMMTggMjJMMTguMjQgMjEuOTE0QzE4Ljg4ODEgMjEuNjgxNCAxOS40NjUzIDIxLjI4NTUgMTkuOTE1NSAyMC43NjQ0QzIwLjM2NTcgMjAuMjQzNCAyMC42NzM4IDE5LjYxNSAyMC44MSAxOC45NEwyMSAxOFpNMjQgMzJMMjQuMjMgMzMuMjc2QzI0LjI4OTcgMzMuNjA4OCAyNC40MzI5IDMzLjkyMTEgMjQuNjQ2IDM0LjE4MzZDMjQuODU5MiAzNC40NDYxIDI1LjEzNTUgMzQuNjUwMyAyNS40NDkgMzQuNzc3TDI2IDM1TDI1LjQ0OSAzNS4yMjNDMjUuMTM1NCAzNS4zNDk1IDI0Ljg1OSAzNS41NTM1IDI0LjY0NTcgMzUuODE1OEMyNC40MzIzIDM2LjA3ODEgMjQuMjg5IDM2LjM5MDIgMjQuMjI5IDM2LjcyM0wyNCAzOEwyMy43NyAzNi43MjRDMjMuNzEwMyAzNi4zOTEyIDIzLjU2NzEgMzYuMDc4OSAyMy4zNTQgMzUuODE2NEMyMy4xNDA4IDM1LjU1MzkgMjIuODY0NSAzNS4zNDk3IDIyLjU1MSAzNS4yMjNMMjIgMzVMMjIuNTUxIDM0Ljc3N0MyMi44NjQ2IDM0LjY1MDUgMjMuMTQxIDM0LjQ0NjUgMjMuMzU0MyAzNC4xODQyQzIzLjU2NzcgMzMuOTIxOSAyMy43MTEgMzMuNjA5OCAyMy43NzEgMzMuMjc3TDI0IDMyWk0zMiAxOUwzMi41NTYgMjEuNjU0QzMyLjgzOTQgMjMuMDA3MSAzMy40Njg1IDI0LjI2MzYgMzQuMzgyMSAyNS4zMDEyQzM1LjI5NTggMjYuMzM4NyAzNi40NjI2IDI3LjEyMTcgMzcuNzY5IDI3LjU3NEwzOSAyOEwzNy43NjkgMjguNDI2QzM2LjQ2MjYgMjguODc4MyAzNS4yOTU4IDI5LjY2MTMgMzQuMzgyMSAzMC42OTg4QzMzLjQ2ODUgMzEuNzM2NCAzMi44Mzk0IDMyLjk5MjkgMzIuNTU2IDM0LjM0NkwzMiAzN0wzMS40NDQgMzQuMzQ2QzMxLjE2MDYgMzIuOTkyOSAzMC41MzE1IDMxLjczNjQgMjkuNjE3OSAzMC42OTg4QzI4LjcwNDIgMjkuNjYxMyAyNy41Mzc0IDI4Ljg3ODMgMjYuMjMxIDI4LjQyNkwyNSAyOEwyNi4yMzEgMjcuNTc0QzI3LjUzNzQgMjcuMTIxNyAyOC43MDQyIDI2LjMzODcgMjkuNjE3OSAyNS4zMDEyQzMwLjUzMTUgMjQuMjYzNiAzMS4xNjA2IDIzLjAwNzEgMzEuNDQ0IDIxLjY1NEwzMiAxOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0wIGZ3LXNlbWlib2xkXCI+QUkgSW5zaWdodHMgZm9yICZsdDtPdmVyYWxsIFpvbmVzJmd0OzwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb25cIiAoY2xpY2spPVwibW9kZWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICDinJVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTElTVCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlPy5tb2JpbGV1c2FnZWRldGVjdGlvbiB8fCB2aWV3SW1hZ2U/LnF1ZXVlTWFuYWdlbWVudCB8fCB2aWV3SW1hZ2U/LmN1c3RvbWVydW5hdHRlbmRlZCB8fCB2aWV3SW1hZ2U/LnN0YWZmbGVmdGludGhlbWlkZGxlXCIgY2xhc3M9XCJhaS1jYXJkXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlPy5tb2JpbGV1c2FnZWRldGVjdGlvblwiIGNsYXNzPVwiYWktcm93IHJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDFDNy43MTYgMSAxIDcuNzE2IDEgMTZDMSAyNC4yODQ1IDcuNzE2IDMxIDE2IDMxQzI0LjI4NCAzMSAzMSAyNC4yODQgMzEgMTZDMzEgNy43MTYgMjQuMjg0IDEgMTYgMVpNMjggMTZDMjguMDAyOSAxOC42NjQ4IDI3LjExNTEgMjEuMjU0MiAyNS40Nzc1IDIzLjM1NjVMMjAuODA0NSAxOC42ODM1VjkuMzg3NUMyMC44MDQ1IDguMzQ0IDE5Ljk0NCA3LjQ5ODUgMTguODgyNSA3LjQ5ODVIMTMuMTE2NUMxMi4xNTQ1IDcuNDk4NSAxMS4zNjQ1IDguMTk1NSAxMS4yMjQgOS4xMDI1TDguNjQzNSA2LjUyMjVDMTAuNzQ1OCA0Ljg4NDk0IDEzLjMzNTIgMy45OTcwNyAxNiA0QzIyLjYyNyA0IDI4IDkuMzcyNSAyOCAxNlpNMTIuMTU2IDIxLjQ3OTVWMTQuMjc3TDE5LjM1NzUgMjEuNDc5NUgxMi4xNTZaTTE2LjU3NiAyMi45ODQ1QzE2LjU3NiAyMy4yOTcgMTYuMzE4NSAyMy41NTEgMTYgMjMuNTUxQzE1LjY4MTUgMjMuNTUxIDE1LjQyMzUgMjMuMjk3IDE1LjQyMzUgMjIuOTg0NUMxNS40MjM1IDIyLjY3MiAxNS42ODIgMjIuNDE4IDE2IDIyLjQxOEMxNi4zMTg1IDIyLjQxOCAxNi41NzYgMjIuNjcyIDE2LjU3NiAyMi45ODQ1Wk0xMi4xNTYgMTAuMDM0NVY5LjM4NzVIMTkuODQ0VjE3LjcyMjVMMTIuMTU2IDEwLjAzNDVaTTE0LjgxOTUgOC40MjQ1QzE0LjgxOTUgOC4yOTQgMTQuOTI3IDguMTg4IDE1LjA1OTUgOC4xODhIMTYuOTM5NUMxNy4wNzI1IDguMTg4IDE3LjE4MDUgOC4yOTQgMTcuMTgwNSA4LjQyNDVDMTcuMTgwNSA4LjU1NSAxNy4wNzIgOC42NjEgMTYuOTM5NSA4LjY2MUgxNS4wNTk1QzE0Ljk5NjQgOC42NjEwMSAxNC45MzU5IDguNjM2MiAxNC44OTEgOC41OTE5NUMxNC44NDYxIDguNTQ3NjkgMTQuODIwNCA4LjQ4NzU0IDE0LjgxOTUgOC40MjQ1Wk00IDE2QzMuOTk3MTggMTMuMzM1MyA0Ljg4NTA1IDEwLjc0NjIgNi41MjI1IDguNjQ0TDExLjE5NDUgMTMuMzE2NVYyMi42MTI1QzExLjE5NDUgMjMuNjU2NSAxMi4wNTUgMjQuNTAyIDEzLjExNjUgMjQuNTAySDE4Ljg4MjVDMTkuODQ0NSAyNC41MDIgMjAuNjM0NSAyMy44MDQ1IDIwLjc3NSAyMi44OTc1TDIzLjM1NSAyNS40Nzc1QzIxLjI1MzEgMjcuMTE0NyAxOC42NjQzIDI4LjAwMjYgMTYgMjhDOS4zNzI1IDI4IDQgMjIuNjI4IDQgMTZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+TW9iaWxlIERldGVjdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbXQtMlwiPnt7dmlld0ltYWdlPy5tb2JpbGV1c2FnZWRldGVjdGlvbiA/PyAnLS0nfX0gRGV0ZWN0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImZsYWdzVmlldygpXCIgY2xhc3M9XCJ2aWV3LWxpbmsgY3Vyc29yLXBvaW50ZXJcIj5WaWV3IEluIERldGFpbCA8c3BhbiBjbGFzcz1cIm1zLTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE3XCIgdmlld0JveD1cIjAgMCAxNyAxN1wiIGZpbGw9XCJub25lXCI+XHJcbjxwYXRoIGQ9XCJNMTMuMzM1OSA5LjE2ODI5VjE0LjE2ODNDMTMuMzM1OSAxNC42MTAzIDEzLjE2MDMgMTUuMDM0MiAxMi44NDc4IDE1LjM0NjhDMTIuNTM1MiAxNS42NTk0IDEyLjExMTMgMTUuODM1IDExLjY2OTMgMTUuODM1SDIuNTAyNkMyLjA2MDU4IDE1LjgzNSAxLjYzNjY1IDE1LjY1OTQgMS4zMjQwOSAxNS4zNDY4QzEuMDExNTMgMTUuMDM0MiAwLjgzNTkzOCAxNC42MTAzIDAuODM1OTM4IDE0LjE2ODNWNS4wMDE2M0MwLjgzNTkzOCA0LjU1OTYgMS4wMTE1MyA0LjEzNTY4IDEuMzI0MDkgMy44MjMxMkMxLjYzNjY1IDMuNTEwNTYgMi4wNjA1OCAzLjMzNDk2IDIuNTAyNiAzLjMzNDk2SDcuNTAyNk0xMC44MzU5IDAuODM0OTYxSDE1LjgzNTlNMTUuODM1OSAwLjgzNDk2MVY1LjgzNDk2TTE1LjgzNTkgMC44MzQ5NjFMNi42NjkyNyAxMC4wMDE2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdJbWFnZT8ucXVldWVNYW5hZ2VtZW50XCIgY2xhc3M9XCJhaS1yb3cgcm93IFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjYgMjZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMjg1NzEgMS43MTQyOUM1LjYwMzczIDEuNzE0MjkgNC45NDk2OCAxLjk4NTIgNC40Njc0NCAyLjQ2NzQ0QzMuOTg1MiAyLjk0OTY4IDMuNzE0MjkgMy42MDM3MyAzLjcxNDI5IDQuMjg1NzJDMy43MTQyOSA0Ljk2NzcgMy45ODUyIDUuNjIxNzUgNC40Njc0NCA2LjEwMzk5QzQuOTQ5NjggNi41ODYyMyA1LjYwMzczIDYuODU3MTQgNi4yODU3MSA2Ljg1NzE0QzYuOTY3NyA2Ljg1NzE0IDcuNjIxNzUgNi41ODYyMyA4LjEwMzk5IDYuMTAzOTlDOC41ODYyMyA1LjYyMTc1IDguODU3MTQgNC45Njc3IDguODU3MTQgNC4yODU3MkM4Ljg1NzE0IDMuNjAzNzMgOC41ODYyMyAyLjk0OTY4IDguMTAzOTkgMi40Njc0NEM3LjYyMTc1IDEuOTg1MiA2Ljk2NzcgMS43MTQyOSA2LjI4NTcxIDEuNzE0MjlaTTIgNC4yODU3MkMyIDMuMTQ5MDcgMi40NTE1MyAyLjA1ODk4IDMuMjU1MjYgMS4yNTUyNkM0LjA1ODk4IDAuNDUxNTMgNS4xNDkwNyA0LjEyNTg0ZS0wNyA2LjI4NTcxIDQuMTI1ODRlLTA3QzcuNDIyMzYgNC4xMjU4NGUtMDcgOC41MTI0NCAwLjQ1MTUzIDkuMzE2MTcgMS4yNTUyNkMxMC4xMTk5IDIuMDU4OTggMTAuNTcxNCAzLjE0OTA3IDEwLjU3MTQgNC4yODU3MkMxMC41NzE0IDUuNDIyMzYgMTAuMTE5OSA2LjUxMjQ1IDkuMzE2MTcgNy4zMTYxN0M4LjUxMjQ0IDguMTE5OSA3LjQyMjM2IDguNTcxNDMgNi4yODU3MSA4LjU3MTQzQzUuMTQ5MDcgOC41NzE0MyA0LjA1ODk4IDguMTE5OSAzLjI1NTI2IDcuMzE2MTdDMi40NTE1MyA2LjUxMjQ1IDIgNS40MjIzNiAyIDQuMjg1NzJaTTAgMTIuODU3MUMwIDEyLjE3NTIgMC4yNzA5MTggMTEuNTIxMSAwLjc1MzE1NCAxMS4wMzg5QzEuMjM1MzkgMTAuNTU2NiAxLjg4OTQ0IDEwLjI4NTcgMi41NzE0MyAxMC4yODU3SDEwQzEwLjY4MiAxMC4yODU3IDExLjMzNiAxMC41NTY2IDExLjgxODMgMTEuMDM4OUMxMi4zMDA1IDExLjUyMTEgMTIuNTcxNCAxMi4xNzUyIDEyLjU3MTQgMTIuODU3MVYxOC44NTcxQzEyLjU3MTQgMjAuNTI0MiAxMS45MDkyIDIyLjEyMyAxMC43MzA0IDIzLjMwMThDOS41NTE1OSAyNC40ODA2IDcuOTUyNzkgMjUuMTQyOSA2LjI4NTcxIDI1LjE0MjlDNC42MTg2NCAyNS4xNDI5IDMuMDE5ODQgMjQuNDgwNiAxLjg0MTA0IDIzLjMwMThDMC42NjIyNDMgMjIuMTIzIDAgMjAuNTI0MiAwIDE4Ljg1NzFWMTIuODU3MVpNMi41NzE0MyAxMkMyLjM0NDEgMTIgMi4xMjYwOCAxMi4wOTAzIDEuOTY1MzQgMTIuMjUxMUMxLjgwNDU5IDEyLjQxMTggMS43MTQyOSAxMi42Mjk4IDEuNzE0MjkgMTIuODU3MVYxOC44NTcxQzEuNzE0MjkgMjAuMDY5NiAyLjE5NTkyIDIxLjIzMjMgMy4wNTMyMyAyMi4wODk2QzMuOTEwNTQgMjIuOTQ2OSA1LjA3MzMgMjMuNDI4NiA2LjI4NTcxIDIzLjQyODZDNy40OTgxMyAyMy40Mjg2IDguNjYwODkgMjIuOTQ2OSA5LjUxODIgMjIuMDg5NkMxMC4zNzU1IDIxLjIzMjMgMTAuODU3MSAyMC4wNjk2IDEwLjg1NzEgMTguODU3MVYxMi44NTcxQzEwLjg1NzEgMTIuNjI5OCAxMC43NjY4IDEyLjQxMTggMTAuNjA2MSAxMi4yNTExQzEwLjQ0NTMgMTIuMDkwMyAxMC4yMjczIDEyIDEwIDEySDIuNTcxNDNaTTEyLjU3MjYgOC41NzE0M0MxMS43NzM2IDguNTczMDMgMTAuOTkwMyA4LjM1MDA3IDEwLjMxMiA3LjkyOEMxMC42OTYgNy41MDUxNCAxMS4wMTM3IDcuMDE5NDMgMTEuMjQ5MSA2LjQ5MDI5QzExLjYzOTMgNi43MjQzNSAxMi4wODQ3IDYuODUwNjcgMTIuNTM5NyA2Ljg1NjM3QzEyLjk5NDYgNi44NjIwNyAxMy40NDMgNi43NDY5NCAxMy44Mzg5IDYuNTIyNzJDMTQuMjM0OSA2LjI5ODUxIDE0LjU2NDIgNS45NzMyNSAxNC43OTM0IDUuNTgwMTRDMTUuMDIyNiA1LjE4NzA0IDE1LjE0MzMgNC43NDAxNiAxNS4xNDMzIDQuMjg1MTRDMTUuMTQzMyAzLjgzMDEyIDE1LjAyMjYgMy4zODMyNSAxNC43OTM0IDIuOTkwMTRDMTQuNTY0MiAyLjU5NzA0IDE0LjIzNDkgMi4yNzE3OCAxMy44Mzg5IDIuMDQ3NTZDMTMuNDQzIDEuODIzMzUgMTIuOTk0NiAxLjcwODIyIDEyLjUzOTcgMS43MTM5MkMxMi4wODQ3IDEuNzE5NjEgMTEuNjM5MyAxLjg0NTk0IDExLjI0OTEgMi4wOEMxMS4wMTQgMS41NTQ5NyAxMC42OTc4IDEuMDcwMTkgMTAuMzEyIDAuNjQzNDI5QzEwLjg3NTQgMC4yOTQwMzggMTEuNTEyMyAwLjA4MDEzMjUgMTIuMTcyNCAwLjAxODUzNzFDMTIuODMyNSAtMC4wNDMwNTgzIDEzLjQ5NzkgMC4wNDkzMzU5IDE0LjExNjMgMC4yODg0NTNDMTQuNzM0NiAwLjUyNzU2OSAxNS4yODkxIDAuOTA2ODg4IDE1LjczNiAxLjM5NjU3QzE2LjE4MyAxLjg4NjI2IDE2LjUxMDIgMi40NzI5NiAxNi42OTIgMy4xMTA1NEMxNi44NzM4IDMuNzQ4MTEgMTYuOTA1MiA0LjQxOTE3IDE2Ljc4MzcgNS4wNzA5M0MxNi42NjIzIDUuNzIyNjkgMTYuMzkxMiA2LjMzNzM4IDE1Ljk5MiA2Ljg2NjY2QzE1LjU5MjcgNy4zOTU5NCAxNS4wNzYxIDcuODI1MzggMTQuNDgyOCA4LjEyMTE5QzEzLjg4OTQgOC40MTcgMTMuMjM1NiA4LjU3MTEyIDEyLjU3MjYgOC41NzE0M1pNMTIuNTcyNiAyNS4xNDI5QzExLjkyOSAyNS4xNDM0IDExLjI4OTIgMjUuMDQ1MSAxMC42NzU0IDI0Ljg1MTRDMTEuMjM0MyAyNC40NDI1IDExLjczMzIgMjMuOTU3NCAxMi4xNTc3IDIzLjQxMDNDMTIuMjk0OSAyMy40MjI1IDEyLjQzMzEgMjMuNDI4NiAxMi41NzI2IDIzLjQyODZDMTMuNzg1IDIzLjQyODYgMTQuOTQ3OCAyMi45NDY5IDE1LjgwNTEgMjIuMDg5NkMxNi42NjI0IDIxLjIzMjMgMTcuMTQ0IDIwLjA2OTYgMTcuMTQ0IDE4Ljg1NzFWMTIuODU3MUMxNy4xNDQgMTIuNjI5OCAxNy4wNTM3IDEyLjQxMTggMTYuODkzIDEyLjI1MTFDMTYuNzMyMiAxMi4wOTAzIDE2LjUxNDIgMTIgMTYuMjg2OSAxMkgxMy42MTZDMTMuNDYzNCAxMS4zNTUyIDEzLjE0MDUgMTAuNzYzMiAxMi42ODExIDEwLjI4NTdIMTYuMjg2OUMxNi45Njg4IDEwLjI4NTcgMTcuNjIyOSAxMC41NTY2IDE4LjEwNTEgMTEuMDM4OUMxOC41ODc0IDExLjUyMTEgMTguODU4MyAxMi4xNzUyIDE4Ljg1ODMgMTIuODU3MVYxOC44NTcxQzE4Ljg1ODMgMTkuNjgyNiAxOC42OTU3IDIwLjUgMTguMzc5OCAyMS4yNjI2QzE4LjA2MzkgMjIuMDI1MiAxNy42MDA5IDIyLjcxODEgMTcuMDE3MiAyMy4zMDE4QzE2LjQzMzYgMjMuODg1NSAxNS43NDA2IDI0LjM0ODUgMTQuOTc4IDI0LjY2NDRDMTQuMjE1NCAyNC45ODAzIDEzLjM5OCAyNS4xNDI5IDEyLjU3MjYgMjUuMTQyOVpNMTYuNTk3NyA3LjkyNjg2QzE3LjI0NjcgOC4zMjk3NyAxNy45OTE3IDguNTUxODggMTguNzU1NCA4LjU3MDJDMTkuNTE5MSA4LjU4ODUxIDIwLjI3MzggOC40MDIzNyAyMC45NDE0IDguMDMxMDNDMjEuNjA5IDcuNjU5NyAyMi4xNjUyIDcuMTE2NjcgMjIuNTUyNCA2LjQ1ODE3QzIyLjkzOTYgNS43OTk2NyAyMy4xNDM4IDUuMDQ5NjMgMjMuMTQzOCA0LjI4NTcyQzIzLjE0MzggMy41MjE4IDIyLjkzOTYgMi43NzE3NiAyMi41NTI0IDIuMTEzMjZDMjIuMTY1MiAxLjQ1NDc2IDIxLjYwOSAwLjkxMTczNCAyMC45NDE0IDAuNTQwMzk4QzIwLjI3MzggMC4xNjkwNjIgMTkuNTE5MSAtMC4wMTcwODM1IDE4Ljc1NTQgMC4wMDEyMzIyOUMxNy45OTE3IDAuMDE5NTQ4IDE3LjI0NjcgMC4yNDE2NiAxNi41OTc3IDAuNjQ0NTcyQzE2Ljk4MTcgMS4wNjc0MyAxNy4yOTk0IDEuNTUyIDE3LjUzNDkgMi4wODExNEMxNy45MjUgMS44NDY4NyAxOC4zNzA0IDEuNzIwMzUgMTguODI1NSAxLjcxNDVDMTkuMjgwNiAxLjcwODY1IDE5LjcyOSAxLjgyMzY5IDIwLjEyNTEgMi4wNDc4NkMyMC41MjEyIDIuMjcyMDMgMjAuODUwNyAyLjU5NzMxIDIxLjA3OTkgMi45OTA0OEMyMS4zMDkyIDMuMzgzNjQgMjEuNDMgMy44MzA2IDIxLjQzIDQuMjg1NzJDMjEuNDMgNC43NDA4MyAyMS4zMDkyIDUuMTg3NzkgMjEuMDc5OSA1LjU4MDk1QzIwLjg1MDcgNS45NzQxMiAyMC41MjEyIDYuMjk5MzkgMjAuMTI1MSA2LjUyMzU3QzE5LjcyOSA2Ljc0Nzc0IDE5LjI4MDYgNi44NjI3OCAxOC44MjU1IDYuODU2OTNDMTguMzcwNCA2Ljg1MTA4IDE3LjkyNSA2LjcyNDU2IDE3LjUzNDkgNi40OTAyOUMxNy4yOTk3IDcuMDE1MzIgMTYuOTgzNSA3LjUwMDEgMTYuNTk3NyA3LjkyNjg2Wk0xOC40NDIzIDIzLjQxMDNDMTguNTc5NCAyMy40MjE3IDE4LjcxODUgMjMuNDI3OCAxOC44NTk0IDIzLjQyODZDMjAuMDcxOCAyMy40Mjg2IDIxLjIzNDYgMjIuOTQ2OSAyMi4wOTE5IDIyLjA4OTZDMjIuOTQ5MiAyMS4yMzIzIDIzLjQzMDkgMjAuMDY5NiAyMy40MzA5IDE4Ljg1NzFWMTIuODU3MUMyMy40MzA5IDEyLjYyOTggMjMuMzQwNiAxMi40MTE4IDIzLjE3OTggMTIuMjUxMUMyMy4wMTkxIDEyLjA5MDMgMjIuODAxIDEyIDIyLjU3MzcgMTJIMTkuOTAxN0MxOS43NDkxIDExLjM1NTIgMTkuNDI2MiAxMC43NjMyIDE4Ljk2NjkgMTAuMjg1N0gyMi41NzM3QzIzLjI1NTcgMTAuMjg1NyAyMy45MDk4IDEwLjU1NjYgMjQuMzkyIDExLjAzODlDMjQuODc0MiAxMS41MjExIDI1LjE0NTEgMTIuMTc1MiAyNS4xNDUxIDEyLjg1NzFWMTguODU3MUMyNS4xNDU1IDE5Ljg0NTQgMjQuOTEyOCAyMC44MTk3IDI0LjQ2NiAyMS43MDEyQzI0LjAxOTIgMjIuNTgyNiAyMy4zNzA5IDIzLjM0NjMgMjIuNTczNiAyMy45MzAyQzIxLjc3NjQgMjQuNTE0MSAyMC44NTI3IDI0LjkwMTkgMTkuODc3NSAyNS4wNjE5QzE4LjkwMjQgMjUuMjIyIDE3LjkwMzIgMjUuMTQ5OSAxNi45NjExIDI0Ljg1MTRDMTcuNTE5NiAyNC40NDI0IDE4LjAxODEgMjMuOTU3MyAxOC40NDIzIDIzLjQxMDNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlF1ZXVlIE1hbmFnZW1lbnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbXQtMlwiPnt7dmlld0ltYWdlPy5xdWV1ZU1hbmFnZW1lbnQgPz8gJy0tJ319IERldGVjdGlvbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJmbGFnc1ZpZXcoKVwiIGNsYXNzPVwidmlldy1saW5rIGN1cnNvci1wb2ludGVyXCI+VmlldyBJbiBEZXRhaWwgPHNwYW4gY2xhc3M9XCJtcy0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE3IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZD1cIk0xMy4zMzU5IDkuMTY4MjlWMTQuMTY4M0MxMy4zMzU5IDE0LjYxMDMgMTMuMTYwMyAxNS4wMzQyIDEyLjg0NzggMTUuMzQ2OEMxMi41MzUyIDE1LjY1OTQgMTIuMTExMyAxNS44MzUgMTEuNjY5MyAxNS44MzVIMi41MDI2QzIuMDYwNTggMTUuODM1IDEuNjM2NjUgMTUuNjU5NCAxLjMyNDA5IDE1LjM0NjhDMS4wMTE1MyAxNS4wMzQyIDAuODM1OTM4IDE0LjYxMDMgMC44MzU5MzggMTQuMTY4M1Y1LjAwMTYzQzAuODM1OTM4IDQuNTU5NiAxLjAxMTUzIDQuMTM1NjggMS4zMjQwOSAzLjgyMzEyQzEuNjM2NjUgMy41MTA1NiAyLjA2MDU4IDMuMzM0OTYgMi41MDI2IDMuMzM0OTZINy41MDI2TTEwLjgzNTkgMC44MzQ5NjFIMTUuODM1OU0xNS44MzU5IDAuODM0OTYxVjUuODM0OTZNMTUuODM1OSAwLjgzNDk2MUw2LjY2OTI3IDEwLjAwMTZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlPy5jdXN0b21lcnVuYXR0ZW5kZWRcIiBjbGFzcz1cImFpLXJvdyByb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctaWNvblwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi4zMDYyIDEyLjMwNzZDMTQuNjAwMiAxMi4zMDc2IDE2LjQ2IDEwLjQ0NzkgMTYuNDYgOC4xNTM4MUMxNi40NiA1Ljg1OTcyIDE0LjYwMDIgNCAxMi4zMDYyIDRDMTAuMDEyMSA0IDguMTUyMzQgNS44NTk3MiA4LjE1MjM0IDguMTUzODFDOC4xNTIzNCAxMC40NDc5IDEwLjAxMjEgMTIuMzA3NiAxMi4zMDYyIDEyLjMwNzZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS45MTIwN1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS45OTk5IDI3Ljk5OTlDMjUuMzEzNiAyNy45OTk5IDI3Ljk5OTkgMjUuMzEzNiAyNy45OTk5IDIxLjk5OTlDMjcuOTk5OSAxOC42ODYzIDI1LjMxMzYgMTYgMjEuOTk5OSAxNkMxOC42ODYzIDE2IDE2IDE4LjY4NjMgMTYgMjEuOTk5OUMxNiAyNS4zMTM2IDE4LjY4NjMgMjcuOTk5OSAyMS45OTk5IDI3Ljk5OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS45MTIwN1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy43NTM4IDI2LjI0NTlMMjYuMjQ2IDE3Ljc1MzdNMTQuMTUzOCAxNS4yNzk4QzEyLjkzNjQgMTQuOTk4OCAxMS42NzEzIDE0Ljk5NjYgMTAuNDUzIDE1LjI3MzNDOS4yMzQ2MyAxNS41NTAxIDguMDk0NjEgMTYuMDk4NyA3LjExODE1IDE2Ljg3ODFDNi4xNDE2OCAxNy42NTc0IDUuMzU0MDMgMTguNjQ3NSA0LjgxNDA4IDE5Ljc3NDJDNC4yNzQxMyAyMC45MDA4IDMuOTk1ODUgMjIuMTM1IDQuMDAwMDUgMjMuMzg0NFYyNi4xNTM2SDExLjM4NDZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjkxMjA3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+Q3VzdG9tZXIgVW5hdHRlbmRlZDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIG10LTJcIj57e3ZpZXdJbWFnZT8uY3VzdG9tZXJ1bmF0dGVuZGVkID8/ICctLSd9fSBEZXRlY3Rpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiZmxhZ3NWaWV3KClcIiBjbGFzcz1cInZpZXctbGluayBjdXJzb3ItcG9pbnRlclwiPlZpZXcgSW4gRGV0YWlsIDxzcGFuIGNsYXNzPVwibXMtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG48cGF0aCBkPVwiTTEzLjMzNTkgOS4xNjgyOVYxNC4xNjgzQzEzLjMzNTkgMTQuNjEwMyAxMy4xNjAzIDE1LjAzNDIgMTIuODQ3OCAxNS4zNDY4QzEyLjUzNTIgMTUuNjU5NCAxMi4xMTEzIDE1LjgzNSAxMS42NjkzIDE1LjgzNUgyLjUwMjZDMi4wNjA1OCAxNS44MzUgMS42MzY2NSAxNS42NTk0IDEuMzI0MDkgMTUuMzQ2OEMxLjAxMTUzIDE1LjAzNDIgMC44MzU5MzggMTQuNjEwMyAwLjgzNTkzOCAxNC4xNjgzVjUuMDAxNjNDMC44MzU5MzggNC41NTk2IDEuMDExNTMgNC4xMzU2OCAxLjMyNDA5IDMuODIzMTJDMS42MzY2NSAzLjUxMDU2IDIuMDYwNTggMy4zMzQ5NiAyLjUwMjYgMy4zMzQ5Nkg3LjUwMjZNMTAuODM1OSAwLjgzNDk2MUgxNS44MzU5TTE1LjgzNTkgMC44MzQ5NjFWNS44MzQ5Nk0xNS44MzU5IDAuODM0OTYxTDYuNjY5MjcgMTAuMDAxNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3SW1hZ2U/LnN0YWZmbGVmdGludGhlbWlkZGxlXCIgY2xhc3M9XCJyb3cgYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAzMCAyNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi43MjA3IDI0LjY1MzNMNi44MDM3MSAyNC45OThMMS4zMTczOCAyNUMxLjE3MjkzIDI1IDEgMjQuODY3IDEgMjQuNjQwNkMxLjAwMDEgMjEuNjk5MyAyLjcwOTczIDE5LjE4NjkgNS4xMjg5MSAxOC4wODNMNi43MjA3IDI0LjY1MzNaTTExLjMxMTUgMjQuNjY1TDExLjM5NzUgMjQuOTk3MUg4LjYwMjU0TDguNjg4NDggMjQuNjY5OUwxMCAxOS42NDI2TDExLjMxMTUgMjQuNjY1Wk0xNC44NzAxIDE4LjA3ODFDMTcuMjg5NyAxOS4xODE5IDE4Ljk5OTkgMjEuNjk0MSAxOSAyNC42MzU3QzE5IDI0LjgzMzcgMTguODY4IDI0Ljk2MDYgMTguNzM4MyAyNC45ODkzTDE4LjY4MjYgMjQuOTk1MUwxMy4xOTQzIDI0Ljk5NjFMMTMuMjc5MyAyNC42NDg0TDE0Ljg3MDEgMTguMDc4MVpNMTEuMTY2IDE2LjY4MjZMMTAuMDE4NiAxOC4wNjQ1TDkuOTk3MDcgMTguMDg4OUw5Ljk4MTQ1IDE4LjA2OTNMOC44MzM5OCAxNi42ODc1SDkuNTMzMlYxNi42ODI2SDExLjE2NlpNMTAgMkMxMC42MjE4IDIgMTEuMjM4MiAyLjEyNjc4IDExLjgxNDUgMi4zNzMwNUMxMi4zOTA5IDIuNjE5MzkgMTIuOTE3IDIuOTgxIDEzLjM2MTMgMy40Mzk0NUMxMy44MDU3IDMuODk3OTYgMTQuMTYwMiA0LjQ0Mzc3IDE0LjQwMjMgNS4wNDY4OEMxNC42NDQ1IDUuNjQ5OTggMTQuNzY5NSA2LjI5NzYxIDE0Ljc2OTUgNi45NTIxNUMxNC43Njk1IDcuNjA2NjUgMTQuNjQ0NCA4LjI1NDM0IDE0LjQwMjMgOC44NTc0MkMxNC4xNjAyIDkuNDYwNTUgMTMuODA1NyAxMC4wMDczIDEzLjM2MTMgMTAuNDY1OEMxMi45MTcgMTAuOTI0MiAxMi4zOTA4IDExLjI4NTkgMTEuODE0NSAxMS41MzIyQzExLjIzODIgMTEuNzc4NCAxMC42MjE4IDExLjkwNDMgMTAgMTEuOTA0M0M5LjM3ODIzIDExLjkwNDMgOC43NjE3OSAxMS43Nzg0IDguMTg1NTUgMTEuNTMyMkM3LjYwOTI0IDExLjI4NTkgNy4wODI5NyAxMC45MjQyIDYuNjM4NjcgMTAuNDY1OEM2LjE5NDI2IDEwLjAwNzMgNS44Mzk3OSA5LjQ2MDU1IDUuNTk3NjYgOC44NTc0MkM1LjM1NTU5IDguMjU0MzQgNS4yMzA0NyA3LjYwNjY1IDUuMjMwNDcgNi45NTIxNUM1LjIzMDUgNi4yOTc2MSA1LjM1NTUzIDUuNjQ5OTggNS41OTc2NiA1LjA0Njg4QzUuODM5NzkgNC40NDM3NyA2LjE5NDI4IDMuODk3OTYgNi42Mzg2NyAzLjQzOTQ1QzcuMDgzMDIgMi45ODEgNy42MDkxMyAyLjYxOTM5IDguMTg1NTUgMi4zNzMwNUM4LjY4OTk1IDIuMTU3NTEgOS4yMjQ5NiAyLjAzMzM2IDkuNzY3NTggMi4wMDU4NkwxMCAyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMy4zODk0IDE4LjY2OTNMMjguMDAyNyAxNC4wMDI2TDIzLjM4OTQgOS4zMzU5NE0yNi42NjY3IDE0LjAwMjZIMTYuNjY0MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+U3RhZmYgbGVmdCBpbiB0aGUgTWlkZGxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBtdC0yXCI+e3t2aWV3SW1hZ2U/LnN0YWZmbGVmdGludGhlbWlkZGxlID8/ICctLSd9fSBEZXRlY3Rpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiZmxhZ3NWaWV3KClcIiBjbGFzcz1cInZpZXctbGluayBjdXJzb3ItcG9pbnRlclwiPlZpZXcgSW4gRGV0YWlsIDxzcGFuIGNsYXNzPVwibXMtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG48cGF0aCBkPVwiTTEzLjMzNTkgOS4xNjgyOVYxNC4xNjgzQzEzLjMzNTkgMTQuNjEwMyAxMy4xNjAzIDE1LjAzNDIgMTIuODQ3OCAxNS4zNDY4QzEyLjUzNTIgMTUuNjU5NCAxMi4xMTEzIDE1LjgzNSAxMS42NjkzIDE1LjgzNUgyLjUwMjZDMi4wNjA1OCAxNS44MzUgMS42MzY2NSAxNS42NTk0IDEuMzI0MDkgMTUuMzQ2OEMxLjAxMTUzIDE1LjAzNDIgMC44MzU5MzggMTQuNjEwMyAwLjgzNTkzOCAxNC4xNjgzVjUuMDAxNjNDMC44MzU5MzggNC41NTk2IDEuMDExNTMgNC4xMzU2OCAxLjMyNDA5IDMuODIzMTJDMS42MzY2NSAzLjUxMDU2IDIuMDYwNTggMy4zMzQ5NiAyLjUwMjYgMy4zMzQ5Nkg3LjUwMjZNMTAuODM1OSAwLjgzNDk2MUgxNS44MzU5TTE1LjgzNTkgMC44MzQ5NjFWNS44MzQ5Nk0xNS44MzU5IDAuODM0OTYxTDYuNjY5MjcgMTAuMDAxNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF2aWV3SW1hZ2U/Lm1vYmlsZXVzYWdlZGV0ZWN0aW9uICYmICF2aWV3SW1hZ2U/LnF1ZXVlTWFuYWdlbWVudCAmJiAhdmlld0ltYWdlPy5jdXN0b21lcnVuYXR0ZW5kZWQgJiYgIXZpZXdJbWFnZT8uc3RhZmZsZWZ0aW50aGVtaWRkbGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyIHB5LTVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPk5vIEFJIEluc2lnaHRzIGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVjdGVkIHpvbmUuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS1jb25jZW50cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2Utem9uZS9zcmMvbGliL2NvbXBvbmVudHMvem9uZS1jb25jZW50cmF0aW9uL3pvbmUtY29uY2VudHJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXpvbmUvc3JjL2xpYi9jb21wb25lbnRzL3pvbmUtY29uY2VudHJhdGlvbi96b25lLWNvbmNlbnRyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFnRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEosT0FBTyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLDRCQUE0QixDQUFDO0FBSXhGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUF3QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7QUFTdEcsTUFBTSxPQUFPLDBCQUEwQjtJQTRDakI7SUFBcUI7SUFBZ0M7SUFBeUI7SUFBa0M7SUFDMUg7SUFBNEI7SUFBK0I7SUFBK0I7SUE1Q3BHLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxXQUFXLEdBQU8sRUFBRSxDQUFDO0lBQ3JCLGNBQWMsR0FBUSxLQUFLLENBQUM7SUFDNUIsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ2pCLHFCQUFxQixHQUFVLEVBQUUsQ0FBQztJQUNsQyxnQkFBZ0IsR0FBUSxFQUFFLENBQUM7SUFDM0IsSUFBSSxHQUFXLE9BQU8sQ0FBQztJQUN2Qiw4QkFBOEIs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QUFpQixDQUFDLDJHQXdDRCxVQUFVLHNIQ3ZEekMsMHgrREEwdkJBOzs0RkR6dUJhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkIsQ0FBQyxpQkFBaUIsQ0FBQztnU0F3Q1ksUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUMsVUFBVSxFQUFDO2dCQXFYbEIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbXBvcnRQcm92aWRlcnNGcm9tLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkNhcm91c2VsQ29uZmlnLCBOZ2JNb2RhbCwgTmdiU2xpZGVFdmVudCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBDb25jZW50cmF0aW9uaGVhdG1hcENvbXBvbmVudCB9IGZyb20gJy4vY29uY2VudHJhdGlvbmhlYXRtYXAvY29uY2VudHJhdGlvbmhlYXRtYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXpvbmUtY29uY2VudHJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pvbmUtY29uY2VudHJhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3pvbmUtY29uY2VudHJhdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbTmdiQ2Fyb3VzZWxDb25maWddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZUNvbmNlbnRyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksT25Jbml0IHtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIHNlYXJjaElucHV0OiBhbnkgPVwiXCI7XHJcbiAgc2VhcmNoRGlzYWJsZWQ6IGFueSA9IGZhbHNlO1xyXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNvcnRCeTogYW55ID0gJyc7XHJcbiAgem9uZUNvbmNlbnRyYXRpb25EYXRhOiBhbnlbXSA9IFtdO1xyXG4gIG92ZXJhbGxTdG9yZURhdGE6IGFueSA9IHt9O1xyXG4gIHR5cGU6IHN0cmluZyA9ICdkYWlseSc7IFxyXG4gIG92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZERhdGU6IHN0cmluZyA9ICcnO1xyXG4gIHBlcmlvZHpvbmU6IG51bWJlciA9IDE7IFxyXG4gIGN1c3RvbU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlOyBcclxuICB0aW1lcl9hY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTsgXHJcbiAgem9uZXN1bW1hcnlMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB6b25lc3VtbWFyeU5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhlYXRtYXBMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBoZWF0bWFwTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9ICcnO1xyXG4gIHpvbmVOYW1lOiBzdHJpbmcgPSAnJztcclxuICBkaXNhYmxlRGF5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGlzYWJsZVdlZWs6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlTW9udGg6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjdXN0b21BcnJvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudFNsaWRlID0gMDtcclxuICBjdXJyZW50U2xpZGVJbmRleCA9IDA7XHJcbiAgLy8gc3RhcnRJbmRleDogbnVtYmVyID0gMDtcclxuICAvLyBkYXRlc1BlclBhZ2U6IG51bWJlciA9IDU7XHJcbiAgLy8gdmlzaWJsZURhdGVzOiBhbnlbXSA9IFtdO1xyXG4gIC8vIHRpbWVyX2FjdGl2ZSA9IDA7XHJcbiAgLy8gcGVyaW9kem9uZSA9IDE7XHJcbiAgLy8gY3VzdG9tT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy8gb3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzOiBBcnJheTx7IHpvbmVEYXRlOiBzdHJpbmcgfT4gPSBbXTtcclxuIFxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkKCdkYXRlTGlzdCcsIHtyZWFkOkVsZW1lbnRSZWZ9KSBkYXRlTGlzdCE6RWxlbWVudFJlZjtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgc3RvcmVJZGFycmF5OiBhbnkgPVtdO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgWm9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5maWx0ZXJlZFpvbmVzID0gdGhpcy56b25lcztcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy5zdG9yZUlkYXJyYXkgPSB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZClcclxuICAgICAgICAgIGxldCBzRGF0ZSA9IHRoaXMuZGF5anModGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlKTtcclxuICAgICAgICAgIGxldCBlRGF0ZSA9IHRoaXMuZGF5anModGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbUFycm93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnR5cGUgPSAnZGFpbHknO1xyXG4gICAgICAgICAgLy8gaWYoZURhdGUuZGlmZihzRGF0ZSwnZGF5JykgPCA3KSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuZGlzYWJsZVdlZWsgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVNb250aCA9IHRydWU7XHJcbiAgICAgICAgICAvLyAgIC8vIHRoaXMudHlwZSA9ICdkYWlseSc7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyBlbHNlIGlmKGVEYXRlLmRpZmYoc0RhdGUsJ2RheScpIDwgMjcpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5kaXNhYmxlTW9udGggPSB0cnVlO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVEYXkgPSBmYWxzZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5kaXNhYmxlV2VlayA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gICAvLyB0aGlzLnR5cGUgPSAnd2Vla2x5JztcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVEYXkgPSBmYWxzZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5kaXNhYmxlV2VlayA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gICB0aGlzLmRpc2FibGVNb250aCA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gICAvLyB0aGlzLnR5cGUgPSAnbW9udGhseSc7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB0aGlzLmdldFpvbmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5nZXRPdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5nZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMoKTtcclxufSlcclxuICBcclxuICB9XHJcblxyXG4gIGdldFpvbmVDb25jZW50cmF0aW9uRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeU5vRGF0YSA9IHRydWU7XHJcbiAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcIjIxOC0yXCJdLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIHNvcnQ6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLnpvbmVDb25jZW50cmF0aW9uVGFibGVEYXRhKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuem9uZXN1bW1hcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gcmVzcG9uc2UuZGF0YS56b25lQ29uY2VudHJhdGlvbkRhdGE7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSlcclxuICAgICAgICAgIC8vIHRoaXMuem9uZU5hbWUgPSByZXNwb25zZS5kYXRhLnpvbmVDb25jZW50cmF0aW9uRGF0YVswXS56b25lTmFtZTtcclxuICAgICAgICAgIHRoaXMuem9uZU5hbWUgPSB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YS5sZW5ndGggPyB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YVswXS56b25lTmFtZSA6ICcnO1xyXG4gICAgICAgICAgdGhpcy5ab25lU2VydmljZS5zZXREYXRhKHRoaXMuem9uZU5hbWUpO1xyXG4gICAgICAgICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuem9uZXN1bW1hcnlOb0RhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5nZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlID0gbnVsbDtcclxuICAgICAgICAgIC8vICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLnpvbmVzdW1tYXJ5TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy56b25lc3VtbWFyeU5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhlYXRtYXBOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxTdG9yZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMgPSBbXVxyXG4gICAgICAgICAgdGhpcy56b25lTmFtZSA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMub3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzID0gW11cclxuICAgICAgICB0aGlzLnpvbmVOYW1lID0gXCJcIlxyXG4gICAgICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0KCkge1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKHN0b3JlOmFueSkgPT4gc3RvcmUuY2hlY2tlZCkubWFwKChzdG9yZTphbnkpID0+IHN0b3JlLnN0b3JlSWQpLFxyXG4gICAgICAvLyBzdG9yZUlkOiBbXCIxMS0yNTNcIiwgXCIxMS01MTFcIixcIjExLTExNzZcIl0sXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgZXhwb3J0OiB0cnVlLFxyXG4gICAgICBzb3J0OiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLnpvbmVDb25jZW50cmF0aW9uVGFibGVEYXRhRXhwb3J0KHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuWm9uZVNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgJ1pvbmVDb25jZW50cmF0aW9uU3VtbWFyeScpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IFdyb25nLi4nKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFpvbmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoRmllbGQoKTogdm9pZCB7XHJcbiAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy56b25lc3VtbWFyeU5vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcIjIxOC0yXCJdLFxyXG4gICAgICBjbGllbnRJZDp0aGlzLmhlYWRlckRhdGEuY2xpZW50LFxyXG4gICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoSW5wdXQsXHJcbiAgICAgIHNvcnQ6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLnpvbmVDb25jZW50cmF0aW9uVGFibGVEYXRhKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuem9uZXN1bW1hcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gcmVzcG9uc2UuZGF0YS56b25lQ29uY2VudHJhdGlvbkRhdGE7XHJcbiAgICAgICAgICAvLyB0aGlzLnpvbmVOYW1lID0gcmVzcG9uc2UuZGF0YS56b25lQ29uY2VudHJhdGlvbkRhdGFbMF0uem9uZU5hbWU7XHJcbiAgICAgICAgICAvLyB0aGlzLnpvbmVOYW1lID0gdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGEubGVuZ3RoID8gdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGFbMF0uem9uZU5hbWUgOiAnJztcclxuICAgICAgICAgIHRoaXMuem9uZXN1bW1hcnlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzdW1tYXJ5Tm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy56b25lc3VtbWFyeUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuem9uZXN1bW1hcnlOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnpvbmVDb25jZW50cmF0aW9uRGF0YSA9IFtdXHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxTdG9yZURhdGEgPSBbXVxyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMgPSBbXVxyXG4gICAgICAgICAgdGhpcy56b25lTmFtZSA9IFwiXCJcclxuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy56b25lQ29uY2VudHJhdGlvbkRhdGEgPSBbXVxyXG4gICAgICAgIHRoaXMub3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzID0gW11cclxuICAgICAgICB0aGlzLnpvbmVOYW1lID0gXCJcIlxyXG4gICAgICAgIC8vIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSA9IG51bGw7XHJcbiAgICAgICAgLy8gdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0T3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIC8vIHN0b3JlSWQ6IFtcIjExLTExNzZcIl0sXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIHpvbmVOYW1lOiB0aGlzLnpvbmVOYW1lLFxyXG4gICAgICBkYXRlVHlwZTogdGhpcy50eXBlLFxyXG4gICAgICB6b25lRGF0ZTogdGhpcy5zZWxlY3RlZERhdGVcclxuICAgIH07XHJcbiAgICB0aGlzLlpvbmVTZXJ2aWNlLmdldE92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRhKHJlcXVlc3REYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgLy8gdGhpcy5vdmVyYWxsU3RvcmVEYXRhID0gcmVzcG9uc2UuZGF0YS5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0YXM7XHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxTdG9yZURhdGEgPSByZXNwb25zZS5kYXRhLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRhcztcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwcmV2RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jYXJvdXNlbC1jb250cm9sLXByZXYnKTtcclxuICAgICAgICAgICAgcHJldkVsZW1lbnQ/LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCdkaXNwbGF5Om5vbmUnKTtcclxuICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbFN0b3JlRGF0YSA9W11cclxuICAgICAgICAgIC8vIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gW11cclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVEYXRhID1bXVxyXG4gICAgICAgIC8vIHRoaXMuem9uZUNvbmNlbnRyYXRpb25EYXRhID0gW11cclxuICAgICAgICAvLyBjb25zb2xlLmVycm9yKCdBUEkgY2FsbCBmYWlsZWQnLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcyA9IFtdXHJcbiAgICAgIHRoaXMub3ZlcmFsbFN0b3JlRGF0YSA9W11cclxuICAgIHRoaXMuY3VzdG9tQXJyb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5oZWF0bWFwTm9EYXRhID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YS5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgLy8gc3RvcmVJZDogW1wiMTEtMTE3NlwiXSxcclxuICAgICAgY2xpZW50SWQ6dGhpcy5oZWFkZXJEYXRhLmNsaWVudCxcclxuICAgICAgem9uZU5hbWU6IHRoaXMuem9uZU5hbWUsXHJcbiAgICAgIGRhdGVUeXBlOiB0aGlzLnR5cGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5ab25lU2VydmljZS5nZXRPdmVyYWxsU3RvcmVIZWF0bWFwRGF0ZXMocmVxdWVzdERhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSl7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMgPSByZXNwb25zZS5kYXRhLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMub3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzWzBdLnpvbmVEYXRlOyBcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmNvZGUgPT09IDIwMCAmJiByZXNwb25zZT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiByZXNwb25zZS5kYXRhLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGgpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAvLyBpZihbJ3dlZWtseScsJ21vbnRobHknXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XHJcbiAgICAgICAgICAvLyAgIGxldCBsYXN0RGlnaXQgPSB0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlc1t0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGggLTFdLnpvbmVEYXRlO1xyXG4gICAgICAgICAgLy8gICBsZXQgbGFzdFNwbGl0ID0gbGFzdERpZ2l0LnNwbGl0KCctJylbMV07XHJcbiAgICAgICAgICAvLyAgIGxhc3RTcGxpdCA9IGxhc3RTcGxpdCArJyAnKyB0aGlzLmRheWpzKCkuZm9ybWF0KCdZWVlZJyk7XHJcbiAgICAgICAgICAvLyAgIGlmKHRoaXMuZGF5anMobGFzdFNwbGl0LCdNTU0gREQgWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID4gdGhpcy5kYXlqcyh0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSlcclxuICAgICAgICAgIC8vICAgICB0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5zcGxpY2UodGhpcy5vdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXMubGVuZ3RoLTEsMSk7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2RhaWx5Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGggPiA3KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUFycm93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnd2Vla2x5Jykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLm92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlcy5sZW5ndGggPiA0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUFycm93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0T3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGEoKTtcclxuICAgICAgICAgIC8vICAgdGhpcy5oZWF0bWFwTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gdGhpcy5oZWF0bWFwTm9EYXRhID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICBcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaGVhdG1hcE5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmhlYXRtYXBMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmhlYXRtYXBOb0RhdGEgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsU3RvcmVEYXRhID1bXVxyXG4gICAgICAgIHRoaXMuaGVhdG1hcExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhlYXRtYXBOb0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0FQSSBjYWxsIGZhaWxlZCcsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uRGF0ZUNoYW5nZShkYXRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSAhPT0gZGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XHJcbiAgICAgIHRoaXMuZ2V0T3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFBsYW4oc2VsZWN0ZWRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZSA9IHNlbGVjdGVkVHlwZTtcclxuICAgIHRoaXMuZ2V0T3ZlcmFsbFN0b3JlSGVhdG1hcERhdGVzKCk7IFxyXG4gICAgLy8gdGhpcy5nZXRPdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0YSgpO1xyXG59XHJcblxyXG5vblpvbmVDbGljayh6b25lTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgdGhpcy56b25lTmFtZSA9IHpvbmVOYW1lOyBcclxuICB0aGlzLmdldE92ZXJhbGxTdG9yZUhlYXRtYXBEYXRlcygpO1xyXG4gIHRoaXMuWm9uZVNlcnZpY2Uuem9uZVNlZ21lbnRhdGlvbi5uZXh0KHpvbmVOYW1lKVxyXG4gIC8vIHRoaXMuZ2V0Wm9uZVNlZ21lbnRhdGlvbih6b25lTmFtZSkgXHJcbn1cclxuY29uY2VudHJhdGlvbkhlYXRtYXAoaW1hZ2VVUkxWMTogc3RyaW5nKSB7XHJcbiAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmNlbnRyYXRpb25oZWF0bWFwQ29tcG9uZW50LCB7XHJcbiAgICBjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ3hsJ1xyXG4gIH0pO1xyXG4gIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmltYWdlVVJMVjEgPSBpbWFnZVVSTFYxO1xyXG4gIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgXHJcbiAgfSk7XHJcbn1cclxuXHJcbnNjcm9sbExlZnQoKSB7Y29uc3QgZWxlbWVudCA9IHRoaXMuZGF0ZUxpc3QubmF0aXZlRWxlbWVudDsgZWxlbWVudC5zY3JvbGxCeVxyXG4gICh7bGVmdDogLTIwMCxiZWhhdmlvcjonc21vb3RoJ30pO31cclxuc2Nyb2xsUmlnaHQoKSB7Y29uc3QgZWxlbWVudCA9IHRoaXMuZGF0ZUxpc3QubmF0aXZlRWxlbWVudDsgZWxlbWVudC5zY3JvbGxCeVxyXG4gICh7bGVmdDogMjAwLGJlaGF2aW9yOidzbW9vdGgnfSk7fVxyXG5cclxuICBvblNsaWRlQ2hhbmdlXHJcbiAgKHNsaWRlRXZlbnQ6IE5nYlNsaWRlRXZlbnQpIHtcclxuICBjb25zdFxyXG4gICAgc2xpZGVJbmRleCA9ICtzbGlkZUV2ZW50LmN1cnJlbnQuXHJcbiAgICAgIHJlcGxhY2VcclxuICAgICAgKFxyXG4gICAgICAgICduZ2Itc2xpZGUtJ1xyXG4gICAgICAgICxcclxuICAgICAgICAnJ1xyXG4gICAgICApOyB0aGlzLmN1cnJlbnRTbGlkZSA9IHNsaWRlSW5kZXg7IFxyXG4gICAgICBsZXQgcHJldkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2Fyb3VzZWwtY29udHJvbC1wcmV2Jyk7XHJcbiAgICAgIGxldCBuZXh0RWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jYXJvdXNlbC1jb250cm9sLW5leHQnKTtcclxuICAgICAgaWYodGhpcy5jdXJyZW50U2xpZGUgPT0gMCkge1xyXG4gICAgICAgIG5leHRFbGVtZW50Py5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7XHJcbiAgICAgICAgaWYocHJldkVsZW1lbnQpIHtcclxuICAgICAgICAgIHByZXZFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLFwiZGlzcGxheTpub25lXCIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodGhpcy5jdXJyZW50U2xpZGUgPT09IHRoaXMub3ZlcmFsbFN0b3JlRGF0YT8uSW1hZ2VVUkxzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBwcmV2RWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICAgIGlmKG5leHRFbGVtZW50KSB7XHJcbiAgICAgICAgICBuZXh0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJyxcImRpc3BsYXk6bm9uZVwiKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcHJldkVsZW1lbnQ/LnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcclxuICAgICAgICBuZXh0RWxlbWVudD8ucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgICB9XHJcbn1cclxuZXhwYW5kZWRab25lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxudG9nZ2xlWm9uZSh6b25lTmFtZTogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcclxuICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gcHJldmVudCB6b25lIGNsaWNrXHJcbiAgaWYgKHRoaXMuZXhwYW5kZWRab25lcy5oYXMoem9uZU5hbWUpKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkWm9uZXMuZGVsZXRlKHpvbmVOYW1lKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5leHBhbmRlZFpvbmVzLmFkZCh6b25lTmFtZSk7XHJcbiAgfVxyXG59XHJcblxyXG5pc0V4cGFuZGVkKHpvbmVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICByZXR1cm4gdGhpcy5leHBhbmRlZFpvbmVzLmhhcyh6b25lTmFtZSk7XHJcbn1cclxuXHJcbkBWaWV3Q2hpbGQoJ3pvb21Qb3B1cCcpIHpvb21Qb3B1cCE6IEVsZW1lbnRSZWY7XHJcbnZpZXdJbWFnZTphbnk7XHJcbm9wZW5Nb2RlbCgpOiB2b2lkIHtcclxuICAvLyBPcGVuIG1vZGFsXHJcbiAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLnpvb21Qb3B1cCwge1xyXG4gICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICBzaXplOiAneGwnXHJcbiAgfSk7XHJcblxyXG4gIC8vIEFQSSByZXF1ZXN0IHBheWxvYWRcclxuICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgIHN0b3JlSWQ6IHRoaXMuc3RvcmVJZGFycmF5LFxyXG4gICAgdXNlckVtYWlsZXM6IFtdLFxyXG4gICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUsXHJcbiAgICBsaW1pdDogMTAsXHJcbiAgICBvZmZzZXQ6IDAsXHJcbiAgICBzb3J0Q29sdW1uTmFtZTogJ2NoZWNrTGlzdE5hbWUnLFxyXG4gICAgc29ydEJ5OiAxLFxyXG4gICAgc2VhcmNoVmFsdWU6ICcnLFxyXG4gICAgZmlsdGVyOiAncnVuQUknLFxyXG4gICAgcnVuQUlDaGVja2xpc3ROYW1lOiBbXVxyXG4gIH07XHJcblxyXG4gIC8vIEFQSSBjYWxsXHJcbiAgdGhpcy5ab25lU2VydmljZS5nZXRWaWV3SW5zaWdodHNBcGkocmVxdWVzdERhdGEpXHJcbiAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcz8uY29kZSAhPT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ05vIERhdGEgRm91bmQnKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudmlld0ltYWdlID0gcmVzPy5kYXRhO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZsYWdzVmlldygpe1xyXG4gIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2ZsYWdzJ10pOyBcclxufVxyXG5cclxufVxyXG4gIC8vIHRlc3RpbmcgcHVycG9zZSBmb3IgdGhlIHBhbnQgcHJvamVjdCBzdGFydFxyXG5cclxuLy8gICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duQ29udGFpbmVyJykgZHJvcGRvd25SZWYhOiBFbGVtZW50UmVmO1xyXG4vLyAgIHpvbmVzID0gWydSZWFkeSB0byB3ZWFyJywgJ0plYW5zJywgJ0JpbGxpbmcnLCAnU2hvcHBlciBab25lIFBhdGgnLCAnT3ZlcmFsbCBGb290ZmFsbCddO1xyXG4vLyAgIHNlbGVjdGVkWm9uZXM6IHN0cmluZ1tdID0gW107XHJcbi8vICAgZmlsdGVyZWRab25lczogc3RyaW5nW10gPSBbXTtcclxuLy8gICBzZWFyY2hUZXh0ID0gJyc7XHJcbi8vICAgZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbi8vICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbi8vICAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbi8vICAgICBpZiAoIXRoaXMuZHJvcGRvd25SZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbi8vICAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbi8vICAgICB9XHJcbi8vICAgfVxyXG4vLyAgIHRvZ2dsZURyb3Bkb3duKCkge1xyXG4vLyAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSAhdGhpcy5kcm9wZG93bk9wZW47XHJcbi8vICAgICB0aGlzLmZpbHRlclpvbmVzKCk7XHJcbi8vICAgfVxyXG5cclxuLy8gICBjbG9zZURyb3Bkb3duKCkge1xyXG4vLyAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRyb3Bkb3duT3BlbiA9IGZhbHNlLCAyMDApOyAvLyBmb3IgY2xpY2sgdG8gcmVnaXN0ZXJcclxuLy8gICB9XHJcblxyXG4vLyAgIGZpbHRlclpvbmVzKCkge1xyXG4vLyAgICAgY29uc3QgbG93ZXIgPSB0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcclxuLy8gICAgIHRoaXMuZmlsdGVyZWRab25lcyA9IHRoaXMuem9uZXMuZmlsdGVyKHpvbmUgPT5cclxuLy8gICAgICAgem9uZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyKSAmJlxyXG4vLyAgICAgICAhdGhpcy5zZWxlY3RlZFpvbmVzLmluY2x1ZGVzKHpvbmUpXHJcbi8vICAgICApO1xyXG4vLyAgIH1cclxuXHJcbi8vICAgYWRkWm9uZSh6b25lOiBzdHJpbmcpIHtcclxuLy8gICAgIGlmICh0aGlzLnNlbGVjdGVkWm9uZXMubGVuZ3RoIDwgMyAmJiAhdGhpcy5zZWxlY3RlZFpvbmVzLmluY2x1ZGVzKHpvbmUpKSB7XHJcbi8vICAgICAgIHRoaXMuc2VsZWN0ZWRab25lcy5wdXNoKHpvbmUpO1xyXG4vLyAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuLy8gICAgICAgdGhpcy5maWx0ZXJab25lcygpO1xyXG4vLyAgICAgfVxyXG4vLyAgIH1cclxuXHJcbi8vICAgcmVtb3ZlWm9uZShpbmRleDogbnVtYmVyKSB7XHJcbi8vICAgICB0aGlzLnNlbGVjdGVkWm9uZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuLy8gICAgIHRoaXMuZmlsdGVyWm9uZXMoKTtcclxuLy8gICB9XHJcblxyXG4vLyAgIHJlc2V0Wm9uZXMoKSB7XHJcbi8vICAgICB0aGlzLnNlbGVjdGVkWm9uZXMgPSBbXTtcclxuLy8gICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4vLyAgICAgdGhpcy5maWx0ZXJab25lcygpO1xyXG4vLyAgIH1cclxuLy8gICBhcHBseVpvbmVzKCl7XHJcbiAgICBcclxuLy8gICB9XHJcbi8vICAgIC8vIHRlc3RpbmcgcHVycG9zZSBmb3IgdGhlIHBhbnQgcHJvamVjdCBlbmRcclxuLy8gfVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTUgcmlnaHQtYm9yZGVyIG15LTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcHMtMyBwZS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtbiBtcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZHRleHRcIj5Db25jZW50cmF0aW9uIFN1bW1hcnkgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiU3VtbWFyeSBvZiBvdmVyYWxsIHpvbmVzIGF0IHRoZSBzdG9yZVwiIHBsYWNlbWVudD1cInRvcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIiB0b29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzM1MTJfMzI4NjgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAxMC42NjY2VjcuOTk5OThNOC4wMDAxNiA1LjMzMzMxSDguMDA2ODNNMTQuNjY2OCA3Ljk5OTk4QzE0LjY2NjggMTEuNjgxOSAxMS42ODIxIDE0LjY2NjYgOC4wMDAxNiAxNC42NjY2QzQuMzE4MjYgMTQuNjY2NiAxLjMzMzUgMTEuNjgxOSAxLjMzMzUgNy45OTk5OEMxLjMzMzUgNC4zMTgwOCA0LjMxODI2IDEuMzMzMzEgOC4wMDAxNiAxLjMzMzMxQzExLjY4MjEgMS4zMzMzMSAxNC42NjY4IDQuMzE4MDggMTQuNjY2OCA3Ljk5OTk4WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM1MTJfMzI4NjhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyICBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlICBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtkaXNhYmxlZF09XCJzZWFyY2hEaXNhYmxlZFwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xMCBpbnZvaWNlc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIiBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1zLTJcIiBbZGlzYWJsZWRdPVwiIXpvbmVDb25jZW50cmF0aW9uRGF0YS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibXMtMlwiPkV4cG9ydDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXpvbmVzdW1tYXJ5Tm9EYXRhICYmICF6b25lc3VtbWFyeUxvYWRpbmdcIiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciAgbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlICBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzPVwiZml4ZWQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwicC0xXCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnem9uZU5hbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWm9uZSBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICd6b25lTmFtZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3pvbmVOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2Zvb3RmYWxsQ291bnQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGZhbGwgPGJyPihBY3R1YWxzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnZm9vdGZhbGxDb3VudCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2Zvb3RmYWxsQ291bnQnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2F2Z0R3ZWxsVGltZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEd2VsbCBUaW1lIDxicj4oQXZlcmFnZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2F2Z0R3ZWxsVGltZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2F2Z0R3ZWxsVGltZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmMgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoJ2NvbmNlbnRyYXRpb25SYXRlJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNlbnRyYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NvbmNlbnRyYXRpb25SYXRlJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnY29uY2VudHJhdGlvblJhdGUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSAqbmdJZj1cIiF6b25lc3VtbWFyeUxvYWRpbmcgJiYgIXpvbmVzdW1tYXJ5Tm9EYXRhXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB6b25lIG9mIHpvbmVDb25jZW50cmF0aW9uRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIOKchSBQQVJFTlQgUk9XIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0xXCI+IDxzcGFuICpuZ0lmPVwiem9uZS5yb3dzPy5sZW5ndGhcIiBjbGFzcz1cInRvZ2dsZS1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVab25lKHpvbmUuem9uZU5hbWUsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNSU5VUyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNFeHBhbmRlZCh6b25lLnpvbmVOYW1lKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00LjE2Nzk3IDEwSDE1LjgzNDZcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBMVVMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0V4cGFuZGVkKHpvbmUuem9uZU5hbWUpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMTMgNC4xNjY1VjE1LjgzMzJNNC4xNjc5NyA5Ljk5OTg0SDE1LjgzNDZcIiBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGUtcHJpbWFyeSBvdmVyYWxsc3RvcmUgbWItMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBaT05FIE5BTUUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemUgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9uWm9uZUNsaWNrKHpvbmUuem9uZU5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB6b25lLnpvbmVOYW1lIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHpvbmUuZm9vdGZhbGxDb3VudD8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJykgfHwgJy0tJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB6b25lLmF2Z0R3ZWxsVGltZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJykgfHwgJy0tJyB9fSBtaW5zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHpvbmUuY29uY2VudHJhdGlvblJhdGU/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycpIHx8ICctLScgfX0lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIOKchSBDSElMRCBST1dTIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHpvbmUucm93c1wiIFtoaWRkZW5dPVwiIWlzRXhwYW5kZWQoem9uZS56b25lTmFtZSlcIiBjbGFzcz1cImNoaWxkLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLTFcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwcy0xNSB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lIHRleHQtY2FwaXRhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93LnRvWm9uZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LmZvb3RmYWxsQ291bnQgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgcm93LmF2Z0R3ZWxsVGltZSB9fSBtaW5zPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IHJvdy5jb25jZW50cmF0aW9uIH19JTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInpvbmVzdW1tYXJ5TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ6b25lc3VtbWFyeU5vRGF0YSAmJiAhem9uZXN1bW1hcnlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBab25lIENvbmNlbnRyYXRpb24gU3VtbWFyeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiem9uZXN1bW1hcnlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ6b25lc3VtbWFyeU5vRGF0YSAmJiAhem9uZXN1bW1hcnlMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTE4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBab25lIENvbmNlbnRyYXRpb24gU3VtbWFyeTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctN1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkdGV4dFwiPnt7IHpvbmVOYW1lIHx8ICcnIH19IENvbmNlbnRyYXRpb24gSGVhdG1hcCA8c3BhbiBuZ2JUb29sdGlwPVwiRGVuc2l0eSBoZWF0bWFwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiIHRyaWdnZXJzPVwibW91c2VlbnRlcjptb3VzZWxlYXZlXCIgdG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zNTEyXzMyODY4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDEwLjY2NjZWNy45OTk5OE04LjAwMDE2IDUuMzMzMzFIOC4wMDY4M00xNC42NjY4IDcuOTk5OThDMTQuNjY2OCAxMS42ODE5IDExLjY4MjEgMTQuNjY2NiA4LjAwMDE2IDE0LjY2NjZDNC4zMTgyNiAxNC42NjY2IDEuMzMzNSAxMS42ODE5IDEuMzMzNSA3Ljk5OTk4QzEuMzMzNSA0LjMxODA4IDQuMzE4MjYgMS4zMzMzMSA4LjAwMDE2IDEuMzMzMzFDMTEuNjgyMSAxLjMzMzMxIDE0LjY2NjggNC4zMTgwOCAxNC42NjY4IDcuOTk5OThaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM5OEEyQjNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzM1MTJfMzI4NjhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhciB0ZXh0LW5vd3JhcCBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Ok5hdiBncm91cC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1ncm91cCBuYXYtZ3JvdXAtb3V0bGluZSBib3JkZXItMSBidG4tZ3JvdXAgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZVBsYW5CdG4nOiB0eXBlID09PSAnZGFpbHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ2RhaWx5JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGVkJzogZGlzYWJsZURheVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2VsZWN0UGxhbignZGFpbHknKVwiIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVEYXkgPyB0cnVlIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSAgcHgtNiBweS0zXCIgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlUGxhbkJ0bic6IHR5cGUgPT09ICd3ZWVrbHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ3dlZWtseScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNhYmxlZCc6IGRpc2FibGVXZWVrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJzZWxlY3RQbGFuKCd3ZWVrbHknKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlV2Vla1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWVrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBweC02IHB5LTNcIiBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVQbGFuQnRuJzogdHlwZSA9PT0gJ21vbnRobHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5hY3RpdmVQbGFuQnRuJzogdHlwZSAhPT0gJ21vbnRobHknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZWQnOiBkaXNhYmxlTW9udGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInNlbGVjdFBsYW4oJ21vbnRobHknKVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlTW9udGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9udGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTggbWItNlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3VzdG9tQXJyb3cgJiYgIWhlYXRtYXBMb2FkaW5nICYmICFoZWF0bWFwTm9EYXRhXCIgY2xhc3M9XCJtdC0zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxMZWZ0KClcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgMThMOSAxMkwxNSA2XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nSWY9XCJwZXJpb2R6b25lID09PSAxICYmICFjdXN0b21PcHRpb25cIiAjZGF0ZUxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHBpbGxzIG5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTUgbXQtMSBuby13cmFwLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1vdmVyZmxvd1wiICpuZ0Zvcj1cImxldCBkYXRlIG9mIG92ZXJhbGxTdG9yZUNvbmNlbnRyYXRpb25EYXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnMtdG9nZ2xlPVwicGlsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGUuem9uZURhdGUgPT09IHNlbGVjdGVkRGF0ZSA/ICdjYXRlZ29yeV9hY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmbGV4LWNvbHVtbiBjdXJzb3ItcG9pbnRlciBmbGV4LWNlbnRlciBtLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2hhbmdlKGRhdGUuem9uZURhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtaWNvbiBhY3RpdmVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtdGV4dCB0ZXh0LWdyYXktNzAwIGZ3LWJvbGRlciBmcy03IGxoLTEgbXgtM1wiPnt7IGRhdGUuem9uZURhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1bGxldC1jdXN0b20gcG9zaXRpb24tYWJzb2x1dGUgYm90dG9tLTAgaC00cHggYmctcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiKHBlcmlvZHpvbmUgPT09IDIgfHwgcGVyaW9kem9uZSA9PT0gMykgJiYgIWN1c3RvbU9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBwaWxscyBuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFicyBuYXYtbGluZS10YWJzLTJ4IGJvcmRlci10cmFuc3BhcmVudCBmcy01IGZ3LWJvbGRlciBhbGlnbi1pdGVtcy1zdGFydCBtYi01IG10LTEgcC0zIG5vLXdyYXAtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LW92ZXJmbG93XCIgKm5nRm9yPVwibGV0IGRhdGUgb2Ygb3ZlcmFsbFN0b3JlQ29uY2VudHJhdGlvbkRhdGVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icy10b2dnbGU9XCJwaWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZS56b25lRGF0ZSA9PT0gc2VsZWN0ZWREYXRlID8gJ2NhdGVnb3J5X2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtY29sdW1uIGN1cnNvci1wb2ludGVyIGZsZXgtY2VudGVyIHctOTBweCBteC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGF0ZUNoYW5nZShkYXRlLnpvbmVEYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWljb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtdGV4dCB0ZXh0LWdyYXktNzAwIGZ3LWJvbGRlciBmcy03IGxoLTEgbXgtM1wiPnt7IGRhdGUuem9uZURhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1bGxldC1jdXN0b20gcG9zaXRpb24tYWJzb2x1dGUgYm90dG9tLTAgaC00cHggYmctcHJpbWFyeVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0lmPVwiY3VzdG9tT3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHBpbGxzIG5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTUgbXQtMSBwLTMgbm8td3JhcC1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtb3ZlcmZsb3dcIiAqbmdGb3I9XCJsZXQgZGF0ZSBvZiBvdmVyYWxsU3RvcmVDb25jZW50cmF0aW9uRGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT1cInBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRlLnpvbmVEYXRlID09PSBzZWxlY3RlZERhdGUgPyAnY2F0ZWdvcnlfYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZmxleC1jb2x1bW4gY3Vyc29yLXBvaW50ZXIgZmxleC1jZW50ZXIgdy05MHB4IG14LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EYXRlQ2hhbmdlKGRhdGUuem9uZURhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtaWNvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi10ZXh0IHRleHQtZ3JheS03MDAgZnctYm9sZGVyIGZzLTcgbGgtMSBteC0zXCI+e3sgZGF0ZS56b25lRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnVsbGV0LWN1c3RvbSBwb3NpdGlvbi1hYnNvbHV0ZSBib3R0b20tMCBoLTRweCBiZy1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3VzdG9tQXJyb3cgJiYgIWhlYXRtYXBMb2FkaW5nICYmICFoZWF0bWFwTm9EYXRhXCIgY2xhc3M9XCJtdC0zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxSaWdodCgpXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaGVhdG1hcExvYWRpbmcgJiYgIWhlYXRtYXBOb0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nYi1jYXJvdXNlbCAjY2Fyb3VzZWwgW2ludGVydmFsXT1cIjBcIiBbcGF1c2VPbkhvdmVyXT1cInRydWVcIiAoc2xpZGUpPVwib25TbGlkZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RlZERhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIG92ZXJhbGxTdG9yZURhdGE/LkltYWdlVVJMcztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiU2xpZGUgW2lkXT1cIiduZ2Itc2xpZGUtJysgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaW1hZ2UtY29udGFpbmVyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIChjbGljayk9XCJjb25jZW50cmF0aW9uSGVhdG1hcChvdmVyYWxsU3RvcmVEYXRhPy5JbWFnZVVSTHMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImltYWdlLlVSTFwiIFthbHRdPVwiaW1hZ2Uuc3RyZWFtTmFtZVwiIGNsYXNzPVwiY2FyZGltZ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJpbWFnZS5VUkxcIiBkb3dubG9hZD48c3ZnIGlkPVwiZG93bmxvYWQtaWNvblwiIHdpZHRoPVwiNDRcIiBoZWlnaHQ9XCI0NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNDQgNDRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tb3ZlcmxheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8zODIyXzE5NDc5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMVwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiOFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMi41XCIgeT1cIjEuNVwiIHdpZHRoPVwiMzlcIiBoZWlnaHQ9XCIzOVwiIHJ4PVwiNy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yOS41IDIzLjVWMjYuODMzM0MyOS41IDI3LjI3NTQgMjkuMzI0NCAyNy42OTkzIDI5LjAxMTggMjguMDExOEMyOC42OTkzIDI4LjMyNDQgMjguMjc1NCAyOC41IDI3LjgzMzMgMjguNUgxNi4xNjY3QzE1LjcyNDYgMjguNSAxNS4zMDA3IDI4LjMyNDQgMTQuOTg4MiAyOC4wMTE4QzE0LjY3NTYgMjcuNjk5MyAxNC41IDI3LjI3NTQgMTQuNSAyNi44MzMzVjIzLjVNMTcuODMzMyAxOS4zMzMzTDIyIDIzLjVNMjIgMjMuNUwyNi4xNjY3IDE5LjMzMzNNMjIgMjMuNVYxMy41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMzgyMl8xOTQ3OVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQ0XCIgaGVpZ2h0PVwiNDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJoYXJkQWxwaGFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldCBkeT1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPVwiMCAwIDAgMCAwLjA2Mjc0NTEgMCAwIDAgMCAwLjA5NDExNzYgMCAwIDAgMCAwLjE1Njg2MyAwIDAgMCAwLjA1IDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMzgyMl8xOTQ3OVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18zODIyXzE5NDc5XCIgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ2ItY2Fyb3VzZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYXRtYXBMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGNvbmNoZWF0bWFwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhdG1hcE5vRGF0YSAmJiAhaGVhdG1hcExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBjb25jaGVhdG1hcCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIE92ZXJhbGwgU3RvcmUgQ29uY2VudHJhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhdG1hcDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keSBtZS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0xMCBtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgRm9vdGZhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj57e292ZXJhbGxTdG9yZURhdGE/LnRvdGFsRm9vdGZhbGw/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAnLS0nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyZGFzaGVkIG15LTRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uY2VudHJhdGlvbiAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj57eyByb3VuZG9mKG92ZXJhbGxTdG9yZURhdGE/LmNvbmNlbnRyYXRpb25SYXRlKSB8fCAgJzAnIH19ICU8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJhbGxTdG9yZURhdGE/LmNvbmNlbnRyYXRpb25SYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgfHwgJy0tJyB9fSU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICc0NTknXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCAhPT0gJzQ1OSdcIiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyYWxsdGV4dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuY2VkIEZvb3RmYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyYWxsU3RvcmVEYXRhPy5ib3VuY2VkQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAnLS0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ICE9PSAnNDU5J1wiIGNsYXNzPVwiYm9yZGVyZGFzaGVkIG15LTRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJoZWFkZXJEYXRhPy5jbGllbnQgIT09ICc0NTknXCIgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5nYWdlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG92ZXJhbGxTdG9yZURhdGE/LmVuZ2FnZXJzQ291bnQ/LnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAnLS0nIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlcmRhc2hlZCBteS00XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJhbGx0ZXh0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF2Zy4gRHdlbGwgVGltZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcmFsbFN0b3JlRGF0YT8uYXZnRHdlbGxUaW1lPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgfHwgJy0tJyB9fSBtaW5zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTInICYmIHN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTQnXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTInICYmIHN0b3JlSWRhcnJheVswXSAhPT0nNDU5LTQnXCIgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmFsbHRleHQgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdlIFJhbmdlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdmVyYWxsU3RvcmVEYXRhPy5hZ2VSYW5nZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIH0pIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImJvcmRlcmRhc2hlZCBteS00XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyYWxsdGV4dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWxlIFJhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG92ZXJhbGxTdG9yZURhdGE/Lm1hbGVSYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgfSkgfHwgJy0tJyB9fSVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImJvcmRlcmRhc2hlZCBteS00XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVJZGFycmF5WzBdICE9PSc0NTktMicgJiYgc3RvcmVJZGFycmF5WzBdICE9PSc0NTktNCdcIiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyYWxsdGV4dCBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZW1hbGUgUmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcmFsbFN0b3JlRGF0YT8uZmVtYWxlUmF0ZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pIHx8ICctLScgfX0lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ID09ICc0NTknXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCA9PSAnNDU5J1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJhbGx0ZXh0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyb2xsZXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG92ZXJhbGxTdG9yZURhdGE/LnRyb2xsZXlSYXRlPy50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KSB8fCAgJy0tJyB9fSVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaGVhZGVyRGF0YT8uY2xpZW50ID09ICc0NTknXCIgY2xhc3M9XCJib3JkZXJkYXNoZWQgbXktNFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhlYWRlckRhdGE/LmNsaWVudCA9PSAnNDU5J1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJhbGx0ZXh0IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2tldFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3ZlcmFsbFN0b3JlRGF0YT8uYmFza2V0UmF0ZT8udG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywgeyBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAgfSkgfHwgICctLScgfX0lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZm9vdGVyIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuTW9kZWwoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1wcmltYXJ5IG1iLTIgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE3MTI2XzczMzY3KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjc5NyAxLjY2NjVMNC4zMjYzIDIuNDQ5ODRDNC40Mzk3NyAzLjAxMjM0IDQuNjk2NTMgMy41MzYwMyA1LjA3MTczIDMuOTcwMjFDNS40NDY5MiA0LjQwNDM5IDUuOTI3ODYgNC43MzQzNSA2LjQ2Nzk3IDQuOTI4MTdMNi42Njc5NyA0Ljk5OTg0TDYuNDY3OTcgNS4wNzE1QzUuOTI3ODYgNS4yNjUzMiA1LjQ0NjkyIDUuNTk1MjkgNS4wNzE3MyA2LjAyOTQ3QzQuNjk2NTMgNi40NjM2NSA0LjQzOTc3IDYuOTg3MzMgNC4zMjYzIDcuNTQ5ODRMNC4xNjc5NyA4LjMzMzE3TDQuMDA5NjQgNy41NDk4NEMzLjg5NjE3IDYuOTg3MzMgMy42Mzk0MSA2LjQ2MzY1IDMuMjY0MjEgNi4wMjk0N0MyLjg4OTAxIDUuNTk1MjkgMi40MDgwOCA1LjI2NTMyIDEuODY3OTcgNS4wNzE1TDEuNjY3OTcgNC45OTk4NEwxLjg2Nzk3IDQuOTI4MTdDMi40MDgwOCA0LjczNDM1IDIuODg5MDEgNC40MDQzOSAzLjI2NDIxIDMuOTcwMjFDMy42Mzk0MSAzLjUzNjAzIDMuODk2MTcgMy4wMTIzNCA0LjAwOTY0IDIuNDQ5ODRMNC4xNjc5NyAxLjY2NjVaTTYuNjY3OTcgMTMuMzMzMkw2Ljg1OTYzIDE0LjM5NjVDNi45MDk0IDE0LjY3MzkgNy4wMjg2OSAxNC45MzQxIDcuMjA2MzQgMTUuMTUyOEM3LjM4Mzk5IDE1LjM3MTYgNy42MTQyMSAxNS41NDE3IDcuODc1NDcgMTUuNjQ3M0w4LjMzNDY0IDE1LjgzMzJMNy44NzU0NyAxNi4wMTlDNy42MTQxNiAxNi4xMjQ0IDcuMzgzODQgMTYuMjk0NCA3LjIwNjA1IDE2LjUxM0M3LjAyODI1IDE2LjczMTYgNi45MDg3OCAxNi45OTE3IDYuODU4OCAxNy4yNjlMNi42Njc5NyAxOC4zMzMyTDYuNDc2MyAxNy4yNjk4QzYuNDI2NTMgMTYuOTkyNSA2LjMwNzI1IDE2LjczMjIgNi4xMjk2IDE2LjUxMzVDNS45NTE5NCAxNi4yOTQ3IDUuNzIxNzMgMTYuMTI0NiA1LjQ2MDQ3IDE2LjAxOUw1LjAwMTMgMTUuODMzMkw1LjQ2MDQ3IDE1LjY0NzNDNS43MjE3OCAxNS41NDE5IDUuOTUyMSAxNS4zNzIgNi4xMjk4OSAxNS4xNTM0QzYuMzA3NjkgMTQuOTM0OCA2LjQyNzE2IDE0LjY3NDYgNi40NzcxNCAxNC4zOTczTDYuNjY3OTcgMTMuMzMzMlpNMTMuMzM0NiAyLjQ5OTg0TDEzLjc5OCA0LjcxMTVDMTQuMDM0MSA1LjgzOTA3IDE0LjU1ODQgNi44ODYyMSAxNS4zMTk4IDcuNzUwODFDMTYuMDgxMSA4LjYxNTQxIDE3LjA1MzUgOS4yNjc5NiAxOC4xNDIxIDkuNjQ0ODRMMTkuMTY4IDkuOTk5ODRMMTguMTQyMSAxMC4zNTQ4QzE3LjA1MzUgMTAuNzMxNyAxNi4wODExIDExLjM4NDMgMTUuMzE5OCAxMi4yNDg5QzE0LjU1ODQgMTMuMTEzNSAxNC4wMzQxIDE0LjE2MDYgMTMuNzk4IDE1LjI4ODJMMTMuMzM0NiAxNy40OTk4TDEyLjg3MTMgMTUuMjg4MkMxMi42MzUyIDE0LjE2MDYgMTIuMTEwOSAxMy4xMTM1IDExLjM0OTUgMTIuMjQ4OUMxMC41ODgyIDExLjM4NDMgOS42MTU3OCAxMC43MzE3IDguNTI3MTQgMTAuMzU0OEw3LjUwMTMgOS45OTk4NEw4LjUyNzE0IDkuNjQ0ODRDOS42MTU3OCA5LjI2Nzk2IDEwLjU4ODIgOC42MTU0MSAxMS4zNDk1IDcuNzUwODFDMTIuMTEwOSA2Ljg4NjIxIDEyLjYzNTIgNS44MzkwNyAxMi44NzEzIDQuNzExNUwxMy4zMzQ2IDIuNDk5ODRaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNzEyNl83MzM2N1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuPiBWaWV3IEFJIEluc2lnaHRzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48bmctdGVtcGxhdGUgI3pvb21Qb3B1cCBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktbW9kYWwgcC00XCI+XHJcblxyXG4gICAgICAgIDwhLS0gSEVBREVSIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjEgMThMMjEuMTkgMTguOTRDMjEuMzI2MiAxOS42MTUgMjEuNjM0MyAyMC4yNDM0IDIyLjA4NDUgMjAuNzY0NEMyMi41MzQ3IDIxLjI4NTUgMjMuMTExOSAyMS42ODE0IDIzLjc2IDIxLjkxNEwyNCAyMkwyMy43NiAyMi4wODZDMjMuMTExOSAyMi4zMTg2IDIyLjUzNDcgMjIuNzE0NSAyMi4wODQ1IDIzLjIzNTZDMjEuNjM0MyAyMy43NTY2IDIxLjMyNjIgMjQuMzg1IDIxLjE5IDI1LjA2TDIxIDI2TDIwLjgxIDI1LjA2QzIwLjY3MzggMjQuMzg1IDIwLjM2NTcgMjMuNzU2NiAxOS45MTU1IDIzLjIzNTZDMTkuNDY1MyAyMi43MTQ1IDE4Ljg4ODEgMjIuMzE4NiAxOC4yNCAyMi4wODZMMTggMjJMMTguMjQgMjEuOTE0QzE4Ljg4ODEgMjEuNjgxNCAxOS40NjUzIDIxLjI4NTUgMTkuOTE1NSAyMC43NjQ0QzIwLjM2NTcgMjAuMjQzNCAyMC42NzM4IDE5LjYxNSAyMC44MSAxOC45NEwyMSAxOFpNMjQgMzJMMjQuMjMgMzMuMjc2QzI0LjI4OTcgMzMuNjA4OCAyNC40MzI5IDMzLjkyMTEgMjQuNjQ2IDM0LjE4MzZDMjQuODU5MiAzNC40NDYxIDI1LjEzNTUgMzQuNjUwMyAyNS40NDkgMzQuNzc3TDI2IDM1TDI1LjQ0OSAzNS4yMjNDMjUuMTM1NCAzNS4zNDk1IDI0Ljg1OSAzNS41NTM1IDI0LjY0NTcgMzUuODE1OEMyNC40MzIzIDM2LjA3ODEgMjQuMjg5IDM2LjM5MDIgMjQuMjI5IDM2LjcyM0wyNCAzOEwyMy43NyAzNi43MjRDMjMuNzEwMyAzNi4zOTEyIDIzLjU2NzEgMzYuMDc4OSAyMy4zNTQgMzUuODE2NEMyMy4xNDA4IDM1LjU1MzkgMjIuODY0NSAzNS4zNDk3IDIyLjU1MSAzNS4yMjNMMjIgMzVMMjIuNTUxIDM0Ljc3N0MyMi44NjQ2IDM0LjY1MDUgMjMuMTQxIDM0LjQ0NjUgMjMuMzU0MyAzNC4xODQyQzIzLjU2NzcgMzMuOTIxOSAyMy43MTEgMzMuNjA5OCAyMy43NzEgMzMuMjc3TDI0IDMyWk0zMiAxOUwzMi41NTYgMjEuNjU0QzMyLjgzOTQgMjMuMDA3MSAzMy40Njg1IDI0LjI2MzYgMzQuMzgyMSAyNS4zMDEyQzM1LjI5NTggMjYuMzM4NyAzNi40NjI2IDI3LjEyMTcgMzcuNzY5IDI3LjU3NEwzOSAyOEwzNy43NjkgMjguNDI2QzM2LjQ2MjYgMjguODc4MyAzNS4yOTU4IDI5LjY2MTMgMzQuMzgyMSAzMC42OTg4QzMzLjQ2ODUgMzEuNzM2NCAzMi44Mzk0IDMyLjk5MjkgMzIuNTU2IDM0LjM0NkwzMiAzN0wzMS40NDQgMzQuMzQ2QzMxLjE2MDYgMzIuOTkyOSAzMC41MzE1IDMxLjczNjQgMjkuNjE3OSAzMC42OTg4QzI4LjcwNDIgMjkuNjYxMyAyNy41Mzc0IDI4Ljg3ODMgMjYuMjMxIDI4LjQyNkwyNSAyOEwyNi4yMzEgMjcuNTc0QzI3LjUzNzQgMjcuMTIxNyAyOC43MDQyIDI2LjMzODcgMjkuNjE3OSAyNS4zMDEyQzMwLjUzMTUgMjQuMjYzNiAzMS4xNjA2IDIzLjAwNzEgMzEuNDQ0IDIxLjY1NEwzMiAxOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0wIGZ3LXNlbWlib2xkXCI+QUkgSW5zaWdodHMgZm9yICZsdDtPdmVyYWxsIFpvbmVzJmd0OzwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb25cIiAoY2xpY2spPVwibW9kZWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICAgICAgICDinJVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTElTVCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlPy5tb2JpbGV1c2FnZWRldGVjdGlvbiB8fCB2aWV3SW1hZ2U/LnF1ZXVlTWFuYWdlbWVudCB8fCB2aWV3SW1hZ2U/LmN1c3RvbWVydW5hdHRlbmRlZCB8fCB2aWV3SW1hZ2U/LnN0YWZmbGVmdGludGhlbWlkZGxlXCIgY2xhc3M9XCJhaS1jYXJkXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlPy5tb2JpbGV1c2FnZWRldGVjdGlvblwiIGNsYXNzPVwiYWktcm93IHJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDFDNy43MTYgMSAxIDcuNzE2IDEgMTZDMSAyNC4yODQ1IDcuNzE2IDMxIDE2IDMxQzI0LjI4NCAzMSAzMSAyNC4yODQgMzEgMTZDMzEgNy43MTYgMjQuMjg0IDEgMTYgMVpNMjggMTZDMjguMDAyOSAxOC42NjQ4IDI3LjExNTEgMjEuMjU0MiAyNS40Nzc1IDIzLjM1NjVMMjAuODA0NSAxOC42ODM1VjkuMzg3NUMyMC44MDQ1IDguMzQ0IDE5Ljk0NCA3LjQ5ODUgMTguODgyNSA3LjQ5ODVIMTMuMTE2NUMxMi4xNTQ1IDcuNDk4NSAxMS4zNjQ1IDguMTk1NSAxMS4yMjQgOS4xMDI1TDguNjQzNSA2LjUyMjVDMTAuNzQ1OCA0Ljg4NDk0IDEzLjMzNTIgMy45OTcwNyAxNiA0QzIyLjYyNyA0IDI4IDkuMzcyNSAyOCAxNlpNMTIuMTU2IDIxLjQ3OTVWMTQuMjc3TDE5LjM1NzUgMjEuNDc5NUgxMi4xNTZaTTE2LjU3NiAyMi45ODQ1QzE2LjU3NiAyMy4yOTcgMTYuMzE4NSAyMy41NTEgMTYgMjMuNTUxQzE1LjY4MTUgMjMuNTUxIDE1LjQyMzUgMjMuMjk3IDE1LjQyMzUgMjIuOTg0NUMxNS40MjM1IDIyLjY3MiAxNS42ODIgMjIuNDE4IDE2IDIyLjQxOEMxNi4zMTg1IDIyLjQxOCAxNi41NzYgMjIuNjcyIDE2LjU3NiAyMi45ODQ1Wk0xMi4xNTYgMTAuMDM0NVY5LjM4NzVIMTkuODQ0VjE3LjcyMjVMMTIuMTU2IDEwLjAzNDVaTTE0LjgxOTUgOC40MjQ1QzE0LjgxOTUgOC4yOTQgMTQuOTI3IDguMTg4IDE1LjA1OTUgOC4xODhIMTYuOTM5NUMxNy4wNzI1IDguMTg4IDE3LjE4MDUgOC4yOTQgMTcuMTgwNSA4LjQyNDVDMTcuMTgwNSA4LjU1NSAxNy4wNzIgOC42NjEgMTYuOTM5NSA4LjY2MUgxNS4wNTk1QzE0Ljk5NjQgOC42NjEwMSAxNC45MzU5IDguNjM2MiAxNC44OTEgOC41OTE5NUMxNC44NDYxIDguNTQ3NjkgMTQuODIwNCA4LjQ4NzU0IDE0LjgxOTUgOC40MjQ1Wk00IDE2QzMuOTk3MTggMTMuMzM1MyA0Ljg4NTA1IDEwLjc0NjIgNi41MjI1IDguNjQ0TDExLjE5NDUgMTMuMzE2NVYyMi42MTI1QzExLjE5NDUgMjMuNjU2NSAxMi4wNTUgMjQuNTAyIDEzLjExNjUgMjQuNTAySDE4Ljg4MjVDMTkuODQ0NSAyNC41MDIgMjAuNjM0NSAyMy44MDQ1IDIwLjc3NSAyMi44OTc1TDIzLjM1NSAyNS40Nzc1QzIxLjI1MzEgMjcuMTE0NyAxOC42NjQzIDI4LjAwMjYgMTYgMjhDOS4zNzI1IDI4IDQgMjIuNjI4IDQgMTZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+TW9iaWxlIERldGVjdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbXQtMlwiPnt7dmlld0ltYWdlPy5tb2JpbGV1c2FnZWRldGVjdGlvbiA/PyAnLS0nfX0gRGV0ZWN0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImZsYWdzVmlldygpXCIgY2xhc3M9XCJ2aWV3LWxpbmsgY3Vyc29yLXBvaW50ZXJcIj5WaWV3IEluIERldGFpbCA8c3BhbiBjbGFzcz1cIm1zLTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE3XCIgdmlld0JveD1cIjAgMCAxNyAxN1wiIGZpbGw9XCJub25lXCI+XHJcbjxwYXRoIGQ9XCJNMTMuMzM1OSA5LjE2ODI5VjE0LjE2ODNDMTMuMzM1OSAxNC42MTAzIDEzLjE2MDMgMTUuMDM0MiAxMi44NDc4IDE1LjM0NjhDMTIuNTM1MiAxNS42NTk0IDEyLjExMTMgMTUuODM1IDExLjY2OTMgMTUuODM1SDIuNTAyNkMyLjA2MDU4IDE1LjgzNSAxLjYzNjY1IDE1LjY1OTQgMS4zMjQwOSAxNS4zNDY4QzEuMDExNTMgMTUuMDM0MiAwLjgzNTkzOCAxNC42MTAzIDAuODM1OTM4IDE0LjE2ODNWNS4wMDE2M0MwLjgzNTkzOCA0LjU1OTYgMS4wMTE1MyA0LjEzNTY4IDEuMzI0MDkgMy44MjMxMkMxLjYzNjY1IDMuNTEwNTYgMi4wNjA1OCAzLjMzNDk2IDIuNTAyNiAzLjMzNDk2SDcuNTAyNk0xMC44MzU5IDAuODM0OTYxSDE1LjgzNTlNMTUuODM1OSAwLjgzNDk2MVY1LjgzNDk2TTE1LjgzNTkgMC44MzQ5NjFMNi42NjkyNyAxMC4wMDE2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbjwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInZpZXdJbWFnZT8ucXVldWVNYW5hZ2VtZW50XCIgY2xhc3M9XCJhaS1yb3cgcm93IFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1pY29uXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNlwiIGhlaWdodD1cIjI2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjYgMjZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYuMjg1NzEgMS43MTQyOUM1LjYwMzczIDEuNzE0MjkgNC45NDk2OCAxLjk4NTIgNC40Njc0NCAyLjQ2NzQ0QzMuOTg1MiAyLjk0OTY4IDMuNzE0MjkgMy42MDM3MyAzLjcxNDI5IDQuMjg1NzJDMy43MTQyOSA0Ljk2NzcgMy45ODUyIDUuNjIxNzUgNC40Njc0NCA2LjEwMzk5QzQuOTQ5NjggNi41ODYyMyA1LjYwMzczIDYuODU3MTQgNi4yODU3MSA2Ljg1NzE0QzYuOTY3NyA2Ljg1NzE0IDcuNjIxNzUgNi41ODYyMyA4LjEwMzk5IDYuMTAzOTlDOC41ODYyMyA1LjYyMTc1IDguODU3MTQgNC45Njc3IDguODU3MTQgNC4yODU3MkM4Ljg1NzE0IDMuNjAzNzMgOC41ODYyMyAyLjk0OTY4IDguMTAzOTkgMi40Njc0NEM3LjYyMTc1IDEuOTg1MiA2Ljk2NzcgMS43MTQyOSA2LjI4NTcxIDEuNzE0MjlaTTIgNC4yODU3MkMyIDMuMTQ5MDcgMi40NTE1MyAyLjA1ODk4IDMuMjU1MjYgMS4yNTUyNkM0LjA1ODk4IDAuNDUxNTMgNS4xNDkwNyA0LjEyNTg0ZS0wNyA2LjI4NTcxIDQuMTI1ODRlLTA3QzcuNDIyMzYgNC4xMjU4NGUtMDcgOC41MTI0NCAwLjQ1MTUzIDkuMzE2MTcgMS4yNTUyNkMxMC4xMTk5IDIuMDU4OTggMTAuNTcxNCAzLjE0OTA3IDEwLjU3MTQgNC4yODU3MkMxMC41NzE0IDUuNDIyMzYgMTAuMTE5OSA2LjUxMjQ1IDkuMzE2MTcgNy4zMTYxN0M4LjUxMjQ0IDguMTE5OSA3LjQyMjM2IDguNTcxNDMgNi4yODU3MSA4LjU3MTQzQzUuMTQ5MDcgOC41NzE0MyA0LjA1ODk4IDguMTE5OSAzLjI1NTI2IDcuMzE2MTdDMi40NTE1MyA2LjUxMjQ1IDIgNS40MjIzNiAyIDQuMjg1NzJaTTAgMTIuODU3MUMwIDEyLjE3NTIgMC4yNzA5MTggMTEuNTIxMSAwLjc1MzE1NCAxMS4wMzg5QzEuMjM1MzkgMTAuNTU2NiAxLjg4OTQ0IDEwLjI4NTcgMi41NzE0MyAxMC4yODU3SDEwQzEwLjY4MiAxMC4yODU3IDExLjMzNiAxMC41NTY2IDExLjgxODMgMTEuMDM4OUMxMi4zMDA1IDExLjUyMTEgMTIuNTcxNCAxMi4xNzUyIDEyLjU3MTQgMTIuODU3MVYxOC44NTcxQzEyLjU3MTQgMjAuNTI0MiAxMS45MDkyIDIyLjEyMyAxMC43MzA0IDIzLjMwMThDOS41NTE1OSAyNC40ODA2IDcuOTUyNzkgMjUuMTQyOSA2LjI4NTcxIDI1LjE0MjlDNC42MTg2NCAyNS4xNDI5IDMuMDE5ODQgMjQuNDgwNiAxLjg0MTA0IDIzLjMwMThDMC42NjIyNDMgMjIuMTIzIDAgMjAuNTI0MiAwIDE4Ljg1NzFWMTIuODU3MVpNMi41NzE0MyAxMkMyLjM0NDEgMTIgMi4xMjYwOCAxMi4wOTAzIDEuOTY1MzQgMTIuMjUxMUMxLjgwNDU5IDEyLjQxMTggMS43MTQyOSAxMi42Mjk4IDEuNzE0MjkgMTIuODU3MVYxOC44NTcxQzEuNzE0MjkgMjAuMDY5NiAyLjE5NTkyIDIxLjIzMjMgMy4wNTMyMyAyMi4wODk2QzMuOTEwNTQgMjIuOTQ2OSA1LjA3MzMgMjMuNDI4NiA2LjI4NTcxIDIzLjQyODZDNy40OTgxMyAyMy40Mjg2IDguNjYwODkgMjIuOTQ2OSA5LjUxODIgMjIuMDg5NkMxMC4zNzU1IDIxLjIzMjMgMTAuODU3MSAyMC4wNjk2IDEwLjg1NzEgMTguODU3MVYxMi44NTcxQzEwLjg1NzEgMTIuNjI5OCAxMC43NjY4IDEyLjQxMTggMTAuNjA2MSAxMi4yNTExQzEwLjQ0NTMgMTIuMDkwMyAxMC4yMjczIDEyIDEwIDEySDIuNTcxNDNaTTEyLjU3MjYgOC41NzE0M0MxMS43NzM2IDguNTczMDMgMTAuOTkwMyA4LjM1MDA3IDEwLjMxMiA3LjkyOEMxMC42OTYgNy41MDUxNCAxMS4wMTM3IDcuMDE5NDMgMTEuMjQ5MSA2LjQ5MDI5QzExLjYzOTMgNi43MjQzNSAxMi4wODQ3IDYuODUwNjcgMTIuNTM5NyA2Ljg1NjM3QzEyLjk5NDYgNi44NjIwNyAxMy40NDMgNi43NDY5NCAxMy44Mzg5IDYuNTIyNzJDMTQuMjM0OSA2LjI5ODUxIDE0LjU2NDIgNS45NzMyNSAxNC43OTM0IDUuNTgwMTRDMTUuMDIyNiA1LjE4NzA0IDE1LjE0MzMgNC43NDAxNiAxNS4xNDMzIDQuMjg1MTRDMTUuMTQzMyAzLjgzMDEyIDE1LjAyMjYgMy4zODMyNSAxNC43OTM0IDIuOTkwMTRDMTQuNTY0MiAyLjU5NzA0IDE0LjIzNDkgMi4yNzE3OCAxMy44Mzg5IDIuMDQ3NTZDMTMuNDQzIDEuODIzMzUgMTIuOTk0NiAxLjcwODIyIDEyLjUzOTcgMS43MTM5MkMxMi4wODQ3IDEuNzE5NjEgMTEuNjM5MyAxLjg0NTk0IDExLjI0OTEgMi4wOEMxMS4wMTQgMS41NTQ5NyAxMC42OTc4IDEuMDcwMTkgMTAuMzEyIDAuNjQzNDI5QzEwLjg3NTQgMC4yOTQwMzggMTEuNTEyMyAwLjA4MDEzMjUgMTIuMTcyNCAwLjAxODUzNzFDMTIuODMyNSAtMC4wNDMwNTgzIDEzLjQ5NzkgMC4wNDkzMzU5IDE0LjExNjMgMC4yODg0NTNDMTQuNzM0NiAwLjUyNzU2OSAxNS4yODkxIDAuOTA2ODg4IDE1LjczNiAxLjM5NjU3QzE2LjE4MyAxLjg4NjI2IDE2LjUxMDIgMi40NzI5NiAxNi42OTIgMy4xMTA1NEMxNi44NzM4IDMuNzQ4MTEgMTYuOTA1MiA0LjQxOTE3IDE2Ljc4MzcgNS4wNzA5M0MxNi42NjIzIDUuNzIyNjkgMTYuMzkxMiA2LjMzNzM4IDE1Ljk5MiA2Ljg2NjY2QzE1LjU5MjcgNy4zOTU5NCAxNS4wNzYxIDcuODI1MzggMTQuNDgyOCA4LjEyMTE5QzEzLjg4OTQgOC40MTcgMTMuMjM1NiA4LjU3MTEyIDEyLjU3MjYgOC41NzE0M1pNMTIuNTcyNiAyNS4xNDI5QzExLjkyOSAyNS4xNDM0IDExLjI4OTIgMjUuMDQ1MSAxMC42NzU0IDI0Ljg1MTRDMTEuMjM0MyAyNC40NDI1IDExLjczMzIgMjMuOTU3NCAxMi4xNTc3IDIzLjQxMDNDMTIuMjk0OSAyMy40MjI1IDEyLjQzMzEgMjMuNDI4NiAxMi41NzI2IDIzLjQyODZDMTMuNzg1IDIzLjQyODYgMTQuOTQ3OCAyMi45NDY5IDE1LjgwNTEgMjIuMDg5NkMxNi42NjI0IDIxLjIzMjMgMTcuMTQ0IDIwLjA2OTYgMTcuMTQ0IDE4Ljg1NzFWMTIuODU3MUMxNy4xNDQgMTIuNjI5OCAxNy4wNTM3IDEyLjQxMTggMTYuODkzIDEyLjI1MTFDMTYuNzMyMiAxMi4wOTAzIDE2LjUxNDIgMTIgMTYuMjg2OSAxMkgxMy42MTZDMTMuNDYzNCAxMS4zNTUyIDEzLjE0MDUgMTAuNzYzMiAxMi42ODExIDEwLjI4NTdIMTYuMjg2OUMxNi45Njg4IDEwLjI4NTcgMTcuNjIyOSAxMC41NTY2IDE4LjEwNTEgMTEuMDM4OUMxOC41ODc0IDExLjUyMTEgMTguODU4MyAxMi4xNzUyIDE4Ljg1ODMgMTIuODU3MVYxOC44NTcxQzE4Ljg1ODMgMTkuNjgyNiAxOC42OTU3IDIwLjUgMTguMzc5OCAyMS4yNjI2QzE4LjA2MzkgMjIuMDI1MiAxNy42MDA5IDIyLjcxODEgMTcuMDE3MiAyMy4zMDE4QzE2LjQzMzYgMjMuODg1NSAxNS43NDA2IDI0LjM0ODUgMTQuOTc4IDI0LjY2NDRDMTQuMjE1NCAyNC45ODAzIDEzLjM5OCAyNS4xNDI5IDEyLjU3MjYgMjUuMTQyOVpNMTYuNTk3NyA3LjkyNjg2QzE3LjI0NjcgOC4zMjk3NyAxNy45OTE3IDguNTUxODggMTguNzU1NCA4LjU3MDJDMTkuNTE5MSA4LjU4ODUxIDIwLjI3MzggOC40MDIzNyAyMC45NDE0IDguMDMxMDNDMjEuNjA5IDcuNjU5NyAyMi4xNjUyIDcuMTE2NjcgMjIuNTUyNCA2LjQ1ODE3QzIyLjkzOTYgNS43OTk2NyAyMy4xNDM4IDUuMDQ5NjMgMjMuMTQzOCA0LjI4NTcyQzIzLjE0MzggMy41MjE4IDIyLjkzOTYgMi43NzE3NiAyMi41NTI0IDIuMTEzMjZDMjIuMTY1MiAxLjQ1NDc2IDIxLjYwOSAwLjkxMTczNCAyMC45NDE0IDAuNTQwMzk4QzIwLjI3MzggMC4xNjkwNjIgMTkuNTE5MSAtMC4wMTcwODM1IDE4Ljc1NTQgMC4wMDEyMzIyOUMxNy45OTE3IDAuMDE5NTQ4IDE3LjI0NjcgMC4yNDE2NiAxNi41OTc3IDAuNjQ0NTcyQzE2Ljk4MTcgMS4wNjc0MyAxNy4yOTk0IDEuNTUyIDE3LjUzNDkgMi4wODExNEMxNy45MjUgMS44NDY4NyAxOC4zNzA0IDEuNzIwMzUgMTguODI1NSAxLjcxNDVDMTkuMjgwNiAxLjcwODY1IDE5LjcyOSAxLjgyMzY5IDIwLjEyNTEgMi4wNDc4NkMyMC41MjEyIDIuMjcyMDMgMjAuODUwNyAyLjU5NzMxIDIxLjA3OTkgMi45OTA0OEMyMS4zMDkyIDMuMzgzNjQgMjEuNDMgMy44MzA2IDIxLjQzIDQuMjg1NzJDMjEuNDMgNC43NDA4MyAyMS4zMDkyIDUuMTg3NzkgMjEuMDc5OSA1LjU4MDk1QzIwLjg1MDcgNS45NzQxMiAyMC41MjEyIDYuMjk5MzkgMjAuMTI1MSA2LjUyMzU3QzE5LjcyOSA2Ljc0Nzc0IDE5LjI4MDYgNi44NjI3OCAxOC44MjU1IDYuODU2OTNDMTguMzcwNCA2Ljg1MTA4IDE3LjkyNSA2LjcyNDU2IDE3LjUzNDkgNi40OTAyOUMxNy4yOTk3IDcuMDE1MzIgMTYuOTgzNSA3LjUwMDEgMTYuNTk3NyA3LjkyNjg2Wk0xOC40NDIzIDIzLjQxMDNDMTguNTc5NCAyMy40MjE3IDE4LjcxODUgMjMuNDI3OCAxOC44NTk0IDIzLjQyODZDMjAuMDcxOCAyMy40Mjg2IDIxLjIzNDYgMjIuOTQ2OSAyMi4wOTE5IDIyLjA4OTZDMjIuOTQ5MiAyMS4yMzIzIDIzLjQzMDkgMjAuMDY5NiAyMy40MzA5IDE4Ljg1NzFWMTIuODU3MUMyMy40MzA5IDEyLjYyOTggMjMuMzQwNiAxMi40MTE4IDIzLjE3OTggMTIuMjUxMUMyMy4wMTkxIDEyLjA5MDMgMjIuODAxIDEyIDIyLjU3MzcgMTJIMTkuOTAxN0MxOS43NDkxIDExLjM1NTIgMTkuNDI2MiAxMC43NjMyIDE4Ljk2NjkgMTAuMjg1N0gyMi41NzM3QzIzLjI1NTcgMTAuMjg1NyAyMy45MDk4IDEwLjU1NjYgMjQuMzkyIDExLjAzODlDMjQuODc0MiAxMS41MjExIDI1LjE0NTEgMTIuMTc1MiAyNS4xNDUxIDEyLjg1NzFWMTguODU3MUMyNS4xNDU1IDE5Ljg0NTQgMjQuOTEyOCAyMC44MTk3IDI0LjQ2NiAyMS43MDEyQzI0LjAxOTIgMjIuNTgyNiAyMy4zNzA5IDIzLjM0NjMgMjIuNTczNiAyMy45MzAyQzIxLjc3NjQgMjQuNTE0MSAyMC44NTI3IDI0LjkwMTkgMTkuODc3NSAyNS4wNjE5QzE4LjkwMjQgMjUuMjIyIDE3LjkwMzIgMjUuMTQ5OSAxNi45NjExIDI0Ljg1MTRDMTcuNTE5NiAyNC40NDI0IDE4LjAxODEgMjMuOTU3MyAxOC40NDIzIDIzLjQxMDNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzAwQTNGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlF1ZXVlIE1hbmFnZW1lbnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgbXQtMlwiPnt7dmlld0ltYWdlPy5xdWV1ZU1hbmFnZW1lbnQgPz8gJy0tJ319IERldGVjdGlvbnM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJmbGFnc1ZpZXcoKVwiIGNsYXNzPVwidmlldy1saW5rIGN1cnNvci1wb2ludGVyXCI+VmlldyBJbiBEZXRhaWwgPHNwYW4gY2xhc3M9XCJtcy0yXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE3IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuPHBhdGggZD1cIk0xMy4zMzU5IDkuMTY4MjlWMTQuMTY4M0MxMy4zMzU5IDE0LjYxMDMgMTMuMTYwMyAxNS4wMzQyIDEyLjg0NzggMTUuMzQ2OEMxMi41MzUyIDE1LjY1OTQgMTIuMTExMyAxNS44MzUgMTEuNjY5MyAxNS44MzVIMi41MDI2QzIuMDYwNTggMTUuODM1IDEuNjM2NjUgMTUuNjU5NCAxLjMyNDA5IDE1LjM0NjhDMS4wMTE1MyAxNS4wMzQyIDAuODM1OTM4IDE0LjYxMDMgMC44MzU5MzggMTQuMTY4M1Y1LjAwMTYzQzAuODM1OTM4IDQuNTU5NiAxLjAxMTUzIDQuMTM1NjggMS4zMjQwOSAzLjgyMzEyQzEuNjM2NjUgMy41MTA1NiAyLjA2MDU4IDMuMzM0OTYgMi41MDI2IDMuMzM0OTZINy41MDI2TTEwLjgzNTkgMC44MzQ5NjFIMTUuODM1OU0xNS44MzU5IDAuODM0OTYxVjUuODM0OTZNMTUuODM1OSAwLjgzNDk2MUw2LjY2OTI3IDEwLjAwMTZcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidmlld0ltYWdlPy5jdXN0b21lcnVuYXR0ZW5kZWRcIiBjbGFzcz1cImFpLXJvdyByb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IGNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctaWNvblwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMi4zMDYyIDEyLjMwNzZDMTQuNjAwMiAxMi4zMDc2IDE2LjQ2IDEwLjQ0NzkgMTYuNDYgOC4xNTM4MUMxNi40NiA1Ljg1OTcyIDE0LjYwMDIgNCAxMi4zMDYyIDRDMTAuMDEyMSA0IDguMTUyMzQgNS44NTk3MiA4LjE1MjM0IDguMTUzODFDOC4xNTIzNCAxMC40NDc5IDEwLjAxMjEgMTIuMzA3NiAxMi4zMDYyIDEyLjMwNzZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS45MTIwN1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMS45OTk5IDI3Ljk5OTlDMjUuMzEzNiAyNy45OTk5IDI3Ljk5OTkgMjUuMzEzNiAyNy45OTk5IDIxLjk5OTlDMjcuOTk5OSAxOC42ODYzIDI1LjMxMzYgMTYgMjEuOTk5OSAxNkMxOC42ODYzIDE2IDE2IDE4LjY4NjMgMTYgMjEuOTk5OUMxNiAyNS4zMTM2IDE4LjY4NjMgMjcuOTk5OSAyMS45OTk5IDI3Ljk5OTlaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS45MTIwN1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy43NTM4IDI2LjI0NTlMMjYuMjQ2IDE3Ljc1MzdNMTQuMTUzOCAxNS4yNzk4QzEyLjkzNjQgMTQuOTk4OCAxMS42NzEzIDE0Ljk5NjYgMTAuNDUzIDE1LjI3MzNDOS4yMzQ2MyAxNS41NTAxIDguMDk0NjEgMTYuMDk4NyA3LjExODE1IDE2Ljg3ODFDNi4xNDE2OCAxNy42NTc0IDUuMzU0MDMgMTguNjQ3NSA0LjgxNDA4IDE5Ljc3NDJDNC4yNzQxMyAyMC45MDA4IDMuOTk1ODUgMjIuMTM1IDQuMDAwMDUgMjMuMzg0NFYyNi4xNTM2SDExLjM4NDZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjkxMjA3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+Q3VzdG9tZXIgVW5hdHRlbmRlZDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIG10LTJcIj57e3ZpZXdJbWFnZT8uY3VzdG9tZXJ1bmF0dGVuZGVkID8/ICctLSd9fSBEZXRlY3Rpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiZmxhZ3NWaWV3KClcIiBjbGFzcz1cInZpZXctbGluayBjdXJzb3ItcG9pbnRlclwiPlZpZXcgSW4gRGV0YWlsIDxzcGFuIGNsYXNzPVwibXMtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG48cGF0aCBkPVwiTTEzLjMzNTkgOS4xNjgyOVYxNC4xNjgzQzEzLjMzNTkgMTQuNjEwMyAxMy4xNjAzIDE1LjAzNDIgMTIuODQ3OCAxNS4zNDY4QzEyLjUzNTIgMTUuNjU5NCAxMi4xMTEzIDE1LjgzNSAxMS42NjkzIDE1LjgzNUgyLjUwMjZDMi4wNjA1OCAxNS44MzUgMS42MzY2NSAxNS42NTk0IDEuMzI0MDkgMTUuMzQ2OEMxLjAxMTUzIDE1LjAzNDIgMC44MzU5MzggMTQuNjEwMyAwLjgzNTkzOCAxNC4xNjgzVjUuMDAxNjNDMC44MzU5MzggNC41NTk2IDEuMDExNTMgNC4xMzU2OCAxLjMyNDA5IDMuODIzMTJDMS42MzY2NSAzLjUxMDU2IDIuMDYwNTggMy4zMzQ5NiAyLjUwMjYgMy4zMzQ5Nkg3LjUwMjZNMTAuODM1OSAwLjgzNDk2MUgxNS44MzU5TTE1LjgzNTkgMC44MzQ5NjFWNS44MzQ5Nk0xNS44MzU5IDAuODM0OTYxTDYuNjY5MjcgMTAuMDAxNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2aWV3SW1hZ2U/LnN0YWZmbGVmdGludGhlbWlkZGxlXCIgY2xhc3M9XCJyb3cgYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicm93LWljb25cIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMjZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAzMCAyNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi43MjA3IDI0LjY1MzNMNi44MDM3MSAyNC45OThMMS4zMTczOCAyNUMxLjE3MjkzIDI1IDEgMjQuODY3IDEgMjQuNjQwNkMxLjAwMDEgMjEuNjk5MyAyLjcwOTczIDE5LjE4NjkgNS4xMjg5MSAxOC4wODNMNi43MjA3IDI0LjY1MzNaTTExLjMxMTUgMjQuNjY1TDExLjM5NzUgMjQuOTk3MUg4LjYwMjU0TDguNjg4NDggMjQuNjY5OUwxMCAxOS42NDI2TDExLjMxMTUgMjQuNjY1Wk0xNC44NzAxIDE4LjA3ODFDMTcuMjg5NyAxOS4xODE5IDE4Ljk5OTkgMjEuNjk0MSAxOSAyNC42MzU3QzE5IDI0LjgzMzcgMTguODY4IDI0Ljk2MDYgMTguNzM4MyAyNC45ODkzTDE4LjY4MjYgMjQuOTk1MUwxMy4xOTQzIDI0Ljk5NjFMMTMuMjc5MyAyNC42NDg0TDE0Ljg3MDEgMTguMDc4MVpNMTEuMTY2IDE2LjY4MjZMMTAuMDE4NiAxOC4wNjQ1TDkuOTk3MDcgMTguMDg4OUw5Ljk4MTQ1IDE4LjA2OTNMOC44MzM5OCAxNi42ODc1SDkuNTMzMlYxNi42ODI2SDExLjE2NlpNMTAgMkMxMC42MjE4IDIgMTEuMjM4MiAyLjEyNjc4IDExLjgxNDUgMi4zNzMwNUMxMi4zOTA5IDIuNjE5MzkgMTIuOTE3IDIuOTgxIDEzLjM2MTMgMy40Mzk0NUMxMy44MDU3IDMuODk3OTYgMTQuMTYwMiA0LjQ0Mzc3IDE0LjQwMjMgNS4wNDY4OEMxNC42NDQ1IDUuNjQ5OTggMTQuNzY5NSA2LjI5NzYxIDE0Ljc2OTUgNi45NTIxNUMxNC43Njk1IDcuNjA2NjUgMTQuNjQ0NCA4LjI1NDM0IDE0LjQwMjMgOC44NTc0MkMxNC4xNjAyIDkuNDYwNTUgMTMuODA1NyAxMC4wMDczIDEzLjM2MTMgMTAuNDY1OEMxMi45MTcgMTAuOTI0MiAxMi4zOTA4IDExLjI4NTkgMTEuODE0NSAxMS41MzIyQzExLjIzODIgMTEuNzc4NCAxMC42MjE4IDExLjkwNDMgMTAgMTEuOTA0M0M5LjM3ODIzIDExLjkwNDMgOC43NjE3OSAxMS43Nzg0IDguMTg1NTUgMTEuNTMyMkM3LjYwOTI0IDExLjI4NTkgNy4wODI5NyAxMC45MjQyIDYuNjM4NjcgMTAuNDY1OEM2LjE5NDI2IDEwLjAwNzMgNS44Mzk3OSA5LjQ2MDU1IDUuNTk3NjYgOC44NTc0MkM1LjM1NTU5IDguMjU0MzQgNS4yMzA0NyA3LjYwNjY1IDUuMjMwNDcgNi45NTIxNUM1LjIzMDUgNi4yOTc2MSA1LjM1NTUzIDUuNjQ5OTggNS41OTc2NiA1LjA0Njg4QzUuODM5NzkgNC40NDM3NyA2LjE5NDI4IDMuODk3OTYgNi42Mzg2NyAzLjQzOTQ1QzcuMDgzMDIgMi45ODEgNy42MDkxMyAyLjYxOTM5IDguMTg1NTUgMi4zNzMwNUM4LjY4OTk1IDIuMTU3NTEgOS4yMjQ5NiAyLjAzMzM2IDkuNzY3NTggMi4wMDU4NkwxMCAyWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMy4zODk0IDE4LjY2OTNMMjguMDAyNyAxNC4wMDI2TDIzLjM4OTQgOS4zMzU5NE0yNi42NjY3IDE0LjAwMjZIMTYuNjY0MVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+U3RhZmYgbGVmdCBpbiB0aGUgTWlkZGxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBtdC0yXCI+e3t2aWV3SW1hZ2U/LnN0YWZmbGVmdGludGhlbWlkZGxlID8/ICctLSd9fSBEZXRlY3Rpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiZmxhZ3NWaWV3KClcIiBjbGFzcz1cInZpZXctbGluayBjdXJzb3ItcG9pbnRlclwiPlZpZXcgSW4gRGV0YWlsIDxzcGFuIGNsYXNzPVwibXMtMlwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG48cGF0aCBkPVwiTTEzLjMzNTkgOS4xNjgyOVYxNC4xNjgzQzEzLjMzNTkgMTQuNjEwMyAxMy4xNjAzIDE1LjAzNDIgMTIuODQ3OCAxNS4zNDY4QzEyLjUzNTIgMTUuNjU5NCAxMi4xMTEzIDE1LjgzNSAxMS42NjkzIDE1LjgzNUgyLjUwMjZDMi4wNjA1OCAxNS44MzUgMS42MzY2NSAxNS42NTk0IDEuMzI0MDkgMTUuMzQ2OEMxLjAxMTUzIDE1LjAzNDIgMC44MzU5MzggMTQuNjEwMyAwLjgzNTkzOCAxNC4xNjgzVjUuMDAxNjNDMC44MzU5MzggNC41NTk2IDEuMDExNTMgNC4xMzU2OCAxLjMyNDA5IDMuODIzMTJDMS42MzY2NSAzLjUxMDU2IDIuMDYwNTggMy4zMzQ5NiAyLjUwMjYgMy4zMzQ5Nkg3LjUwMjZNMTAuODM1OSAwLjgzNDk2MUgxNS44MzU5TTE1LjgzNTkgMC44MzQ5NjFWNS44MzQ5Nk0xNS44MzU5IDAuODM0OTYxTDYuNjY5MjcgMTAuMDAxNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG48L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF2aWV3SW1hZ2U/Lm1vYmlsZXVzYWdlZGV0ZWN0aW9uICYmICF2aWV3SW1hZ2U/LnF1ZXVlTWFuYWdlbWVudCAmJiAhdmlld0ltYWdlPy5jdXN0b21lcnVuYXR0ZW5kZWQgJiYgIXZpZXdJbWFnZT8uc3RhZmZsZWZ0aW50aGVtaWRkbGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyIHB5LTVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhc3VidGV4dFwiPk5vIEFJIEluc2lnaHRzIGF2YWlsYWJsZSBmb3IgdGhlIHNlbGVjdGVkIHpvbmUuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==