tango-app-ui-analyse-traffic 3.3.1-beta.2 → 3.3.1-beta.3
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/image-doc/image-doc.component.mjs +29 -24
- package/esm2022/lib/components/traffic-analysis/traffic-analysis.component.mjs +3 -1
- package/esm2022/lib/components/traffic-card-charts/traffic-card-charts.component.mjs +29 -25
- package/esm2022/lib/components/traffic-charts/traffic-charts.component.mjs +43 -36
- package/fesm2022/tango-app-ui-analyse-traffic.mjs +100 -82
- package/fesm2022/tango-app-ui-analyse-traffic.mjs.map +1 -1
- package/lib/components/image-doc/image-doc.component.d.ts +1 -0
- package/lib/components/traffic-card-charts/traffic-card-charts.component.d.ts +1 -0
- package/lib/components/traffic-charts/traffic-charts.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -53,30 +53,35 @@ export class ImageDocComponent {
|
|
|
53
53
|
else {
|
|
54
54
|
this.valueType = 'actual';
|
|
55
55
|
}
|
|
56
|
-
this.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
56
|
+
if (this.objData) {
|
|
57
|
+
this.objData = {
|
|
58
|
+
storeId: this.headerData?.stores
|
|
59
|
+
.filter((store) => store.checked)
|
|
60
|
+
.map((store) => store.storeId),
|
|
61
|
+
clientId: this.headerData?.client,
|
|
62
|
+
processType: this.processType,
|
|
63
|
+
footfallDate: this.headerData.date.endDate,
|
|
64
|
+
valueType: this.valueType
|
|
65
|
+
};
|
|
66
|
+
this.backToFootfall();
|
|
67
|
+
this.displayDateRange();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
this.getInital();
|
|
71
|
+
}
|
|
72
|
+
getInital() {
|
|
73
|
+
this.gs.dataRangeValue
|
|
74
|
+
.pipe(takeUntil(this.destroy$), debounceTime(300))
|
|
75
|
+
.subscribe((data) => {
|
|
76
|
+
if (data !== null || data?.client !== null) {
|
|
77
|
+
this.headerData = data;
|
|
78
|
+
this.storeIdarray = this.headerData?.stores.filter((store) => store.checked).map((store) => store.storeId);
|
|
79
|
+
const initialValue = this.getInitialValue();
|
|
80
|
+
const selectControl = this.form.get('selectValue');
|
|
81
|
+
if (selectControl) {
|
|
82
|
+
selectControl.setValue(initialValue);
|
|
78
83
|
}
|
|
79
|
-
}
|
|
84
|
+
}
|
|
80
85
|
});
|
|
81
86
|
}
|
|
82
87
|
destroy$ = new Subject();
|
|
@@ -219,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
219
224
|
type: Component,
|
|
220
225
|
args: [{ selector: "lib-image-doc", template: "<div class=\"card mt-3\">\r\n <div class=\"card-header my-3 px-0\">\r\n <div class=\"col-md-12\">\r\n <div class=\"switch-form-card\">\r\n <div class=\"d-flex align-items-center\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#DAF1FF\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#EAF8FF\" stroke-width=\"6\" />\r\n <path d=\"M23.8333 14.6666L15.5 24.6666H23L22.1667 31.3333L30.5 21.3333H23L23.8333 14.6666Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <div class=\"txt-one ms-2\">\r\n <ng-container>Examine individual footfall in gallery view with optimal sample images for detailed analysis.</ng-container>\r\n <!-- <ng-container *ngIf=\"isMultiple\">Upload multiple stores for configuration</ng-container> -->\r\n </div>\r\n </div>\r\n <div>\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n d=\"M18.295 7.115C18.6844 6.72564 18.6844 6.09436 18.295 5.705C17.9056 5.31564 17.2744 5.31564 16.885 5.705L12 10.59L7.115 5.705C6.72564 5.31564 6.09436 5.31564 5.705 5.705C5.31564 6.09436 5.31564 6.72564 5.705 7.115L10.59 12L5.705 16.885C5.31564 17.2744 5.31564 17.9056 5.705 18.295C6.09436 18.6844 6.72564 18.6844 7.115 18.295L12 13.41L16.885 18.295C17.2744 18.6844 17.9056 18.6844 18.295 18.295C18.6844 17.9056 18.6844 17.2744 18.295 16.885L13.41 12L18.295 7.115Z\"\r\n fill=\"black\" />\r\n </svg> -->\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"folderView\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-md-1 mt-5 text-center\" *ngFor=\"let obj of dateArray;let i = index\">\r\n <div (click)=\"getimages(i,obj)\">\r\n <div *ngIf=\"i === selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.154297\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#33B5FF\" />\r\n <path\r\n d=\"M39.8216 36.1667C39.8216 36.7855 39.5758 37.379 39.1382 37.8166C38.7006 38.2542 38.1071 38.5 37.4883 38.5H18.8216C18.2028 38.5 17.6093 38.2542 17.1717 37.8166C16.7341 37.379 16.4883 36.7855 16.4883 36.1667V19.8333C16.4883 19.2145 16.7341 18.621 17.1717 18.1834C17.6093 17.7458 18.2028 17.5 18.8216 17.5H24.6549L26.9883 21H37.4883C38.1071 21 38.7006 21.2458 39.1382 21.6834C39.5758 22.121 39.8216 22.7145 39.8216 23.3333V36.1667Z\"\r\n stroke=\"white\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n <div *ngIf=\"i !== selectIndex;\">\r\n <span class=\"cursor-pointer\"><svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"0.462891\" width=\"56\" height=\"56\" rx=\"12\" fill=\"#EAF8FF\" />\r\n <path\r\n d=\"M40.1302 36.1667C40.1302 36.7855 39.8844 37.379 39.4468 37.8166C39.0092 38.2542 38.4157 38.5 37.7969 38.5H19.1302C18.5114 38.5 17.9179 38.2542 17.4803 37.8166C17.0427 37.379 16.7969 36.7855 16.7969 36.1667V19.8333C16.7969 19.2145 17.0427 18.621 17.4803 18.1834C17.9179 17.7458 18.5114 17.5 19.1302 17.5H24.9635L27.2969 21H37.7969C38.4157 21 39.0092 21.2458 39.4468 21.6834C39.8844 22.121 40.1302 22.7145 40.1302 23.3333V36.1667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <div class=\"text-center mt-2\">{{obj | date:'dd MMM'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n </div>\r\n <div *ngIf=\"!folderView\" class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"d-flex flex-shrink-0 mt-3 justify-content-between align-items-center\">\r\n <span class=\"cursor-pointer\" (click)=\"backToFootfall()\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_2585_7036)\">\r\n <rect x=\"2\" y=\"1\" width=\"36\" height=\"36\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"35\" height=\"35\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M25.8327 19H14.166M14.166 19L19.9993 24.8334M14.166 19L19.9993 13.1667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_2585_7036\" x=\"0\" y=\"0\" width=\"40\" height=\"40\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2585_7036\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_2585_7036\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg>\r\n </span>\r\n <div class=\"ms-auto text-end\">\r\n <form [formGroup]=\"form\">\r\n <lib-reactive-select \r\n [formControl]=\"selectControl\" \r\n [idField]=\"'value'\"\r\n [nameField]=\"'label'\"\r\n [data]=\"datasets\"\r\n class=\"w-100 text-start\"\r\n (valueChange)=\"onValueChange($event)\">\r\n </lib-reactive-select>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mt-2 mb-2 w-100 overflow-x\">\r\n <div class=\"col text-nowrap\" *ngFor=\"let obj of objectsArray\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\">\r\n <a (click)=\"selectedTimes(obj.folderName)\"\r\n [ngClass]=\"selectedTime === obj?.folderName ? 'active' : ''\" class=\"nav-link cursor-pointer no-border mx-3 mb-2\">\r\n {{obj?.folderName}}<span class=\"mx-2 \" [ngClass]=\"selectedTime === obj?.folderName ? 'badge-num-primary' :'badge-num-muted'\">{{obj?.count?obj?.count:0}}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\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\" 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 image directory</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row px-0 img-traffic contain\" *ngIf=\"!noData && !loading\">\r\n <div class=\"col-md-3 border-gray mx-2 p-2 mt-5\" *ngFor=\"let obj of imagesArrayData\">\r\n <img *ngIf=\"obj.images.entryTimeImage\" class=\"img-src cursor-pointer\" [src]=\"obj.images.entryTimeImage\" (error)=\"obj?.images.entryTimeImage = null\" alt=\"\" (click)=\"imageView(obj,objData.footfallDate)\">\r\n <div *ngIf=\"!obj.images.entryTimeImage\" class=\"no-preview\">\r\n <span class=\"mb-5\">\r\n <svg width=\"23\" height=\"20\" viewBox=\"0 0 23 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"Group\">\r\n <path id=\"Vector\"\r\n d=\"M6.5 6.32227H6.51M16.25 9.32227H21.5L18 16.3223L14.91 12.0023\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path id=\"Vector_2\"\r\n d=\"M1.5 16.3229H5.26C5.63273 16.3255 5.99877 16.2239 6.31682 16.0295C6.63487 15.8352 6.89228 15.5558 7.06 15.2229L8.5 12.3229M1.5 18.3229V14.3229M17.5 6.82291L13.5 14.8229L3.11 9.62291C2.42033 9.27553 1.89635 8.6691 1.65272 7.93632C1.40909 7.20354 1.46564 6.4041 1.81 5.71291L3.19 2.92291C3.362 2.58014 3.59984 2.2746 3.88994 2.02375C4.18003 1.7729 4.5167 1.58165 4.88072 1.46093C5.24474 1.34021 5.62897 1.29239 6.01147 1.32018C6.39398 1.34797 6.76726 1.45084 7.11 1.62291L17.5 6.82291Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n <span class=\"header mb-5 text-center\">Preview not available</span>\r\n <span class=\"description mb-5 text-center\">The selected camera is not available at the\r\n moment.</span>\r\n </div>\r\n <div class=\"row px-2 mb-2\">\r\n <div class=\"col-md-8\">\r\n <div class=\"py-2 img-doc-directory\">{{obj.tempId}} <span class=\"badge badge-light-success ms-2\">{{selectControl.value | titlecase}}</span></div>\r\n <div class=\"py-2 img-doc-time\">Entry Time</div>\r\n <div class=\"py-2 img-doc-time\">Exit Time</div>\r\n <div class=\"py-2 img-doc-time\">Total Time Spent</div>\r\n </div>\r\n <div class=\"col-md-4 text-end\" >\r\n <div class=\"py-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1841_143300)\">\r\n <path d=\"M14.1986 5.33333V14H2.19857V5.33333M6.86523 8H9.5319M0.865234 2H15.5319V5.33333H0.865234V2Z\" stroke=\"#101828\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1841_143300\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0.199219)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"py-2 img-doc-value\">{{obj.timeSpent.entryTime}} </div>\r\n <div class=\"py-2 img-doc-value\">{{obj.timeSpent.exitTime}}</div>\r\n <div class=\"py-2 img-doc-value\">{{obj.timeSpent.totalTimeSpent}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".switch-form-card{padding:8px 16px;border-radius:4px;border-left:2px solid var(--Primary-600, #00A3FF);background:var(--Primary-25, #F6FCFF);display:flex;align-items:center;justify-content:space-between}.switch-form-card .txt-one{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;line-height:140%}.nav-item .nav-link.active{border:none;border-radius:6px;background:var(--Primary-50, #EAF8FF);padding:8px 12px}.nav-item .nav-link:hover{border:none}.badge-num-primary{border-radius:16px!important;background:var(--Primary-50, #EAF8FF)!important;color:var(--Primary-700, #009BF3)!important;text-align:center;font-size:14px!important;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.badge-num-muted{border-radius:16px!important;background:var(--Primary-50, #F2F4F7)!important;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:2px 10px!important;mix-blend-mode:multiply!important}.img-src{width:100%;height:210px;border-radius:.625rem}.img-traffic .col-md-3{width:24%!important}.border-gray{border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF)}.img-doc-directory{color:var(--Gray-900, #101828)!important;font-size:14px!important;font-weight:600;line-height:20px;text-decoration-line:underline}.img-doc-time{color:var(--Gray-500, #667085);font-size:12px;font-style:normal;font-weight:400;line-height:18px}.img-doc-value{color:var(--Gray-600, #475467);font-size:14px;font-style:normal;font-weight:600;line-height:20px}.overflow-x{overflow-x:auto}.no-preview{border:1px solid #F04438;background:#fee4e2;border-radius:8px;stroke-width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:41px 16px}.no-preview .header{color:#f04438;font-size:20px;font-weight:700;line-height:20px}.no-preview .description{color:#f04438;font-size:12px;font-weight:500;line-height:18px}.img-nodata{width:25%;height:15%}.nodata-title{font-size:14px!important;font-weight:600}\n"] }]
|
|
221
226
|
}], ctorParameters: () => [{ type: i1.TrafficService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.FormBuilder }] });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZG9jLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJhZmZpYy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtZG9jL2ltYWdlLWRvYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlLWRvYy9pbWFnZS1kb2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU0xRCxNQUFNLE9BQU8saUJBQWlCO0lBbUJsQjtJQUNEO0lBQ0M7SUFDQTtJQUErQjtJQXJCekMsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixZQUFZLENBQU07SUFDbEIsT0FBTyxDQUFNO0lBQ2IsWUFBWSxDQUFNO0lBQ2xCLGVBQWUsQ0FBTTtJQUNyQixXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLFVBQVUsQ0FBTTtJQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxTQUFTLENBQVc7SUFDcEIsSUFBSSxDQUFNO0lBQ1YsTUFBTSxHQUFXLEtBQUssQ0FBQztJQUN2QixPQUFPLEdBQVUsSUFBSSxDQUFDO0lBQ3RCLGVBQWUsQ0FBTTtJ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IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYWZmaWNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhZmZpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW1hZ2VEb2NWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vaW1hZ2UtZG9jLXZpZXcvaW1hZ2UtZG9jLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWltYWdlLWRvY1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW1hZ2UtZG9jLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9pbWFnZS1kb2MuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEltYWdlRG9jQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHNlbGVjdEluZGV4OiBhbnkgPSAwO1xyXG4gIHNlbGVjdGVkVGltZTogYW55O1xyXG4gIG9iakRhdGE6IGFueTtcclxuICBvYmplY3RzQXJyYXk6IGFueTtcclxuICBpbWFnZXNBcnJheURhdGE6IGFueTtcclxuICBwcm9jZXNzVHlwZSA9IFwiZm9vdGZhbGxcIjtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcbiAgZm9sZGVyVmlldyA9IHRydWU7XHJcbiAgZGF5anMgPSBkYXlqcztcclxuICBkYXRlQXJyYXk6IHN0cmluZ1tdO1xyXG4gIGZvcm06IGFueTtcclxuICBub0RhdGE6IGJvb2xlYW4gPWZhbHNlO1xyXG4gIGxvYWRpbmc6Ym9vbGVhbiA9dHJ1ZTtcclxuICBzdG9yZUFycmF5VmFsdWU6IGFueTtcclxuICBzdG9yZUlkYXJyYXk6IGFueTtcclxuICB2YWx1ZVR5cGU6IGFueT0nYWN0dWFsJztcclxuICBpc0F2ZXJhZ2U6IGFueSA9ZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFRyYWZmaWNTZXJ2aWNlLFxyXG4gICAgcHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxyXG4gICkge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHNlbGVjdFZhbHVlOiBuZXcgRm9ybUNvbnRyb2woJycpIC8vIEluaXRpYWxpemUgYXMgRm9ybUNvbnRyb2xcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UuaXNBdmVyYWdlJC5zdWJzY3JpYmUoKGlzQXZlcmFnZTphbnkpID0+IHtcclxuICAgICAgdGhpcy5pc0F2ZXJhZ2UgPSBpc0F2ZXJhZ2U7XHJcbiAgICAgIGlmKHRoaXMuaXNBdmVyYWdlID09PSB0cnVlKXtcclxuICAgICAgICB0aGlzLnZhbHVlVHlwZSA9ICdhdmVyYWdlJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZhbHVlVHlwZSA9J2FjdHVhbCc7XHJcbiAgICAgIH1cclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMzAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYoZGF0YSAhPT1udWxsIHx8IGRhdGE/LmNsaWVudCAhPT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLnN0b3JlSWRhcnJheSA9IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZClcclxuICAgICAgICB0aGlzLm9iakRhdGEgPSB7XHJcbiAgICAgICAgICBzdG9yZUlkOiBkYXRhLnN0b3Jlc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChzdG9yZTogYW55KSA9PiBzdG9yZS5jaGVja2VkKVxyXG4gICAgICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgICAgIGNsaWVudElkOiBkYXRhLmNsaWVudCxcclxuICAgICAgICAgIHByb2Nlc3NUeXBlOiB0aGlzLnByb2Nlc3NUeXBlLFxyXG4gICAgICAgICAgZm9vdGZhbGxEYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICAgICAgdmFsdWVUeXBlIDp0aGlzLnZhbHVlVHlwZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy5nZXRJbml0aWFsVmFsdWUoKTtcclxuICAgICAgICBjb25zdCBzZWxlY3RDb250cm9sID0gdGhpcy5mb3JtLmdldCgnc2VsZWN0VmFsdWUnKSBhcyBGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAoc2VsZWN0Q29udHJvbCkge1xyXG4gICAgICAgICAgc2VsZWN0Q29udHJvbC5zZXRWYWx1ZShpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmJhY2tUb0Zvb3RmYWxsKCk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5RGF0ZVJhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgZ2V0SW1hZ2VGb2xkZXIoKSB7XHJcbiAgIFxyXG4gICAgZGVsZXRlIHRoaXMub2JqRGF0YS5mb2xkZXJOYW1lO1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXRGb290ZmFsbERpcmVjdG9yeUZvbGRlcnModGhpcy5vYmpEYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLm9iamVjdHNBcnJheSA9IHJlcz8uZGF0YS5mb290ZmFsbERhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lID0gdGhpcy5vYmplY3RzQXJyYXlbMF0uZm9sZGVyTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5vYmpEYXRhLmZvbGRlck5hbWUgPSB0aGlzLnNlbGVjdGVkVGltZTtcclxuICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVZpZXcoKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZ2V0SW1hZ2VWaWV3KCkge1xyXG4gICAgdGhpcy5sb2FkaW5nID10cnVlO1xyXG4gICAgdGhpcy5ub0RhdGEgPWZhbHNlO1xyXG4gICAgdGhpcy5zZXJ2aWNlXHJcbiAgICAgIC5nZXRGb290ZmFsbERpcmVjdG9yeSh0aGlzLm9iakRhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGlmKCFyZXM/LmRhdGEuZm9vdGZhbGxEYXRhLmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLm5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNle1xyXG4gICAgICAgICAgICAgdGhpcy5pbWFnZXNBcnJheURhdGEgPSByZXM/LmRhdGEuZm9vdGZhbGxEYXRhO1xyXG4gICAgICAgICAgICAgdGhpcy5zdG9yZUFycmF5VmFsdWUgPSByZXM/LmRhdGEuc3RvcmVOYW1lXHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9EYXRhID10cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0aW1hZ2VzKGluZGV4OiBhbnksIG9iajogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdEluZGV4ID0gaW5kZXg7XHJcbiAgICAodGhpcy5vYmpEYXRhLmZvb3RmYWxsRGF0ZSA9IG9iaiksICh0aGlzLmZvbGRlclZpZXcgPSBmYWxzZSk7XHJcbiAgICB0aGlzLmdldEltYWdlRm9sZGVyKCk7XHJcbiAgfVxyXG4gIGJhY2tUb0Zvb3RmYWxsKCkge1xyXG4gICAgdGhpcy5zZWxlY3RJbmRleCA9IDA7XHJcbiAgICB0aGlzLmZvbGRlclZpZXcgPSB0cnVlO1xyXG4gIH1cclxuICBzZWxlY3RlZFRpbWVzKHZhbDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHZhbDtcclxuICAgIHRoaXMub2JqRGF0YS5mb2xkZXJOYW1lID0gdmFsO1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHZhbDtcclxuICAgIHRoaXMuZ2V0SW1hZ2VWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBpbWFnZVZpZXcob2JqOiBhbnksZm9vdGZhbGxEYXRlOmFueSkge1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEltYWdlRG9jVmlld0NvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJ4bFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5JbWFnZWRhdGEgPSBvYmo7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5wcm9jZXNzVHlwZSA9IHRoaXMub2JqRGF0YS5wcm9jZXNzVHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmZvb3RmYWxsRGF0ZSA9IGZvb3RmYWxsRGF0ZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlTmFtZSA9IHRoaXMuc3RvcmVBcnJheVZhbHVlO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2Uuc3RvcmVJZCA9ICB0aGlzLnN0b3JlSWRhcnJheVxyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaGVhZGVyRGF0YSA9ICB0aGlzLmhlYWRlckRhdGE7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbWFnZUFycmF5ID0gdGhpcy5vYmplY3RzQXJyYXk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5mb2xkZXJOYW1lID0gdGhpcy5vYmpEYXRhLmZvbGRlck5hbWVcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge30pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZVJhbmdlQXJyYXkoZnJvbURhdGU6IHN0cmluZywgdG9EYXRlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGZyb21EYXRlKTsgLy8gQ29udmVydCBzdHJpbmcgdG8gRGF0ZSBvYmplY3RcclxuICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHRvRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBkYXRlQXJyYXk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGVzIGFyZSB2YWxpZFxyXG4gICAgaWYgKGlzTmFOKHN0YXJ0LmdldFRpbWUoKSkgfHwgaXNOYU4oZW5kLmdldFRpbWUoKSkpIHtcclxuICAgICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMb29wIGZyb20gc3RhcnQgZGF0ZSB0byBlbmQgZGF0ZVxyXG4gICAgbGV0IGN1cnJlbnREYXRlID0gc3RhcnQ7XHJcbiAgICB3aGlsZSAoY3VycmVudERhdGUgPD0gZW5kKSB7XHJcbiAgICAgIGRhdGVBcnJheS5wdXNoKGN1cnJlbnREYXRlLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdKTsgLy8gRm9ybWF0IFlZWVktTU0tRERcclxuICAgICAgY3VycmVudERhdGUuc2V0RGF0ZShjdXJyZW50RGF0ZS5nZXREYXRlKCkgKyAxKTsgLy8gSW5jcmVtZW50IHRoZSBkYXRlIGJ5IDEgZGF5XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGVBcnJheTtcclxuICB9XHJcblxyXG4gIC8vIE1ldGhvZCB0byBkaXNwbGF5IG9yIGxvZyB0aGUgZGF0ZSByYW5nZSBhcnJheVxyXG4gIGRpc3BsYXlEYXRlUmFuZ2UoKSB7XHJcbiAgICBjb25zdCBkYXRlcyA9IHRoaXMuZ2V0RGF0ZVJhbmdlQXJyYXkoXHJcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGF0ZUFycmF5ID0gZGF0ZXM7XHJcbiAgfVxyXG4gIGRhdGFzZXRzID0gW1xyXG4gICAgeyB2YWx1ZTogJ2Zvb3RmYWxsJywgbGFiZWw6ICdGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdib3VuY2VkJywgbGFiZWw6ICdCb3VuY2VkIEZvb3RmYWxsJyB9LFxyXG4gICAgeyB2YWx1ZTogJ2VuZ2FnZXInLCBsYWJlbDogJ0VuZ2FnZXJzJyB9LFxyXG4gICAgeyB2YWx1ZTogJ21pc3NlZE9wcG9ydHVuaXR5JywgbGFiZWw6ICdNaXNzZWQgT3Bwb3J0dW5pdHknIH0sXHJcbiAgICB7IHZhbHVlOiAnY29udmVyc2lvbicsIGxhYmVsOiAnQ29udmVyc2lvbicgfVxyXG4gIF07XHJcblxyXG4gIGdldEluaXRpYWxWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgLy8gRm9yIGV4YW1wbGUsIHNlbGVjdGluZyB0aGUgc2Vjb25kIGl0ZW0gaW4gdGhlIGRhdGFzZXRcclxuICAgIHJldHVybiB0aGlzLmRhdGFzZXRzWzBdLnZhbHVlOyAvLyBDaGFuZ2UgYXMgbmVlZGVkXHJcbiAgfVxyXG4gIG9uVmFsdWVDaGFuZ2Uoc2VsZWN0ZWRJZDogYW55KSB7XHJcbiAgICB0aGlzLm9iakRhdGEucHJvY2Vzc1R5cGUgPSBzZWxlY3RlZElkLFxyXG4gICAgdGhpcy5nZXRJbWFnZUZvbGRlcigpO1xyXG4gIH1cclxuICBnZXQgc2VsZWN0Q29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnc2VsZWN0VmFsdWUnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgbXQtM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG15LTMgcHgtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1mb3JtLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQ2XCIgaGVpZ2h0PVwiNDZcIiB2aWV3Qm94PVwiMCAwIDQ2IDQ2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yMy44MzMzIDE0LjY2NjZMMTUuNSAyNC42NjY2SDIzTDIyLjE2NjcgMzEuMzMzM0wzMC41IDIxLjMzMzNIMjNMMjMuODMzMyAxNC42NjY2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR4dC1vbmUgbXMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPkV4YW1pbmUgaW5kaXZpZHVhbCBmb290ZmFsbCBpbiBnYWxsZXJ5IHZpZXcgd2l0aCBvcHRpbWFsIHNhbXBsZSBpbWFnZXMgZm9yIGRldGFpbGVkIGFuYWx5c2lzLjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc011bHRpcGxlXCI+VXBsb2FkIG11bHRpcGxlIHN0b3JlcyBmb3IgY29uZmlndXJhdGlvbjwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4yOTUgNy4xMTVDMTguNjg0NCA2LjcyNTY0IDE4LjY4NDQgNi4wOTQzNiAxOC4yOTUgNS43MDVDMTcuOTA1NiA1LjMxNTY0IDE3LjI3NDQgNS4zMTU2NCAxNi44ODUgNS43MDVMMTIgMTAuNTlMNy4xMTUgNS43MDVDNi43MjU2NCA1LjMxNTY0IDYuMDk0MzYgNS4zMTU2NCA1LjcwNSA1LjcwNUM1LjMxNTY0IDYuMDk0MzYgNS4zMTU2NCA2LjcyNTY0IDUuNzA1IDcuMTE1TDEwLjU5IDEyTDUuNzA1IDE2Ljg4NUM1LjMxNTY0IDE3LjI3NDQgNS4zMTU2NCAxNy45MDU2IDUuNzA1IDE4LjI5NUM2LjA5NDM2IDE4LjY4NDQgNi43MjU2NCAxOC42ODQ0IDcuMTE1IDE4LjI5NUwxMiAxMy40MUwxNi44ODUgMTguMjk1QzE3LjI3NDQgMTguNjg0NCAxNy45MDU2IDE4LjY4NDQgMTguMjk1IDE4LjI5NUMxOC42ODQ0IDE3LjkwNTYgMTguNjg0NCAxNy4yNzQ0IDE4LjI5NSAxNi44ODVMMTMuNDEgMTJMMTguMjk1IDcuMTE1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiYmxhY2tcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEgbXQtNSB0ZXh0LWNlbnRlclwiICpuZ0Zvcj1cImxldCBvYmogb2YgZGF0ZUFycmF5O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImdldGltYWdlcyhpLG9iailcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PT0gc2VsZWN0SW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHdpZHRoPVwiNTdcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTcgNTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjE1NDI5N1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiMTJcIiBmaWxsPVwiIzMzQjVGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zOS44MjE2IDM2LjE2NjdDMzkuODIxNiAzNi43ODU1IDM5LjU3NTggMzcuMzc5IDM5LjEzODIgMzcuODE2NkMzOC43MDA2IDM4LjI1NDIgMzguMTA3MSAzOC41IDM3LjQ4ODMgMzguNUgxOC44MjE2QzE4LjIwMjggMzguNSAxNy42MDkzIDM4LjI1NDIgMTcuMTcxNyAzNy44MTY2QzE2LjczNDEgMzcuMzc5IDE2LjQ4ODMgMzYuNzg1NSAxNi40ODgzIDM2LjE2NjdWMTkuODMzM0MxNi40ODgzIDE5LjIxNDUgMTYuNzM0MSAxOC42MjEgMTcuMTcxNyAxOC4xODM0QzE3LjYwOTMgMTcuNzQ1OCAxOC4yMDI4IDE3LjUgMTguODIxNiAxNy41SDI0LjY1NDlMMjYuOTg4MyAyMUgzNy40ODgzQzM4LjEwNzEgMjEgMzguNzAwNiAyMS4yNDU4IDM5LjEzODIgMjEuNjgzNEMzOS41NzU4IDIyLjEyMSAzOS44MjE2IDIyLjcxNDUgMzkuODIxNiAyMy4zMzMzVjM2LjE2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIyLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTJcIj57e29iaiB8IGRhdGU6J2RkIE1NTSd9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpICE9PSBzZWxlY3RJbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPjxzdmcgd2lkdGg9XCI1N1wiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NyA1NlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjAuNDYyODkxXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgcng9XCIxMlwiIGZpbGw9XCIjRUFGOEZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQwLjEzMDIgMzYuMTY2N0M0MC4xMzAyIDM2Ljc4NTUgMzkuODg0NCAzNy4zNzkgMzkuNDQ2OCAzNy44MTY2QzM5LjAwOTIgMzguMjU0MiAzOC40MTU3IDM4LjUgMzcuNzk2OSAzOC41SDE5LjEzMDJDMTguNTExNCAzOC41IDE3LjkxNzkgMzguMjU0MiAxNy40ODAzIDM3LjgxNjZDMTcuMDQyNyAzNy4zNzkgMTYuNzk2OSAzNi43ODU1IDE2Ljc5NjkgMzYuMTY2N1YxOS44MzMzQzE2Ljc5NjkgMTkuMjE0NSAxNy4wNDI3IDE4LjYyMSAxNy40ODAzIDE4LjE4MzRDMTcuOTE3OSAxNy43NDU4IDE4LjUxMTQgMTcuNSAxOS4xMzAyIDE3LjVIMjQuOTYzNUwyNy4yOTY5IDIxSDM3Ljc5NjlDMzguNDE1NyAyMSAzOS4wMDkyIDIxLjI0NTggMzkuNDQ2OCAyMS42ODM0QzM5Ljg4NDQgMjIuMTIxIDQwLjEzMDIgMjIuNzE0NSA0MC4xMzAyIDIzLjMzMzNWMzYuMTY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMi4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+e3tvYmogfCBkYXRlOidkZCBNTU0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFmb2xkZXJWaWV3XCIgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zaHJpbmstMCBtdC0zIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJiYWNrVG9Gb290ZmFsbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI1ODVfNzAzNilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjFcIiB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiByeD1cIjhcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjIuNVwiIHk9XCIxLjVcIiB3aWR0aD1cIjM1XCIgaGVpZ2h0PVwiMzVcIiByeD1cIjcuNVwiIHN0cm9rZT1cIiNEMEQ1RERcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNS44MzI3IDE5SDE0LjE2Nk0xNC4xNjYgMTlMMTkuOTk5MyAyNC44MzM0TTE0LjE2NiAxOUwxOS45OTkzIDEzLjE2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8yNTg1XzcwMzZcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQgZHk9XCIxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz1cIjAgMCAwIDAgMC4wNjI3NDUxIDAgMCAwIDAgMC4wOTQxMTc2IDAgMCAwIDAgMC4xNTY4NjMgMCAwIDAgMC4wNSAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzI1ODVfNzAzNlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9XCJzaGFwZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLWF1dG8gdGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0Q29udHJvbFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YXNldHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIHRleHQtc3RhcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTIgbWItMiB3LTEwMCBvdmVyZmxvdy14XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB0ZXh0LW5vd3JhcFwiICpuZ0Zvcj1cImxldCBvYmogb2Ygb2JqZWN0c0FycmF5XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0ZWRUaW1lcyhvYmouZm9sZGVyTmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy5mb2xkZXJOYW1lID8gJ2FjdGl2ZScgOiAnJ1wiIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXIgbm8tYm9yZGVyIG14LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e29iaj8uZm9sZGVyTmFtZX19PHNwYW4gY2xhc3M9XCJteC0yIFwiIFtuZ0NsYXNzXT1cInNlbGVjdGVkVGltZSA9PT0gb2JqPy5mb2xkZXJOYW1lID8gJ2JhZGdlLW51bS1wcmltYXJ5JyA6J2JhZGdlLW51bS1tdXRlZCdcIj57e29iaj8uY291bnQ/b2JqPy5jb3VudDowfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLW5vZGF0YVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXN1YlwiPlRoZXJlIGlzIG5vIHJlc3VsdCBmb3IgdGhpcyBpbWFnZSBkaXJlY3Rvcnk8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTAgaW1nLXRyYWZmaWMgY29udGFpblwiICpuZ0lmPVwiIW5vRGF0YSAmJiAhbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNvbC1tZC0zIGJvcmRlci1ncmF5IG14LTIgcC0yIG10LTVcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGltYWdlc0FycmF5RGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIm9iai5pbWFnZXMuZW50cnlUaW1lSW1hZ2VcIiBjbGFzcz1cImltZy1zcmMgY3Vyc29yLXBvaW50ZXJcIiBbc3JjXT1cIm9iai5pbWFnZXMuZW50cnlUaW1lSW1hZ2VcIiAoZXJyb3IpPVwib2JqPy5pbWFnZXMuZW50cnlUaW1lSW1hZ2UgPSBudWxsXCIgYWx0PVwiXCIgKGNsaWNrKT1cImltYWdlVmlldyhvYmosb2JqRGF0YS5mb290ZmFsbERhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9iai5pbWFnZXMuZW50cnlUaW1lSW1hZ2VcIiBjbGFzcz1cIm5vLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIzXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIzIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjUgNi4zMjIyN0g2LjUxTTE2LjI1IDkuMzIyMjdIMjEuNUwxOCAxNi4zMjIzTDE0LjkxIDEyLjAwMjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJWZWN0b3JfMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMS41IDE2LjMyMjlINS4yNkM1LjYzMjczIDE2LjMyNTUgNS45OTg3NyAxNi4yMjM5IDYuMzE2ODIgMTYuMDI5NUM2LjYzNDg3IDE1LjgzNTIgNi44OTIyOCAxNS41NTU4IDcuMDYgMTUuMjIyOUw4LjUgMTIuMzIyOU0xLjUgMTguMzIyOVYxNC4zMjI5TTE3LjUgNi44MjI5MUwxMy41IDE0LjgyMjlMMy4xMSA5LjYyMjkxQzIuNDIwMzMgOS4yNzU1MyAxLjg5NjM1IDguNjY5MSAxLjY1MjcyIDcuOTM2MzJDMS40MDkwOSA3LjIwMzU0IDEuNDY1NjQgNi40MDQxIDEuODEgNS43MTI5MUwzLjE5IDIuOTIyOTFDMy4zNjIgMi41ODAxNCAzLjU5OTg0IDIuMjc0NiAzLjg4OTk0IDIuMDIzNzVDNC4xODAwMyAxLjc3MjkgNC41MTY3IDEuNTgxNjUgNC44ODA3MiAxLjQ2MDkzQzUuMjQ0NzQgMS4zNDAyMSA1LjYyODk3IDEuMjkyMzkgNi4wMTE0NyAxLjMyMDE4QzYuMzkzOTggMS4zNDc5NyA2Ljc2NzI2IDEuNDUwODQgNy4xMSAxLjYyMjkxTDE3LjUgNi44MjI5MVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgbWItNSB0ZXh0LWNlbnRlclwiPlByZXZpZXcgbm90IGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRlc2NyaXB0aW9uIG1iLTUgdGV4dC1jZW50ZXJcIj5UaGUgc2VsZWN0ZWQgY2FtZXJhIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudC48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMiBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtZGlyZWN0b3J5XCI+e3tvYmoudGVtcElkfX0gPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIG1zLTJcIj57e3NlbGVjdENvbnRyb2wudmFsdWUgfCB0aXRsZWNhc2V9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+RW50cnkgVGltZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXRpbWVcIj5FeGl0IFRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+VG90YWwgVGltZSBTcGVudDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCB0ZXh0LWVuZFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTcgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTg0MV8xNDMzMDApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNC4xOTg2IDUuMzMzMzNWMTRIMi4xOTg1N1Y1LjMzMzMzTTYuODY1MjMgOEg5LjUzMTlNMC44NjUyMzQgMkgxNS41MzE5VjUuMzMzMzNIMC44NjUyMzRWMlpcIiBzdHJva2U9XCIjMTAxODI4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xODQxXzE0MzMwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjE5OTIxOSlcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXZhbHVlXCI+e3tvYmoudGltZVNwZW50LmVudHJ5VGltZX19IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLXZhbHVlXCI+e3tvYmoudGltZVNwZW50LmV4aXRUaW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy12YWx1ZVwiPnt7b2JqLnRpbWVTcGVudC50b3RhbFRpbWVTcGVudH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZG9jLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJhZmZpYy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtZG9jL2ltYWdlLWRvYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYWZmaWMvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlLWRvYy9pbWFnZS1kb2MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU0xRCxNQUFNLE9BQU8saUJBQWlCO0lBbUJsQjtJQUNEO0lBQ0M7SUFDQTtJQUErQjtJQXJCekMsV0FBVyxHQUFRLENBQUMsQ0FBQztJQUNyQixZQUFZLENBQU07SUFDbEIsT0FBTyxDQUFNO0lBQ2IsWUFBWSxDQUFNO0lBQ2xCLGVBQWUsQ0FBTTtJQUNyQixXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLFVBQVUsQ0FBTTtJQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxTQUFTLENBQVc7SUFDcEIsSUFBSSxDQUFNO0lBQ1YsTUFBTSxHQUFXLEtBQUssQ0FBQztJQUN2QixPQUFPLEdBQVUsSUFBSSxDQUFDO0lBQ3RCLGVBQWUsQ0FBTTtJ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LGlCQUFpQjs0RkFBakIsaUJBQWlCLHFEQ2Q5QixxNGJBb01NOzs0RkR0TE8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFmZmljU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYWZmaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEltYWdlRG9jVmlld0NvbXBvbmVudCB9IGZyb20gJy4uL2ltYWdlLWRvYy12aWV3L2ltYWdlLWRvYy12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImxpYi1pbWFnZS1kb2NcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2ltYWdlLWRvYy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vaW1hZ2UtZG9jLmNvbXBvbmVudC5zY3NzXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWFnZURvY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzZWxlY3RJbmRleDogYW55ID0gMDtcclxuICBzZWxlY3RlZFRpbWU6IGFueTtcclxuICBvYmpEYXRhOiBhbnk7XHJcbiAgb2JqZWN0c0FycmF5OiBhbnk7XHJcbiAgaW1hZ2VzQXJyYXlEYXRhOiBhbnk7XHJcbiAgcHJvY2Vzc1R5cGUgPSBcImZvb3RmYWxsXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIGZvbGRlclZpZXcgPSB0cnVlO1xyXG4gIGRheWpzID0gZGF5anM7XHJcbiAgZGF0ZUFycmF5OiBzdHJpbmdbXTtcclxuICBmb3JtOiBhbnk7XHJcbiAgbm9EYXRhOiBib29sZWFuID1mYWxzZTtcclxuICBsb2FkaW5nOmJvb2xlYW4gPXRydWU7XHJcbiAgc3RvcmVBcnJheVZhbHVlOiBhbnk7XHJcbiAgc3RvcmVJZGFycmF5OiBhbnk7XHJcbiAgdmFsdWVUeXBlOiBhbnk9J2FjdHVhbCc7XHJcbiAgaXNBdmVyYWdlOiBhbnkgPWZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBUcmFmZmljU2VydmljZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwscHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICApIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzZWxlY3RWYWx1ZTogbmV3IEZvcm1Db250cm9sKCcnKSAvLyBJbml0aWFsaXplIGFzIEZvcm1Db250cm9sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmlzQXZlcmFnZSQuc3Vic2NyaWJlKChpc0F2ZXJhZ2U6YW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaXNBdmVyYWdlID0gaXNBdmVyYWdlO1xyXG4gICAgICBpZih0aGlzLmlzQXZlcmFnZSA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgdGhpcy52YWx1ZVR5cGUgPSAnYXZlcmFnZSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZVR5cGUgPSdhY3R1YWwnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMub2JqRGF0YSl7XHJcbiAgICAgIHRoaXMub2JqRGF0YSA9IHtcclxuICAgICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlc1xyXG4gICAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcclxuICAgICAgICAgIC5tYXAoKHN0b3JlOiBhbnkpID0+IHN0b3JlLnN0b3JlSWQpLFxyXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgICBwcm9jZXNzVHlwZTogdGhpcy5wcm9jZXNzVHlwZSxcclxuICAgICAgICBmb290ZmFsbERhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgICAgdmFsdWVUeXBlIDp0aGlzLnZhbHVlVHlwZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmJhY2tUb0Zvb3RmYWxsKCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheURhdGVSYW5nZSgpO1xyXG4gICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuZ2V0SW5pdGFsKCk7XHJcbiAgfVxyXG4gIGdldEluaXRhbCgpe1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZihkYXRhICE9PW51bGwgfHwgZGF0YT8uY2xpZW50ICE9PSBudWxsKXtcclxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuc3RvcmVJZGFycmF5ID0gdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMuZmlsdGVyKChzdG9yZTphbnkpID0+IHN0b3JlLmNoZWNrZWQpLm1hcCgoc3RvcmU6YW55KSA9PiBzdG9yZS5zdG9yZUlkKVxyXG4gICAgICBcclxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLmdldEluaXRpYWxWYWx1ZSgpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KCdzZWxlY3RWYWx1ZScpIGFzIEZvcm1Db250cm9sO1xyXG4gICAgICAgIGlmIChzZWxlY3RDb250cm9sKSB7XHJcbiAgICAgICAgICBzZWxlY3RDb250cm9sLnNldFZhbHVlKGluaXRpYWxWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICBcclxuICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG4gIGdldEltYWdlRm9sZGVyKCkge1xyXG4gICBcclxuICAgIGRlbGV0ZSB0aGlzLm9iakRhdGEuZm9sZGVyTmFtZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Rm9vdGZhbGxEaXJlY3RvcnlGb2xkZXJzKHRoaXMub2JqRGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RzQXJyYXkgPSByZXM/LmRhdGEuZm9vdGZhbGxEYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZSA9IHRoaXMub2JqZWN0c0FycmF5WzBdLmZvbGRlck5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMub2JqRGF0YS5mb2xkZXJOYW1lID0gdGhpcy5zZWxlY3RlZFRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VWaWV3KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID1mYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub0RhdGEgPXRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGdldEltYWdlVmlldygpIHtcclxuICAgIHRoaXMubG9hZGluZyA9dHJ1ZTtcclxuICAgIHRoaXMubm9EYXRhID1mYWxzZTtcclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAuZ2V0Rm9vdGZhbGxEaXJlY3RvcnkodGhpcy5vYmpEYXRhKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBpZighcmVzPy5kYXRhLmZvb3RmYWxsRGF0YS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub0RhdGEgPXRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgIHRoaXMuaW1hZ2VzQXJyYXlEYXRhID0gcmVzPy5kYXRhLmZvb3RmYWxsRGF0YTtcclxuICAgICAgICAgICAgIHRoaXMuc3RvcmVBcnJheVZhbHVlID0gcmVzPy5kYXRhLnN0b3JlTmFtZVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9ZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPWZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vRGF0YSA9dHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldGltYWdlcyhpbmRleDogYW55LCBvYmo6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RJbmRleCA9IGluZGV4O1xyXG4gICAgKHRoaXMub2JqRGF0YS5mb290ZmFsbERhdGUgPSBvYmopLCAodGhpcy5mb2xkZXJWaWV3ID0gZmFsc2UpO1xyXG4gICAgdGhpcy5nZXRJbWFnZUZvbGRlcigpO1xyXG4gIH1cclxuICBiYWNrVG9Gb290ZmFsbCgpIHtcclxuICAgIHRoaXMuc2VsZWN0SW5kZXggPSAwO1xyXG4gICAgdGhpcy5mb2xkZXJWaWV3ID0gdHJ1ZTtcclxuICB9XHJcbiAgc2VsZWN0ZWRUaW1lcyh2YWw6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB2YWw7XHJcbiAgICB0aGlzLm9iakRhdGEuZm9sZGVyTmFtZSA9IHZhbDtcclxuICAgIHRoaXMuZm9sZGVyVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB2YWw7XHJcbiAgICB0aGlzLmdldEltYWdlVmlldygpO1xyXG4gIH1cclxuXHJcbiAgaW1hZ2VWaWV3KG9iajogYW55LGZvb3RmYWxsRGF0ZTphbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihJbWFnZURvY1ZpZXdDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHNpemU6IFwieGxcIixcclxuICAgICAgc2Nyb2xsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuSW1hZ2VkYXRhID0gb2JqO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UucHJvY2Vzc1R5cGUgPSB0aGlzLm9iakRhdGEucHJvY2Vzc1R5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5mb290ZmFsbERhdGUgPSBmb290ZmFsbERhdGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5zdG9yZU5hbWUgPSB0aGlzLnN0b3JlQXJyYXlWYWx1ZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlSWQgPSAgdGhpcy5zdG9yZUlkYXJyYXlcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmhlYWRlckRhdGEgPSAgdGhpcy5oZWFkZXJEYXRhO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuaW1hZ2VBcnJheSA9IHRoaXMub2JqZWN0c0FycmF5O1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZm9sZGVyTmFtZSA9IHRoaXMub2JqRGF0YS5mb2xkZXJOYW1lXHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0OiBhbnkpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIGdldERhdGVSYW5nZUFycmF5KGZyb21EYXRlOiBzdHJpbmcsIHRvRGF0ZTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShmcm9tRGF0ZSk7IC8vIENvbnZlcnQgc3RyaW5nIHRvIERhdGUgb2JqZWN0XHJcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSh0b0RhdGUpOyAvLyBDb252ZXJ0IHN0cmluZyB0byBEYXRlIG9iamVjdFxyXG4gICAgY29uc3QgZGF0ZUFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRlcyBhcmUgdmFsaWRcclxuICAgIGlmIChpc05hTihzdGFydC5nZXRUaW1lKCkpIHx8IGlzTmFOKGVuZC5nZXRUaW1lKCkpKSB7XHJcbiAgICAgIHJldHVybiBkYXRlQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTG9vcCBmcm9tIHN0YXJ0IGRhdGUgdG8gZW5kIGRhdGVcclxuICAgIGxldCBjdXJyZW50RGF0ZSA9IHN0YXJ0O1xyXG4gICAgd2hpbGUgKGN1cnJlbnREYXRlIDw9IGVuZCkge1xyXG4gICAgICBkYXRlQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSk7IC8vIEZvcm1hdCBZWVlZLU1NLUREXHJcbiAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpICsgMSk7IC8vIEluY3JlbWVudCB0aGUgZGF0ZSBieSAxIGRheVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRlQXJyYXk7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZGlzcGxheSBvciBsb2cgdGhlIGRhdGUgcmFuZ2UgYXJyYXlcclxuICBkaXNwbGF5RGF0ZVJhbmdlKCkge1xyXG4gICAgY29uc3QgZGF0ZXMgPSB0aGlzLmdldERhdGVSYW5nZUFycmF5KFxyXG4gICAgICB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRoaXMuaGVhZGVyRGF0YS5kYXRlLmVuZERhdGVcclxuICAgICk7XHJcbiAgICB0aGlzLmRhdGVBcnJheSA9IGRhdGVzO1xyXG4gIH1cclxuICBkYXRhc2V0cyA9IFtcclxuICAgIHsgdmFsdWU6ICdmb290ZmFsbCcsIGxhYmVsOiAnRm9vdGZhbGwnIH0sXHJcbiAgICB7IHZhbHVlOiAnYm91bmNlZCcsIGxhYmVsOiAnQm91bmNlZCBGb290ZmFsbCcgfSxcclxuICAgIHsgdmFsdWU6ICdlbmdhZ2VyJywgbGFiZWw6ICdFbmdhZ2VycycgfSxcclxuICAgIHsgdmFsdWU6ICdtaXNzZWRPcHBvcnR1bml0eScsIGxhYmVsOiAnTWlzc2VkIE9wcG9ydHVuaXR5JyB9LFxyXG4gICAgeyB2YWx1ZTogJ2NvbnZlcnNpb24nLCBsYWJlbDogJ0NvbnZlcnNpb24nIH1cclxuICBdO1xyXG5cclxuICBnZXRJbml0aWFsVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIC8vIEZvciBleGFtcGxlLCBzZWxlY3RpbmcgdGhlIHNlY29uZCBpdGVtIGluIHRoZSBkYXRhc2V0XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhc2V0c1swXS52YWx1ZTsgLy8gQ2hhbmdlIGFzIG5lZWRlZFxyXG4gIH1cclxuICBvblZhbHVlQ2hhbmdlKHNlbGVjdGVkSWQ6IGFueSkge1xyXG4gICAgdGhpcy5vYmpEYXRhLnByb2Nlc3NUeXBlID0gc2VsZWN0ZWRJZCxcclxuICAgIHRoaXMuZ2V0SW1hZ2VGb2xkZXIoKTtcclxuICB9XHJcbiAgZ2V0IHNlbGVjdENvbnRyb2woKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NlbGVjdFZhbHVlJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIG10LTNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBteS0zIHB4LTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtZm9ybS1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0NlwiIGhlaWdodD1cIjQ2XCIgdmlld0JveD1cIjAgMCA0NiA0NlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjMuODMzMyAxNC42NjY2TDE1LjUgMjQuNjY2NkgyM0wyMi4xNjY3IDMxLjMzMzNMMzAuNSAyMS4zMzMzSDIzTDIzLjgzMzMgMTQuNjY2NlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eHQtb25lIG1zLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5FeGFtaW5lIGluZGl2aWR1YWwgZm9vdGZhbGwgaW4gZ2FsbGVyeSB2aWV3IHdpdGggb3B0aW1hbCBzYW1wbGUgaW1hZ2VzIGZvciBkZXRhaWxlZCBhbmFseXNpcy48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNdWx0aXBsZVwiPlVwbG9hZCBtdWx0aXBsZSBzdG9yZXMgZm9yIGNvbmZpZ3VyYXRpb248L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTguMjk1IDcuMTE1QzE4LjY4NDQgNi43MjU2NCAxOC42ODQ0IDYuMDk0MzYgMTguMjk1IDUuNzA1QzE3LjkwNTYgNS4zMTU2NCAxNy4yNzQ0IDUuMzE1NjQgMTYuODg1IDUuNzA1TDEyIDEwLjU5TDcuMTE1IDUuNzA1QzYuNzI1NjQgNS4zMTU2NCA2LjA5NDM2IDUuMzE1NjQgNS43MDUgNS43MDVDNS4zMTU2NCA2LjA5NDM2IDUuMzE1NjQgNi43MjU2NCA1LjcwNSA3LjExNUwxMC41OSAxMkw1LjcwNSAxNi44ODVDNS4zMTU2NCAxNy4yNzQ0IDUuMzE1NjQgMTcuOTA1NiA1LjcwNSAxOC4yOTVDNi4wOTQzNiAxOC42ODQ0IDYuNzI1NjQgMTguNjg0NCA3LjExNSAxOC4yOTVMMTIgMTMuNDFMMTYuODg1IDE4LjI5NUMxNy4yNzQ0IDE4LjY4NDQgMTcuOTA1NiAxOC42ODQ0IDE4LjI5NSAxOC4yOTVDMTguNjg0NCAxNy45MDU2IDE4LjY4NDQgMTcuMjc0NCAxOC4yOTUgMTYuODg1TDEzLjQxIDEyTDE4LjI5NSA3LjExNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZvbGRlclZpZXdcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xIG10LTUgdGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIGRhdGVBcnJheTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJnZXRpbWFnZXMoaSxvYmopXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImkgPT09IHNlbGVjdEluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+PHN2ZyB3aWR0aD1cIjU3XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU3IDU2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMC4xNTQyOTdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiByeD1cIjEyXCIgZmlsbD1cIiMzM0I1RkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMzkuODIxNiAzNi4xNjY3QzM5LjgyMTYgMzYuNzg1NSAzOS41NzU4IDM3LjM3OSAzOS4xMzgyIDM3LjgxNjZDMzguNzAwNiAzOC4yNTQyIDM4LjEwNzEgMzguNSAzNy40ODgzIDM4LjVIMTguODIxNkMxOC4yMDI4IDM4LjUgMTcuNjA5MyAzOC4yNTQyIDE3LjE3MTcgMzcuODE2NkMxNi43MzQxIDM3LjM3OSAxNi40ODgzIDM2Ljc4NTUgMTYuNDg4MyAzNi4xNjY3VjE5LjgzMzNDMTYuNDg4MyAxOS4yMTQ1IDE2LjczNDEgMTguNjIxIDE3LjE3MTcgMTguMTgzNEMxNy42MDkzIDE3Ljc0NTggMTguMjAyOCAxNy41IDE4LjgyMTYgMTcuNUgyNC42NTQ5TDI2Ljk4ODMgMjFIMzcuNDg4M0MzOC4xMDcxIDIxIDM4LjcwMDYgMjEuMjQ1OCAzOS4xMzgyIDIxLjY4MzRDMzkuNTc1OCAyMi4xMjEgMzkuODIxNiAyMi43MTQ1IDM5LjgyMTYgMjMuMzMzM1YzNi4xNjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMi4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+e3tvYmogfCBkYXRlOidkZCBNTU0nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSAhPT0gc2VsZWN0SW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj48c3ZnIHdpZHRoPVwiNTdcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTcgNTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwLjQ2Mjg5MVwiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHJ4PVwiMTJcIiBmaWxsPVwiI0VBRjhGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00MC4xMzAyIDM2LjE2NjdDNDAuMTMwMiAzNi43ODU1IDM5Ljg4NDQgMzcuMzc5IDM5LjQ0NjggMzcuODE2NkMzOS4wMDkyIDM4LjI1NDIgMzguNDE1NyAzOC41IDM3Ljc5NjkgMzguNUgxOS4xMzAyQzE4LjUxMTQgMzguNSAxNy45MTc5IDM4LjI1NDIgMTcuNDgwMyAzNy44MTY2QzE3LjA0MjcgMzcuMzc5IDE2Ljc5NjkgMzYuNzg1NSAxNi43OTY5IDM2LjE2NjdWMTkuODMzM0MxNi43OTY5IDE5LjIxNDUgMTcuMDQyNyAxOC42MjEgMTcuNDgwMyAxOC4xODM0QzE3LjkxNzkgMTcuNzQ1OCAxOC41MTE0IDE3LjUgMTkuMTMwMiAxNy41SDI0Ljk2MzVMMjcuMjk2OSAyMUgzNy43OTY5QzM4LjQxNTcgMjEgMzkuMDA5MiAyMS4yNDU4IDM5LjQ0NjggMjEuNjgzNEMzOS44ODQ0IDIyLjEyMSA0MC4xMzAyIDIyLjcxNDUgNDAuMTMwMiAyMy4zMzMzVjM2LjE2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjIuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMlwiPnt7b2JqIHwgZGF0ZTonZGQgTU1NJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhZm9sZGVyVmlld1wiIGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc2hyaW5rLTAgbXQtMyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiYmFja1RvRm9vdGZhbGwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgdmlld0JveD1cIjAgMCA0MCA0MFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8yNTg1XzcwMzYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgcng9XCI4XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyLjVcIiB5PVwiMS41XCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgcng9XCI3LjVcIiBzdHJva2U9XCIjRDBENUREXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjUuODMyNyAxOUgxNC4xNjZNMTQuMTY2IDE5TDE5Ljk5OTMgMjQuODMzNE0xNC4xNjYgMTlMMTkuOTk5MyAxMy4xNjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMjU4NV83MDM2XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0IGR5PVwiMVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9XCIwIDAgMCAwIDAuMDYyNzQ1MSAwIDAgMCAwIDAuMDk0MTE3NiAwIDAgMCAwIDAuMTU2ODYzIDAgMCAwIDAuMDUgMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18yNTg1XzcwMzZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjU4NV83MDM2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PVwic2hhcGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlbGVjdENvbnRyb2xcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImRhdGFzZXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCB0ZXh0LXN0YXJ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC0yIG1iLTIgdy0xMDAgb3ZlcmZsb3cteFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1ub3dyYXBcIiAqbmdGb3I9XCJsZXQgb2JqIG9mIG9iamVjdHNBcnJheVwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicyBib3JkZXItdHJhbnNwYXJlbnQgZmxleC1ub3dyYXBcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNlbGVjdGVkVGltZXMob2JqLmZvbGRlck5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8uZm9sZGVyTmFtZSA/ICdhY3RpdmUnIDogJydcIiBjbGFzcz1cIm5hdi1saW5rIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciBteC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tvYmo/LmZvbGRlck5hbWV9fTxzcGFuIGNsYXNzPVwibXgtMiBcIiBbbmdDbGFzc109XCJzZWxlY3RlZFRpbWUgPT09IG9iaj8uZm9sZGVyTmFtZSA/ICdiYWRnZS1udW0tcHJpbWFyeScgOidiYWRnZS1udW0tbXV0ZWQnXCI+e3tvYmo/LmNvdW50P29iaj8uY291bnQ6MH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1ub2RhdGFcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHRoaXMgaW1hZ2UgZGlyZWN0b3J5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wIGltZy10cmFmZmljIGNvbnRhaW5cIiAqbmdJZj1cIiFub0RhdGEgJiYgIWxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJjb2wtbWQtMyBib3JkZXItZ3JheSBteC0yIHAtMiBtdC01XCIgKm5nRm9yPVwibGV0IG9iaiBvZiBpbWFnZXNBcnJheURhdGFcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJvYmouaW1hZ2VzLmVudHJ5VGltZUltYWdlXCIgY2xhc3M9XCJpbWctc3JjIGN1cnNvci1wb2ludGVyXCIgW3NyY109XCJvYmouaW1hZ2VzLmVudHJ5VGltZUltYWdlXCIgKGVycm9yKT1cIm9iaj8uaW1hZ2VzLmVudHJ5VGltZUltYWdlID0gbnVsbFwiIGFsdD1cIlwiIChjbGljayk9XCJpbWFnZVZpZXcob2JqLG9iakRhdGEuZm9vdGZhbGxEYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFvYmouaW1hZ2VzLmVudHJ5VGltZUltYWdlXCIgY2xhc3M9XCJuby1wcmV2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyM1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMyAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD1cIlZlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi41IDYuMzIyMjdINi41MU0xNi4yNSA5LjMyMjI3SDIxLjVMMTggMTYuMzIyM0wxNC45MSAxMi4wMDIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVmVjdG9yXzJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEuNSAxNi4zMjI5SDUuMjZDNS42MzI3MyAxNi4zMjU1IDUuOTk4NzcgMTYuMjIzOSA2LjMxNjgyIDE2LjAyOTVDNi42MzQ4NyAxNS44MzUyIDYuODkyMjggMTUuNTU1OCA3LjA2IDE1LjIyMjlMOC41IDEyLjMyMjlNMS41IDE4LjMyMjlWMTQuMzIyOU0xNy41IDYuODIyOTFMMTMuNSAxNC44MjI5TDMuMTEgOS42MjI5MUMyLjQyMDMzIDkuMjc1NTMgMS44OTYzNSA4LjY2OTEgMS42NTI3MiA3LjkzNjMyQzEuNDA5MDkgNy4yMDM1NCAxLjQ2NTY0IDYuNDA0MSAxLjgxIDUuNzEyOTFMMy4xOSAyLjkyMjkxQzMuMzYyIDIuNTgwMTQgMy41OTk4NCAyLjI3NDYgMy44ODk5NCAyLjAyMzc1QzQuMTgwMDMgMS43NzI5IDQuNTE2NyAxLjU4MTY1IDQuODgwNzIgMS40NjA5M0M1LjI0NDc0IDEuMzQwMjEgNS42Mjg5NyAxLjI5MjM5IDYuMDExNDcgMS4zMjAxOEM2LjM5Mzk4IDEuMzQ3OTcgNi43NjcyNiAxLjQ1MDg0IDcuMTEgMS42MjI5MUwxNy41IDYuODIyOTFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIG1iLTUgdGV4dC1jZW50ZXJcIj5QcmV2aWV3IG5vdCBhdmFpbGFibGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvbiBtYi01IHRleHQtY2VudGVyXCI+VGhlIHNlbGVjdGVkIGNhbWVyYSBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb21lbnQuPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB4LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHktMiBpbWctZG9jLWRpcmVjdG9yeVwiPnt7b2JqLnRlbXBJZH19IDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBtcy0yXCI+e3tzZWxlY3RDb250cm9sLnZhbHVlIHwgdGl0bGVjYXNlfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPkVudHJ5IFRpbWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy10aW1lXCI+RXhpdCBUaW1lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdGltZVwiPlRvdGFsIFRpbWUgU3BlbnQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgdGV4dC1lbmRcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE3IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE4NDFfMTQzMzAwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQuMTk4NiA1LjMzMzMzVjE0SDIuMTk4NTdWNS4zMzMzM002Ljg2NTIzIDhIOS41MzE5TTAuODY1MjM0IDJIMTUuNTMxOVY1LjMzMzMzSDAuODY1MjM0VjJaXCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTg0MV8xNDMzMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4xOTkyMTkpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy12YWx1ZVwiPnt7b2JqLnRpbWVTcGVudC5lbnRyeVRpbWV9fSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgaW1nLWRvYy12YWx1ZVwiPnt7b2JqLnRpbWVTcGVudC5leGl0VGltZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIGltZy1kb2MtdmFsdWVcIj57e29iai50aW1lU3BlbnQudG90YWxUaW1lU3BlbnR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
|