tango-app-ui-analyse-trax 3.7.13-qid-halfshutter-7 → 3.7.14
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.
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.mjs +31 -70
- package/esm2022/lib/components/gallery/gallery.component.mjs +3 -3
- package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +3 -3
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-C3WBrCEW.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-BYRoJ94x.mjs} +32 -69
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-C3WBrCEW.mjs.map → tango-app-ui-analyse-trax-eye-test-audit.module-BYRoJ94x.mjs.map} +1 -1
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CMp0T9jm.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CIeglDHk.mjs} +7 -7
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CIeglDHk.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.d.ts +1 -1
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CMp0T9jm.mjs.map +0 -1
|
@@ -12,9 +12,7 @@ import * as i4 from "@angular/router";
|
|
|
12
12
|
import * as i5 from "../../services/eye-test-audit.service";
|
|
13
13
|
import * as i6 from "@ng-bootstrap/ng-bootstrap";
|
|
14
14
|
import * as i7 from "@angular/common";
|
|
15
|
-
import * as i8 from "
|
|
16
|
-
import * as i9 from "../../reactive-select/reactive-select.component";
|
|
17
|
-
import * as i10 from "../../chip-dropdown/chip-dropdown.component";
|
|
15
|
+
import * as i8 from "../../chip-dropdown/chip-dropdown.component";
|
|
18
16
|
export class SettingsAuditComponent {
|
|
19
17
|
cd;
|
|
20
18
|
zone;
|
|
@@ -493,13 +491,9 @@ export class SettingsAuditComponent {
|
|
|
493
491
|
: [res.data.result];
|
|
494
492
|
this.RmList = result.map((rm) => ({ ...rm, checked: true })); // ✅ pre-select all
|
|
495
493
|
this.filteredRms = [...this.RmList];
|
|
496
|
-
//-- Old code --
|
|
497
|
-
// this.getAllGroups(this.RmList);
|
|
498
|
-
// this.Apply();
|
|
499
|
-
this.getAllGroupsPromise(this.RmList).then(() => {
|
|
500
|
-
this.Apply();
|
|
501
|
-
});
|
|
502
494
|
}
|
|
495
|
+
this.getAllGroups(this.RmList);
|
|
496
|
+
this.Apply(); // fetch clusters based on selected RMs
|
|
503
497
|
});
|
|
504
498
|
}
|
|
505
499
|
filterRms() {
|
|
@@ -515,10 +509,7 @@ export class SettingsAuditComponent {
|
|
|
515
509
|
}
|
|
516
510
|
updateSelectedRms() {
|
|
517
511
|
const selected = this.RmList.filter((r) => r.checked);
|
|
518
|
-
|
|
519
|
-
this.getAllGroupsPromise(selected).then(() => {
|
|
520
|
-
// auto refresh clusters with promise
|
|
521
|
-
});
|
|
512
|
+
this.getAllGroups(selected); // auto refresh clusters
|
|
522
513
|
}
|
|
523
514
|
selectedRmsLabel() {
|
|
524
515
|
const selected = this.filteredRms.filter(rm => rm.checked);
|
|
@@ -530,61 +521,31 @@ export class SettingsAuditComponent {
|
|
|
530
521
|
return this.filteredRms.filter(rm => rm.checked).length;
|
|
531
522
|
}
|
|
532
523
|
/** ---- Clusters ---- */
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
// this.ClusterList = [];
|
|
554
|
-
// this.filteredClusters = [];
|
|
555
|
-
// }
|
|
556
|
-
// });
|
|
557
|
-
// }
|
|
558
|
-
getAllGroupsPromise(event) {
|
|
559
|
-
return new Promise((resolve, reject) => {
|
|
560
|
-
let rmList = [];
|
|
561
|
-
if (event?.length) {
|
|
562
|
-
rmList = event.map((o) => o.email);
|
|
524
|
+
getAllGroups(event) {
|
|
525
|
+
let rmList = [];
|
|
526
|
+
if (event?.length) {
|
|
527
|
+
rmList = event.map((o) => o.email);
|
|
528
|
+
}
|
|
529
|
+
else if (this.users?.role === "rm") {
|
|
530
|
+
rmList = [this.users?.email];
|
|
531
|
+
}
|
|
532
|
+
const obj = {
|
|
533
|
+
clientId: this.auditData?.client ? this.auditData?.client : this.users?.clientId,
|
|
534
|
+
rmList
|
|
535
|
+
};
|
|
536
|
+
this.$api.getClusters(obj).subscribe((res) => {
|
|
537
|
+
if (res?.code === 200) {
|
|
538
|
+
// Initialize clusters with checked=false
|
|
539
|
+
this.ClusterList = (res.data.result || []).map((c) => ({
|
|
540
|
+
...c,
|
|
541
|
+
checked: true
|
|
542
|
+
}));
|
|
543
|
+
this.filteredClusters = [...this.ClusterList];
|
|
563
544
|
}
|
|
564
|
-
else
|
|
565
|
-
|
|
545
|
+
else {
|
|
546
|
+
this.ClusterList = [];
|
|
547
|
+
this.filteredClusters = [];
|
|
566
548
|
}
|
|
567
|
-
const obj = {
|
|
568
|
-
clientId: this.auditData?.client ?? this.users?.clientId,
|
|
569
|
-
rmList
|
|
570
|
-
};
|
|
571
|
-
this.$api.getClusters(obj).subscribe({
|
|
572
|
-
next: (res) => {
|
|
573
|
-
if (res?.code === 200) {
|
|
574
|
-
this.ClusterList = (res.data.result || []).map((c) => ({
|
|
575
|
-
...c,
|
|
576
|
-
checked: true,
|
|
577
|
-
}));
|
|
578
|
-
this.filteredClusters = [...this.ClusterList];
|
|
579
|
-
}
|
|
580
|
-
else {
|
|
581
|
-
this.ClusterList = [];
|
|
582
|
-
this.filteredClusters = [];
|
|
583
|
-
}
|
|
584
|
-
resolve(); // completion
|
|
585
|
-
},
|
|
586
|
-
error: (err) => reject(err),
|
|
587
|
-
});
|
|
588
549
|
});
|
|
589
550
|
}
|
|
590
551
|
filterClusters() {
|
|
@@ -662,7 +623,7 @@ export class SettingsAuditComponent {
|
|
|
662
623
|
let obj = {
|
|
663
624
|
fromDate: this.filterStartDate,
|
|
664
625
|
toDate: this.filterEndDate,
|
|
665
|
-
|
|
626
|
+
type: this.currentAuditType,
|
|
666
627
|
RMList: this.selectedRms?.length ? this.selectedRms : [],
|
|
667
628
|
clientId: this.auditData?.client
|
|
668
629
|
? this.auditData?.client
|
|
@@ -735,13 +696,13 @@ export class SettingsAuditComponent {
|
|
|
735
696
|
localStorage.setItem("header-filters", JSON.stringify(data1));
|
|
736
697
|
}
|
|
737
698
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsAuditComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.FormBuilder }, { token: i2.PageInfoService }, { token: i3.ToastService }, { token: i4.ActivatedRoute }, { token: i5.EyeTestAuditService }, { token: i6.NgbModal }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
738
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsAuditComponent, selector: "lib-settings-audit", host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton >\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n \r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button\r\n (click)=\"toggleEdit()\" \r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n 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_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown\r\n [data]=\"userConfigList\"\r\n [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n</div>\r\n\r\n<ng-template #readonlyView>\r\n<div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n</div>\r\n\r\n</ng-template>\r\n \r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\" class=\"btn btn-outline align-items-end\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\" (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\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\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd\r\n [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\"\r\n autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\" class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-4 dropdown2 position-absolute z-1 end-0\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n \r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\" (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\" class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span \r\n *ngIf=\"getSelectedRmsCount()\" \r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\" placeholder=\"Search RMs\"\r\n [(ngModel)]=\"searchRmText\" (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{ rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\" (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\"\r\n readonly\r\n placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"cluster._id\"\r\n [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{ cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\" (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n 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\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"table table-borderless table-hover\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap\"> <span class=\"cursor-pointer\" (click)=\"onSort('rmName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'rmName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'rmName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Cluster Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optum ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('tangoScore')\"> Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'tangoScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'tangoScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">{{item.RMEmail}}</td>\r\n <td class=\"text-nowrap\">{{item.cluster}}</td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.tangoScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\" (click)=\"eyeTestView(item)\" class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\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=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</button>\r\n </td>\r\n </tbody>\r\n </table>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\"> \r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination> </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n", styles: [".header-card{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;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}\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: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }, { kind: "directive", type: i6.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i6.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i6.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i6.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i6.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i6.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i9.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "label", "data"], outputs: ["itemChange"] }, { kind: "component", type: i10.ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: ["data", "selectedData"], outputs: ["selectedList"] }] });
|
|
699
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsAuditComponent, selector: "lib-settings-audit", host: { listeners: { "document:click": "onClickOutside($event)" } }, ngImport: i0, template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton >\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n \r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button\r\n (click)=\"toggleEdit()\" \r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n 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_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown\r\n [data]=\"userConfigList\"\r\n [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n</div>\r\n\r\n<ng-template #readonlyView>\r\n<div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n</div>\r\n\r\n</ng-template>\r\n \r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\" class=\"btn btn-outline align-items-end\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\" (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\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\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd\r\n [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\"\r\n autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\" class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-4 dropdown2 position-absolute z-1 end-0\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n \r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\" (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\" class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span \r\n *ngIf=\"getSelectedRmsCount()\" \r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\" placeholder=\"Search RMs\"\r\n [(ngModel)]=\"searchRmText\" (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{ rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\" (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\"\r\n readonly\r\n placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"cluster._id\"\r\n [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{ cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\" (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n 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\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"table table-borderless table-hover\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap\"> <span class=\"cursor-pointer\" (click)=\"onSort('rmName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'rmName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'rmName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Cluster Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optum ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('tangoScore')\"> Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'tangoScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'tangoScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">{{item.RMEmail}}</td>\r\n <td class=\"text-nowrap\">{{item.cluster}}</td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.tangoScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\" (click)=\"eyeTestView(item)\" class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\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=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</button>\r\n </td>\r\n </tbody>\r\n </table>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\"> \r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination> </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n", styles: [".header-card{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;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}\n"], dependencies: [{ 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: i6.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i6.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i6.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i6.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i6.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i6.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "component", type: i8.ChipDropdownComponent, selector: "lib-chip-dropdown", inputs: ["data", "selectedData"], outputs: ["selectedList"] }] });
|
|
739
700
|
}
|
|
740
701
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsAuditComponent, decorators: [{
|
|
741
702
|
type: Component,
|
|
742
|
-
args: [{ selector: "lib-settings-audit", template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton >\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n \r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button\r\n (click)=\"toggleEdit()\" \r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n 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_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown\r\n [data]=\"userConfigList\"\r\n [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n</div>\r\n\r\n<ng-template #readonlyView>\r\n<div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n</div>\r\n\r\n</ng-template>\r\n \r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\" class=\"btn btn-outline align-items-end\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\" (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\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\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd\r\n [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\"\r\n autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\" class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-4 dropdown2 position-absolute z-1 end-0\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n \r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\" (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\" class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span \r\n *ngIf=\"getSelectedRmsCount()\" \r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\" placeholder=\"Search RMs\"\r\n [(ngModel)]=\"searchRmText\" (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{ rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\" (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\"\r\n readonly\r\n placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"cluster._id\"\r\n [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{ cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\" (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n 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\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"table table-borderless table-hover\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap\"> <span class=\"cursor-pointer\" (click)=\"onSort('rmName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'rmName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'rmName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Cluster Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optum ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('tangoScore')\"> Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'tangoScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'tangoScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">{{item.RMEmail}}</td>\r\n <td class=\"text-nowrap\">{{item.cluster}}</td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.tangoScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\" (click)=\"eyeTestView(item)\" class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\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=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</button>\r\n </td>\r\n </tbody>\r\n </table>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\"> \r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination> </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n", styles: [".header-card{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;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}\n"] }]
|
|
703
|
+
args: [{ selector: "lib-settings-audit", template: "<div class=\"d-flex align-items-center my-5\">\r\n <div (click)=\"backNavigation()\" class=\"btn btn-am btn-outline p-3\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 9.99984H4.1665M4.1665 9.99984L9.99984 15.8332M4.1665 9.99984L9.99984 4.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </div><span class=\"ms-2 title-head\">Audit Settings</span>\r\n</div>\r\n\r\n\r\n<div class=\"row mt-5\">\r\n <div class=\"col-12\">\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" [destroyOnHide]=\"true\" (show)=\"openItem($event)\">\r\n <div class=\"settings-accordian-card \" ngbAccordionItem [collapsed]=\"false\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading\" ngbAccordionButton >\r\n <div class=\"header-row\">\r\n <span >User Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n \r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"!editMode\" class=\" d-flex justify-content-end\">\r\n <button\r\n (click)=\"toggleEdit()\" \r\n type=\"button\" class=\"btn btn-outline align-items-end\"><span class=\"me-2\"><svg\r\n 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_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div> \r\n\r\n <div class=\"w-80\">\r\n <label class=\"my-2 form-label fs-4 fw-bold\">Assign Audit Users</label>\r\n <div *ngIf=\"editMode; else readonlyView\">\r\n <lib-chip-dropdown\r\n [data]=\"userConfigList\"\r\n [selectedData]=\"configData\"\r\n (selectedList)=\"updateOwner($event)\">\r\n </lib-chip-dropdown>\r\n</div>\r\n\r\n<ng-template #readonlyView>\r\n<div class=\"flex flex-wrap gap-2 border-2 border-gray-300 p-3 rounded\">\r\n <ng-container *ngFor=\"let chip of configData\">\r\n <span class=\"p-1 rounded-5 chip px-2 my-3 py-1 bg-gray-200\">\r\n {{ chip?.name || chip }}\r\n </span>\r\n </ng-container>\r\n</div>\r\n\r\n</ng-template>\r\n \r\n </div>\r\n\r\n <div class=\"mt-3 text-end\" *ngIf=\"editMode\">\r\n <button class=\"btn btn-outline me-2\" (click)=\"cancelEdit()\">Cancel</button>\r\n <button class=\"btn btn-primary\" (click)=\"submitOwners()\">Save</button>\r\n</div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span>Email Configuration</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"col-12 mb-5\">\r\n <div *ngIf=\"editMode1\" class=\" d-flex justify-content-end\">\r\n <button (click)=\"toggleEdit1();\" type=\"button\" class=\"btn btn-outline align-items-end\"><span\r\n class=\"me-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_2579_25125)\">\r\n <path\r\n d=\"M14.167 2.49993C14.3859 2.28106 14.6457 2.10744 14.9317 1.98899C15.2176 1.87054 15.5241 1.80957 15.8337 1.80957C16.1432 1.80957 16.4497 1.87054 16.7357 1.98899C17.0216 2.10744 17.2815 2.28106 17.5003 2.49993C17.7192 2.7188 17.8928 2.97863 18.0113 3.2646C18.1297 3.55057 18.1907 3.85706 18.1907 4.16659C18.1907 4.47612 18.1297 4.78262 18.0113 5.06859C17.8928 5.35455 17.7192 5.61439 17.5003 5.83326L6.25033 17.0833L1.66699 18.3333L2.91699 13.7499L14.167 2.49993Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2579_25125\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>Edit Details</button>\r\n </div>\r\n </div>\r\n <div class=\"fw-semibold mb-3\">\r\n Compliance Threshold\r\n </div>\r\n <form [formGroup]=\"complianceForm\">\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"threshold\" [data]=\"complianceThresholds\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n <div class=\"col-lg-2\">\r\n <lib-reactive-select formControlName=\"percentage\" [data]=\"compliancePercentage\"\r\n [idField]=\"'value'\" [nameField]=\"'label'\"></lib-reactive-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!editMode1\" class=\"mt-3 text-end\">\r\n <button type=\"button\" class=\"btn btn-outline me-2\" (click)=\"cancelCompliance()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"submitCompliance()\">Save</button>\r\n </div>\r\n </form>\r\n <div class=\"my-3\">\r\n <span class=\"fw-semibold me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_762_15430)\">\r\n <path\r\n d=\"M8.00004 10.6663V7.99967M8.00004 5.33301H8.00671M14.6667 7.99967C14.6667 11.6816 11.6819 14.6663 8.00004 14.6663C4.31814 14.6663 1.33337 11.6816 1.33337 7.99967C1.33337 4.31778 4.31814 1.33301 8.00004 1.33301C11.6819 1.33301 14.6667 4.31778 14.6667 7.99967Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_762_15430\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n Email will be automatically sent if the compliance doesn\u2019t meet the\r\n <span class=\"fw-bold\">{{complianceForm.value?.percentage}}</span> to the given Email IDs above.\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"settings-accordian-card mt-6\" ngbAccordionItem>\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton>\r\n <div class=\"header-row\">\r\n <span >Email Logs</span>\r\n <span class=\"divider\"></span>\r\n </div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"d-flex justify-content-end align-items-center mb-10\">\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\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input (change)=\"searchData()\" [(ngModel)]=\"searchValue\" type=\"text\" class=\"form-control ps-14 me-2\" autocomplete=\"off\" placeholder=\"Search\" />\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex align-items-center position-relative me-2\">\r\n <input class=\"fx-date-range form-control ps-14\" style=\"min-width: 260px !important;\" type=\"text\" matInput ngxDaterangepickerMd\r\n [drops]=\"'down'\" [opens]=\"'right'\" [ranges]=\"ranges\" [showCustomRangeLabel]=\"true\"\r\n [alwaysShowCalendars]=\"false\" [keepCalendarOpeningWithRange]=\"true\" [showCancel]=\"true\"\r\n autocomplete=\"off\" [(ngModel)]=\"selectedDateRange\" [autoApply]=\"true\"\r\n [locale]=\"{ format: 'DD-MM-YYYY', firstDay: 1, monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] }\"\r\n (datesUpdated)=\"datechange($event)\" name=\"daterange\" />\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M13.3333 1.66663V4.99996M6.66667 1.66663V4.99996M2.5 8.33329H17.5M4.16667 3.33329H15.8333C16.7538 3.33329 17.5 4.07948 17.5 4.99996V16.6666C17.5 17.5871 16.7538 18.3333 15.8333 18.3333H4.16667C3.24619 18.3333 2.5 17.5871 2.5 16.6666V4.99996C2.5 4.07948 3.24619 3.33329 4.16667 3.33329Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n \r\n <div class=\"position-relative\">\r\n\r\n <button type=\"button\" (click)=\"opendropdown()\" class=\"btn btn-outline mx-2 rounded-3 text-nowrap border-val\">\r\n <span class=\"me-2\">Filter</span> <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M5 10H15M2.5 5H17.5M7.5 15H12.5\" stroke=\"#344054\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n </button>\r\n\r\n\r\n <div *ngIf=\"Opendropdown\" class=\"card p-4 dropdown2 position-absolute z-1 end-0\" (clickOutside)=\"closeDropdown()\">\r\n <div class=\"dropdown-title d-flex justify-content-between mb-3\">\r\n <span>Filter Options</span>\r\n \r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container mb-3\">\r\n <div class=\"position-relative dropdown-header\" (click)=\"toggleRmDropdown()\">\r\n <input type=\"text\" class=\"form-control dropdown-input cursor-pointer\"\r\n value=\"RMs\" readonly placeholder=\"Select RMs\" />\r\n <span \r\n *ngIf=\"getSelectedRmsCount()\" \r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge-light-default text-white text-xs rounded-full px-2 py-0.5\">\r\n {{ getSelectedRmsCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"rmOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\" placeholder=\"Search RMs\"\r\n [(ngModel)]=\"searchRmText\" (ngModelChange)=\"filterRms()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"selectAllRms\" [checked]=\"isAllRmsSelected()\"\r\n (change)=\"toggleSelectAllRms($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllRms\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let rm of filteredRms\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [id]=\"rm.email\" [(ngModel)]=\"rm.checked\"\r\n (change)=\"updateSelectedRms()\" />\r\n <label class=\"form-check-label\" [for]=\"rm.email\">{{ rm.userName }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n <div class=\"dropdown-container\">\r\n <div class=\"dropdown-header position-relative\" (click)=\"toggleClusterDropdown()\">\r\n <input type=\"text\"\r\n class=\"form-control dropdown-input cursor-pointer pe-5\"\r\n value=\"Clusters\"\r\n readonly\r\n placeholder=\"Select Clusters\" />\r\n\r\n\r\n <span *ngIf=\"getSelectedClustersCount()\"\r\n class=\"position-absolute top-50 end-0 translate-middle-y me-2 badge badge badge-light-default text-white rounded-pill px-2 py-0\">\r\n {{ getSelectedClustersCount() }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"dropdown-menu custom-dropdown-menu\" *ngIf=\"clusterOpen\">\r\n <input type=\"text\" class=\"form-control mb-2 dropdown-search\"\r\n placeholder=\"Search clusters\"\r\n [(ngModel)]=\"searchClusterText\"\r\n (ngModelChange)=\"filterClusters()\" />\r\n\r\n <div class=\"form-check ps-0 my-5\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n id=\"selectAllClusters\"\r\n [checked]=\"isAllClustersSelected()\"\r\n (change)=\"toggleSelectAllClusters($event)\" />\r\n <label class=\"form-check-label\" for=\"selectAllClusters\">Select All</label>\r\n </div>\r\n\r\n <div class=\"form-check mb-5 ps-0\" *ngFor=\"let cluster of filteredClusters\">\r\n <input class=\"form-check-input\"\r\n type=\"checkbox\"\r\n [id]=\"cluster._id\"\r\n [(ngModel)]=\"cluster.checked\"\r\n (change)=\"updateSelectedClusters()\" />\r\n <label class=\"form-check-label\" [for]=\"cluster._id\">{{ cluster.clusterName }}</label>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <div class=\"d-flex gap-2 mt-3\">\r\n <button class=\"btn btn-outline btn-sm w-50\" (click)=\"Reset()\">Reset</button>\r\n <button class=\"btn btn-primary btn-sm w-50\" (click)=\"Apply()\">Apply</button>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n\r\n <button type=\"button\" (click)=\"exportXLSX()\" *ngIf=\"!noData && !loading\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n 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\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata-table\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this eye test table</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!noData && !loading\" class=\"table-responsive\">\r\n <table class=\"table table-borderless table-hover\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-nowrap\"> <span class=\"cursor-pointer\" (click)=\"onSort('rmName')\"> RM Name <svg\r\n [ngClass]=\"sortedColumn === 'rmName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'rmName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('clusterName')\"> Cluster Name <svg\r\n [ngClass]=\"sortedColumn === 'clusterName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'clusterName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('optumId')\"> Optum ID <svg\r\n [ngClass]=\"sortedColumn === 'optumId' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'optumId' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\"><span class=\"cursor-pointer\" (click)=\"onSort('storeName')\"> Store Name <svg\r\n [ngClass]=\"sortedColumn === 'storeName' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'storeName' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span></th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('tangoScore')\"> Tango Score <svg\r\n [ngClass]=\"sortedColumn === 'tangoScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'tangoScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">\r\n <span class=\"cursor-pointer\" (click)=\"onSort('trustScore')\"> Trust Score <svg\r\n [ngClass]=\"sortedColumn === 'trustScore' && sortOrder === 1 ? 'rotate' : ''\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortedColumn === 'trustScore' ? '#00A3FF' : '#667085'\" stroke-width=\"1.33333\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n </th>\r\n <th class=\"text-nowrap\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of tableData\">\r\n <td class=\"text-nowrap\">{{item.RMEmail}}</td>\r\n <td class=\"text-nowrap\">{{item.cluster}}</td>\r\n <td class=\"text-nowrap\">{{item.optumId}}</td>\r\n <td class=\"text-nowrap\">{{item.storeName}}</td>\r\n <td class=\"text-nowrap\">{{item.tangoScore ?? \"--\" }}</td>\r\n <td class=\"text-nowrap\">{{item.trustScore}}</td>\r\n <td class=\"text-nowrap\">\r\n <button type=\"button\" [disabled]=\"!item.auditedId\" (click)=\"eyeTestView(item)\" class=\"btn btn-link p-0 m-0 border-0 bg-transparent\">\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=\"M0.833252 9.99967C0.833252 9.99967 4.16658 3.33301 9.99992 3.33301C15.8333 3.33301 19.1666 9.99967 19.1666 9.99967C19.1666 9.99967 15.8333 16.6663 9.99992 16.6663C4.16658 16.6663 0.833252 9.99967 0.833252 9.99967Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99992 12.4997C11.3806 12.4997 12.4999 11.3804 12.4999 9.99967C12.4999 8.61896 11.3806 7.49967 9.99992 7.49967C8.61921 7.49967 7.49992 8.61896 7.49992 9.99967C7.49992 11.3804 8.61921 12.4997 9.99992 12.4997Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</button>\r\n </td>\r\n </tbody>\r\n </table>\r\n <div class=\"card-footer\" *ngIf=\"!noData && !loading\"> \r\n <lib-pagination [itemsPerPage]=\"pageSize\" [currentPage]=\"offset\" [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\" (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination> </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n", styles: [".header-card{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;color:var(--Black, #101828);font-size:18px;line-height:32px}.text-card{color:var(--Black, #101828);font-size:24px;line-height:32px}.bg-light-primary{border-bottom:1px solid var(--Primary-100, #DAF1FF)!important;background:var(--Primary-25, #F6FCFF)!important}.sub-title{color:var(--Gray-500, #667085);font-size:12px;font-weight:500;line-height:18px}.video-position{position:absolute;top:50%;transform:translateY(-50%)}.btn-success{border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}.btn.btn-success:hover:not(.btn-active),.btn.btn-success:active:not(.btn-active){border:1px solid var(--Success-700, #027A48)!important;background:var(--Success-700, #027A48)!important;box-shadow:0 1px 2px #1018280d!important}table tr{vertical-align:middle}table tr td{color:var(--Gray-500, #667085);font-size:14px!important;font-weight:500;line-height:20px}.custom-dropdown{position:relative;width:100%;padding:10px 16px;cursor:pointer;border-radius:8px;font-size:16px;font-weight:400;line-height:20px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--Gray-50, #F9FAFB);box-shadow:0 1px 2px #1018280d}.dropdown-content{position:absolute;z-index:1;top:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.dropdown-content1{position:absolute;z-index:1;bottom:100%;left:0;border-radius:6px;width:100%;background:#fff;box-shadow:0 4px 6px #0000001a;display:flex}.scroll-container{display:flex;width:100%}.scroll-container .item{width:100%;text-align:start}.scroll-container .items:hover,.scroll-container .tems.focus,.scroll-container .items.active{background:var(--Gray-50, #F9FAFB)}.label{position:absolute;top:-25%;color:var(--Gray-700, #344054);font-size:12px;line-height:18px}.scroll-section{width:50%;height:200px;overflow-y:auto;text-align:center;border-right:1px solid #ddd}.scroll-section:last-child{border-right:none}.scroll-section div{padding:8px;cursor:pointer}.scroll-section div.selected{background:#007bff;color:#fff}.bg-primary{border-radius:8px;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d}.bg-danger{background:var(--Primary-500, #D92D20)!important}.text-primary{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important}.text-primary1{color:var(--Primary-700, #009BF3)!important;font-size:12px!important;font-weight:500!important;line-height:18px!important;text-overflow:ellipsis;max-width:200px;overflow:hidden}.text-select{color:var(--Gray-500, #667085)!important;font-size:14.56px!important;font-weight:400;line-height:21.84px!important}.custom-tooltip-content{font-size:12px!important;text-align:left!important}::ng-deep .tooltip-inner{max-width:500px!important;white-space:normal}.test-dark1{color:var(--Success-700, #027A48)!important;text-align:center;font-size:12px!important;font-weight:500!important;line-height:18px}.engage-text{color:var(--Primary-700, #009BF3)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;text-transform:capitalize}.disabled{pointer-events:none;opacity:.4;cursor:not-allowed}.h-auto{height:400px!important;object-fit:fill}@media (min-width: 1920px) and (max-width: 2119px){.h-500px{height:600px!important}.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 1720px) and (max-width: 1900px){.h-auto{height:400px!important;object-fit:fill}}@media (min-width: 2120px) and (max-width: 2800px){.h-auto{height:520px!important;object-fit:fill}}@media (min-width: 1330px) and (max-width: 1500px){.h-auto{height:370px!important;object-fit:fill}}.ts700px{min-height:auto!important;max-height:700px!important}.title-head{color:var(--Gray-700, #101828);font-size:18px;font-weight:600;line-height:28px}.rotate{rotate:180deg;transition:1s}#chartdiv{width:100%;height:240px}.sankey-container,#sankeyChart{width:100%;height:600px;overflow-x:auto}.btn-resize{font-size:13px!important;height:29px!important;line-height:11px!important;padding:3px!important}.filter-label{color:var(--Gray-500, #667085)!important;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-transform:capitalize}.position-relative{position:relative}.filter-icon{cursor:pointer}.dropdown-container{position:relative;display:inline-block;width:100%}.dropdown-header{cursor:pointer;width:100%}.form-control{color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600;line-height:20px;text-transform:capitalize;width:100%;box-sizing:border-box}.dropdown-menu{position:absolute;top:100%;left:0;right:0;border:1px solid #ccc;background-color:#fff;z-index:1000;max-height:230px;overflow-y:auto;display:block;box-sizing:border-box;padding:10px 5px}.dropdown-item{padding:6px 0}.dropdown-item:hover{background-color:#f1f1f1}.dropdown-item input[type=checkbox]{margin-right:10px}.custom-dropdown-menu{border-radius:4px;box-shadow:0 1px 2px #1018280d}.custom-dropdown-item{display:flex;align-items:center}.custom-dropdown-item input{margin-left:10px}.dropdown2{position:absolute;top:70px;min-width:270px!important}.dropdown2 .dropdown-title{color:var(--Gray-900, #101828);font-size:14px;font-weight:600;line-height:24px}.dropdown2 .dropdown{position:relative;display:inline-block}.dropdown2 .dropdown span{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:20px}.form-check-label{color:var(--Gray-700, #344054)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px}input[type=checkbox]{width:16px!important;height:16px!important;margin:0 5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-300, #D0D5DD);box-shadow:none;font-size:.8em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF);background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.2em;padding-left:0;padding-top:9px;padding-right:4px}.chip{margin:10px 0 10px 10px;padding:3px 10px;border-radius:16px;background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-weight:500;line-height:35px}.border-2{border:1px solid var(--bs-gray-300)!important;border-radius:.475rem!important}:host::ng-deep .md-drppicker .btn{line-height:10px!important}:host::ng-deep .daterangepicker-input+.ngx-daterangepicker-material .applyBtn{display:none}:host::ng-deep .md-drppicker.drops-down-right.ltr.double.show-ranges.shown{top:65px!important;left:-470px!important;height:400px!important}:host::ng-deep .md-drppicker .btn{border-radius:8px!important;border:1px solid var(--Primary-600, #00A3FF)!important;background:var(--Primary-600, #00A3FF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--White, #FFF)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize}:host::ng-deep .md-drppicker .ranges ul li button{padding:12px 16px;width:160px;color:var(--Gray-700, #344054);font-size:14px;font-weight:400;line-height:20px;background:none;border:none;text-align:left;cursor:pointer}:host::ng-deep .md-drppicker td.active,:host::ng-deep .md-drppicker td.active:hover{background-color:#029cf4!important;border-radius:20px!important;color:var(--White, #FFF)!important;text-align:center!important;font-size:14px!important;font-weight:500!important;line-height:20px}:host::ng-deep .md-drppicker.ltr .ranges{float:left;margin-top:10px!important}:host::ng-deep .md-drppicker td.in-range{background:var(--Primary-50, #EAF8FF)}:host::ng-deep .md-drppicker .ranges ul li button.active{background:var(--Primary-50, #EAF8FF)!important;border-radius:8px!important;color:var(--Primary-700, #009BF3);font-size:14px!important;font-weight:500!important;line-height:20px!important}:host::ng-deep table th,:host::ng-deep table td{width:40px!important;height:40px!important;padding:10px 8px!important}:host::ng-deep .md-drppicker td.available.prev,:host::ng-deep .md-drppicker th.available.prev{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep .md-drppicker td.available.next,:host::ng-deep .md-drppicker th.available.next{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K)!important;background-repeat:no-repeat!important;background-size:.5em!important;background-position:center!important}:host::ng-deep table th{border-bottom:0px solid var(--Gray-200, #EAECF0)!important;background:transparent!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:16px!important;font-weight:500!important;line-height:24px}:host::ng-deep .md-drppicker td.available.invalid-date{text-decoration:line-through;pointer-events:none;color:#a9a9a9}:host::ng-deep .md-drppicker td.available.today:not(.invalid-date){text-decoration:unset;pointer-events:unset;color:unset}:host::ng-deep .md-drppicker .btn.btn-default{border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;color:var(--Gray-700, #344054)!important;font-size:14px!important;font-weight:600!important;line-height:20px;text-transform:capitalize;margin-right:10px!important}\n"] }]
|
|
743
704
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.FormBuilder }, { type: i2.PageInfoService }, { type: i3.ToastService }, { type: i4.ActivatedRoute }, { type: i5.EyeTestAuditService }, { type: i6.NgbModal }, { type: i4.Router }], propDecorators: { onClickOutside: [{
|
|
744
705
|
type: HostListener,
|
|
745
706
|
args: ['document:click', ['$event']]
|
|
746
707
|
}] } });
|
|
747
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zZXR0aW5ncy1hdWRpdC9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3NldHRpbmdzLWF1ZGl0L3NldHRpbmdzLWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxHQUtiLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixDQUFDO0FBR3pCLGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztBQU0zQyxNQUFNLE9BQU8sc0JBQXNCO0lBS3ZCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVpWLE9BQU8sQ0FBTTtJQUNiLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxjQUFjLENBQVk7SUFDMUIsWUFDVSxFQUFxQixFQUNyQixJQUFZLEVBQ1osRUFBZSxFQUNmLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQzFCLEtBQXFCLEVBQ3JCLElBQXlCLEVBQ3pCLFlBQXNCLEVBQ3RCLE1BQWM7UUFSZCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFR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UUFDRyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO3dHQXJ4QlUsc0JBQXNCOzRGQUF0QixzQkFBc0IsK0hDNUJuQyw2NjRCQXlaQTs7NEZEN1hhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7eVNBb0I5QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBFeWVUZXN0QXVkaXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2V5ZS10ZXN0LWF1ZGl0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgXCJkYXlqcy9sb2NhbGUvZW5cIjtcclxuaW1wb3J0IHsgYW55IH0gZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvLmludGVybmFsL2NvcmUvdXRpbC9BcnJheVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vIGltcG9ydCAqIGFzIFBsb3RseSBmcm9tICdwbG90bHkuanMtZGlzdC1taW4nO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXNldHRpbmdzLWF1ZGl0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vc2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQXVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEF1ZGl0SWQ6IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNvbXBsaWFuY2VGb3JtOiBGb3JtR3JvdXA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlICRhcGk6IEV5ZVRlc3RBdWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7fVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duMicpICYmICF0YXJnZXQuY2xvc2VzdCgnLmJ0bicpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJBdWRpdCAtIEV5ZSBUZXN0XCIpO1xyXG5cclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiVGFuZ28gVHJheFwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJUYW5nbyBUcmF4XCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXSk7XHJcbiAgfVxyXG4gIGFsZXJ0VXNlcnM6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6IFwiNjY4N2Q5ZDFhMjdlZTg4ZjlhNDQ1N2NiXCIsXHJcbiAgICAgIHVzZXJOYW1lOiBcIkFqaW5reWEgTWFsc2hlXCIsXHJcbiAgICAgIGVtYWlsOiBcImFqaW5reWEubWFsc2hlQHlvcG1haWwuY29tXCIsXHJcbiAgICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcIjY2ODdkOWQxYTI3ZWU4OGY5YTQ0NTdjY1wiLFxyXG4gICAgICB1c2VyTmFtZTogXCJKb2huIERvZVwiLFxyXG4gICAgICBlbWFpbDogXCJqb2huLmRvZUB5b3BtYWlsLmNvbVwiLFxyXG4gICAgICByb2xlOiBcIm1hbmFnZXJcIixcclxuICAgIH0sXHJcbiAgXTtcclxuICB1c2VyczogYW55O1xyXG4gIGF1ZGl0RGF0YTogYW55O1xyXG4gIGN1cnJlbnRBdWRpdFR5cGU6IGFueTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XHJcbiAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgIHRoaXMuYXVkaXREYXRhID0gdGhpcy4kYXBpLmdldEF1ZGl0RGF0YSgpXHJcbiAgICAgID8gdGhpcy4kYXBpLmdldEF1ZGl0RGF0YSgpXHJcbiAgICAgIDogaGVhZGVycztcclxuICAgIHRoaXMuY29tcGxpYW5jZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgdGhyZXNob2xkOiBbeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIHBlcmNlbnRhZ2U6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9XSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgdGhpcy5nZXRFbWFpbENvbmZpZygpO1xyXG4gICAgdGhpcy5nZXRBbGxSbSgpO1xyXG4gICAgLy8gdGhpcy5idWlsZERhdGFPYmplY3QoKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBybU5hbWU6IFwiT2xpdmlhXCIsXHJcbiAgICAgICAgY2x1c3Rlck5hbWU6IFwiSm9oblwiLFxyXG4gICAgICAgIG9wdHVtSWQ6IFwiT1BUMDAxXCIsXHJcbiAgICAgICAgc3RvcmVOYW1lOiBcIkxLU1QxMDAxXCIsXHJcbiAgICAgICAgdGFuZ29TY29yZTogXCI5JVwiLFxyXG4gICAgICAgIHRydXN0U2NvcmU6IFwiOSVcIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHJtTmFtZTogXCJFbW1hXCIsXHJcbiAgICAgICAgY2x1c3Rlck5hbWU6IFwiRG9lXCIsXHJcbiAgICAgICAgb3B0dW1JZDogXCJPUFQwMDJcIixcclxuICAgICAgICBzdG9yZU5hbWU6IFwiTEtTVDEwMDJcIixcclxuICAgICAgICB0YW5nb1Njb3JlOiBcIjglXCIsXHJcbiAgICAgICAgdHJ1c3RTY29yZTogXCI4JVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcm1OYW1lOiBcIkF2YVwiLFxyXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBcIlNtaXRcIixcclxuICAgICAgICBvcHR1bUlkOiBcIk9QVDAwM1wiLFxyXG4gICAgICAgIHN0b3JlTmFtZTogXCJMS1NUMTAwM1wiLFxyXG4gICAgICAgIHRhbmdvU2NvcmU6IFwiNyVcIixcclxuICAgICAgICB0cnVzdFNjb3JlOiBcIjclXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBybU5hbWU6IFwiSXNhYmVsbGFcIixcclxuICAgICAgICBjbHVzdGVyTmFtZTogXCJKb2huc29uXCIsXHJcbiAgICAgICAgb3B0dW1JZDogXCJPUFQwMDRcIixcclxuICAgICAgICBzdG9yZU5hbWU6IFwiTEtTVDEwMDRcIixcclxuICAgICAgICB0YW5nb1Njb3JlOiBcIjYlXCIsXHJcbiAgICAgICAgdHJ1c3RTY29yZTogXCI2JVwiLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIC8vIHRoaXMuYWxlcnRVc2VycyA9IHRoaXMuYWxlcnRVc2Vycy5tYXAoXHJcbiAgICAvLyAgICh1c2VyOiB7IHVzZXJOYW1lOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmc7IHJvbGU6IHN0cmluZyB9KSA9PiAoe1xyXG4gICAgLy8gICAgIG5hbWU6IHVzZXIudXNlck5hbWUsXHJcbiAgICAvLyAgICAgdmFsdWU6IHVzZXIuZW1haWwsXHJcbiAgICAvLyAgICAgcm9sZTogdXNlci5yb2xlLFxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKTtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcclxuICAgICAgLy8gdGhpcy5zdG9yZUlkID0gcGFyYW1zWydzdG9yZUlkJ107XHJcbiAgICAgIHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9IHBhcmFtc1tcInR5cGVcIl07XHJcbiAgICAgIHRoaXMuQXVkaXRJZCA9IHBhcmFtc1tcIl9pZFwiXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgc3RlcFdpc2VQcm9jZXNzOiBhbnkgPSBbXTtcclxuICBhdWRpdERldGFpbHM6IGFueTtcclxuICB0YWtlQXVkaXQ6IGFueTtcclxuICBnZXRBdWRpdGRldGFpbHMoKSB7XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkaW5nJyk7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZCxcclxuICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0QXVkaXRkZXRhaWxzKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuYXVkaXREZXRhaWxzID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmF1ZGl0RGV0YWlscy5hdWRpdFN0YXR1cyA9PT0gXCJJbi1Qcm9ncmVzc1wiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50YWtlQXVkaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zdGVwV2lzZVByb2Nlc3MgPSB0aGlzLmF1ZGl0RGV0YWlscz8uc3RlcHM7XHJcbiAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgLy8gICB0aGlzLmdldEF1ZGl0SGlzdG9yeSgpXHJcbiAgICAgICAgICAgIC8vIH0sMTAwKVxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gIH1cclxuXHJcbiAgb3Blbkl0ZW0oZXZlbnQ6IGFueSkge31cclxuXHJcbiAgLy8gY29tcG9uZW50LnRzXHJcblxyXG4gIGJhY2tOYXZpZ2F0aW9uKCkge1xyXG4gICAgdGhpcy4kYXBpLmF1ZGl0RmlsdGVyRGF0YSA9IHtcclxuICAgICAgYmFjazogXCJiYWNrXCIsXHJcbiAgICAgIGF1ZGl0RGV0YWlsczogdGhpcy5hdWRpdERldGFpbHMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2F1ZGl0XCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgZGF0ZTogdGhpcy5kYXlqcyhcclxuICAgICAgICAgIHRoaXMuYXVkaXREZXRhaWxzPy5maWxlRGF0ZVxyXG4gICAgICAgICAgICA/IHRoaXMuYXVkaXREZXRhaWxzPy5maWxlRGF0ZVxyXG4gICAgICAgICAgICA6IHRoaXMuZmlsdGVyU3RhcnREYXRlXHJcbiAgICAgICAgKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLFxyXG4gICAgICAgIHR5cGVWYWx1ZTogXCJwaHlzaWNhbFwiLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkQ29tcGxpYW5jZVRocmVzaG9sZDogYW55O1xyXG4gIHNlbGVjdGVkQ29tcGxpYW5jZVBlcmNlbnRhZ2U6IGFueTtcclxuICBjb21wbGlhbmNlVGhyZXNob2xkcyA9IFtcclxuICAgIHsgdmFsdWU6IFwiPD1cIiwgbGFiZWw6IFwiPD1cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI8XCIsIGxhYmVsOiBcIjxcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI+PVwiLCBsYWJlbDogXCI+PVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIj5cIiwgbGFiZWw6IFwiPlwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIj1cIiwgbGFiZWw6IFwiPVwiIH0sXHJcbiAgXTtcclxuICBjb21wbGlhbmNlUGVyY2VudGFnZSA9IFtcclxuICAgIHsgdmFsdWU6IFwiMTAlXCIsIGxhYmVsOiBcIjEwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjIwJVwiLCBsYWJlbDogXCIyMCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCIzMCVcIiwgbGFiZWw6IFwiMzAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiNDAlXCIsIGxhYmVsOiBcIjQwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjUwJVwiLCBsYWJlbDogXCI1MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI2MCVcIiwgbGFiZWw6IFwiNjAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiNzAlXCIsIGxhYmVsOiBcIjcwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjgwJVwiLCBsYWJlbDogXCI4MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI5MCVcIiwgbGFiZWw6IFwiOTAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiMTAwJVwiLCBsYWJlbDogXCIxMDAlXCIgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge1xyXG4gICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuc3VidHJhY3QoMzAsIFwiZGF5c1wiKSxcclxuICAgIGVuZERhdGU6IHRoaXMuZGF5anMoKSxcclxuICB9O1xyXG4gIGZpbHRlclN0YXJ0RGF0ZTogYW55ID0gdGhpcy5kYXlqcygpLnN1YnRyYWN0KDMwLCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICBmaWx0ZXJFbmREYXRlOiBhbnkgPSB0aGlzLmRheWpzKCkuc3VidHJhY3QoMCwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblxyXG4gIHJhbmdlczogYW55ID0ge1xyXG4gICAgVG9kYXk6IFt0aGlzLmRheWpzKCksIHRoaXMuZGF5anMoKV0sXHJcbiAgICBZZXN0ZXJkYXk6IFtcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKSxcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKSxcclxuICAgIF0sXHJcbiAgICBcIlRoaXMgV2Vla1wiOiBbdGhpcy5kYXlqcygpLnN1YnRyYWN0KDYsIFwiZGF5c1wiKSwgdGhpcy5kYXlqcygpXSxcclxuICAgIFwiTGFzdCBXZWVrXCI6IFtcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEzLCBcImRheXNcIikuc3RhcnRPZihcImRheXNcIiksXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCg3LCBcImRheXNcIikuZW5kT2YoXCJkYXlzXCIpLFxyXG4gICAgXSxcclxuICAgIFwiVGhpcyBNb250aFwiOiBbXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgzMCwgXCJkYXlzXCIpLCAvLyBTdGFydCBkYXRlIGlzIDMwIGRheXMgYmVmb3JlIHRvZGF5XHJcbiAgICAgIHRoaXMuZGF5anMoKSxcclxuICAgIF0sXHJcbiAgICBcIkxhc3QgTW9udGhcIjogW1xyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgXCJtb250aFwiKS5zdGFydE9mKFwibW9udGhcIiksXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpLmVuZE9mKFwibW9udGhcIiksXHJcbiAgICBdLFxyXG4gIH07XHJcblxyXG4gIGRhdGVjaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnN0YXJ0RGF0ZSB8fCBldmVudC5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhcnREYXRlID0gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcbiAgICAgIHRoaXMuZmlsdGVyRW5kRGF0ZSA9IHRoaXMuZGF5anMoZXZlbnQuZW5kRGF0ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgICAgdGhpcy5BcHBseSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0WExTWCgpIHtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAgZnJvbURhdGU6IHRoaXMuZmlsdGVyU3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZmlsdGVyRW5kRGF0ZSxcclxuICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICBSTUxpc3Q6IHRoaXMuc2VsZWN0ZWRSbXM/Lmxlbmd0aCA/IHRoaXMuc2VsZWN0ZWRSbXMgOiBbXSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnRcclxuICAgICAgICA/IHRoaXMuYXVkaXREYXRhPy5jbGllbnRcclxuICAgICAgICA6IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4gICAgICBjbHVzdGVyOiB0aGlzLnNlbGVjdGVkQ2x1c3RlcnM/Lmxlbmd0aFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZENsdXN0ZXJzXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgaXNFeHBvcnQ6IHRydWUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydGVkQ29sdW1uID8gdGhpcy5zb3J0ZWRDb2x1bW4gOiBcInJtTmFtZVwiLFxyXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8gdGhpcy5zb3J0T3JkZXIgOiAxLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIGxpbWl0OiAxMDAwMCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC5nZXRFbWFpbExvZ0V4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuJGFwaS5zYXZlQXNFeGNlbEZpbGUoXHJcbiAgICAgICAgICAgIHJlcyxcclxuICAgICAgICAgICAgYCR7dGhpcy5jdXJyZW50QXVkaXRUeXBlfSBFeWUgVGVzdCBUYWJsZSBgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICBcclxuICB9XHJcblxyXG4gIHNlYXJjaFZhbHVlOiBhbnk7XHJcbnNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIHRoaXMuZ2V0RW1haWwoKTtcclxuICB9XHJcblxyXG4gIHRhYmxlRGF0YTogYW55ID0gW107XHJcblxyXG4gIHNvcnRlZENvbHVtbjogYW55O1xyXG4gIHNvcnRPcmRlcjogYW55O1xyXG4gIG9uU29ydChjb2x1bW46IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSB0aGlzLnNvcnRPcmRlciA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydGVkQ29sdW1uID0gY29sdW1uID8gY29sdW1uIDogXCJybU5hbWVcIjtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gIH1cclxuICBhbGxVc2VyczogYW55O1xyXG4gIGdldFVzZXIoKSB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICB1c2VyVHlwZTogJ2NsaWVudCcsXHJcbiAgICAgIGZpbHRlckJ5Um9sZTogW1wiYWRtaW5cIiwgXCJ1c2VyXCJdLFxyXG4gICAgICBpc0FjdGl2ZTogdGhpcy51c2Vycz8uaXNBY3RpdmUsXHJcbiAgICAgIGNsaWVudElkOnRoaXMuYXVkaXREYXRhPy5jbGllbnQgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50IDogdGhpcy51c2Vycz8uY2xpZW50SWRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC5nZXR1c2VyTGlzdChvYmopXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSByZXM/LmRhdGE/LnJlc3VsdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBpdGVtLl9pZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5lbWFpbCxcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJDb25maWcoKTsgLy8gY2FsbCBhZnRlciBhbGxVc2VycyBpcyByZWFkeVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ0RhdGE6IGFueTtcclxuXHJcbiAgdXBkYXRlT3duZXIoc2VsZWN0ZWRFbWFpbDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEgPSBzZWxlY3RlZEVtYWlsO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWRpdCgpIHtcclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAvLyBlbnRlcmluZyBlZGl0IG1vZGUg4oaSIG1ha2UgYSB3b3JraW5nIGNvcHlcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBsZWF2aW5nIGVkaXQgd2l0aG91dCBzYXZpbmcg4oaSIHJlc3RvcmUgYmFzZWxpbmVcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIC8vIHJldmVydCBiYWNrIHRvIGxhc3Qgc2F2ZWQgc3RhdGVcclxuICAgIHRoaXMuY29uZmlnRGF0YSA9IFsuLi50aGlzLmxhc3RTYXZlZENvbmZpZ107XHJcbiAgICB0aGlzLmVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGVkaXRNb2RlID0gZmFsc2U7XHJcbiAgc3VibWl0T3duZXJzKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQsIC8vIG9yIHRoaXMuY2xpZW50SWRcclxuICAgICAgdXNlckxpc3Q6IHRoaXMuY29uZmlnRGF0YS5tYXAoKG86IGFueSkgPT4gKHtcclxuICAgICAgICBfaWQ6IG8uaWQgPz8gby52YWx1ZSwgLy8g4pyFIHN1cHBvcnQgYm90aCBjYXNlc1xyXG4gICAgICAgIGVtYWlsOiBvLm5hbWUsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC51cGRhdGVVc2VyQ29uZmlnKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChyZXM/Lm1lc3NhZ2UgPyByZXM/Lm1lc3NhZ2UgOiBcIkVtYWlsIGNvbmZpZ3VyYXRpb24gdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlIG93bmVyc1wiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHRoaXMub25TdWJtaXQoKTtcclxuICB1c2VyQ29uZmlnTGlzdDogYW55ID0gW107XHJcbiAgbGFzdFNhdmVkQ29uZmlnOiBhbnk7XHJcbiAgZ2V0VXNlckNvbmZpZygpIHtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0VXNlckNvbmZpZ0xpc3QodGhpcy5hdWRpdERhdGE/LmNsaWVudClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgLy8gQXNzaWduZWQgdXNlcnNcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YSA9XHJcbiAgICAgICAgICAgIHJlcz8uZGF0YT8ucmVzdWx0Py51c2VyTGlzdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uX2lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0uZW1haWwsXHJcbiAgICAgICAgICAgIH0pKSA/PyBbXTtcclxuICAgICAgICAgIHRoaXMubGFzdFNhdmVkQ29uZmlnID0gWy4uLnRoaXMuY29uZmlnRGF0YV07XHJcblxyXG4gICAgICAgICAgLy8gQnVpbGQgc2V0IG9mIGFzc2lnbmVkIGlkc1xyXG4gICAgICAgICAgY29uc3QgYXNzaWduZWRJZHMgPSBuZXcgU2V0KHRoaXMuY29uZmlnRGF0YS5tYXAoKHU6IGFueSkgPT4gdS5pZCkpO1xyXG5cclxuICAgICAgICAgIC8vIEZpbHRlciBmcm9tIGFsbFVzZXJzIChub3QgZnJvbSB1c2VyQ29uZmlnTGlzdCEpXHJcbiAgICAgICAgICB0aGlzLnVzZXJDb25maWdMaXN0ID0gdGhpcy5hbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh1OiBhbnkpID0+ICFhc3NpZ25lZElkcy5oYXModS5pZClcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGVtYWlsIGNvbmdpZyBtZXRob2QgYW5kIHZhcmlhYmxlc1xyXG4gIGVtYWlsQ29uZmlnTGlzdDogYW55O1xyXG4gIGVkaXRNb2RlMSA9IHRydWU7XHJcbiAgdG9nZ2xlRWRpdDEoKSB7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5lbmFibGUoKTtcclxuICB9XHJcbiAgZ2V0RW1haWxDb25maWcoKSB7XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsQ29uZmlnTGlzdChcclxuICAgICAgICB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8gdGhpcy5hdWRpdERhdGE/LmNsaWVudCA6IHRoaXMudXNlcnM/LmNsaWVudElkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbWFpbENvbmZpZ0xpc3QgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuXHJcbiAgICAgICAgICAvLyBTdXBwb3NlIGJhY2tlbmQgcmV0dXJucyBzb21ldGhpbmcgbGlrZTpcclxuICAgICAgICAgIC8vIHsgdGhyZXNob2xkOiBcIjEwXCIsIHBlcmNlbnRhZ2U6IFwiODBcIiB9XHJcbiAgICAgICAgICBjb25zdCBpbml0aWFsRGF0YSA9IHtcclxuICAgICAgICAgICAgdGhyZXNob2xkOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8udmFsdWUsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIC8vIEZpbGwgcmVhY3RpdmUgZm9ybSB3aXRoIHZhbHVlc1xyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5wYXRjaFZhbHVlKGluaXRpYWxEYXRhKTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsYXN0U2F2ZWRDb21wbGlhbmNlOiBhbnk7XHJcbiAgc3VibWl0Q29tcGxpYW5jZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbXBsaWFuY2VGb3JtLmludmFsaWQpIHJldHVybjtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50LFxyXG4gICAgICBjb21wbGlhbmNlVGhyZXNob2xkOiB7XHJcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbXBsaWFuY2VGb3JtLnZhbHVlLnRocmVzaG9sZCxcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb21wbGlhbmNlRm9ybS52YWx1ZS5wZXJjZW50YWdlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLnVwZGF0ZUVtYWlsQ29uZmlnKHRoaXMuZW1haWxDb25maWdMaXN0Py5faWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICByZXM/Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICA/IGBFbWFpbCBjb25maWd1cmF0aW9uYCArIHJlcz8ubWVzc2FnZVxyXG4gICAgICAgICAgICAgIDogXCJDb21wbGlhbmNlIHNldHRpbmdzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7IC8vIHVwZGF0ZSBiYXNlbGluZVxyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKFwiVXBkYXRlIGZhaWxlZDpcIiwgZXJyKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxDb21wbGlhbmNlKCkge1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7XHJcbiAgfVxyXG4gIC8vIFJNc1xyXG4gIFJtTGlzdDogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZFJtczogYW55W10gPSBbXTtcclxuICBzZWFyY2hSbVRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBDbHVzdGVyc1xyXG4gIENsdXN0ZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkQ2x1c3RlcnM6IGFueVtdID0gW107XHJcbiAgc2VhcmNoQ2x1c3RlclRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBEcm9wZG93bnNcclxuICBPcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBPcGVuL2Nsb3NlIGRyb3Bkb3duXHJcbiAgb3BlbmRyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSAhdGhpcy5PcGVuZHJvcGRvd247XHJcbiAgfVxyXG4gIGNsb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XHJcbiAgfVxyXG4gIHJtT3BlbiA9IGZhbHNlO1xyXG4gIGNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gIHRvZ2dsZVJtRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnJtT3BlbiA9ICF0aGlzLnJtT3BlbjtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTsgLy8gY2xvc2Ugb3RoZXJcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNsdXN0ZXJEcm9wZG93bigpIHtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSAhdGhpcy5jbHVzdGVyT3BlbjtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7IC8vIGNsb3NlIG90aGVyXHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbERyb3Bkb3ducygpIHtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiogLS0tLSBSTXMgLS0tLSAqL1xyXG4gIGdldEFsbFJtKCkge1xyXG4gICAgdGhpcy4kYXBpLmdldFJtTGlzdCh0aGlzLmF1ZGl0RGF0YT8uY2xpZW50KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEucmVzdWx0KVxyXG4gICAgICAgICAgPyByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgIDogW3Jlcy5kYXRhLnJlc3VsdF07XHJcbiAgICAgICAgdGhpcy5SbUxpc3QgPSByZXN1bHQubWFwKChybTogYW55KSA9PiAoeyAuLi5ybSwgY2hlY2tlZDogdHJ1ZSB9KSk7IC8vIOKchSBwcmUtc2VsZWN0IGFsbFxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRSbXMgPSBbLi4udGhpcy5SbUxpc3RdO1xyXG4gICAgICAgIC8vLS0gT2xkIGNvZGUgLS1cclxuICAgICAgICAvLyB0aGlzLmdldEFsbEdyb3Vwcyh0aGlzLlJtTGlzdCk7XHJcbiAgICAgICAgLy8gdGhpcy5BcHBseSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsR3JvdXBzUHJvbWlzZSh0aGlzLlJtTGlzdCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLkFwcGx5KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyUm1zKCkge1xyXG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hSbVRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZmlsdGVyZWRSbXMgPSB0aGlzLlJtTGlzdC5maWx0ZXIoKHIpID0+XHJcbiAgICAgIHIudXNlck5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxSbXNTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRSbXMubGVuZ3RoID4gMCAmJiB0aGlzLmZpbHRlcmVkUm1zLmV2ZXJ5KChyKSA9PiByLmNoZWNrZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsUm1zKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRSbXMuZm9yRWFjaCgocikgPT4gKHIuY2hlY2tlZCA9IGNoZWNrZWQpKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNlbGVjdGVkUm1zKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLlJtTGlzdC5maWx0ZXIoKHIpID0+IHIuY2hlY2tlZCk7XHJcbiAgICAvLyB0aGlzLmdldEFsbEdyb3VwcyhzZWxlY3RlZCk7IC8vIGF1dG8gcmVmcmVzaCBjbHVzdGVyc1xyXG4gICAgdGhpcy5nZXRBbGxHcm91cHNQcm9taXNlKHNlbGVjdGVkKS50aGVuKCgpID0+IHsgXHJcbiAgICAgIC8vIGF1dG8gcmVmcmVzaCBjbHVzdGVycyB3aXRoIHByb21pc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbnNlbGVjdGVkUm1zTGFiZWwoKTogc3RyaW5nIHtcclxuICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmlsdGVyZWRSbXMuZmlsdGVyKHJtID0+IHJtLmNoZWNrZWQpO1xyXG4gIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHJldHVybiAnJztcclxuICByZXR1cm4gc2VsZWN0ZWRbMF0udXNlck5hbWU7XHJcbn1cclxuZ2V0U2VsZWN0ZWRSbXNDb3VudCgpOiBudW1iZXIge1xyXG4gIHJldHVybiB0aGlzLmZpbHRlcmVkUm1zLmZpbHRlcihybSA9PiBybS5jaGVja2VkKS5sZW5ndGg7XHJcbn1cclxuICAvKiogLS0tLSBDbHVzdGVycyAtLS0tICovXHJcbi8vIGdldEFsbEdyb3VwcyhldmVudD86IGFueVtdKSB7XHJcbi8vICAgbGV0IHJtTGlzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbi8vICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuLy8gICAgIHJtTGlzdCA9IGV2ZW50Lm1hcCgobykgPT4gby5lbWFpbCk7XHJcbi8vICAgfSBlbHNlIGlmICh0aGlzLnVzZXJzPy5yb2xlID09PSBcInJtXCIpIHtcclxuLy8gICAgIHJtTGlzdCA9IFt0aGlzLnVzZXJzPy5lbWFpbF07XHJcbi8vICAgfVxyXG5cclxuLy8gICBjb25zdCBvYmogPSB7IFxyXG4vLyAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50IDogdGhpcy51c2Vycz8uY2xpZW50SWQsXHJcbi8vICAgICBybUxpc3QgXHJcbi8vICAgfTtcclxuXHJcbi8vICAgdGhpcy4kYXBpLmdldENsdXN0ZXJzKG9iaikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4vLyAgICAgaWYgKHJlcz8uY29kZSA9PT0gMjAwKSB7XHJcbi8vICAgICAgIC8vIEluaXRpYWxpemUgY2x1c3RlcnMgd2l0aCBjaGVja2VkPWZhbHNlXHJcbi8vICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSAocmVzLmRhdGEucmVzdWx0IHx8IFtdKS5tYXAoKGM6IGFueSkgPT4gKHtcclxuLy8gICAgICAgICAuLi5jLFxyXG4vLyAgICAgICAgIGNoZWNrZWQ6IHRydWVcclxuLy8gICAgICAgfSkpO1xyXG4vLyAgICAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbLi4udGhpcy5DbHVzdGVyTGlzdF07XHJcbi8vICAgICB9IGVsc2Uge1xyXG4vLyAgICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gW107XHJcbi8vICAgICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycyA9IFtdO1xyXG4vLyAgICAgfVxyXG4vLyAgIH0pO1xyXG4vLyB9XHJcblxyXG4gIGdldEFsbEdyb3Vwc1Byb21pc2UoZXZlbnQ/OiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IHJtTGlzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgcm1MaXN0ID0gZXZlbnQubWFwKChvKSA9PiBvLmVtYWlsKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnVzZXJzPy5yb2xlID09PSBcInJtXCIpIHtcclxuICAgICAgICBybUxpc3QgPSBbdGhpcy51c2Vycz8uZW1haWxdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQgPz8gdGhpcy51c2Vycz8uY2xpZW50SWQsXHJcbiAgICAgICAgcm1MaXN0XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLiRhcGkuZ2V0Q2x1c3RlcnMob2JqKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSAocmVzLmRhdGEucmVzdWx0IHx8IFtdKS5tYXAoKGM6IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAuLi5jLFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gWy4uLnRoaXMuQ2x1c3Rlckxpc3RdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5DbHVzdGVyTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlc29sdmUoKTsgLy8gY29tcGxldGlvblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHJlamVjdChlcnIpLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbmZpbHRlckNsdXN0ZXJzKCkge1xyXG4gIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoQ2x1c3RlclRleHQudG9Mb3dlckNhc2UoKTtcclxuICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSB0aGlzLkNsdXN0ZXJMaXN0LmZpbHRlcigoYykgPT5cclxuICAgIGMuY2x1c3Rlck5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpXHJcbiAgKTtcclxufVxyXG5cclxuaXNBbGxDbHVzdGVyc1NlbGVjdGVkKCkge1xyXG4gIHJldHVybiAoXHJcbiAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMubGVuZ3RoID4gMCAmJlxyXG4gICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmV2ZXJ5KChjKSA9PiBjLmNoZWNrZWQpXHJcbiAgKTtcclxufVxyXG5cclxudG9nZ2xlU2VsZWN0QWxsQ2x1c3RlcnMoZXZlbnQ6IGFueSkge1xyXG4gIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMuZm9yRWFjaCgoYykgPT4gKGMuY2hlY2tlZCA9IGNoZWNrZWQpKTtcclxuICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ2x1c3RlcnMoKTtcclxufVxyXG5cclxudXBkYXRlU2VsZWN0ZWRDbHVzdGVycygpIHtcclxuICB0aGlzLnNlbGVjdGVkQ2x1c3RlcnMgPSB0aGlzLkNsdXN0ZXJMaXN0XHJcbiAgICAuZmlsdGVyKGMgPT4gYy5jaGVja2VkKVxyXG4gICAgLm1hcChjID0+IGMuX2lkKTsgLy8gb3IgYy5jbHVzdGVyTmFtZSBpZiBuZWVkZWRcclxufVxyXG5cclxuc2VsZWN0ZWRDbHVzdGVyc0xhYmVsKCkge1xyXG4gIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoKGMpID0+IGMuY2hlY2tlZCk7XHJcbiAgaWYgKHNlbGVjdGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xyXG4gIHJldHVybiBzZWxlY3RlZFswXS5jbHVzdGVyTmFtZTtcclxufVxyXG5cclxuZ2V0U2VsZWN0ZWRDbHVzdGVyc0NvdW50KCkge1xyXG4gIHJldHVybiB0aGlzLkNsdXN0ZXJMaXN0LmZpbHRlcihjID0+IGMuY2hlY2tlZCkubGVuZ3RoO1xyXG4gIC8vIHJldHVybiBjb3VudCA+IDEgPyBjb3VudCAtIDEgOiAwOyAvLyBTaG93IFwiK04gb3RoZXJzXCJcclxufVxyXG5cclxuICAvKiogLS0tLSBBcHBseSAvIFJlc2V0IC0tLS0gKi9cclxuICBSZXNldCgpIHtcclxuICAgIHRoaXMuUm1MaXN0LmZvckVhY2goKHIpID0+IChyLmNoZWNrZWQgPSBmYWxzZSkpO1xyXG4gICAgdGhpcy5DbHVzdGVyTGlzdC5mb3JFYWNoKChjKSA9PiAoYy5jaGVja2VkID0gZmFsc2UpKTtcclxuICAgIHRoaXMuZmlsdGVyZWRSbXMgPSBbLi4udGhpcy5SbUxpc3RdO1xyXG4gICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gWy4uLnRoaXMuQ2x1c3Rlckxpc3RdO1xyXG4gICAgICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICB9XHJcbiAgc2VsZWN0ZWRSbXM6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkQ2x1c3RlcnM6IGFueSA9IFtdO1xyXG4gIEFwcGx5KCkge1xyXG4gICAgY29uc3QgZGF0ZVBpcGUgPSBuZXcgRGF0ZVBpcGUoXCJlbi1VU1wiKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSbXMgPSB0aGlzLlJtTGlzdC5maWx0ZXIoKHIpID0+IHIuY2hlY2tlZCkubWFwKChyKSA9PiByLmVtYWlsKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDbHVzdGVycyA9IHRoaXMuQ2x1c3Rlckxpc3QuZmlsdGVyKChjKSA9PiBjLmNoZWNrZWQpLm1hcChcclxuICAgICAgKGMpID0+IGMuY2x1c3Rlck5hbWVcclxuICAgICk7XHJcbiAgICB0aGlzLmdldEVtYWlsKCk7XHJcbiAgICB0aGlzLnJtT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbHVzdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmZpbHRlclN0YXJ0RGF0ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXJ0RGF0ZSA9IGRhdGVQaXBlLnRyYW5zZm9ybShcclxuICAgICAgICB0aGlzLmZpbHRlclN0YXJ0RGF0ZSxcclxuICAgICAgICBcInl5eXktTU0tZGRcIlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyRW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlckVuZERhdGUgPSBkYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5maWx0ZXJFbmREYXRlLCBcInl5eXktTU0tZGRcIik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9mZnNldCA9IDE7XHJcbiAgbGltaXQgPSAxMDtcclxucGFnZVNpemUgPSAxMDsgICAgICAgICAgICBcclxucGFnaW5hdGlvblNpemVzID0gWzEwLDIwLDMwXTsgXHJcbnRvdGFsSXRlbXMgPSAwO1xyXG4gIHNldFBhZ2luYXRpb25TaXplcygpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsSXRlbXMgPiAxMCkge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107IC8vIEp1c3Qgb25lIG9wdGlvbiBpZiBsZXNzIHRoYW4gMTBcclxuICAgIH1cclxuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnBhZ2luYXRpb25TaXplc1swXTtcclxuICB9IFxyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBub0RhdGEgPSBmYWxzZTtcclxuICBnZXRFbWFpbCgpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuZmlsdGVyU3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZmlsdGVyRW5kRGF0ZSxcclxuICAgICAgLy8gdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICBSTUxpc3Q6IHRoaXMuc2VsZWN0ZWRSbXM/Lmxlbmd0aCA/IHRoaXMuc2VsZWN0ZWRSbXMgOiBbXSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnRcclxuICAgICAgICA/IHRoaXMuYXVkaXREYXRhPy5jbGllbnRcclxuICAgICAgICA6IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4gICAgICBjbHVzdGVyOiB0aGlzLnNlbGVjdGVkQ2x1c3RlcnM/Lmxlbmd0aFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZENsdXN0ZXJzXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgaXNFeHBvcnQ6IGZhbHNlLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hWYWx1ZSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRlZENvbHVtbiA/IHRoaXMuc29ydGVkQ29sdW1uIDogXCJSTUVtYWlsXCIsXHJcbiAgICAgIHNvcnRPcmRlcjogdGhpcy5zb3J0T3JkZXIgPyB0aGlzLnNvcnRPcmRlciA6IDEsXHJcbiAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLmxpbWl0LFxyXG4gICAgfTtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0RW1haWxMb2cob2JqKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXM/LmRhdGE/LmNvdW50IHx8IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5hdGlvblNpemVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlVwZGF0ZSBmYWlsZWQ6XCIsIGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxub25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xyXG4gIHRoaXMub2Zmc2V0ID0gcGFnZTtcclxuICB0aGlzLmdldEVtYWlsKCk7IC8vIHJlbG9hZCB3aXRoIG5ldyBwYWdlXHJcbn1cclxuXHJcbm9uUGFnZVNpemVDaGFuZ2Uoc2l6ZTogbnVtYmVyKSB7XHJcbiAgdGhpcy5wYWdlU2l6ZSA9IHNpemU7XHJcbiAgdGhpcy5saW1pdCA9IHNpemU7XHJcbiAgdGhpcy5vZmZzZXQgPSAxOyAgIC8vIHJlc2V0IHRvIGZpcnN0IHBhZ2Ugd2hlbiBwYWdlIHNpemUgY2hhbmdlc1xyXG4gIHRoaXMuZ2V0RW1haWwoKTtcclxufVxyXG5cclxuICBleWVUZXN0VmlldyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuJGFwaS5zZXRBdWRpdERhdGEoZGF0YSk7XHJcbiAgICBcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvdHJheC9hdWRpdC9zdGFydFwiXSwge1xyXG4gICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgICAgICBzdG9yZUlkOiBkYXRhPy5zdG9yZUlkLFxyXG4gICAgICAgIF9pZDogZGF0YS5hdWRpdGVkSWQsXHJcbiAgICAgICAgZXllVHlwZSA6ZGF0YT8uY29tbWVudCA/IFwiZmFrZVwiIDogXCJnZW51aW5lXCIsXHJcbiAgICAgICAgUk1FbWFpbDpkYXRhPy5STUVtYWlsLFxyXG4gICAgICAgIGNsdXN0ZXI6ZGF0YT8uY2x1c3RlcixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgbGV0IGRhdGExOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJcIik7XHJcbiAgZGF0YTEuZGF0ZSA9IHtcclxuICBzdGFydERhdGU6IHRoaXMuYXVkaXREZXRhaWxzPy5maWxlRGF0ZSxcclxuICBlbmREYXRlOiB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGVcclxufTtcclxuICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KGRhdGExKSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gIEBWaWV3Q2hpbGQoJ3NhbmtleUNoYXJ0JywgeyBzdGF0aWM6IHRydWUgfSkgY2hhcnRFbGVtZW50ITogRWxlbWVudFJlZjtcclxuXHJcbiAgLy8gICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgLy8gICAgIGNvbnN0IHJhd0RhdGEgPSBbXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIkZvcm1hbCBQYW50c1wiLCB2YWx1ZTogMTIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJKb2dnZXJzXCIsIHRvOiBcIkZvcm1hbCBQYW50c1wiLCB2YWx1ZTogMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdmFsdWU6IDUgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIlRyaWFsIFJvb21cIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiAyOSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQaW4gVHVjayBQYW50c1wiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDY0IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogMTAgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRW50cnlcIiwgdG86IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdmFsdWU6IDQ5IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDI5IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIkV4aXRcIiwgdmFsdWU6IDQ5IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJKb2dnZXJzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogMSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA3IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB2YWx1ZTogMSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQaW4gVHVjayBQYW50c1wiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA1NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlRyaWFsIFJvb21cIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdG86IFwiVHJpYWwgUm9vbVwiLCB2YWx1ZTogMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIkV4aXRcIiwgdmFsdWU6IDY0IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiA1NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQaW4gVHVjayBQYW50c1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDUgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiA0IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIkZvcm1hbCBQYW50c1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQaW4gVHVjayBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAxMSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiVHJpYWwgUm9vbVwiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogMSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJKb2dnZXJzXCIsIHZhbHVlOiA2IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiAxMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJKb2dnZXJzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiA0IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiAxOCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiA2IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDUgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRW50cnlcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogMTggfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiVHJpYWwgUm9vbVwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogNCB9XHJcbiAgLy8gICAgIF07XHJcblxyXG4gIC8vICAgICAvLyBCdWlsZCB1bmlxdWUgbm9kZXNcclxuICAvLyAgICAgY29uc3QgbGFiZWxzID0gWy4uLm5ldyBTZXQocmF3RGF0YS5mbGF0TWFwKGQgPT4gW2QuZnJvbSwgZC50b10pKV07XHJcbiAgLy8gICAgIGNvbnN0IGxhYmVsVG9JbmRleDogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xyXG4gIC8vICAgICBsYWJlbHMuZm9yRWFjaCgobGFiZWwsIGkpID0+IChsYWJlbFRvSW5kZXhbbGFiZWxdID0gaSkpO1xyXG5cclxuICAvLyAgICAgLy8gTWFwIGRhdGEgZm9yIFNhbmtleVxyXG4gIC8vICAgICBjb25zdCBzb3VyY2UgPSByYXdEYXRhLm1hcChkID0+IGxhYmVsVG9JbmRleFtkLmZyb21dKTtcclxuICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gcmF3RGF0YS5tYXAoZCA9PiBsYWJlbFRvSW5kZXhbZC50b10pO1xyXG4gIC8vICAgICBjb25zdCB2YWx1ZSA9IHJhd0RhdGEubWFwKGQgPT4gZC52YWx1ZSk7XHJcblxyXG4gIC8vICAgICAvLyBBc3NpZ24gY29uc2lzdGVudCBjb2xvcnMgKGxpa2UgYW1DaGFydHMgZGlzdGluY3QgcGFsZXR0ZSlcclxuICAvLyAgICAgY29uc3Qgbm9kZUNvbG9yczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAvLyAgICAgICBcIkN1c3RvbWl6YXRpb25cIjogXCIjMWY3N2I0XCIsXHJcbiAgLy8gICAgICAgXCJGb3JtYWwgUGFudHNcIjogXCIjZmY3ZjBlXCIsXHJcbiAgLy8gICAgICAgXCJFbnRyeVwiOiBcIiMyY2EwMmNcIixcclxuICAvLyAgICAgICBcIlBpbiBUdWNrIFBhbnRzXCI6IFwiI2Q2MjcyOFwiLFxyXG4gIC8vICAgICAgIFwiSm9nZ2Vyc1wiOiBcIiM5NDY3YmRcIixcclxuICAvLyAgICAgICBcIlBvd2VyIFN0cmV0Y2hcIjogXCIjOGM1NjRiXCIsXHJcbiAgLy8gICAgICAgXCJFeGl0XCI6IFwiI2UzNzdjMlwiLFxyXG4gIC8vICAgICAgIFwiVHJpYWwgUm9vbVwiOiBcIiMxN2JlY2ZcIixcclxuICAvLyAgICAgICBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCI6IFwiI2JjYmQyMlwiXHJcbiAgLy8gICAgIH07XHJcblxyXG4gIC8vICAgICBjb25zdCBub2RlQ29sb3JBcnJheSA9IGxhYmVscy5tYXAobCA9PiBub2RlQ29sb3JzW2xdIHx8IFwiIzk5OVwiKTtcclxuICAvLyAgICAgY29uc3QgbGlua0NvbG9yQXJyYXkgPSByYXdEYXRhLm1hcChkID0+IG5vZGVDb2xvcnNbZC5mcm9tXSB8fCBcIiM5OTlcIik7XHJcblxyXG4gIC8vICAgICBjb25zdCBkYXRhOiBhbnkgPSBbe1xyXG4gIC8vICAgICAgIHR5cGU6IFwic2Fua2V5XCIsXHJcbiAgLy8gICAgICAgb3JpZW50YXRpb246IFwiaFwiLFxyXG4gIC8vICAgICAgIG5vZGU6IHtcclxuICAvLyAgICAgICAgIHBhZDogMTUsXHJcbiAgLy8gICAgICAgICB0aGlja25lc3M6IDIwLFxyXG4gIC8vICAgICAgICAgbGluZTogeyBjb2xvcjogXCJibGFja1wiLCB3aWR0aDogMC41IH0sXHJcbiAgLy8gICAgICAgICBsYWJlbDogbGFiZWxzLFxyXG4gIC8vICAgICAgICAgY29sb3I6IG5vZGVDb2xvckFycmF5XHJcbiAgLy8gICAgICAgfSxcclxuICAvLyAgICAgICBsaW5rOiB7XHJcbiAgLy8gICAgICAgICBzb3VyY2UsXHJcbiAgLy8gICAgICAgICB0YXJnZXQsXHJcbiAgLy8gICAgICAgICB2YWx1ZSxcclxuICAvLyAgICAgICAgIGNvbG9yOiBsaW5rQ29sb3JBcnJheVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfV07XHJcblxyXG4gIC8vICAgICBjb25zdCBsYXlvdXQgPSB7XHJcbiAgLy8gICAgICAgdGl0bGU6IHsgdGV4dDogXCJTYW5rZXkgRmxvdyAoUGxvdGx5IHdpdGggQW1DaGFydHMtbGlrZSBDb2xvcnMpXCIgfSxcclxuICAvLyAgICAgICBmb250OiB7IHNpemU6IDEyIH1cclxuICAvLyAgICAgfTtcclxuXHJcbiAgLy8gICAgIFBsb3RseS5uZXdQbG90KHRoaXMuY2hhcnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRhdGEsIGxheW91dCk7XHJcbiAgLy8gICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbXktNVwiPlxyXG4gICAgPGRpdiAoY2xpY2spPVwiYmFja05hdmlnYXRpb24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1hbSBidG4tb3V0bGluZSBwLTNcIj5cclxuICAgICAgICA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuODMzMiA5Ljk5OTg0SDQuMTY2NU00LjE2NjUgOS45OTk4NEw5Ljk5OTg0IDE1LjgzMzJNNC4xNjY1IDkuOTk5ODRMOS45OTk4NCA0LjE2NjVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgPC9kaXY+PHNwYW4gY2xhc3M9XCJtcy0yIHRpdGxlLWhlYWRcIj5BdWRpdCBTZXR0aW5nczwvc3Bhbj5cclxuPC9kaXY+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cInJvdyBtdC01XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiIChzaG93KT1cIm9wZW5JdGVtKCRldmVudClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWFjY29yZGlhbi1jYXJkIFwiICBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiA+VXNlciBDb25maWd1cmF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZWRpdE1vZGVcIiBjbGFzcz1cIiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRWRpdCgpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuIGNsYXNzPVwibWUtMlwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE0LjE2NyAyLjQ5OTkzQzE0LjM4NTkgMi4yODEwNiAxNC42NDU3IDIuMTA3NDQgMTQuOTMxNyAxLjk4ODk5QzE1LjIxNzYgMS44NzA1NCAxNS41MjQxIDEuODA5NTcgMTUuODMzNyAxLjgwOTU3QzE2LjE0MzIgMS44MDk1NyAxNi40NDk3IDEuODcwNTQgMTYuNzM1NyAxLjk4ODk5QzE3LjAyMTYgMi4xMDc0NCAxNy4yODE1IDIuMjgxMDYgMTcuNTAwMyAyLjQ5OTkzQzE3LjcxOTIgMi43MTg4IDE3Ljg5MjggMi45Nzg2MyAxOC4wMTEzIDMuMjY0NkMxOC4xMjk3IDMuNTUwNTcgMTguMTkwNyAzLjg1NzA2IDE4LjE5MDcgNC4xNjY1OUMxOC4xOTA3IDQuNDc2MTIgMTguMTI5NyA0Ljc4MjYyIDE4LjAxMTMgNS4wNjg1OUMxNy44OTI4IDUuMzU0NTUgMTcuNzE5MiA1LjYxNDM5IDE3LjUwMDMgNS44MzMyNkw2LjI1MDMzIDE3LjA4MzNMMS42NjY5OSAxOC4zMzMzTDIuOTE2OTkgMTMuNzQ5OUwxNC4xNjcgMi40OTk5M1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yNTc5XzI1MTI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPkVkaXQgRGV0YWlsczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj4gICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJteS0yIGZvcm0tbGFiZWwgZnMtNCBmdy1ib2xkXCI+QXNzaWduIEF1ZGl0IFVzZXJzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlZGl0TW9kZTsgZWxzZSByZWFkb25seVZpZXdcIj5cclxuICA8bGliLWNoaXAtZHJvcGRvd25cclxuICAgIFtkYXRhXT1cInVzZXJDb25maWdMaXN0XCJcclxuICAgIFtzZWxlY3RlZERhdGFdPVwiY29uZmlnRGF0YVwiXHJcbiAgICAoc2VsZWN0ZWRMaXN0KT1cInVwZGF0ZU93bmVyKCRldmVudClcIj5cclxuICA8L2xpYi1jaGlwLWRyb3Bkb3duPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlWaWV3PlxyXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHAtMyByb3VuZGVkXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjb25maWdEYXRhXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInAtMSByb3VuZGVkLTUgY2hpcCBweC0yIG15LTMgcHktMSBiZy1ncmF5LTIwMFwiPlxyXG4gICAgICB7eyBjaGlwPy5uYW1lIHx8IGNoaXAgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHRleHQtZW5kXCIgKm5nSWY9XCJlZGl0TW9kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbEVkaXQoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic3VibWl0T3duZXJzKClcIj5TYXZlPC9idXR0b24+XHJcbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkVtYWlsIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRNb2RlMVwiIGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUVkaXQxKCk7XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGlhbmNlIFRocmVzaG9sZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvbXBsaWFuY2VGb3JtXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0aHJlc2hvbGRcIiBbZGF0YV09XCJjb21wbGlhbmNlVGhyZXNob2xkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGVyY2VudGFnZVwiIFtkYXRhXT1cImNvbXBsaWFuY2VQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVkaXRNb2RlMVwiIGNsYXNzPVwibXQtMyB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbENvbXBsaWFuY2UoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBcIiAoY2xpY2spPVwic3VibWl0Q29tcGxpYW5jZSgpXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkIG1lLTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzc2Ml8xNTQzMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMDQgMTAuNjY2M1Y3Ljk5OTY3TTguMDAwMDQgNS4zMzMwMUg4LjAwNjcxTTE0LjY2NjcgNy45OTk2N0MxNC42NjY3IDExLjY4MTYgMTEuNjgxOSAxNC42NjYzIDguMDAwMDQgMTQuNjY2M0M0LjMxODE0IDE0LjY2NjMgMS4zMzMzNyAxMS42ODE2IDEuMzMzMzcgNy45OTk2N0MxLjMzMzM3IDQuMzE3NzggNC4zMTgxNCAxLjMzMzAxIDguMDAwMDQgMS4zMzMwMUMxMS42ODE5IDEuMzMzMDEgMTQuNjY2NyA0LjMxNzc4IDE0LjY2NjcgNy45OTk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF83NjJfMTU0MzBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNlbnQgaWYgdGhlIGNvbXBsaWFuY2UgZG9lc27igJl0IG1lZXQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkXCI+e3tjb21wbGlhbmNlRm9ybS52YWx1ZT8ucGVyY2VudGFnZX19PC9zcGFuPiB0byB0aGUgZ2l2ZW4gRW1haWwgSURzIGFib3ZlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtdC02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtYWlsIExvZ3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMTBcIj5cclxuIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNFwiIHN0eWxlPVwibWluLXdpZHRoOiAyNjBweCAhaW1wb3J0YW50O1wiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgbmd4RGF0ZXJhbmdlcGlja2VyTWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFtyYW5nZXNdPVwicmFuZ2VzXCIgW3Nob3dDdXN0b21SYW5nZUxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Fsd2F5c1Nob3dDYWxlbmRhcnNdPVwiZmFsc2VcIiBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgW3Nob3dDYW5jZWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCIgW2F1dG9BcHBseV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBuYW1lPVwiZGF0ZXJhbmdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbmRyb3Bkb3duKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBteC0yIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgIDxzcGFuIGNsYXNzPVwibWUtMlwiPkZpbHRlcjwvc3Bhbj4gPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgPHBhdGggZD1cIk01IDEwSDE1TTIuNSA1SDE3LjVNNy41IDE1SDEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPiBcclxuICA8L2J1dHRvbj5cclxuXHJcblxyXG4gIDxkaXYgKm5nSWY9XCJPcGVuZHJvcGRvd25cIiBjbGFzcz1cImNhcmQgcC00IGRyb3Bkb3duMiBwb3NpdGlvbi1hYnNvbHV0ZSB6LTEgZW5kLTBcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRHJvcGRvd24oKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRpdGxlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zXCI+XHJcbiAgICAgIDxzcGFuPkZpbHRlciBPcHRpb25zPC9zcGFuPlxyXG4gICAgICBcclxuICAgIDwvZGl2PlxyXG5cclxuICBcclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250YWluZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZHJvcGRvd24taGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZVJtRHJvcGRvd24oKVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgIHZhbHVlPVwiUk1zXCIgcmVhZG9ubHkgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUk1zXCIgLz5cclxuICAgICAgICAgICA8c3BhbiBcclxuICAgICAgKm5nSWY9XCJnZXRTZWxlY3RlZFJtc0NvdW50KClcIiBcclxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IG1lLTIgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB0ZXh0LXdoaXRlIHRleHQteHMgcm91bmRlZC1mdWxsIHB4LTIgcHktMC41XCI+XHJcbiAgICAgIHt7IGdldFNlbGVjdGVkUm1zQ291bnQoKSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBjdXN0b20tZHJvcGRvd24tbWVudVwiICpuZ0lmPVwicm1PcGVuXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbWItMiBkcm9wZG93bi1zZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSTXNcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hSbVRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJmaWx0ZXJSbXMoKVwiIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHBzLTAgbXktNVwiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwic2VsZWN0QWxsUm1zXCIgW2NoZWNrZWRdPVwiaXNBbGxSbXNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxSbXMoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsUm1zXCI+U2VsZWN0IEFsbDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTUgcHMtMFwiICpuZ0Zvcj1cImxldCBybSBvZiBmaWx0ZXJlZFJtc1wiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCJybS5lbWFpbFwiIFsobmdNb2RlbCldPVwicm0uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRSbXMoKVwiIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJybS5lbWFpbFwiPnt7IHJtLnVzZXJOYW1lIH19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgXHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXIgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2spPVwidG9nZ2xlQ2x1c3RlckRyb3Bkb3duKClcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IGN1cnNvci1wb2ludGVyIHBlLTVcIlxyXG4gICAgICB2YWx1ZT1cIkNsdXN0ZXJzXCJcclxuICAgICAgcmVhZG9ubHlcclxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQ2x1c3RlcnNcIiAvPlxyXG5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cImdldFNlbGVjdGVkQ2x1c3RlcnNDb3VudCgpXCJcclxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IG1lLTIgYmFkZ2UgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB0ZXh0LXdoaXRlIHJvdW5kZWQtcGlsbCBweC0yIHB5LTBcIj5cclxuICAgICAge3sgZ2V0U2VsZWN0ZWRDbHVzdGVyc0NvdW50KCkgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgY3VzdG9tLWRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cImNsdXN0ZXJPcGVuXCI+XHJcbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBtYi0yIGRyb3Bkb3duLXNlYXJjaFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNsdXN0ZXJzXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hDbHVzdGVyVGV4dFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlckNsdXN0ZXJzKClcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHBzLTAgbXktNVwiPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGlkPVwic2VsZWN0QWxsQ2x1c3RlcnNcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImlzQWxsQ2x1c3RlcnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbENsdXN0ZXJzKCRldmVudClcIiAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsQ2x1c3RlcnNcIj5TZWxlY3QgQWxsPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTUgcHMtMFwiICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIGZpbHRlcmVkQ2x1c3RlcnNcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBbaWRdPVwiY2x1c3Rlci5faWRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY2x1c3Rlci5jaGVja2VkXCJcclxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkQ2x1c3RlcnMoKVwiIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cImNsdXN0ZXIuX2lkXCI+e3sgY2x1c3Rlci5jbHVzdGVyTmFtZSB9fTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tc20gdy01MFwiIChjbGljayk9XCJSZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSB3LTUwXCIgKGNsaWNrKT1cIkFwcGx5KClcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBcclxuPC9kaXY+XHJcblxyXG4gICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydFhMU1goKVwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgZXllIHRlc3QgdGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJsZXNzIHRhYmxlLWhvdmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPiA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgncm1OYW1lJylcIj4gUk0gTmFtZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdybU5hbWUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAncm1OYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXBcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnY2x1c3Rlck5hbWUnKVwiPiBDbHVzdGVyIE5hbWUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3Rlck5hbWUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3Rlck5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnb3B0dW1JZCcpXCI+IE9wdHVtIElEIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ29wdHVtSWQnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnb3B0dW1JZCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlTmFtZScpXCI+IFN0b3JlIE5hbWUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3RhbmdvU2NvcmUnKVwiPiBUYW5nbyBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICd0YW5nb1Njb3JlJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RhbmdvU2NvcmUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgndHJ1c3RTY29yZScpXCI+IFRydXN0IFNjb3JlIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAndHJ1c3RTY29yZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0uUk1FbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tpdGVtLmNsdXN0ZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS5vcHR1bUlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0uc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0udGFuZ29TY29yZSA/PyBcIi0tXCIgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0udHJ1c3RTY29yZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFpdGVtLmF1ZGl0ZWRJZFwiIChjbGljayk9XCJleWVUZXN0VmlldyhpdGVtKVwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBtLTAgYm9yZGVyLTAgYmctdHJhbnNwYXJlbnRcIj5cclxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgIDxwYXRoIGQ9XCJNMC44MzMyNTIgOS45OTk2N0MwLjgzMzI1MiA5Ljk5OTY3IDQuMTY2NTggMy4zMzMwMSA5Ljk5OTkyIDMuMzMzMDFDMTUuODMzMyAzLjMzMzAxIDE5LjE2NjYgOS45OTk2NyAxOS4xNjY2IDkuOTk5NjdDMTkuMTY2NiA5Ljk5OTY3IDE1LjgzMzMgMTYuNjY2MyA5Ljk5OTkyIDE2LjY2NjNDNC4xNjY1OCAxNi42NjYzIDAuODMzMjUyIDkuOTk5NjcgMC44MzMyNTIgOS45OTk2N1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgIDxwYXRoIGQ9XCJNOS45OTk5MiAxMi40OTk3QzExLjM4MDYgMTIuNDk5NyAxMi40OTk5IDExLjM4MDQgMTIuNDk5OSA5Ljk5OTY3QzEyLjQ5OTkgOC42MTg5NiAxMS4zODA2IDcuNDk5NjcgOS45OTk5MiA3LjQ5OTY3QzguNjE5MjEgNy40OTk2NyA3LjQ5OTkyIDguNjE4OTYgNy40OTk5MiA5Ljk5OTY3QzcuNDk5OTIgMTEuMzgwNCA4LjYxOTIxIDEyLjQ5OTcgOS45OTk5MiAxMi40OTk3WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gIDwvc3ZnPlxyXG48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwicGFnZVNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCIgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4iXX0=
|
|
708
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9leWUtdGVzdC1hdWRpdC9leWUtdGVzdC1hdWRpdC9zZXR0aW5ncy1hdWRpdC9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2V5ZS10ZXN0LWF1ZGl0L2V5ZS10ZXN0LWF1ZGl0L3NldHRpbmdzLWF1ZGl0L3NldHRpbmdzLWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxHQUtiLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixDQUFDO0FBR3pCLGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLHNCQUFzQjtJQUt2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFaVixPQUFPLENBQU07SUFDYixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsY0FBYyxDQUFZO0lBQzFCLFlBQ1UsRUFBcUIsRUFDckIsSUFBWSxFQUNaLEVBQWUsRUFDZixRQUF5QixFQUN6QixZQUEwQixFQUMxQixLQUFxQixFQUNyQixJQUF5QixFQUN6QixZQUFzQixFQUN0QixNQUFjO1FBUmQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBUTtR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QUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDM0MsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPO2dCQUNyQixPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU87YUFDdEI7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RSxLQUFLLENBQUMsSUFBSSxHQUFHO1lBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUTtZQUN0QyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRO1NBQ3JDLENBQUM7UUFDRyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO3dHQTV1QlUsc0JBQXNCOzRGQUF0QixzQkFBc0IsK0hDNUJuQyxzNzRCQXlaQTs7NEZEN1hhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7eVNBb0I5QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLXNoYXJlZFwiO1xyXG5pbXBvcnQgeyBFeWVUZXN0QXVkaXRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2V5ZS10ZXN0LWF1ZGl0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgXCJkYXlqcy9sb2NhbGUvZW5cIjtcclxuaW1wb3J0IHsgYW55IH0gZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czUvLmludGVybmFsL2NvcmUvdXRpbC9BcnJheVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbi8vIGltcG9ydCAqIGFzIFBsb3RseSBmcm9tICdwbG90bHkuanMtZGlzdC1taW4nO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLXNldHRpbmdzLWF1ZGl0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZXR0aW5ncy1hdWRpdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vc2V0dGluZ3MtYXVkaXQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQXVkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEF1ZGl0SWQ6IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIGNvbXBsaWFuY2VGb3JtOiBGb3JtR3JvdXA7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlICRhcGk6IEV5ZVRlc3RBdWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7fVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duMicpICYmICF0YXJnZXQuY2xvc2VzdCgnLmJ0bicpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJBdWRpdCAtIEV5ZSBUZXN0XCIpO1xyXG5cclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IFwiVGFuZ28gVHJheFwiLFxyXG4gICAgICAgIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLFxyXG4gICAgICAgIGlzQWN0aXZlOiBmYWxzZSxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJUYW5nbyBUcmF4XCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXSk7XHJcbiAgfVxyXG4gIGFsZXJ0VXNlcnM6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6IFwiNjY4N2Q5ZDFhMjdlZTg4ZjlhNDQ1N2NiXCIsXHJcbiAgICAgIHVzZXJOYW1lOiBcIkFqaW5reWEgTWFsc2hlXCIsXHJcbiAgICAgIGVtYWlsOiBcImFqaW5reWEubWFsc2hlQHlvcG1haWwuY29tXCIsXHJcbiAgICAgIHJvbGU6IFwiYWRtaW5cIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcIjY2ODdkOWQxYTI3ZWU4OGY5YTQ0NTdjY1wiLFxyXG4gICAgICB1c2VyTmFtZTogXCJKb2huIERvZVwiLFxyXG4gICAgICBlbWFpbDogXCJqb2huLmRvZUB5b3BtYWlsLmNvbVwiLFxyXG4gICAgICByb2xlOiBcIm1hbmFnZXJcIixcclxuICAgIH0sXHJcbiAgXTtcclxuICB1c2VyczogYW55O1xyXG4gIGF1ZGl0RGF0YTogYW55O1xyXG4gIGN1cnJlbnRBdWRpdFR5cGU6IGFueTtcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIik7XHJcbiAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XHJcbiAgICBjb25zdCBoZWFkZXJzOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwie31cIlxyXG4gICAgKTtcclxuICAgIHRoaXMuYXVkaXREYXRhID0gdGhpcy4kYXBpLmdldEF1ZGl0RGF0YSgpXHJcbiAgICAgID8gdGhpcy4kYXBpLmdldEF1ZGl0RGF0YSgpXHJcbiAgICAgIDogaGVhZGVycztcclxuICAgIHRoaXMuY29tcGxpYW5jZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgdGhyZXNob2xkOiBbeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIHBlcmNlbnRhZ2U6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9XSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgdGhpcy5nZXRFbWFpbENvbmZpZygpO1xyXG4gICAgdGhpcy5nZXRBbGxSbSgpO1xyXG4gICAgLy8gdGhpcy5idWlsZERhdGFPYmplY3QoKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgdGhpcy50YWJsZURhdGEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBybU5hbWU6IFwiT2xpdmlhXCIsXHJcbiAgICAgICAgY2x1c3Rlck5hbWU6IFwiSm9oblwiLFxyXG4gICAgICAgIG9wdHVtSWQ6IFwiT1BUMDAxXCIsXHJcbiAgICAgICAgc3RvcmVOYW1lOiBcIkxLU1QxMDAxXCIsXHJcbiAgICAgICAgdGFuZ29TY29yZTogXCI5JVwiLFxyXG4gICAgICAgIHRydXN0U2NvcmU6IFwiOSVcIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHJtTmFtZTogXCJFbW1hXCIsXHJcbiAgICAgICAgY2x1c3Rlck5hbWU6IFwiRG9lXCIsXHJcbiAgICAgICAgb3B0dW1JZDogXCJPUFQwMDJcIixcclxuICAgICAgICBzdG9yZU5hbWU6IFwiTEtTVDEwMDJcIixcclxuICAgICAgICB0YW5nb1Njb3JlOiBcIjglXCIsXHJcbiAgICAgICAgdHJ1c3RTY29yZTogXCI4JVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcm1OYW1lOiBcIkF2YVwiLFxyXG4gICAgICAgIGNsdXN0ZXJOYW1lOiBcIlNtaXRcIixcclxuICAgICAgICBvcHR1bUlkOiBcIk9QVDAwM1wiLFxyXG4gICAgICAgIHN0b3JlTmFtZTogXCJMS1NUMTAwM1wiLFxyXG4gICAgICAgIHRhbmdvU2NvcmU6IFwiNyVcIixcclxuICAgICAgICB0cnVzdFNjb3JlOiBcIjclXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBybU5hbWU6IFwiSXNhYmVsbGFcIixcclxuICAgICAgICBjbHVzdGVyTmFtZTogXCJKb2huc29uXCIsXHJcbiAgICAgICAgb3B0dW1JZDogXCJPUFQwMDRcIixcclxuICAgICAgICBzdG9yZU5hbWU6IFwiTEtTVDEwMDRcIixcclxuICAgICAgICB0YW5nb1Njb3JlOiBcIjYlXCIsXHJcbiAgICAgICAgdHJ1c3RTY29yZTogXCI2JVwiLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIC8vIHRoaXMuYWxlcnRVc2VycyA9IHRoaXMuYWxlcnRVc2Vycy5tYXAoXHJcbiAgICAvLyAgICh1c2VyOiB7IHVzZXJOYW1lOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmc7IHJvbGU6IHN0cmluZyB9KSA9PiAoe1xyXG4gICAgLy8gICAgIG5hbWU6IHVzZXIudXNlck5hbWUsXHJcbiAgICAvLyAgICAgdmFsdWU6IHVzZXIuZW1haWwsXHJcbiAgICAvLyAgICAgcm9sZTogdXNlci5yb2xlLFxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKTtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcclxuICAgICAgLy8gdGhpcy5zdG9yZUlkID0gcGFyYW1zWydzdG9yZUlkJ107XHJcbiAgICAgIHRoaXMuY3VycmVudEF1ZGl0VHlwZSA9IHBhcmFtc1tcInR5cGVcIl07XHJcbiAgICAgIHRoaXMuQXVkaXRJZCA9IHBhcmFtc1tcIl9pZFwiXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXRBdWRpdGRldGFpbHMoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgc3RlcFdpc2VQcm9jZXNzOiBhbnkgPSBbXTtcclxuICBhdWRpdERldGFpbHM6IGFueTtcclxuICB0YWtlQXVkaXQ6IGFueTtcclxuICBnZXRBdWRpdGRldGFpbHMoKSB7XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkaW5nJyk7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgaWQ6IHRoaXMuQXVkaXRJZCxcclxuICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0QXVkaXRkZXRhaWxzKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5kaXNhYmxlY2FuY2VsID0gIGZhbHNlXHJcbiAgICAgICAgICAgIHRoaXMuYXVkaXREZXRhaWxzID0gcmVzPy5kYXRhPy5yZXN1bHQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmF1ZGl0RGV0YWlscy5hdWRpdFN0YXR1cyA9PT0gXCJJbi1Qcm9ncmVzc1wiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50YWtlQXVkaXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudGFrZUF1ZGl0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zdGVwV2lzZVByb2Nlc3MgPSB0aGlzLmF1ZGl0RGV0YWlscz8uc3RlcHM7XHJcbiAgICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgLy8gICB0aGlzLmdldEF1ZGl0SGlzdG9yeSgpXHJcbiAgICAgICAgICAgIC8vIH0sMTAwKVxyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZGluZy5uZXh0KCdsb2FkZWQnKVxyXG4gIH1cclxuXHJcbiAgb3Blbkl0ZW0oZXZlbnQ6IGFueSkge31cclxuXHJcbiAgLy8gY29tcG9uZW50LnRzXHJcblxyXG4gIGJhY2tOYXZpZ2F0aW9uKCkge1xyXG4gICAgdGhpcy4kYXBpLmF1ZGl0RmlsdGVyRGF0YSA9IHtcclxuICAgICAgYmFjazogXCJiYWNrXCIsXHJcbiAgICAgIGF1ZGl0RGV0YWlsczogdGhpcy5hdWRpdERldGFpbHMsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2F1ZGl0XCJdLCB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XHJcbiAgICAgICAgZGF0ZTogdGhpcy5kYXlqcyhcclxuICAgICAgICAgIHRoaXMuYXVkaXREZXRhaWxzPy5maWxlRGF0ZVxyXG4gICAgICAgICAgICA/IHRoaXMuYXVkaXREZXRhaWxzPy5maWxlRGF0ZVxyXG4gICAgICAgICAgICA6IHRoaXMuZmlsdGVyU3RhcnREYXRlXHJcbiAgICAgICAgKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpLFxyXG4gICAgICAgIHR5cGVWYWx1ZTogXCJwaHlzaWNhbFwiLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkQ29tcGxpYW5jZVRocmVzaG9sZDogYW55O1xyXG4gIHNlbGVjdGVkQ29tcGxpYW5jZVBlcmNlbnRhZ2U6IGFueTtcclxuICBjb21wbGlhbmNlVGhyZXNob2xkcyA9IFtcclxuICAgIHsgdmFsdWU6IFwiPD1cIiwgbGFiZWw6IFwiPD1cIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI8XCIsIGxhYmVsOiBcIjxcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI+PVwiLCBsYWJlbDogXCI+PVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIj5cIiwgbGFiZWw6IFwiPlwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIj1cIiwgbGFiZWw6IFwiPVwiIH0sXHJcbiAgXTtcclxuICBjb21wbGlhbmNlUGVyY2VudGFnZSA9IFtcclxuICAgIHsgdmFsdWU6IFwiMTAlXCIsIGxhYmVsOiBcIjEwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjIwJVwiLCBsYWJlbDogXCIyMCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCIzMCVcIiwgbGFiZWw6IFwiMzAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiNDAlXCIsIGxhYmVsOiBcIjQwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjUwJVwiLCBsYWJlbDogXCI1MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI2MCVcIiwgbGFiZWw6IFwiNjAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiNzAlXCIsIGxhYmVsOiBcIjcwJVwiIH0sXHJcbiAgICB7IHZhbHVlOiBcIjgwJVwiLCBsYWJlbDogXCI4MCVcIiB9LFxyXG4gICAgeyB2YWx1ZTogXCI5MCVcIiwgbGFiZWw6IFwiOTAlXCIgfSxcclxuICAgIHsgdmFsdWU6IFwiMTAwJVwiLCBsYWJlbDogXCIxMDAlXCIgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge1xyXG4gICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuc3VidHJhY3QoMzAsIFwiZGF5c1wiKSxcclxuICAgIGVuZERhdGU6IHRoaXMuZGF5anMoKSxcclxuICB9O1xyXG4gIGZpbHRlclN0YXJ0RGF0ZTogYW55ID0gdGhpcy5kYXlqcygpLnN1YnRyYWN0KDMwLCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICBmaWx0ZXJFbmREYXRlOiBhbnkgPSB0aGlzLmRheWpzKCkuc3VidHJhY3QoMCwgXCJkYXlzXCIpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcblxyXG4gIHJhbmdlczogYW55ID0ge1xyXG4gICAgVG9kYXk6IFt0aGlzLmRheWpzKCksIHRoaXMuZGF5anMoKV0sXHJcbiAgICBZZXN0ZXJkYXk6IFtcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKSxcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEsIFwiZGF5c1wiKSxcclxuICAgIF0sXHJcbiAgICBcIlRoaXMgV2Vla1wiOiBbdGhpcy5kYXlqcygpLnN1YnRyYWN0KDYsIFwiZGF5c1wiKSwgdGhpcy5kYXlqcygpXSxcclxuICAgIFwiTGFzdCBXZWVrXCI6IFtcclxuICAgICAgdGhpcy5kYXlqcygpLnN1YnRyYWN0KDEzLCBcImRheXNcIikuc3RhcnRPZihcImRheXNcIiksXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCg3LCBcImRheXNcIikuZW5kT2YoXCJkYXlzXCIpLFxyXG4gICAgXSxcclxuICAgIFwiVGhpcyBNb250aFwiOiBbXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgzMCwgXCJkYXlzXCIpLCAvLyBTdGFydCBkYXRlIGlzIDMwIGRheXMgYmVmb3JlIHRvZGF5XHJcbiAgICAgIHRoaXMuZGF5anMoKSxcclxuICAgIF0sXHJcbiAgICBcIkxhc3QgTW9udGhcIjogW1xyXG4gICAgICB0aGlzLmRheWpzKCkuc3VidHJhY3QoMSwgXCJtb250aFwiKS5zdGFydE9mKFwibW9udGhcIiksXHJcbiAgICAgIHRoaXMuZGF5anMoKS5zdWJ0cmFjdCgxLCBcIm1vbnRoXCIpLmVuZE9mKFwibW9udGhcIiksXHJcbiAgICBdLFxyXG4gIH07XHJcblxyXG4gIGRhdGVjaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnN0YXJ0RGF0ZSB8fCBldmVudC5lbmREYXRlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhcnREYXRlID0gdGhpcy5kYXlqcyhldmVudC5zdGFydERhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XHJcbiAgICAgIHRoaXMuZmlsdGVyRW5kRGF0ZSA9IHRoaXMuZGF5anMoZXZlbnQuZW5kRGF0ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgICAgdGhpcy5BcHBseSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0WExTWCgpIHtcclxuICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xyXG4gICAgICAgZnJvbURhdGU6IHRoaXMuZmlsdGVyU3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZmlsdGVyRW5kRGF0ZSxcclxuICAgICAgdHlwZTogdGhpcy5jdXJyZW50QXVkaXRUeXBlLFxyXG4gICAgICBSTUxpc3Q6IHRoaXMuc2VsZWN0ZWRSbXM/Lmxlbmd0aCA/IHRoaXMuc2VsZWN0ZWRSbXMgOiBbXSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnRcclxuICAgICAgICA/IHRoaXMuYXVkaXREYXRhPy5jbGllbnRcclxuICAgICAgICA6IHRoaXMudXNlcnM/LmNsaWVudElkLFxyXG4gICAgICBjbHVzdGVyOiB0aGlzLnNlbGVjdGVkQ2x1c3RlcnM/Lmxlbmd0aFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZENsdXN0ZXJzXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgaXNFeHBvcnQ6IHRydWUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFZhbHVlLFxyXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydGVkQ29sdW1uID8gdGhpcy5zb3J0ZWRDb2x1bW4gOiBcInJtTmFtZVwiLFxyXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8gdGhpcy5zb3J0T3JkZXIgOiAxLFxyXG4gICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgIGxpbWl0OiAxMDAwMCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC5nZXRFbWFpbExvZ0V4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuJGFwaS5zYXZlQXNFeGNlbEZpbGUoXHJcbiAgICAgICAgICAgIHJlcyxcclxuICAgICAgICAgICAgYCR7dGhpcy5jdXJyZW50QXVkaXRUeXBlfSBFeWUgVGVzdCBUYWJsZSBgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5lcnJvciA/IGVycj8uZXJyb3I/LmVycm9yIDogZXJyPy5lcnJvcj8ubWVzc2FnZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICBcclxuICB9XHJcblxyXG4gIHNlYXJjaFZhbHVlOiBhbnk7XHJcbnNlYXJjaERhdGEoKSB7XHJcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hWYWx1ZTtcclxuICAgIHRoaXMuZ2V0RW1haWwoKTtcclxuICB9XHJcblxyXG4gIHRhYmxlRGF0YTogYW55ID0gW107XHJcblxyXG4gIHNvcnRlZENvbHVtbjogYW55O1xyXG4gIHNvcnRPcmRlcjogYW55O1xyXG4gIG9uU29ydChjb2x1bW46IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSB0aGlzLnNvcnRPcmRlciA9PT0gMSA/IC0xIDogMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc29ydGVkQ29sdW1uID0gY29sdW1uID8gY29sdW1uIDogXCJybU5hbWVcIjtcclxuICAgICAgdGhpcy5zb3J0T3JkZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gIH1cclxuICBhbGxVc2VyczogYW55O1xyXG4gIGdldFVzZXIoKSB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICB1c2VyVHlwZTogJ2NsaWVudCcsXHJcbiAgICAgIGZpbHRlckJ5Um9sZTogW1wiYWRtaW5cIiwgXCJ1c2VyXCJdLFxyXG4gICAgICBpc0FjdGl2ZTogdGhpcy51c2Vycz8uaXNBY3RpdmUsXHJcbiAgICAgIGNsaWVudElkOnRoaXMuYXVkaXREYXRhPy5jbGllbnQgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50IDogdGhpcy51c2Vycz8uY2xpZW50SWRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC5nZXR1c2VyTGlzdChvYmopXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMuYWxsVXNlcnMgPSByZXM/LmRhdGE/LnJlc3VsdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgIGlkOiBpdGVtLl9pZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5lbWFpbCxcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJDb25maWcoKTsgLy8gY2FsbCBhZnRlciBhbGxVc2VycyBpcyByZWFkeVxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ0RhdGE6IGFueTtcclxuXHJcbiAgdXBkYXRlT3duZXIoc2VsZWN0ZWRFbWFpbDogYW55KSB7XHJcbiAgICB0aGlzLmNvbmZpZ0RhdGEgPSBzZWxlY3RlZEVtYWlsO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRWRpdCgpIHtcclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAvLyBlbnRlcmluZyBlZGl0IG1vZGUg4oaSIG1ha2UgYSB3b3JraW5nIGNvcHlcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBsZWF2aW5nIGVkaXQgd2l0aG91dCBzYXZpbmcg4oaSIHJlc3RvcmUgYmFzZWxpbmVcclxuICAgICAgdGhpcy5jb25maWdEYXRhID0gWy4uLnRoaXMubGFzdFNhdmVkQ29uZmlnXTtcclxuICAgICAgdGhpcy5lZGl0TW9kZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsRWRpdCgpIHtcclxuICAgIC8vIHJldmVydCBiYWNrIHRvIGxhc3Qgc2F2ZWQgc3RhdGVcclxuICAgIHRoaXMuY29uZmlnRGF0YSA9IFsuLi50aGlzLmxhc3RTYXZlZENvbmZpZ107XHJcbiAgICB0aGlzLmVkaXRNb2RlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGVkaXRNb2RlID0gZmFsc2U7XHJcbiAgc3VibWl0T3duZXJzKCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQsIC8vIG9yIHRoaXMuY2xpZW50SWRcclxuICAgICAgdXNlckxpc3Q6IHRoaXMuY29uZmlnRGF0YS5tYXAoKG86IGFueSkgPT4gKHtcclxuICAgICAgICBfaWQ6IG8uaWQgPz8gby52YWx1ZSwgLy8g4pyFIHN1cHBvcnQgYm90aCBjYXNlc1xyXG4gICAgICAgIGVtYWlsOiBvLm5hbWUsXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy4kYXBpXHJcbiAgICAgIC51cGRhdGVVc2VyQ29uZmlnKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChyZXM/Lm1lc3NhZ2UgPyByZXM/Lm1lc3NhZ2UgOiBcIkVtYWlsIGNvbmZpZ3VyYXRpb24gdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICAgIHRoaXMuZWRpdE1vZGUgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoXCJGYWlsZWQgdG8gdXBkYXRlIG93bmVyc1wiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KGVycj8uZXJyb3I/LmVycm9yID8gZXJyPy5lcnJvcj8uZXJyb3IgOiBlcnI/LmVycm9yPy5tZXNzYWdlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIHRoaXMub25TdWJtaXQoKTtcclxuICB1c2VyQ29uZmlnTGlzdDogYW55ID0gW107XHJcbiAgbGFzdFNhdmVkQ29uZmlnOiBhbnk7XHJcbiAgZ2V0VXNlckNvbmZpZygpIHtcclxuICAgIHRoaXMuJGFwaVxyXG4gICAgICAuZ2V0VXNlckNvbmZpZ0xpc3QodGhpcy5hdWRpdERhdGE/LmNsaWVudClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgLy8gQXNzaWduZWQgdXNlcnNcclxuICAgICAgICAgIHRoaXMuY29uZmlnRGF0YSA9XHJcbiAgICAgICAgICAgIHJlcz8uZGF0YT8ucmVzdWx0Py51c2VyTGlzdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uX2lkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0uZW1haWwsXHJcbiAgICAgICAgICAgIH0pKSA/PyBbXTtcclxuICAgICAgICAgIHRoaXMubGFzdFNhdmVkQ29uZmlnID0gWy4uLnRoaXMuY29uZmlnRGF0YV07XHJcblxyXG4gICAgICAgICAgLy8gQnVpbGQgc2V0IG9mIGFzc2lnbmVkIGlkc1xyXG4gICAgICAgICAgY29uc3QgYXNzaWduZWRJZHMgPSBuZXcgU2V0KHRoaXMuY29uZmlnRGF0YS5tYXAoKHU6IGFueSkgPT4gdS5pZCkpO1xyXG5cclxuICAgICAgICAgIC8vIEZpbHRlciBmcm9tIGFsbFVzZXJzIChub3QgZnJvbSB1c2VyQ29uZmlnTGlzdCEpXHJcbiAgICAgICAgICB0aGlzLnVzZXJDb25maWdMaXN0ID0gdGhpcy5hbGxVc2Vycy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh1OiBhbnkpID0+ICFhc3NpZ25lZElkcy5oYXModS5pZClcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGVtYWlsIGNvbmdpZyBtZXRob2QgYW5kIHZhcmlhYmxlc1xyXG4gIGVtYWlsQ29uZmlnTGlzdDogYW55O1xyXG4gIGVkaXRNb2RlMSA9IHRydWU7XHJcbiAgdG9nZ2xlRWRpdDEoKSB7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5lbmFibGUoKTtcclxuICB9XHJcbiAgZ2V0RW1haWxDb25maWcoKSB7XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsQ29uZmlnTGlzdChcclxuICAgICAgICB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50ID8gdGhpcy5hdWRpdERhdGE/LmNsaWVudCA6IHRoaXMudXNlcnM/LmNsaWVudElkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5lbWFpbENvbmZpZ0xpc3QgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuXHJcbiAgICAgICAgICAvLyBTdXBwb3NlIGJhY2tlbmQgcmV0dXJucyBzb21ldGhpbmcgbGlrZTpcclxuICAgICAgICAgIC8vIHsgdGhyZXNob2xkOiBcIjEwXCIsIHBlcmNlbnRhZ2U6IFwiODBcIiB9XHJcbiAgICAgICAgICBjb25zdCBpbml0aWFsRGF0YSA9IHtcclxuICAgICAgICAgICAgdGhyZXNob2xkOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8uY29uZGl0aW9uLFxyXG4gICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLmVtYWlsQ29uZmlnTGlzdD8uY29tcGxpYW5jZVRocmVzaG9sZD8udmFsdWUsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIC8vIEZpbGwgcmVhY3RpdmUgZm9ybSB3aXRoIHZhbHVlc1xyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5wYXRjaFZhbHVlKGluaXRpYWxEYXRhKTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsYXN0U2F2ZWRDb21wbGlhbmNlOiBhbnk7XHJcbiAgc3VibWl0Q29tcGxpYW5jZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbXBsaWFuY2VGb3JtLmludmFsaWQpIHJldHVybjtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50LFxyXG4gICAgICBjb21wbGlhbmNlVGhyZXNob2xkOiB7XHJcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbXBsaWFuY2VGb3JtLnZhbHVlLnRocmVzaG9sZCxcclxuICAgICAgICB2YWx1ZTogdGhpcy5jb21wbGlhbmNlRm9ybS52YWx1ZS5wZXJjZW50YWdlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLnVwZGF0ZUVtYWlsQ29uZmlnKHRoaXMuZW1haWxDb25maWdMaXN0Py5faWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0U3VjY2Vzc1RvYXN0KFxyXG4gICAgICAgICAgICByZXM/Lm1lc3NhZ2VcclxuICAgICAgICAgICAgICA/IGBFbWFpbCBjb25maWd1cmF0aW9uYCArIHJlcz8ubWVzc2FnZVxyXG4gICAgICAgICAgICAgIDogXCJDb21wbGlhbmNlIHNldHRpbmdzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7IC8vIHVwZGF0ZSBiYXNlbGluZVxyXG4gICAgICAgICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKFwiVXBkYXRlIGZhaWxlZDpcIiwgZXJyKSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxDb21wbGlhbmNlKCkge1xyXG4gICAgdGhpcy5jb21wbGlhbmNlRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmVkaXRNb2RlMSA9IHRydWU7XHJcbiAgICB0aGlzLmdldEVtYWlsQ29uZmlnKCk7XHJcbiAgfVxyXG4gIC8vIFJNc1xyXG4gIFJtTGlzdDogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZFJtczogYW55W10gPSBbXTtcclxuICBzZWFyY2hSbVRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBDbHVzdGVyc1xyXG4gIENsdXN0ZXJMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGZpbHRlcmVkQ2x1c3RlcnM6IGFueVtdID0gW107XHJcbiAgc2VhcmNoQ2x1c3RlclRleHQgPSBcIlwiO1xyXG5cclxuICAvLyBEcm9wZG93bnNcclxuICBPcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICBkcm9wZG93bk9wZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyBPcGVuL2Nsb3NlIGRyb3Bkb3duXHJcbiAgb3BlbmRyb3Bkb3duKCkge1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSAhdGhpcy5PcGVuZHJvcGRvd247XHJcbiAgfVxyXG4gIGNsb3NlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IG51bGw7XHJcbiAgfVxyXG4gIHJtT3BlbiA9IGZhbHNlO1xyXG4gIGNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gIHRvZ2dsZVJtRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLnJtT3BlbiA9ICF0aGlzLnJtT3BlbjtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTsgLy8gY2xvc2Ugb3RoZXJcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNsdXN0ZXJEcm9wZG93bigpIHtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSAhdGhpcy5jbHVzdGVyT3BlbjtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7IC8vIGNsb3NlIG90aGVyXHJcbiAgfVxyXG5cclxuICBjbG9zZUFsbERyb3Bkb3ducygpIHtcclxuICAgIHRoaXMucm1PcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNsdXN0ZXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiogLS0tLSBSTXMgLS0tLSAqL1xyXG4gIGdldEFsbFJtKCkge1xyXG4gICAgdGhpcy4kYXBpLmdldFJtTGlzdCh0aGlzLmF1ZGl0RGF0YT8uY2xpZW50KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXM/LmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEFycmF5LmlzQXJyYXkocmVzLmRhdGEucmVzdWx0KVxyXG4gICAgICAgICAgPyByZXMuZGF0YS5yZXN1bHRcclxuICAgICAgICAgIDogW3Jlcy5kYXRhLnJlc3VsdF07XHJcbiAgICAgICAgdGhpcy5SbUxpc3QgPSByZXN1bHQubWFwKChybTogYW55KSA9PiAoeyAuLi5ybSwgY2hlY2tlZDogdHJ1ZSB9KSk7IC8vIOKchSBwcmUtc2VsZWN0IGFsbFxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRSbXMgPSBbLi4udGhpcy5SbUxpc3RdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0QWxsR3JvdXBzKHRoaXMuUm1MaXN0KTtcclxuICAgICAgdGhpcy5BcHBseSgpOyAvLyBmZXRjaCBjbHVzdGVycyBiYXNlZCBvbiBzZWxlY3RlZCBSTXNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyUm1zKCkge1xyXG4gICAgY29uc3Qgc2VhcmNoID0gdGhpcy5zZWFyY2hSbVRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIHRoaXMuZmlsdGVyZWRSbXMgPSB0aGlzLlJtTGlzdC5maWx0ZXIoKHIpID0+XHJcbiAgICAgIHIudXNlck5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxSbXNTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyZWRSbXMubGVuZ3RoID4gMCAmJiB0aGlzLmZpbHRlcmVkUm1zLmV2ZXJ5KChyKSA9PiByLmNoZWNrZWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsUm1zKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGNoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRSbXMuZm9yRWFjaCgocikgPT4gKHIuY2hlY2tlZCA9IGNoZWNrZWQpKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVNlbGVjdGVkUm1zKCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLlJtTGlzdC5maWx0ZXIoKHIpID0+IHIuY2hlY2tlZCk7XHJcbiAgICB0aGlzLmdldEFsbEdyb3VwcyhzZWxlY3RlZCk7IC8vIGF1dG8gcmVmcmVzaCBjbHVzdGVyc1xyXG4gIH1cclxuXHJcbnNlbGVjdGVkUm1zTGFiZWwoKTogc3RyaW5nIHtcclxuICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmlsdGVyZWRSbXMuZmlsdGVyKHJtID0+IHJtLmNoZWNrZWQpO1xyXG4gIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHJldHVybiAnJztcclxuICByZXR1cm4gc2VsZWN0ZWRbMF0udXNlck5hbWU7XHJcbn1cclxuZ2V0U2VsZWN0ZWRSbXNDb3VudCgpOiBudW1iZXIge1xyXG4gIHJldHVybiB0aGlzLmZpbHRlcmVkUm1zLmZpbHRlcihybSA9PiBybS5jaGVja2VkKS5sZW5ndGg7XHJcbn1cclxuICAvKiogLS0tLSBDbHVzdGVycyAtLS0tICovXHJcbmdldEFsbEdyb3VwcyhldmVudD86IGFueVtdKSB7XHJcbiAgbGV0IHJtTGlzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgIHJtTGlzdCA9IGV2ZW50Lm1hcCgobykgPT4gby5lbWFpbCk7XHJcbiAgfSBlbHNlIGlmICh0aGlzLnVzZXJzPy5yb2xlID09PSBcInJtXCIpIHtcclxuICAgIHJtTGlzdCA9IFt0aGlzLnVzZXJzPy5lbWFpbF07XHJcbiAgfVxyXG5cclxuICBjb25zdCBvYmogPSB7IFxyXG4gICAgY2xpZW50SWQ6IHRoaXMuYXVkaXREYXRhPy5jbGllbnQgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50IDogdGhpcy51c2Vycz8uY2xpZW50SWQsXHJcbiAgICBybUxpc3QgXHJcbiAgfTtcclxuXHJcbiAgdGhpcy4kYXBpLmdldENsdXN0ZXJzKG9iaikuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgaWYgKHJlcz8uY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgIC8vIEluaXRpYWxpemUgY2x1c3RlcnMgd2l0aCBjaGVja2VkPWZhbHNlXHJcbiAgICAgIHRoaXMuQ2x1c3Rlckxpc3QgPSAocmVzLmRhdGEucmVzdWx0IHx8IFtdKS5tYXAoKGM6IGFueSkgPT4gKHtcclxuICAgICAgICAuLi5jLFxyXG4gICAgICAgIGNoZWNrZWQ6IHRydWVcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ2x1c3RlcnMgPSBbLi4udGhpcy5DbHVzdGVyTGlzdF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkNsdXN0ZXJMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycyA9IFtdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5maWx0ZXJDbHVzdGVycygpIHtcclxuICBjb25zdCBzZWFyY2ggPSB0aGlzLnNlYXJjaENsdXN0ZXJUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzID0gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoKGMpID0+XHJcbiAgICBjLmNsdXN0ZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxyXG4gICk7XHJcbn1cclxuXHJcbmlzQWxsQ2x1c3RlcnNTZWxlY3RlZCgpIHtcclxuICByZXR1cm4gKFxyXG4gICAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmxlbmd0aCA+IDAgJiZcclxuICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycy5ldmVyeSgoYykgPT4gYy5jaGVja2VkKVxyXG4gICk7XHJcbn1cclxuXHJcbnRvZ2dsZVNlbGVjdEFsbENsdXN0ZXJzKGV2ZW50OiBhbnkpIHtcclxuICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgdGhpcy5maWx0ZXJlZENsdXN0ZXJzLmZvckVhY2goKGMpID0+IChjLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgdGhpcy51cGRhdGVTZWxlY3RlZENsdXN0ZXJzKCk7XHJcbn1cclxuXHJcbnVwZGF0ZVNlbGVjdGVkQ2x1c3RlcnMoKSB7XHJcbiAgdGhpcy5zZWxlY3RlZENsdXN0ZXJzID0gdGhpcy5DbHVzdGVyTGlzdFxyXG4gICAgLmZpbHRlcihjID0+IGMuY2hlY2tlZClcclxuICAgIC5tYXAoYyA9PiBjLl9pZCk7IC8vIG9yIGMuY2x1c3Rlck5hbWUgaWYgbmVlZGVkXHJcbn1cclxuXHJcbnNlbGVjdGVkQ2x1c3RlcnNMYWJlbCgpIHtcclxuICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuQ2x1c3Rlckxpc3QuZmlsdGVyKChjKSA9PiBjLmNoZWNrZWQpO1xyXG4gIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHJldHVybiAnJztcclxuICByZXR1cm4gc2VsZWN0ZWRbMF0uY2x1c3Rlck5hbWU7XHJcbn1cclxuXHJcbmdldFNlbGVjdGVkQ2x1c3RlcnNDb3VudCgpIHtcclxuICByZXR1cm4gdGhpcy5DbHVzdGVyTGlzdC5maWx0ZXIoYyA9PiBjLmNoZWNrZWQpLmxlbmd0aDtcclxuICAvLyByZXR1cm4gY291bnQgPiAxID8gY291bnQgLSAxIDogMDsgLy8gU2hvdyBcIitOIG90aGVyc1wiXHJcbn1cclxuXHJcbiAgLyoqIC0tLS0gQXBwbHkgLyBSZXNldCAtLS0tICovXHJcbiAgUmVzZXQoKSB7XHJcbiAgICB0aGlzLlJtTGlzdC5mb3JFYWNoKChyKSA9PiAoci5jaGVja2VkID0gZmFsc2UpKTtcclxuICAgIHRoaXMuQ2x1c3Rlckxpc3QuZm9yRWFjaCgoYykgPT4gKGMuY2hlY2tlZCA9IGZhbHNlKSk7XHJcbiAgICB0aGlzLmZpbHRlcmVkUm1zID0gWy4uLnRoaXMuUm1MaXN0XTtcclxuICAgIHRoaXMuZmlsdGVyZWRDbHVzdGVycyA9IFsuLi50aGlzLkNsdXN0ZXJMaXN0XTtcclxuICAgICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgfVxyXG4gIHNlbGVjdGVkUm1zOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZENsdXN0ZXJzOiBhbnkgPSBbXTtcclxuICBBcHBseSgpIHtcclxuICAgIGNvbnN0IGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKFwiZW4tVVNcIik7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm1zID0gdGhpcy5SbUxpc3QuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpLm1hcCgocikgPT4gci5lbWFpbCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2x1c3RlcnMgPSB0aGlzLkNsdXN0ZXJMaXN0LmZpbHRlcigoYykgPT4gYy5jaGVja2VkKS5tYXAoXHJcbiAgICAgIChjKSA9PiBjLmNsdXN0ZXJOYW1lXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRFbWFpbCgpO1xyXG4gICAgdGhpcy5ybU9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY2x1c3Rlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJTdGFydERhdGUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGFydERhdGUgPSBkYXRlUGlwZS50cmFuc2Zvcm0oXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTdGFydERhdGUsXHJcbiAgICAgICAgXCJ5eXl5LU1NLWRkXCJcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlckVuZERhdGUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJFbmREYXRlID0gZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZmlsdGVyRW5kRGF0ZSwgXCJ5eXl5LU1NLWRkXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvZmZzZXQgPSAxO1xyXG4gIGxpbWl0ID0gMTA7XHJcbnBhZ2VTaXplID0gMTA7ICAgICAgICAgICAgXHJcbnBhZ2luYXRpb25TaXplcyA9IFsxMCwyMCwzMF07IFxyXG50b3RhbEl0ZW1zID0gMDtcclxuICBzZXRQYWdpbmF0aW9uU2l6ZXMoKSB7XHJcbiAgICBpZiAodGhpcy50b3RhbEl0ZW1zID4gMTApIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbMTAsIDIwLCAzMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFt0aGlzLnRvdGFsSXRlbXNdOyAvLyBKdXN0IG9uZSBvcHRpb24gaWYgbGVzcyB0aGFuIDEwXHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU2l6ZXNbMF07XHJcbiAgfSBcclxuICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgbm9EYXRhID0gZmFsc2U7XHJcbiAgZ2V0RW1haWwoKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmZpbHRlclN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmZpbHRlckVuZERhdGUsXHJcbiAgICAgIHR5cGU6IHRoaXMuY3VycmVudEF1ZGl0VHlwZSxcclxuICAgICAgUk1MaXN0OiB0aGlzLnNlbGVjdGVkUm1zPy5sZW5ndGggPyB0aGlzLnNlbGVjdGVkUm1zIDogW10sXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgPyB0aGlzLmF1ZGl0RGF0YT8uY2xpZW50XHJcbiAgICAgICAgOiB0aGlzLnVzZXJzPy5jbGllbnRJZCxcclxuICAgICAgY2x1c3RlcjogdGhpcy5zZWxlY3RlZENsdXN0ZXJzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRDbHVzdGVyc1xyXG4gICAgICAgIDogW10sXHJcbiAgICAgIGlzRXhwb3J0OiBmYWxzZSxcclxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoVmFsdWUsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0ZWRDb2x1bW4gPyB0aGlzLnNvcnRlZENvbHVtbiA6IFwiUk1FbWFpbFwiLFxyXG4gICAgICBzb3J0T3JkZXI6IHRoaXMuc29ydE9yZGVyID8gdGhpcy5zb3J0T3JkZXIgOiAxLFxyXG4gICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxyXG4gICAgICBsaW1pdDogdGhpcy5saW1pdCxcclxuICAgIH07XHJcbiAgICB0aGlzLiRhcGlcclxuICAgICAgLmdldEVtYWlsTG9nKG9iailcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXM/LmRhdGE/LmNvdW50IHx8IDA7IFxyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5hdGlvblNpemVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMDtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJVcGRhdGUgZmFpbGVkOlwiLCBlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbm9uUGFnZUNoYW5nZShwYWdlOiBudW1iZXIpIHtcclxuICB0aGlzLm9mZnNldCA9IHBhZ2U7XHJcbiAgdGhpcy5nZXRFbWFpbCgpOyAvLyByZWxvYWQgd2l0aCBuZXcgcGFnZVxyXG59XHJcblxyXG5vblBhZ2VTaXplQ2hhbmdlKHNpemU6IG51bWJlcikge1xyXG4gIHRoaXMucGFnZVNpemUgPSBzaXplO1xyXG4gIHRoaXMubGltaXQgPSBzaXplO1xyXG4gIHRoaXMub2Zmc2V0ID0gMTsgICAvLyByZXNldCB0byBmaXJzdCBwYWdlIHdoZW4gcGFnZSBzaXplIGNoYW5nZXNcclxuICB0aGlzLmdldEVtYWlsKCk7XHJcbn1cclxuXHJcbiAgZXllVGVzdFZpZXcoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLiRhcGkuc2V0QXVkaXREYXRhKGRhdGEpO1xyXG4gICAgXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvbWFuYWdlL3RyYXgvYXVkaXQvc3RhcnRcIl0sIHtcclxuICAgICAgcXVlcnlQYXJhbXM6IHtcclxuICAgICAgICB0eXBlOiB0aGlzLmN1cnJlbnRBdWRpdFR5cGUsXHJcbiAgICAgICAgc3RvcmVJZDogZGF0YT8uc3RvcmVJZCxcclxuICAgICAgICBfaWQ6IGRhdGEuYXVkaXRlZElkLFxyXG4gICAgICAgIGV5ZVR5cGUgOmRhdGE/LmNvbW1lbnQgPyBcImZha2VcIiA6IFwiZ2VudWluZVwiLFxyXG4gICAgICAgIFJNRW1haWw6ZGF0YT8uUk1FbWFpbCxcclxuICAgICAgICBjbHVzdGVyOmRhdGE/LmNsdXN0ZXIsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhMTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gIGRhdGExLmRhdGUgPSB7XHJcbiAgc3RhcnREYXRlOiB0aGlzLmF1ZGl0RGV0YWlscz8uZmlsZURhdGUsXHJcbiAgZW5kRGF0ZTogdGhpcy5hdWRpdERldGFpbHM/LmZpbGVEYXRlXHJcbn07XHJcbiAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiLCBKU09OLnN0cmluZ2lmeShkYXRhMSkpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vICBAVmlld0NoaWxkKCdzYW5rZXlDaGFydCcsIHsgc3RhdGljOiB0cnVlIH0pIGNoYXJ0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8vICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIC8vICAgICBjb25zdCByYXdEYXRhID0gW1xyXG4gIC8vICAgICAgIHsgZnJvbTogXCJDdXN0b21pemF0aW9uXCIsIHRvOiBcIkZvcm1hbCBQYW50c1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDEyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMjkgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogMiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiA2NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDEwIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiA0OSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJKb2dnZXJzXCIsIHZhbHVlOiAyOSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA0OSB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJKb2dnZXJzXCIsIHRvOiBcIkN1c3RvbWl6YXRpb25cIiwgdmFsdWU6IDYgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB2YWx1ZTogNyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiU2hvcnRzIHdpdGggTG91bmdlIHdlYXIgLCBDaGlub3MgYW5kIFBpbnR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogNTQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUG93ZXIgU3RyZXRjaFwiLCB0bzogXCJUcmlhbCBSb29tXCIsIHZhbHVlOiAyIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkZvcm1hbCBQYW50c1wiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlRyaWFsIFJvb21cIiwgdmFsdWU6IDIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJFeGl0XCIsIHZhbHVlOiA2NCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJFbnRyeVwiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogNTQgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkpvZ2dlcnNcIiwgdG86IFwiUG93ZXIgU3RyZXRjaFwiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJGb3JtYWwgUGFudHNcIiwgdmFsdWU6IDMgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiUGluIFR1Y2sgUGFudHNcIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogMTEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIlBpbiBUdWNrIFBhbnRzXCIsIHZhbHVlOiAzIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiUGluIFR1Y2sgUGFudHNcIiwgdmFsdWU6IDEgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiQ3VzdG9taXphdGlvblwiLCB0bzogXCJQb3dlciBTdHJldGNoXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkN1c3RvbWl6YXRpb25cIiwgdG86IFwiSm9nZ2Vyc1wiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJGb3JtYWwgUGFudHNcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMTIgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiSm9nZ2Vyc1wiLCB0bzogXCJQaW4gVHVjayBQYW50c1wiLCB2YWx1ZTogNCB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJQb3dlciBTdHJldGNoXCIsIHRvOiBcIlNob3J0cyB3aXRoIExvdW5nZSB3ZWFyICwgQ2hpbm9zIGFuZCBQaW50dWNrIFBhbnRzXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiRXhpdFwiLCB2YWx1ZTogMTggfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRW50cnlcIiwgdG86IFwiVHJpYWwgUm9vbVwiLCB2YWx1ZTogNiB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiLCB0bzogXCJDdXN0b21pemF0aW9uXCIsIHZhbHVlOiA1IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIkVudHJ5XCIsIHRvOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdmFsdWU6IDE4IH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlBvd2VyIFN0cmV0Y2hcIiwgdG86IFwiRm9ybWFsIFBhbnRzXCIsIHZhbHVlOiAxIH0sXHJcbiAgLy8gICAgICAgeyBmcm9tOiBcIlRyaWFsIFJvb21cIiwgdG86IFwiQ3VzdG9taXphdGlvblwiLCB2YWx1ZTogMyB9LFxyXG4gIC8vICAgICAgIHsgZnJvbTogXCJUcmlhbCBSb29tXCIsIHRvOiBcIkV4aXRcIiwgdmFsdWU6IDYgfSxcclxuICAvLyAgICAgICB7IGZyb206IFwiRm9ybWFsIFBhbnRzXCIsIHRvOiBcIkpvZ2dlcnNcIiwgdmFsdWU6IDQgfVxyXG4gIC8vICAgICBdO1xyXG5cclxuICAvLyAgICAgLy8gQnVpbGQgdW5pcXVlIG5vZGVzXHJcbiAgLy8gICAgIGNvbnN0IGxhYmVscyA9IFsuLi5uZXcgU2V0KHJhd0RhdGEuZmxhdE1hcChkID0+IFtkLmZyb20sIGQudG9dKSldO1xyXG4gIC8vICAgICBjb25zdCBsYWJlbFRvSW5kZXg6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcclxuICAvLyAgICAgbGFiZWxzLmZvckVhY2goKGxhYmVsLCBpKSA9PiAobGFiZWxUb0luZGV4W2xhYmVsXSA9IGkpKTtcclxuXHJcbiAgLy8gICAgIC8vIE1hcCBkYXRhIGZvciBTYW5rZXlcclxuICAvLyAgICAgY29uc3Qgc291cmNlID0gcmF3RGF0YS5tYXAoZCA9PiBsYWJlbFRvSW5kZXhbZC5mcm9tXSk7XHJcbiAgLy8gICAgIGNvbnN0IHRhcmdldCA9IHJhd0RhdGEubWFwKGQgPT4gbGFiZWxUb0luZGV4W2QudG9dKTtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSByYXdEYXRhLm1hcChkID0+IGQudmFsdWUpO1xyXG5cclxuICAvLyAgICAgLy8gQXNzaWduIGNvbnNpc3RlbnQgY29sb3JzIChsaWtlIGFtQ2hhcnRzIGRpc3RpbmN0IHBhbGV0dGUpXHJcbiAgLy8gICAgIGNvbnN0IG5vZGVDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgLy8gICAgICAgXCJDdXN0b21pemF0aW9uXCI6IFwiIzFmNzdiNFwiLFxyXG4gIC8vICAgICAgIFwiRm9ybWFsIFBhbnRzXCI6IFwiI2ZmN2YwZVwiLFxyXG4gIC8vICAgICAgIFwiRW50cnlcIjogXCIjMmNhMDJjXCIsXHJcbiAgLy8gICAgICAgXCJQaW4gVHVjayBQYW50c1wiOiBcIiNkNjI3MjhcIixcclxuICAvLyAgICAgICBcIkpvZ2dlcnNcIjogXCIjOTQ2N2JkXCIsXHJcbiAgLy8gICAgICAgXCJQb3dlciBTdHJldGNoXCI6IFwiIzhjNTY0YlwiLFxyXG4gIC8vICAgICAgIFwiRXhpdFwiOiBcIiNlMzc3YzJcIixcclxuICAvLyAgICAgICBcIlRyaWFsIFJvb21cIjogXCIjMTdiZWNmXCIsXHJcbiAgLy8gICAgICAgXCJTaG9ydHMgd2l0aCBMb3VuZ2Ugd2VhciAsIENoaW5vcyBhbmQgUGludHVjayBQYW50c1wiOiBcIiNiY2JkMjJcIlxyXG4gIC8vICAgICB9O1xyXG5cclxuICAvLyAgICAgY29uc3Qgbm9kZUNvbG9yQXJyYXkgPSBsYWJlbHMubWFwKGwgPT4gbm9kZUNvbG9yc1tsXSB8fCBcIiM5OTlcIik7XHJcbiAgLy8gICAgIGNvbnN0IGxpbmtDb2xvckFycmF5ID0gcmF3RGF0YS5tYXAoZCA9PiBub2RlQ29sb3JzW2QuZnJvbV0gfHwgXCIjOTk5XCIpO1xyXG5cclxuICAvLyAgICAgY29uc3QgZGF0YTogYW55ID0gW3tcclxuICAvLyAgICAgICB0eXBlOiBcInNhbmtleVwiLFxyXG4gIC8vICAgICAgIG9yaWVudGF0aW9uOiBcImhcIixcclxuICAvLyAgICAgICBub2RlOiB7XHJcbiAgLy8gICAgICAgICBwYWQ6IDE1LFxyXG4gIC8vICAgICAgICAgdGhpY2tuZXNzOiAyMCxcclxuICAvLyAgICAgICAgIGxpbmU6IHsgY29sb3I6IFwiYmxhY2tcIiwgd2lkdGg6IDAuNSB9LFxyXG4gIC8vICAgICAgICAgbGFiZWw6IGxhYmVscyxcclxuICAvLyAgICAgICAgIGNvbG9yOiBub2RlQ29sb3JBcnJheVxyXG4gIC8vICAgICAgIH0sXHJcbiAgLy8gICAgICAgbGluazoge1xyXG4gIC8vICAgICAgICAgc291cmNlLFxyXG4gIC8vICAgICAgICAgdGFyZ2V0LFxyXG4gIC8vICAgICAgICAgdmFsdWUsXHJcbiAgLy8gICAgICAgICBjb2xvcjogbGlua0NvbG9yQXJyYXlcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1dO1xyXG5cclxuICAvLyAgICAgY29uc3QgbGF5b3V0ID0ge1xyXG4gIC8vICAgICAgIHRpdGxlOiB7IHRleHQ6IFwiU2Fua2V5IEZsb3cgKFBsb3RseSB3aXRoIEFtQ2hhcnRzLWxpa2UgQ29sb3JzKVwiIH0sXHJcbiAgLy8gICAgICAgZm9udDogeyBzaXplOiAxMiB9XHJcbiAgLy8gICAgIH07XHJcblxyXG4gIC8vICAgICBQbG90bHkubmV3UGxvdCh0aGlzLmNoYXJ0RWxlbWVudC5uYXRpdmVFbGVtZW50LCBkYXRhLCBsYXlvdXQpO1xyXG4gIC8vICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cclxuICAgIDxkaXYgKGNsaWNrKT1cImJhY2tOYXZpZ2F0aW9uKClcIiBjbGFzcz1cImJ0biBidG4tYW0gYnRuLW91dGxpbmUgcC0zXCI+XHJcbiAgICAgICAgPHNwYW4+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjgzMzIgOS45OTk4NEg0LjE2NjVNNC4xNjY1IDkuOTk5ODRMOS45OTk4NCAxNS44MzMyTTQuMTY2NSA5Ljk5OTg0TDkuOTk5ODQgNC4xNjY1XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgIDwvZGl2PjxzcGFuIGNsYXNzPVwibXMtMiB0aXRsZS1oZWFkXCI+QXVkaXQgU2V0dGluZ3M8L3NwYW4+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJyb3cgbXQtNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIiAoc2hvdyk9XCJvcGVuSXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBcIiAgbmdiQWNjb3JkaW9uSXRlbSBbY29sbGFwc2VkXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24gPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPlVzZXIgQ29uZmlndXJhdGlvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPGRpdiAgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVkaXRNb2RlXCIgY2xhc3M9XCIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVkaXQoKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBhbGlnbi1pdGVtcy1lbmRcIj48c3BhbiBjbGFzcz1cIm1lLTJcIj48c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzI1NzlfMjUxMjUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMjU3OV8yNTEyNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+ICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXktMiBmb3JtLWxhYmVsIGZzLTQgZnctYm9sZFwiPkFzc2lnbiBBdWRpdCBVc2VyczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZWRpdE1vZGU7IGVsc2UgcmVhZG9ubHlWaWV3XCI+XHJcbiAgPGxpYi1jaGlwLWRyb3Bkb3duXHJcbiAgICBbZGF0YV09XCJ1c2VyQ29uZmlnTGlzdFwiXHJcbiAgICBbc2VsZWN0ZWREYXRhXT1cImNvbmZpZ0RhdGFcIlxyXG4gICAgKHNlbGVjdGVkTGlzdCk9XCJ1cGRhdGVPd25lcigkZXZlbnQpXCI+XHJcbiAgPC9saWItY2hpcC1kcm9wZG93bj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3JlYWRvbmx5Vmlldz5cclxuPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCBwLTMgcm91bmRlZFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaXAgb2YgY29uZmlnRGF0YVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJwLTEgcm91bmRlZC01IGNoaXAgcHgtMiBteS0zIHB5LTEgYmctZ3JheS0yMDBcIj5cclxuICAgICAge3sgY2hpcD8ubmFtZSB8fCBjaGlwIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyB0ZXh0LWVuZFwiICpuZ0lmPVwiZWRpdE1vZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgbWUtMlwiIChjbGljayk9XCJjYW5jZWxFZGl0KClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdE93bmVycygpXCI+U2F2ZTwvYnV0dG9uPlxyXG48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtYWNjb3JkaWFuLWNhcmQgbXQtNlwiIG5nYkFjY29yZGlvbkl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtYWluaGVhZGluZ1wiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkVtYWlsIENvbmZpZ3VyYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVkaXRNb2RlMVwiIGNsYXNzPVwiIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZUVkaXQxKCk7XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGFsaWduLWl0ZW1zLWVuZFwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjU3OV8yNTEyNSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNC4xNjcgMi40OTk5M0MxNC4zODU5IDIuMjgxMDYgMTQuNjQ1NyAyLjEwNzQ0IDE0LjkzMTcgMS45ODg5OUMxNS4yMTc2IDEuODcwNTQgMTUuNTI0MSAxLjgwOTU3IDE1LjgzMzcgMS44MDk1N0MxNi4xNDMyIDEuODA5NTcgMTYuNDQ5NyAxLjg3MDU0IDE2LjczNTcgMS45ODg5OUMxNy4wMjE2IDIuMTA3NDQgMTcuMjgxNSAyLjI4MTA2IDE3LjUwMDMgMi40OTk5M0MxNy43MTkyIDIuNzE4OCAxNy44OTI4IDIuOTc4NjMgMTguMDExMyAzLjI2NDZDMTguMTI5NyAzLjU1MDU3IDE4LjE5MDcgMy44NTcwNiAxOC4xOTA3IDQuMTY2NTlDMTguMTkwNyA0LjQ3NjEyIDE4LjEyOTcgNC43ODI2MiAxOC4wMTEzIDUuMDY4NTlDMTcuODkyOCA1LjM1NDU1IDE3LjcxOTIgNS42MTQzOSAxNy41MDAzIDUuODMzMjZMNi4yNTAzMyAxNy4wODMzTDEuNjY2OTkgMTguMzMzM0wyLjkxNjk5IDEzLjc0OTlMMTQuMTY3IDIuNDk5OTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzI1NzlfMjUxMjVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5FZGl0IERldGFpbHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wbGlhbmNlIFRocmVzaG9sZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNvbXBsaWFuY2VGb3JtXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0aHJlc2hvbGRcIiBbZGF0YV09XCJjb21wbGlhbmNlVGhyZXNob2xkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGVyY2VudGFnZVwiIFtkYXRhXT1cImNvbXBsaWFuY2VQZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWVkaXRNb2RlMVwiIGNsYXNzPVwibXQtMyB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBtZS0yXCIgKGNsaWNrKT1cImNhbmNlbENvbXBsaWFuY2UoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBcIiAoY2xpY2spPVwic3VibWl0Q29tcGxpYW5jZSgpXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkIG1lLTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzc2Ml8xNTQzMClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMDQgMTAuNjY2M1Y3Ljk5OTY3TTguMDAwMDQgNS4zMzMwMUg4LjAwNjcxTTE0LjY2NjcgNy45OTk2N0MxNC42NjY3IDExLjY4MTYgMTEuNjgxOSAxNC42NjYzIDguMDAwMDQgMTQuNjY2M0M0LjMxODE0IDE0LjY2NjMgMS4zMzMzNyAxMS42ODE2IDEuMzMzMzcgNy45OTk2N0MxLjMzMzM3IDQuMzE3NzggNC4zMTgxNCAxLjMzMzAxIDguMDAwMDQgMS4zMzMwMUMxMS42ODE5IDEuMzMzMDEgMTQuNjY2NyA0LjMxNzc4IDE0LjY2NjcgNy45OTk2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF83NjJfMTU0MzBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNlbnQgaWYgdGhlIGNvbXBsaWFuY2UgZG9lc27igJl0IG1lZXQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1ib2xkXCI+e3tjb21wbGlhbmNlRm9ybS52YWx1ZT8ucGVyY2VudGFnZX19PC9zcGFuPiB0byB0aGUgZ2l2ZW4gRW1haWwgSURzIGFib3ZlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1hY2NvcmRpYW4tY2FyZCBtdC02XCIgbmdiQWNjb3JkaW9uSXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gPkVtYWlsIExvZ3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMTBcIj5cclxuIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaERhdGEoKVwiIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmeC1kYXRlLXJhbmdlIGZvcm0tY29udHJvbCBwcy0xNFwiIHN0eWxlPVwibWluLXdpZHRoOiAyNjBweCAhaW1wb3J0YW50O1wiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgbmd4RGF0ZXJhbmdlcGlja2VyTWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wc109XCInZG93bidcIiBbb3BlbnNdPVwiJ3JpZ2h0J1wiIFtyYW5nZXNdPVwicmFuZ2VzXCIgW3Nob3dDdXN0b21SYW5nZUxhYmVsXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Fsd2F5c1Nob3dDYWxlbmRhcnNdPVwiZmFsc2VcIiBba2VlcENhbGVuZGFyT3BlbmluZ1dpdGhSYW5nZV09XCJ0cnVlXCIgW3Nob3dDYW5jZWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVJhbmdlXCIgW2F1dG9BcHBseV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwieyBmb3JtYXQ6ICdERC1NTS1ZWVlZJywgZmlyc3REYXk6IDEsIG1vbnRoTmFtZXM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVzVXBkYXRlZCk9XCJkYXRlY2hhbmdlKCRldmVudClcIiBuYW1lPVwiZGF0ZXJhbmdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xIHBvc2l0aW9uLWFic29sdXRlIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMyAxLjY2NjYzVjQuOTk5OTZNNi42NjY2NyAxLjY2NjYzVjQuOTk5OTZNMi41IDguMzMzMjlIMTcuNU00LjE2NjY3IDMuMzMzMjlIMTUuODMzM0MxNi43NTM4IDMuMzMzMjkgMTcuNSA0LjA3OTQ4IDE3LjUgNC45OTk5NlYxNi42NjY2QzE3LjUgMTcuNTg3MSAxNi43NTM4IDE4LjMzMzMgMTUuODMzMyAxOC4zMzMzSDQuMTY2NjdDMy4yNDYxOSAxOC4zMzMzIDIuNSAxNy41ODcxIDIuNSAxNi42NjY2VjQuOTk5OTZDMi41IDQuMDc5NDggMy4yNDYxOSAzLjMzMzI5IDQuMTY2NjcgMy4zMzMyOVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlbmRyb3Bkb3duKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBteC0yIHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+XHJcbiAgIDxzcGFuIGNsYXNzPVwibWUtMlwiPkZpbHRlcjwvc3Bhbj4gPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgPHBhdGggZD1cIk01IDEwSDE1TTIuNSA1SDE3LjVNNy41IDE1SDEyLjVcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgIDwvc3ZnPiBcclxuICA8L2J1dHRvbj5cclxuXHJcblxyXG4gIDxkaXYgKm5nSWY9XCJPcGVuZHJvcGRvd25cIiBjbGFzcz1cImNhcmQgcC00IGRyb3Bkb3duMiBwb3NpdGlvbi1hYnNvbHV0ZSB6LTEgZW5kLTBcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlRHJvcGRvd24oKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXRpdGxlIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtYi0zXCI+XHJcbiAgICAgIDxzcGFuPkZpbHRlciBPcHRpb25zPC9zcGFuPlxyXG4gICAgICBcclxuICAgIDwvZGl2PlxyXG5cclxuICBcclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250YWluZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZHJvcGRvd24taGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZVJtRHJvcGRvd24oKVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgIHZhbHVlPVwiUk1zXCIgcmVhZG9ubHkgcGxhY2Vob2xkZXI9XCJTZWxlY3QgUk1zXCIgLz5cclxuICAgICAgICAgICA8c3BhbiBcclxuICAgICAgKm5nSWY9XCJnZXRTZWxlY3RlZFJtc0NvdW50KClcIiBcclxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IG1lLTIgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB0ZXh0LXdoaXRlIHRleHQteHMgcm91bmRlZC1mdWxsIHB4LTIgcHktMC41XCI+XHJcbiAgICAgIHt7IGdldFNlbGVjdGVkUm1zQ291bnQoKSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudSBjdXN0b20tZHJvcGRvd24tbWVudVwiICpuZ0lmPVwicm1PcGVuXCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbWItMiBkcm9wZG93bi1zZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBSTXNcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hSbVRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJmaWx0ZXJSbXMoKVwiIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHBzLTAgbXktNVwiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwic2VsZWN0QWxsUm1zXCIgW2NoZWNrZWRdPVwiaXNBbGxSbXNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGxSbXMoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsUm1zXCI+U2VsZWN0IEFsbDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTUgcHMtMFwiICpuZ0Zvcj1cImxldCBybSBvZiBmaWx0ZXJlZFJtc1wiPlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFtpZF09XCJybS5lbWFpbFwiIFsobmdNb2RlbCldPVwicm0uY2hlY2tlZFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRSbXMoKVwiIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJybS5lbWFpbFwiPnt7IHJtLnVzZXJOYW1lIH19PC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgXHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXIgcG9zaXRpb24tcmVsYXRpdmVcIiAoY2xpY2spPVwidG9nZ2xlQ2x1c3RlckRyb3Bkb3duKClcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGRyb3Bkb3duLWlucHV0IGN1cnNvci1wb2ludGVyIHBlLTVcIlxyXG4gICAgICB2YWx1ZT1cIkNsdXN0ZXJzXCJcclxuICAgICAgcmVhZG9ubHlcclxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQ2x1c3RlcnNcIiAvPlxyXG5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cImdldFNlbGVjdGVkQ2x1c3RlcnNDb3VudCgpXCJcclxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgZW5kLTAgdHJhbnNsYXRlLW1pZGRsZS15IG1lLTIgYmFkZ2UgYmFkZ2UgYmFkZ2UtbGlnaHQtZGVmYXVsdCB0ZXh0LXdoaXRlIHJvdW5kZWQtcGlsbCBweC0yIHB5LTBcIj5cclxuICAgICAge3sgZ2V0U2VsZWN0ZWRDbHVzdGVyc0NvdW50KCkgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgY3VzdG9tLWRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cImNsdXN0ZXJPcGVuXCI+XHJcbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBtYi0yIGRyb3Bkb3duLXNlYXJjaFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGNsdXN0ZXJzXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hDbHVzdGVyVGV4dFwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImZpbHRlckNsdXN0ZXJzKClcIiAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIHBzLTAgbXktNVwiPlxyXG4gICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgIGlkPVwic2VsZWN0QWxsQ2x1c3RlcnNcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImlzQWxsQ2x1c3RlcnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbENsdXN0ZXJzKCRldmVudClcIiAvPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsQ2x1c3RlcnNcIj5TZWxlY3QgQWxsPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTUgcHMtMFwiICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIGZpbHRlcmVkQ2x1c3RlcnNcIj5cclxuICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBbaWRdPVwiY2x1c3Rlci5faWRcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY2x1c3Rlci5jaGVja2VkXCJcclxuICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkQ2x1c3RlcnMoKVwiIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cImNsdXN0ZXIuX2lkXCI+e3sgY2x1c3Rlci5jbHVzdGVyTmFtZSB9fTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBidG4tc20gdy01MFwiIChjbGljayk9XCJSZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSB3LTUwXCIgKGNsaWNrKT1cIkFwcGx5KClcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBcclxuPC9kaXY+XHJcblxyXG4gICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydFhMU1goKVwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiPjxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU0xNC4xNjY3IDYuNjY2NjdMMTAgMi41TTEwIDIuNUw1LjgzMzMzIDYuNjY2NjdNMTAgMi41VjEyLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5FeHBvcnQ8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YS10YWJsZVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgZXllIHRlc3QgdGFibGU8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhICYmICFsb2FkaW5nXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJsZXNzIHRhYmxlLWhvdmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPiA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgncm1OYW1lJylcIj4gUk0gTmFtZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICdybU5hbWUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAncm1OYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXBcIj48c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnY2x1c3Rlck5hbWUnKVwiPiBDbHVzdGVyIE5hbWUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3Rlck5hbWUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnY2x1c3Rlck5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgnb3B0dW1JZCcpXCI+IE9wdHVtIElEIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ29wdHVtSWQnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAnb3B0dW1JZCcgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+PHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlTmFtZScpXCI+IFN0b3JlIE5hbWUgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3RhbmdvU2NvcmUnKVwiPiBUYW5nbyBTY29yZSA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0ZWRDb2x1bW4gPT09ICd0YW5nb1Njb3JlJyAmJiBzb3J0T3JkZXIgPT09IDEgPyAncm90YXRlJyA6ICcnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RhbmdvU2NvcmUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uU29ydCgndHJ1c3RTY29yZScpXCI+IFRydXN0IFNjb3JlIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3RydXN0U2NvcmUnICYmIHNvcnRPcmRlciA9PT0gMSA/ICdyb3RhdGUnIDogJydcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydGVkQ29sdW1uID09PSAndHJ1c3RTY29yZScgPyAnIzAwQTNGRicgOiAnIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtbm93cmFwXCI+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0uUk1FbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+e3tpdGVtLmNsdXN0ZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiPnt7aXRlbS5vcHR1bUlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0uc3RvcmVOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0udGFuZ29TY29yZSA/PyBcIi0tXCIgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1ub3dyYXBcIj57e2l0ZW0udHJ1c3RTY29yZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFpdGVtLmF1ZGl0ZWRJZFwiIChjbGljayk9XCJleWVUZXN0VmlldyhpdGVtKVwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBtLTAgYm9yZGVyLTAgYmctdHJhbnNwYXJlbnRcIj5cclxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgIDxwYXRoIGQ9XCJNMC44MzMyNTIgOS45OTk2N0MwLjgzMzI1MiA5Ljk5OTY3IDQuMTY2NTggMy4zMzMwMSA5Ljk5OTkyIDMuMzMzMDFDMTUuODMzMyAzLjMzMzAxIDE5LjE2NjYgOS45OTk2NyAxOS4xNjY2IDkuOTk5NjdDMTkuMTY2NiA5Ljk5OTY3IDE1LjgzMzMgMTYuNjY2MyA5Ljk5OTkyIDE2LjY2NjNDNC4xNjY1OCAxNi42NjYzIDAuODMzMjUyIDkuOTk5NjcgMC44MzMyNTIgOS45OTk2N1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgIDxwYXRoIGQ9XCJNOS45OTk5MiAxMi40OTk3QzExLjM4MDYgMTIuNDk5NyAxMi40OTk5IDExLjM4MDQgMTIuNDk5OSA5Ljk5OTY3QzEyLjQ5OTkgOC42MTg5NiAxMS4zODA2IDcuNDk5NjcgOS45OTk5MiA3LjQ5OTY3QzguNjE5MjEgNy40OTk2NyA3LjQ5OTkyIDguNjE4OTYgNy40OTk5MiA5Ljk5OTY3QzcuNDk5OTIgMTEuMzgwNCA4LjYxOTIxIDEyLjQ5OTcgOS45OTk5MiAxMi40OTk3WlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gIDwvc3ZnPlxyXG48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXJcIiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwicGFnZVNpemVcIiBbY3VycmVudFBhZ2VdPVwib2Zmc2V0XCIgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuIl19
|